| Index: tools/telemetry/telemetry/page/page_test.py
|
| diff --git a/tools/telemetry/telemetry/page/page_test.py b/tools/telemetry/telemetry/page/page_test.py
|
| index 7a931a599e64c8e71a45703feed86c0fb03b03d4..31a78991f1eb21add5aa43e5a9b56319431e1f4b 100644
|
| --- a/tools/telemetry/telemetry/page/page_test.py
|
| +++ b/tools/telemetry/telemetry/page/page_test.py
|
| @@ -2,6 +2,9 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +import logging
|
| +
|
| +from telemetry.core import exceptions
|
| from telemetry.page import action_runner as action_runner_module
|
| from telemetry.page import test_expectations
|
|
|
| @@ -164,7 +167,17 @@ class PageTest(object):
|
| def TabForPage(self, page, browser): # pylint: disable=W0613
|
| """Override to select a different tab for the page. For instance, to
|
| create a new tab for every page, return browser.tabs.New()."""
|
| - return browser.tabs[0]
|
| + try:
|
| + return browser.tabs[0]
|
| + # The tab may have gone away in some case, so we create a new tab and retry
|
| + # (See crbug.com/496280)
|
| + except exceptions.DevtoolsTargetCrashException as e:
|
| + logging.error('Tab may have crashed: %s' % str(e))
|
| + browser.tabs.New()
|
| + # See comment in shared_page_state.WillRunUserStory for why this waiting
|
| + # is needed.
|
| + browser.tabs[0].WaitForDocumentReadyStateToBeComplete()
|
| + return browser.tabs[0]
|
|
|
| def ValidateAndMeasurePage(self, page, tab, results):
|
| """Override to check test assertions and perform measurement.
|
|
|