Package com.google.jstestdriver.browser

Source Code of com.google.jstestdriver.browser.BrowserHunter

/*
* Copyright 2009 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.jstestdriver.browser;

import com.google.inject.Inject;
import com.google.jstestdriver.BrowserInfo;
import com.google.jstestdriver.CapturedBrowsers;
import com.google.jstestdriver.FileUploader;
import com.google.jstestdriver.SlaveBrowser;
import com.google.jstestdriver.SlaveBrowser.BrowserState;
import com.google.jstestdriver.Time;
import com.google.jstestdriver.annotations.BrowserTimeout;
import com.google.jstestdriver.model.HandlerPathPrefix;
import com.google.jstestdriver.runner.RunnerType;
import com.google.jstestdriver.server.handlers.CaptureHandler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Creates SlaveBrowsers.
*
* @author jeremiele@google.com (Jeremie Lenfant-Engelmann)
*/
public class BrowserHunter {

  private static final Logger logger = LoggerFactory.getLogger(BrowserHunter.class.getName());

  private final CapturedBrowsers capturedBrowsers;

  private final long browserTimeout;

  private final HandlerPathPrefix prefix;

  private final Time time;

  @Inject
  public BrowserHunter(CapturedBrowsers capturedBrowsers, @BrowserTimeout long browserTimeout,
      HandlerPathPrefix prefix, Time time) {
    this.capturedBrowsers = capturedBrowsers;
    this.browserTimeout = browserTimeout;
    this.prefix = prefix;
    this.time = time;
  }

  public SlaveBrowser captureBrowser(String name, String version, String os) {
    return captureBrowser(capturedBrowsers.getUniqueId(), name, version, os, browserTimeout,
        CaptureHandler.QUIRKS, RunnerType.CLIENT, FileUploader.CHUNK_SIZE);
  }

  /**
   * Begins tracking a browser in the CapturedBrowsers collection.
   */
  public SlaveBrowser captureBrowser(String rawId, String name, String version, String os) {
    return captureBrowser(rawId, name, version, os, browserTimeout, CaptureHandler.QUIRKS,
        RunnerType.CLIENT, FileUploader.CHUNK_SIZE);
  }

  public SlaveBrowser captureBrowser(String rawId, String name, String version, String os,
      Long browserTimeout, String mode, RunnerType type, Integer uploadSize) {
    BrowserInfo browserInfo = new BrowserInfo();

    final Long id = parseBrowserId(rawId);
    browserInfo.setId(id);
    browserInfo.setName(name);
    browserInfo.setVersion(version);
    browserInfo.setOs(os);
    browserInfo.setUploadSize(uploadSize != null ? uploadSize : FileUploader.CHUNK_SIZE);
    // TODO(corysmith):move all browser timeout configuration to the proper place.
    // TODO(corysmith):figure out where that is.
    long computedBrowserTimeout = computeTimeout(browserTimeout);
    SlaveBrowser slave =
        new SlaveBrowser(time, id.toString(), browserInfo, computedBrowserTimeout, prefix, mode,
            type, BrowserState.CAPTURED, time.now());

    capturedBrowsers.addSlave(slave);
    logger.debug("Browser Captured: {}", slave);
    logger.info("Browser Captured: {} version {} ({})", new Object[] {name, version, id});
    return slave;
  }

  private long computeTimeout(Long browserTimeout) {
    return browserTimeout == null ? this.browserTimeout : browserTimeout;
  }

  private Long parseBrowserId(String id) {
    if (id == null) {
      return Long.parseLong(capturedBrowsers.getUniqueId());
    }
    return Long.parseLong(id);
  }

  public boolean isBrowserCaptured(String id) {
    return capturedBrowsers.getBrowser(id) != null;
  }

  public void freeBrowser(String id) {
    capturedBrowsers.removeSlave(id);
  }
}
TOP

Related Classes of com.google.jstestdriver.browser.BrowserHunter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.