146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)# Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file.
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.unittest import browser_test_case
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class TabTestCase(browser_test_case.BrowserTestCase):
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  def __init__(self, *args):
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    super(TabTestCase, self).__init__(*args)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self._tab = None
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def setUp(self):
146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    super(TabTestCase, self).setUp()
156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if self._browser.supports_tab_control:
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._tab = self._browser.tabs.New()
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      while len(self._browser.tabs) > 1:
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        self._browser.tabs[0].Close()
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    else:
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      if not self._browser.tabs:
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        self.tearDownClass()
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        self.setUpClass()
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._tab = self._browser.tabs[0]
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._tab.Navigate('about:blank')
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  def Navigate(self, filename, script_to_evaluate_on_commit=None):
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    """Navigates |tab| to |filename| in the unittest data directory.
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    Also sets up http server to point to the unittest data directory.
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    """
336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    url = self.UrlOfUnittestFile(filename)
346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    self._tab.Navigate(url, script_to_evaluate_on_commit)
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self._tab.WaitForDocumentReadyStateToBeComplete()
36