| # Copyright 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from telemetry.core import exceptions |
| from telemetry.testing import browser_test_case |
| |
| |
| class TabTestCase(browser_test_case.BrowserTestCase): |
| def __init__(self, *args): |
| super(TabTestCase, self).__init__(*args) |
| self._tab = None |
| |
| def setUp(self): |
| super(TabTestCase, self).setUp() |
| |
| if self._browser.supports_tab_control: |
| try: |
| self._tab = self._browser.tabs.New() |
| while len(self._browser.tabs) > 1: |
| self._browser.tabs[0].Close() |
| except exceptions.TimeoutException: |
| self._RestartBrowser() |
| else: |
| self._RestartBrowser() |
| self._tab.Navigate('about:blank') |
| self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
| |
| def Navigate(self, filename, script_to_evaluate_on_commit=None): |
| """Navigates |tab| to |filename| in the unittest data directory. |
| |
| Also sets up http server to point to the unittest data directory. |
| """ |
| 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] |
| |
| @property |
| def tabs(self): |
| return self._browser.tabs |