The best way to expand Mozilla to a full
screen mode is through full-screen functions provided in an instance
of navigator.xul. These functions run in the
Windows build of Mozilla via the Full Screen item in the View menu.
These functions also work in Linux and Mac, but do not provide 100%
full-screen mode, as some menus and titlebars still show.
The problem here is the current window's
navigator.xul document, which needs to be
accessed to get these full-screen functions. A document loaded in
that window just can't use something like
window.parent to get to it, so another route
must be found.
This route runs through the nsIWindowMediator
interface by the way of XPConnect. It gives access to the current
browser window's navigator.xul
document's window object. Example 12-13 includes the code for this window access
process, along with the functions used to create the full-screen
effect.
windowManager, which is spawned by XPConnect,
creates the mainWindow variable. By using the
getMostRecentWindow function for
navigator:browser, the Mozilla application window
you currently use becomes available. Next, tests are made in code for
the window status determine if it is regular or full screen.
Appropriate action can then be made by calling the
SidebarShowHide function.
As you can see in Example 12-13, code for hiding the
toolbar and location bar is also present. This code is accomplished
not by the mainWindow created through XPConnect,
but by the existing window object:
window.locationbar.visible=false;
window.toolbar.visible=false;
Using both the mainWindow and
window objects allows the creation of a
full-screen remote Mozilla application by allowing XPConnect
privileges. Figure 12-9 shows the result on
Windows -- a total full screen for a signed remote Mozilla game!