| Index: tools/telemetry/telemetry/core/browser_finder.py
|
| diff --git a/tools/telemetry/telemetry/core/browser_finder.py b/tools/telemetry/telemetry/core/browser_finder.py
|
| index eb189aff2c161a96f1135a369599e4b3c0054f4d..f98317b38cee6287a0376c04d06403e4f07dceaf 100644
|
| --- a/tools/telemetry/telemetry/core/browser_finder.py
|
| +++ b/tools/telemetry/telemetry/core/browser_finder.py
|
| @@ -9,6 +9,7 @@ import operator
|
|
|
| from telemetry import decorators
|
| from telemetry.core import browser_finder_exceptions
|
| +from telemetry.core import device_finder
|
| from telemetry.core.backends.chrome import android_browser_finder
|
| from telemetry.core.backends.chrome import cros_browser_finder
|
| from telemetry.core.backends.chrome import desktop_browser_finder
|
| @@ -60,17 +61,24 @@ def FindBrowser(options):
|
| raise browser_finder_exceptions.BrowserFinderException(
|
| '--remote requires --browser=cros-chrome or cros-chrome-guest.')
|
|
|
| + devices = []
|
| + if options.device and options.device != 'list':
|
| + devices = device_finder.GetSpecifiedDevices(options)
|
| + else:
|
| + devices = device_finder.GetAllAvailableDevices(options)
|
| +
|
| browsers = []
|
| default_browsers = []
|
| - 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)
|
| - new_default_browser = finder.SelectDefaultBrowser(curr_browsers)
|
| - if new_default_browser:
|
| - default_browsers.append(new_default_browser)
|
| - browsers.extend(curr_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:
|
| @@ -125,6 +133,29 @@ def FindBrowser(options):
|
|
|
|
|
| @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.
|
|
|
| @@ -137,11 +168,11 @@ def GetAllAvailableBrowserTypes(options):
|
| Raises:
|
| BrowserFinderException: Options are improperly set, or an error occurred.
|
| """
|
| - browsers = []
|
| - for finder in BROWSER_FINDERS:
|
| - browsers.extend(finder.FindAllAvailableBrowsers(options))
|
| -
|
| - type_list = set([browser.browser_type for browser in browsers])
|
| + devices = device_finder.GetAllAvailableDevices(options)
|
| + possible_browsers = []
|
| + for device in devices:
|
| + possible_browsers.extend(GetAllAvailableBrowsers(options, device))
|
| + type_list = set([browser.browser_type for browser in possible_browsers])
|
| type_list = list(type_list)
|
| type_list.sort()
|
| return type_list
|
|
|