Index: tools/telemetry/telemetry/unittest/tab_test_case.py |
diff --git a/tools/telemetry/telemetry/unittest/tab_test_case.py b/tools/telemetry/telemetry/unittest/tab_test_case.py |
index 81a198c6b7b5d03347b3fe9903d27c957c30d43b..856b9c859f654aa19f04423ffeb799ca48796bbe 100644 |
--- a/tools/telemetry/telemetry/unittest/tab_test_case.py |
+++ b/tools/telemetry/telemetry/unittest/tab_test_case.py |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+from telemetry.core import util |
from telemetry.unittest import browser_test_case |
@@ -14,14 +15,14 @@ class TabTestCase(browser_test_case.BrowserTestCase): |
super(TabTestCase, self).setUp() |
if self._browser.supports_tab_control: |
- self._tab = self._browser.tabs.New() |
- while len(self._browser.tabs) > 1: |
- self._browser.tabs[0].Close() |
+ try: |
+ self._tab = self._browser.tabs.New() |
+ while len(self._browser.tabs) > 1: |
+ self._browser.tabs[0].Close() |
+ except util.TimeoutException: |
+ self._RestartBrowser() |
else: |
- if not self._browser.tabs: |
- self.tearDownClass() |
- self.setUpClass() |
- self._tab = self._browser.tabs[0] |
+ self._RestartBrowser() |
self._tab.Navigate('about:blank') |
self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
@@ -33,3 +34,9 @@ class TabTestCase(browser_test_case.BrowserTestCase): |
url = self.UrlOfUnittestFile(filename) |
self._tab.Navigate(url, script_to_evaluate_on_commit) |
self._tab.WaitForDocumentReadyStateToBeComplete() |
+ |
+ def _RestartBrowser(self): |
+ if not self._browser.tabs: |
+ self.tearDownClass() |
+ self.setUpClass() |
+ self._tab = self._browser.tabs[0] |