| Index: tools/telemetry/telemetry/internal/browser/browser_finder.py
|
| diff --git a/tools/telemetry/telemetry/internal/browser/browser_finder.py b/tools/telemetry/telemetry/internal/browser/browser_finder.py
|
| deleted file mode 100644
|
| index 853f6f7c6d198278dace648b07005722a06184db..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/internal/browser/browser_finder.py
|
| +++ /dev/null
|
| @@ -1,182 +0,0 @@
|
| -# Copyright 2012 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Finds browsers that can be controlled by telemetry."""
|
| -
|
| -import logging
|
| -import operator
|
| -
|
| -from telemetry import decorators
|
| -from telemetry.internal.backends.chrome import android_browser_finder
|
| -from telemetry.internal.backends.chrome import cros_browser_finder
|
| -from telemetry.internal.backends.chrome import desktop_browser_finder
|
| -from telemetry.internal.backends.chrome import ios_browser_finder
|
| -from telemetry.internal.backends.mandoline import android_mandoline_finder
|
| -from telemetry.internal.backends.mandoline import desktop_mandoline_finder
|
| -from telemetry.internal.browser import browser_finder_exceptions
|
| -from telemetry.internal.platform import device_finder
|
| -
|
| -BROWSER_FINDERS = [
|
| - desktop_browser_finder,
|
| - android_browser_finder,
|
| - cros_browser_finder,
|
| - ios_browser_finder,
|
| - desktop_mandoline_finder,
|
| - android_mandoline_finder,
|
| - ]
|
| -
|
| -
|
| -def FindAllBrowserTypes(options):
|
| - return reduce(operator.add,
|
| - [bf.FindAllBrowserTypes(options) for bf in BROWSER_FINDERS])
|
| -
|
| -
|
| -@decorators.Cache
|
| -def FindBrowser(options):
|
| - """Finds the best PossibleBrowser object given a BrowserOptions object.
|
| -
|
| - Args:
|
| - A BrowserOptions object.
|
| -
|
| - Returns:
|
| - A PossibleBrowser object.
|
| -
|
| - Raises:
|
| - BrowserFinderException: Options improperly set, or an error occurred.
|
| - """
|
| - if options.__class__.__name__ == '_FakeBrowserFinderOptions':
|
| - return options.fake_possible_browser
|
| - if options.browser_type == 'exact' and options.browser_executable == None:
|
| - raise browser_finder_exceptions.BrowserFinderException(
|
| - '--browser=exact requires --browser-executable to be set.')
|
| - if options.browser_type != 'exact' and options.browser_executable != None:
|
| - raise browser_finder_exceptions.BrowserFinderException(
|
| - '--browser-executable requires --browser=exact.')
|
| -
|
| - if options.browser_type == 'cros-chrome' and options.cros_remote == None:
|
| - raise browser_finder_exceptions.BrowserFinderException(
|
| - 'browser_type=cros-chrome requires cros_remote be set.')
|
| - if (options.browser_type != 'cros-chrome' and
|
| - options.browser_type != 'cros-chrome-guest' and
|
| - options.cros_remote != None):
|
| - raise browser_finder_exceptions.BrowserFinderException(
|
| - '--remote requires --browser=cros-chrome or cros-chrome-guest.')
|
| -
|
| - devices = device_finder.GetDevicesMatchingOptions(options)
|
| - browsers = []
|
| - default_browsers = []
|
| - for device in devices:
|
| - for finder in BROWSER_FINDERS:
|
| - if(options.browser_type and options.browser_type != 'any' and
|
| - options.browser_type not in finder.FindAllBrowserTypes(options)):
|
| - continue
|
| - curr_browsers = finder.FindAllAvailableBrowsers(options, device)
|
| - new_default_browser = finder.SelectDefaultBrowser(curr_browsers)
|
| - if new_default_browser:
|
| - default_browsers.append(new_default_browser)
|
| - browsers.extend(curr_browsers)
|
| -
|
| - if options.browser_type == None:
|
| - if default_browsers:
|
| - default_browser = sorted(default_browsers,
|
| - key=lambda b: b.last_modification_time())[-1]
|
| -
|
| - logging.warning('--browser omitted. Using most recent local build: %s' %
|
| - default_browser.browser_type)
|
| - default_browser.UpdateExecutableIfNeeded()
|
| - return default_browser
|
| -
|
| - if len(browsers) == 1:
|
| - logging.warning('--browser omitted. Using only available browser: %s' %
|
| - browsers[0].browser_type)
|
| - browsers[0].UpdateExecutableIfNeeded()
|
| - return browsers[0]
|
| -
|
| - raise browser_finder_exceptions.BrowserTypeRequiredException(
|
| - '--browser must be specified. Available browsers:\n%s' %
|
| - '\n'.join(sorted(set([b.browser_type for b in browsers]))))
|
| -
|
| - if options.browser_type == 'any':
|
| - types = FindAllBrowserTypes(options)
|
| - def CompareBrowsersOnTypePriority(x, y):
|
| - x_idx = types.index(x.browser_type)
|
| - y_idx = types.index(y.browser_type)
|
| - return x_idx - y_idx
|
| - browsers.sort(CompareBrowsersOnTypePriority)
|
| - if len(browsers) >= 1:
|
| - browsers[0].UpdateExecutableIfNeeded()
|
| - return browsers[0]
|
| - else:
|
| - return None
|
| -
|
| - matching_browsers = [b for b in browsers
|
| - if b.browser_type == options.browser_type and b.SupportsOptions(options)]
|
| -
|
| - chosen_browser = None
|
| - if len(matching_browsers) == 1:
|
| - chosen_browser = matching_browsers[0]
|
| - elif len(matching_browsers) > 1:
|
| - logging.warning('Multiple browsers of the same type found: %s' % (
|
| - repr(matching_browsers)))
|
| - chosen_browser = sorted(matching_browsers,
|
| - key=lambda b: b.last_modification_time())[-1]
|
| -
|
| - if chosen_browser:
|
| - logging.info('Chose browser: %s' % (repr(chosen_browser)))
|
| - chosen_browser.UpdateExecutableIfNeeded()
|
| -
|
| - return chosen_browser
|
| -
|
| -
|
| -@decorators.Cache
|
| -def GetAllAvailableBrowsers(options, device):
|
| - """Returns a list of available browsers on the device.
|
| -
|
| - Args:
|
| - options: A BrowserOptions object.
|
| - device: The target device, which can be None.
|
| -
|
| - Returns:
|
| - A list of browser instances.
|
| -
|
| - Raises:
|
| - BrowserFinderException: Options are improperly set, or an error occurred.
|
| - """
|
| - if not device:
|
| - return []
|
| - possible_browsers = []
|
| - for browser_finder in BROWSER_FINDERS:
|
| - possible_browsers.extend(
|
| - browser_finder.FindAllAvailableBrowsers(options, device))
|
| - return possible_browsers
|
| -
|
| -
|
| -@decorators.Cache
|
| -def GetAllAvailableBrowserTypes(options):
|
| - """Returns a list of available browser types.
|
| -
|
| - Args:
|
| - options: A BrowserOptions object.
|
| -
|
| - Returns:
|
| - A list of browser type strings.
|
| -
|
| - Raises:
|
| - BrowserFinderException: Options are improperly set, or an error occurred.
|
| - """
|
| - devices = device_finder.GetDevicesMatchingOptions(options)
|
| - possible_browsers = []
|
| - for device in devices:
|
| - possible_browsers.extend(GetAllAvailableBrowsers(options, device))
|
| - type_list = set([browser.browser_type for browser in possible_browsers])
|
| - # The reference build should be available for mac, linux and win, but the
|
| - # desktop browser finder won't return it in the list of browsers.
|
| - for browser in possible_browsers:
|
| - if (browser.target_os == 'darwin' or browser.target_os.startswith('linux')
|
| - or browser.target_os.startswith('win')):
|
| - type_list.add('reference')
|
| - break
|
| - type_list = list(type_list)
|
| - type_list.sort()
|
| - return type_list
|
|
|