01: /*
02: * Copyright 2006 Google Inc.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
05: * use this file except in compliance with the License. You may obtain a copy of
06: * the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13: * License for the specific language governing permissions and limitations under
14: * the License.
15: */
16: package com.google.gwt.junit.remote;
17:
18: import java.rmi.Remote;
19: import java.rmi.RemoteException;
20:
21: /**
22: * An interface to manage (possibly remote) browser windows. This class is
23: * experimental and unsupported.
24: */
25: public interface BrowserManager extends Remote {
26:
27: /**
28: * Keeps the browser process represented by token alive for keepAliveMs,
29: * starting now.
30: *
31: * @param token an opaque token representing the browser window
32: * @param keepAliveMs the number of milliseconds to let the browser process
33: * live; if roughly <code>keepAliveMs</code> milliseconds elapse
34: * without a subsequent call to this method, the browser process
35: * associated with <code>token</code> will be forceably terminated
36: * @throws IllegalStateException if the process represented by token has
37: * already terminated.
38: * @throws IllegalArgumentException if token does not represent a process that
39: * was returned from {@link #launchNewBrowser(String, long)}.
40: * @throws IllegalArgumentException if keepAliveMs <= 0.
41: * @throws RemoteException if an error occurs calling a remote implementation.
42: */
43: void keepAlive(int token, long keepAliveMs) throws RemoteException;
44:
45: /**
46: * Forceably kills the browser process represented by <code>token</code>,
47: * disregarding any previous calls to {@link #keepAlive(int, long)}. If the
48: * process has already terminated, this method completes normally.
49: *
50: * @param token an opaque token representing the browser window process
51: * @throws IllegalArgumentException if token does not represent a process that
52: * was returned from {@link #launchNewBrowser(String, long)}.
53: * @throws RemoteException if an error occurs calling a remote implementation.
54: */
55: void killBrowser(int token) throws RemoteException;
56:
57: /**
58: * Launches a new browser window for the specified URL.
59: *
60: * @param url the URL to browse to
61: * @param keepAliveMs the initial number of milliseconds to let the browser
62: * process live; if roughly <code>keepAliveMs</code> milliseconds
63: * expire without a subsequent call to {@link #keepAlive(int, long)},
64: * the browser process will be forceably terminated
65: * @return a positive integer that serves an an opaque token representing the
66: * new browser window.
67: * @throws IllegalArgumentException if <code>url</code> is <code>null</code>.
68: * @throws IllegalArgumentException if <code>keepAliveMs</code> <= 0.
69: * @throws RuntimeException if an error occurs launching the browser process.
70: * @throws RemoteException if an error occurs calling a remote implementation.
71: */
72: int launchNewBrowser(String url, long keepAliveMs)
73: throws RemoteException;
74: }
|