Chromium Code Reviews| Index: telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
| diff --git a/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py b/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
| index e2cedb744857bbd6886669a9f69166f38ed0d018..d8f68d8f819283b3197ff62b91b217f52dab8019 100644 |
| --- a/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
| +++ b/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
| @@ -60,12 +60,37 @@ class PossibleDesktopBrowser(possible_browser.PossibleBrowser): |
| self._InitPlatformIfNeeded() |
| - browser_backend = desktop_browser_backend.DesktopBrowserBackend( |
| - self._platform_backend, |
| - finder_options.browser_options, self._local_executable, |
| - self._flash_path, self._is_content_shell, self._browser_directory) |
| - return browser.Browser( |
| - browser_backend, self._platform_backend, self._credentials_path) |
| + num_retries = 3 |
| + for x in range(0, num_retries): |
| + returned_browser = None |
| + try: |
| + returned_browser = None |
| + |
| + browser_backend = desktop_browser_backend.DesktopBrowserBackend( |
| + self._platform_backend, |
| + finder_options.browser_options, self._local_executable, |
| + self._flash_path, self._is_content_shell, self._browser_directory) |
| + |
| + returned_browser = browser.Browser( |
| + browser_backend, self._platform_backend, self._credentials_path) |
| + |
| + # Try fetching the zeroth tab. If this works, then the browser |
| + # appears to be working. |
| + _ = returned_browser.tabs[0] |
|
Ken Russell (switch to Gerrit)
2017/05/08 21:22:02
The fetching of the zeroth tab is causing DevTools
|
| + |
| + return returned_browser |
| + except Exception: |
| + logging.warning('Browser creation failed (attempt %d of %d), retrying' % |
| + ((x + 1), num_retries)) |
| + # Attempt to clean up things left over from the failed browser startup. |
| + try: |
| + if returned_browser: |
| + returned_browser.Close() |
| + except Exception: |
| + pass |
| + # Re-raise the exception the last time through. |
| + if x == num_retries - 1: |
| + raise |
| def SupportsOptions(self, browser_options): |
| if ((len(browser_options.extensions_to_load) != 0) |