Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / unittest / tab_test_case.py
1 # Copyright 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from telemetry.core import util
6 from telemetry.unittest import browser_test_case
7
8
9 class TabTestCase(browser_test_case.BrowserTestCase):
10   def __init__(self, *args):
11     super(TabTestCase, self).__init__(*args)
12     self._tab = None
13
14   def setUp(self):
15     super(TabTestCase, self).setUp()
16
17     if self._browser.supports_tab_control:
18       try:
19         self._tab = self._browser.tabs.New()
20         while len(self._browser.tabs) > 1:
21           self._browser.tabs[0].Close()
22       except util.TimeoutException:
23         self._RestartBrowser()
24     else:
25       self._RestartBrowser()
26     self._tab.Navigate('about:blank')
27     self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
28
29   def Navigate(self, filename, script_to_evaluate_on_commit=None):
30     """Navigates |tab| to |filename| in the unittest data directory.
31
32     Also sets up http server to point to the unittest data directory.
33     """
34     url = self.UrlOfUnittestFile(filename)
35     self._tab.Navigate(url, script_to_evaluate_on_commit)
36     self._tab.WaitForDocumentReadyStateToBeComplete()
37
38   def _RestartBrowser(self):
39     if not self._browser.tabs:
40       self.tearDownClass()
41       self.setUpClass()
42     self._tab = self._browser.tabs[0]