/* * Copyright 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.junit.remote; import java.rmi.Remote; import java.rmi.RemoteException; /** * An interface to manage (possibly remote) browser windows. This class is * experimental and unsupported. */ public interface BrowserManager extends Remote { /** * Keeps the browser process represented by token alive for keepAliveMs, * starting now. * * @param token an opaque token representing the browser window * @param keepAliveMs the number of milliseconds to let the browser process * live; if roughly <code>keepAliveMs</code> milliseconds elapse * without a subsequent call to this method, the browser process * associated with <code>token</code> will be forceably terminated * @throws IllegalStateException if the process represented by token has * already terminated. * @throws IllegalArgumentException if token does not represent a process that * was returned from {@link #launchNewBrowser(String, long)}. * @throws IllegalArgumentException if keepAliveMs <= 0. * @throws RemoteException if an error occurs calling a remote implementation. */ void keepAlive(int token, long keepAliveMs) throws RemoteException; /** * Forceably kills the browser process represented by <code>token</code>, * disregarding any previous calls to {@link #keepAlive(int, long)}. If the * process has already terminated, this method completes normally. * * @param token an opaque token representing the browser window process * @throws IllegalArgumentException if token does not represent a process that * was returned from {@link #launchNewBrowser(String, long)}. * @throws RemoteException if an error occurs calling a remote implementation. */ void killBrowser(int token) throws RemoteException; /** * Launches a new browser window for the specified URL. * * @param url the URL to browse to * @param keepAliveMs the initial number of milliseconds to let the browser * process live; if roughly <code>keepAliveMs</code> milliseconds * expire without a subsequent call to {@link #keepAlive(int, long)}, * the browser process will be forceably terminated * @return a positive integer that serves an an opaque token representing the * new browser window. * @throws IllegalArgumentException if <code>url</code> is <code>null</code>. * @throws IllegalArgumentException if <code>keepAliveMs</code> <= 0. * @throws RuntimeException if an error occurs launching the browser process. * @throws RemoteException if an error occurs calling a remote implementation. */ int launchNewBrowser(String url, long keepAliveMs) throws RemoteException; }