1# Copyright (c) 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.
4import unittest
5
6from telemetry.core import browser_finder
7from telemetry.unittest import options_for_unittests
8
9class TabTestCase(unittest.TestCase):
10  def __init__(self, *args):
11    self._extra_browser_args = []
12    super(TabTestCase, self).__init__(*args)
13
14  def setUp(self):
15    self._browser = None
16    self._tab = None
17    options = options_for_unittests.GetCopy()
18
19    self.CustomizeBrowserOptions(options)
20
21    if self._extra_browser_args:
22      options.AppendExtraBrowserArgs(self._extra_browser_args)
23
24    browser_to_create = browser_finder.FindBrowser(options)
25    if not browser_to_create:
26      raise Exception('No browser found, cannot continue test.')
27    try:
28      self._browser = browser_to_create.Create()
29      self._browser.Start()
30      self._tab = self._browser.tabs[0]
31      self._tab.Navigate('about:blank')
32
33    except:
34      self.tearDown()
35      raise
36
37  def tearDown(self):
38    if self._tab:
39      self._tab.Disconnect()
40    if self._browser:
41      self._browser.Close()
42
43  def CustomizeBrowserOptions(self, options):
44    """Override to add test-specific options to the BrowserOptions object"""
45    pass
46