Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Side by Side Diff: chrome/test/functional/tracing/tab_tracker.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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.
4
5 import uuid
6
7
8 class TabTracker(object):
9 """Uniquely track tabs within a window.
10
11 This allows the creation of tabs whose indices can be
12 determined even after lower indexed tabs have been closed, therefore changing
13 that tab's index.
14
15 This is accomplished via a containing window which is created and tracked via
16 the window's index. As a result of this, all calls to open and close tabs in
17 this TabTracker's window must go through the appropriate instance of the
18 TabTracker. Also note that if a lower indexed window is closed after this
19 TabTracker is instantiated, this TabTracker will lose track of its window
20 """
21
22 def __init__(self, browser, visible=False):
23 """
24 Args:
25 browser: an instance of PyUITest
26 visible: whether or not this TabTracker's window will be visible
27 """
28 # A binary search tree would be faster, but this is easier to write.
29 # If this needs to become faster, understand that the important operations
30 # here are append, arbitrary deletion and searching.
31 self._uuids = [None]
32 self._window_idx = browser.GetBrowserWindowCount()
33 self._browser = browser
34 browser.OpenNewBrowserWindow(visible)
35 # We leave the 0'th tab empty to have something to close on __del__
36
37 def __del__(self):
38 self._browser.CloseBrowserWindow(self._window_idx)
39
40 def CreateTab(self, url='about:blank'):
41 """Create a tracked tab and return its uuid.
42
43 Args:
44 url: a URL to navigate to
45
46 Returns:
47 a uuid uniquely identifying that tab within this TabTracker
48 """
49 self._browser.AppendTab(url, self._window_idx)
50 # We use uuids here rather than a monotonic integer to prevent confusion
51 # with the tab index.
52 tab_uuid = uuid.uuid4()
53 self._uuids.append(tab_uuid)
54 return tab_uuid
55
56 def ReleaseTab(self, tab_uuid):
57 """Release and close a tab tracked by this TabTracker.
58
59 Args:
60 tab_uuid: the uuid of the tab to close
61 """
62 idx = self.GetTabIndex(tab_uuid)
63 self._browser.CloseTab(tab_index=idx, windex=self._window_idx)
64 del self._uuids[idx]
65
66 def GetTabIndex(self, tab_uuid):
67 """Get the index of a tracked tab within this TabTracker's window.
68
69 Args:
70 tab_uuid: the uuid of the tab to close
71
72 Returns:
73 the index of the tab within this TabTracker's window
74 """
75 return self._uuids.index(tab_uuid)
76
77 def GetWindowIndex(self):
78 """Get the index of this TabTracker's window.
79
80 Returns:
81 the index of this TabTracker's window
82 """
83 return self._window_idx
OLDNEW
« no previous file with comments | « chrome/test/functional/tracing/pyauto_tracing.py ('k') | chrome/test/functional/tracing/timeline_model.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698