package com.google.jstestdriver.browser; import java.util.concurrent.Callable; /** * Manages a BrowserRunner lifecycle around a BrowserActionRunner. * * @author corbinrsmith@gmail.com (Corbin Smith) * */ public class BrowserCallable<T> implements Callable<T> { private final Callable<T> callable; private final BrowserControl browserControl; private final String browserId; public BrowserCallable(Callable<T> callable, String browserId, BrowserControl browserControl) { this.callable = callable; this.browserId = browserId; this.browserControl = browserControl; } public T call() throws Exception { try { browserControl.captureBrowser(browserId); return callable.call(); } finally { browserControl.stopBrowser(); } } }