Chromium Code Reviews| Index: tools/telemetry/telemetry/core/webdriver/webdriver_tab_list_backend.py |
| diff --git a/tools/telemetry/telemetry/core/webdriver/webdriver_tab_list_backend.py b/tools/telemetry/telemetry/core/webdriver/webdriver_tab_list_backend.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..96f26d384bada5bfac1717091878f5fe0ea7584f |
| --- /dev/null |
| +++ b/tools/telemetry/telemetry/core/webdriver/webdriver_tab_list_backend.py |
| @@ -0,0 +1,46 @@ |
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +from telemetry.core.webdriver import webdriver_tab_backend |
| + |
| +class WebDriverTabListBackend(object): |
| + def __init__(self, browser_backend): |
| + self._browser_backend = browser_backend |
| + # Stores the window handles. |
| + self._tab_list = [] |
| + |
| + def Init(self): |
| + self._UpdateTabList() |
| + |
| + def New(self, timeout=None): |
| + raise NotImplementedError() |
|
chrisgao (Use stgao instead)
2013/07/31 19:05:41
Add a comment with a reason of not-impl.
chrisgao (Use stgao instead)
2013/08/01 00:36:44
Done.
|
| + |
| + def __iter__(self): |
| + self._UpdateTabList() |
| + return self._tab_list.__iter__() |
| + |
| + def __len__(self): |
| + self._UpdateTabList() |
| + return len(self._tab_list) |
| + |
| + def __getitem__(self, index): |
| + self._UpdateTabList() |
| + if len(self._tab_list) <= index: |
| + raise IndexError('list index out of range') |
| + return self._tab_list[index] |
| + |
| + def _UpdateTabList(self): |
| + window_handles = self._browser_backend.driver.window_handles |
| + old_tab_list = self._tab_list |
| + self._tab_list = [] |
| + for window_handle in window_handles: |
| + tab = None |
| + for old_tab in old_tab_list: |
| + if old_tab.window_handle == window_handle: |
| + tab = old_tab |
| + break |
| + else: |
| + tab = webdriver_tab_backend.WebDriverTabBackend( |
| + self._browser_backend, window_handle) |
| + self._tab_list.append(tab) |