tab_test_case.py revision 868fa2fe829687343ffae624259930155e16dbd8
1e3365aa452673f7ea3244bb6638551f13ab7570dNick Lewycky# Copyright (c) 2012 The Chromium Authors. All rights reserved.
23ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar# Use of this source code is governed by a BSD-style license that can be
33ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar# found in the LICENSE file.
43ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbarimport unittest
53ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar
63ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbarfrom telemetry.core import browser_finder
73ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbarfrom telemetry.unittest import options_for_unittests
83ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar
93ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbarclass TabTestCase(unittest.TestCase):
103ede8d0a7d1813f678ccc6011a99a0834b1b6116Daniel Dunbar  def __init__(self, *args):
1155fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth    self._extra_browser_args = []
1255fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth    super(TabTestCase, self).__init__(*args)
1355fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth
1453ec55215075c8f4ddd47ca6ed7d382f16beb670Daniel Dunbar  def setUp(self):
151b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar    self._browser = None
164ad4b3ebbe5769143389dccfcfadb666a4ba5940Daniel Dunbar    self._tab = None
17f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar    options = options_for_unittests.GetCopy()
181b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar
19f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar    self.CustomizeBrowserOptions(options)
20f353c8cc2ee1cc16ff194b399a8d951f707fb129Daniel Dunbar
217f9fc3f7ce076645cb6aefc99c64d9446caf13d6Chris Lattner    if self._extra_browser_args:
224d7b14734f2285695dcec347f8718b512093390aTed Kremenek      for arg in self._extra_browser_args:
236981330cc231e4e2ccbd38679209e04b776483ebHans Wennborg        options.extra_browser_args.append(arg)
2455fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth
2576b86c2e79a58910a641d449f229889d671d8a38Hans Wennborg    browser_to_create = browser_finder.FindBrowser(options)
26b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner    if not browser_to_create:
27b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner      raise Exception('No browser found, cannot continue test.')
28b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner    try:
29b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner      self._browser = browser_to_create.Create()
30b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner      self._tab = self._browser.tabs[0]
31c706c8e440abf61910c042380e19c67932998395Eric Christopher    except:
32548f6c8e8010b181cb151df92f0a989363cb993eDavid Blaikie      self.tearDown()
33256053b31e697fdf0cc48f17d621c82fc3b8dff0Michael J. Spencer      raise
3403013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer
3555fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth  def tearDown(self):
3603013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer    if self._tab:
3755fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth      self._tab.Disconnect()
38f2462be34a49e2108c9b4151f8e6d3fe1b916179Dylan Noblesmith    if self._browser:
3969d3b4f7c9fa818d2536b4f1b220b942ae392128Dylan Noblesmith      self._browser.Close()
40f110a9c6876e36ef77a54b191ea4ecf3443ac620Eric Christopher
41f110a9c6876e36ef77a54b191ea4ecf3443ac620Eric Christopher  def CustomizeBrowserOptions(self, options):
4288a8fa366e1a76507ae2212f9c3f110df865c3a5NAKAMURA Takumi    """Override to add test-specific options to the BrowserOptions object"""
4388a8fa366e1a76507ae2212f9c3f110df865c3a5NAKAMURA Takumi    pass
441b3bb6efc59a21f794b534078f9ae7e95393f510Daniel Dunbar