blob: 4c300e02ec038194bdb46a9397d6ec2d68dec4d9 [file] [log] [blame]
import logging
import os
from webkitpy.benchmark_runner.browser_driver.osx_browser_driver import OSXBrowserDriver
_log = logging.getLogger(__name__)
class OSXChromeDriverBase(OSXBrowserDriver):
app_name = None
# FIXME: handle self._browser_path.
def launch_args_with_url(self, url):
return ['--args', '--homepage', url, self._window_size_arg(), '--no-first-run',
'--no-default-browser-check', '--disable-extensions']
def launch_url(self, url, options, browser_build_path, browser_path):
self._launch_process(build_dir=browser_build_path, app_name=self.app_name, url=url, args=self.launch_args_with_url(url))
def launch_driver(self, url, options, browser_build_path):
from selenium import webdriver
chrome_options = self._create_chrome_options(browser_build_path)
driver_executable = self.webdriver_binary_path
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=driver_executable)
self._launch_webdriver(url=url, driver=driver)
return driver
def _create_chrome_options(self, browser_build_path):
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--disable-web-security")
chrome_options.add_argument("--user-data-dir")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument(self._window_size_arg())
self._set_chrome_binary_location(chrome_options, browser_build_path)
return chrome_options
def _window_size_arg(self):
screen_size = self._screen_size()
return '--window-size={width},{height}'.format(width=int(screen_size.width), height=int(screen_size.height))
def _set_chrome_binary_location(self, options, browser_build_path):
pass
def set_binary_location_impl(options, browser_build_path, app_name, process_name):
if not browser_build_path:
return
app_path = os.path.join(browser_build_path, app_name)
binary_path = os.path.join(app_path, "Contents/MacOS", process_name)
options.binary_location = binary_path
class OSXChromeDriver(OSXChromeDriverBase):
process_name = 'Google Chrome'
browser_name = 'chrome'
app_name = 'Google Chrome.app'
bundle_id = 'com.google.Chrome'
def _set_chrome_binary_location(self, options, browser_build_path):
set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name)
class OSXChromeCanaryDriver(OSXChromeDriverBase):
process_name = 'Google Chrome Canary'
browser_name = 'chrome-canary'
app_name = 'Google Chrome Canary.app'
bundle_id = 'com.google.Chrome.canary'
def _set_chrome_binary_location(self, options, browser_build_path):
set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name)
def launch_args_with_url(self, url):
return super(OSXChromeCanaryDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config']
class OSXChromeBetaDriver(OSXChromeDriverBase):
process_name = 'Google Chrome Beta'
browser_name = 'chrome-beta'
app_name = 'Google Chrome Beta.app'
bundle_id = 'com.google.Chrome.beta'
def _set_chrome_binary_location(self, options, browser_build_path):
set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name)
def launch_args_with_url(self, url):
return super(OSXChromeBetaDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config']
class OSXChromeDevDriver(OSXChromeDriverBase):
process_name = 'Google Chrome Dev'
browser_name = 'chrome-dev'
app_name = 'Google Chrome Dev.app'
bundle_id = 'com.google.Chrome.dev'
def _set_chrome_binary_location(self, options, browser_build_path):
set_binary_location_impl(options, browser_build_path, self.app_name, self.process_name)
def launch_args_with_url(self, url):
return super(OSXChromeDevDriver, self).launch_args_with_url(url) + ['--enable-field-trial-config']