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
5from telemetry.unittest import browser_test_case
6
7
8class TabTestCase(browser_test_case.BrowserTestCase):
9  def __init__(self, *args):
10    super(TabTestCase, self).__init__(*args)
11    self._tab = None
12
13  def setUp(self):
14    super(TabTestCase, self).setUp()
15
16    if self._browser.supports_tab_control:
17      self._tab = self._browser.tabs.New()
18      while len(self._browser.tabs) > 1:
19        self._browser.tabs[0].Close()
20    else:
21      if not self._browser.tabs:
22        self.tearDownClass()
23        self.setUpClass()
24      self._tab = self._browser.tabs[0]
25    self._tab.Navigate('about:blank')
26    self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
27
28  def Navigate(self, filename, script_to_evaluate_on_commit=None):
29    """Navigates |tab| to |filename| in the unittest data directory.
30
31    Also sets up http server to point to the unittest data directory.
32    """
33    url = self.UrlOfUnittestFile(filename)
34    self._tab.Navigate(url, script_to_evaluate_on_commit)
35    self._tab.WaitForDocumentReadyStateToBeComplete()
36