/** * Ends a browser session. * * @param sessionId the id of the session to be ended * @param configuration Remote Control configuration. Cannot be null. * @param ensureClean if clean sessions (e.g. no leftover cookies) are required. */ protected void endBrowserSession( boolean forceClose, String sessionId, RemoteControlConfiguration configuration, boolean ensureClean) { BrowserSessionInfo sessionInfo = lookupInfoBySessionId(sessionId, activeSessions); if (null != sessionInfo) { activeSessions.remove(sessionInfo); try { if (forceClose || !configuration.reuseBrowserSessions()) { shutdownBrowserAndClearSessionData(sessionInfo); } else { if (null != sessionInfo.session) { // optional field sessionInfo.session.reset(sessionInfo.baseUrl); } // mark what time this session was ended sessionInfo.lastClosedAt = System.currentTimeMillis(); availableSessions.add(sessionInfo); } } finally { LoggingManager.perSessionLogHandler().removeSessionLogs(new SessionId(sessionId)); if (ensureClean) { // need to add this to the launcher API. // sessionInfo.launcher.restoreOriginalSessionData(); } } } else { // look for it in the available sessions. sessionInfo = lookupInfoBySessionId(sessionId, availableSessions); if (null != sessionInfo && (forceClose || !configuration.reuseBrowserSessions())) { try { availableSessions.remove(sessionInfo); shutdownBrowserAndClearSessionData(sessionInfo); } finally { LoggingManager.perSessionLogHandler().removeSessionLogs(new SessionId(sessionId)); if (ensureClean) { // sessionInfo.launcher.restoreOriginalSessionData(); } } } } }
/** * Gets a new browser session, using the SeleniumServer static fields to populate parameters. * * @param browserString * @param startURL * @param extensionJs per-session user extension Javascript * @param configuration Remote Control configuration. Cannot be null. * @return the BrowserSessionInfo for the new browser session. * @throws RemoteCommandException */ public BrowserSessionInfo getNewBrowserSession( String browserString, String startURL, String extensionJs, Capabilities browserConfigurations, RemoteControlConfiguration configuration) throws RemoteCommandException { return getNewBrowserSession( browserString, startURL, extensionJs, browserConfigurations, configuration.reuseBrowserSessions(), configuration.isEnsureCleanSession(), configuration); }