Manages instances of a web browser as child processes. This class is
experimental and unsupported. An instance of this class can create browser
windows using one specific shell-level command. It performs process
managagement (babysitting) on behalf of a remote client. This can be useful
for running a GWTTestCase on a browser that cannot be run on the native
platform. For example, a GWTTestCase test running on Linux could use a remote
call to a Windows machine to test with Internet Explorer.
Calling
BrowserManagerServer.main(String[]) can instantiate and register multiple
instances of this class at given RMI namespace locations.
This system has been tested on Internet Explorer 6. Firefox does not work in
the general case; if an existing Firefox process is already running, new
processes simply delegate to the existing process and terminate, which breaks
the model. Safari on MacOS requires very special treatment given Safari's
poor command line support, but that is beyond the scope of this
documentation.
TODO(scottb): We technically need a watchdog thread to slurp up stdout and
stderr from the child processes, or they might block. However, most browsers
never write to stdout and stderr, so this is low priority.
see http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=4062587
|