Chromium Code Reviews| 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 b7ae6579e0672285332af78554f88e5e397dbc43..78ec60284827f8b0e0a78b9f4943b676aa73eda9 100644 |
| --- a/tools/telemetry/telemetry/core/browser_finder.py |
| +++ b/tools/telemetry/telemetry/core/browser_finder.py |
| @@ -9,10 +9,14 @@ from telemetry.core.chrome import android_browser_finder |
| from telemetry.core.chrome import cros_browser_finder |
| from telemetry.core.chrome import desktop_browser_finder |
| -ALL_BROWSER_TYPES = ( |
| - desktop_browser_finder.ALL_BROWSER_TYPES + ',' + |
| - android_browser_finder.ALL_BROWSER_TYPES + ',' + |
| - cros_browser_finder.ALL_BROWSER_TYPES) |
| +BROWSER_FINDERS = [ |
| + desktop_browser_finder, |
| + android_browser_finder, |
| + cros_browser_finder |
|
achuithb
2013/07/24 01:20:07
Why not reverse this? If the user specifies --remo
|
| + ] |
| + |
| +ALL_BROWSER_TYPES = ','.join([bf.ALL_BROWSER_TYPES for bf in BROWSER_FINDERS]) |
| + |
| class BrowserTypeRequiredException(Exception): |
| pass |
| @@ -43,25 +47,22 @@ def FindBrowser(options): |
| raise BrowserFinderException( |
| 'cros_remote requires browser_type=cros-chrome or cros-chrome-guest.') |
| - if options.browser_type == None: |
| - raise BrowserTypeRequiredException('browser_type must be specified') |
| - |
| browsers = [] |
| - browsers.extend(desktop_browser_finder.FindAllAvailableBrowsers(options)) |
| - browsers.extend(android_browser_finder.FindAllAvailableBrowsers(options)) |
| - browsers.extend(cros_browser_finder.FindAllAvailableBrowsers(options)) |
| + default_browser = None |
| + for finder in BROWSER_FINDERS: |
| + curr_browsers = finder.FindAllAvailableBrowsers(options) |
| + if not default_browser: |
| + default_browser = finder.SelectDefaultBrowser(curr_browsers) |
| + browsers.extend(curr_browsers) |
| - if options.browser_type == 'any': |
| - types = ALL_BROWSER_TYPES.split(',') |
| - def compare_browsers_on_type_priority(x, y): |
| - x_idx = types.index(x.browser_type) |
| - y_idx = types.index(y.browser_type) |
| - return x_idx - y_idx |
| - browsers.sort(compare_browsers_on_type_priority) |
| - if len(browsers) >= 1: |
| - return browsers[0] |
| - else: |
| - return None |
| + if options.browser_type == None: |
| + if default_browser: |
| + logging.warning('--browser omitted. Using most recent local build: %s' % |
| + default_browser.browser_type) |
| + return default_browser |
| + raise BrowserTypeRequiredException( |
| + '--browser must be specified. Available browsers:\n%s' % |
| + '\n'.join(sorted(set([b.browser_type for b in browsers])))) |
| matching_browsers = [b for b in browsers |
| if b.browser_type == options.browser_type and b.SupportsOptions(options)] |
| @@ -81,9 +82,8 @@ def GetAllAvailableBrowserTypes(options): |
| improperly set or if an error occurs when finding a browser. |
| """ |
| browsers = [] |
| - browsers.extend(desktop_browser_finder.FindAllAvailableBrowsers(options)) |
| - browsers.extend(android_browser_finder.FindAllAvailableBrowsers(options)) |
| - browsers.extend(cros_browser_finder.FindAllAvailableBrowsers(options)) |
| + for finder in BROWSER_FINDERS: |
| + browsers.extend(finder.FindAllAvailableBrowsers(options)) |
| type_list = set([browser.browser_type for browser in browsers]) |
| type_list = list(type_list) |