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

Side by Side Diff: tools/telemetry/telemetry/tab_list_backend.py

Issue 12260020: [Telemetry] Fix tab list updating with connected tabs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: New unit tests. Created 7 years, 10 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
« no previous file with comments | « tools/telemetry/telemetry/browser_unittest.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import httplib 4 import httplib
5 import json 5 import json
6 import socket 6 import socket
7 import urllib2 7 import urllib2
8 import weakref 8 import weakref
9 9
10 from telemetry import browser_gone_exception 10 from telemetry import browser_gone_exception
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 tab_id = debugger_url.split('/')[-1] 55 tab_id = debugger_url.split('/')[-1]
56 try: 56 try:
57 response = self._browser_backend.Request('close/%s' % tab_id, 57 response = self._browser_backend.Request('close/%s' % tab_id,
58 timeout=timeout) 58 timeout=timeout)
59 except urllib2.HTTPError: 59 except urllib2.HTTPError:
60 raise Exception('Unable to close tab, tab id not found: %s' % tab_id) 60 raise Exception('Unable to close tab, tab id not found: %s' % tab_id)
61 assert response == 'Target is closing' 61 assert response == 'Target is closing'
62 62
63 util.WaitFor(lambda: not self._FindTabInfo(debugger_url), timeout=5) 63 util.WaitFor(lambda: not self._FindTabInfo(debugger_url), timeout=5)
64
65 if debugger_url in self._tab_dict:
66 del self._tab_dict[debugger_url]
64 self._UpdateTabList() 67 self._UpdateTabList()
65 68
66 def ActivateTab(self, debugger_url, timeout=None): 69 def ActivateTab(self, debugger_url, timeout=None):
67 assert self._browser_backend.supports_tab_control 70 assert self._browser_backend.supports_tab_control
68 71
69 assert debugger_url in self._tab_dict 72 assert debugger_url in self._tab_dict
70 tab_id = debugger_url.split('/')[-1] 73 tab_id = debugger_url.split('/')[-1]
71 try: 74 try:
72 response = self._browser_backend.Request('activate/%s' % tab_id, 75 response = self._browser_backend.Request('activate/%s' % tab_id,
73 timeout=timeout) 76 timeout=timeout)
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 except (socket.error, httplib.BadStatusLine, urllib2.URLError): 129 except (socket.error, httplib.BadStatusLine, urllib2.URLError):
127 if not self._browser_backend.IsBrowserRunning(): 130 if not self._browser_backend.IsBrowserRunning():
128 raise browser_gone_exception.BrowserGoneException() 131 raise browser_gone_exception.BrowserGoneException()
129 raise BrowserConnectionGoneException() 132 raise BrowserConnectionGoneException()
130 133
131 def _UpdateTabList(self): 134 def _UpdateTabList(self):
132 def GetDebuggerUrl(tab_info): 135 def GetDebuggerUrl(tab_info):
133 if 'webSocketDebuggerUrl' not in tab_info: 136 if 'webSocketDebuggerUrl' not in tab_info:
134 return None 137 return None
135 return tab_info['webSocketDebuggerUrl'] 138 return tab_info['webSocketDebuggerUrl']
136 newtab_list = map(GetDebuggerUrl, self._ListTabs()) 139 new_tab_list = map(GetDebuggerUrl, self._ListTabs())
137 self._tab_list = [t for t in self._tab_list if t in newtab_list] 140 self._tab_list = [t for t in self._tab_list
138 self._tab_list += [t for t in newtab_list if t not in self._tab_list] 141 if t in self._tab_dict or t in new_tab_list]
142 self._tab_list += [t for t in new_tab_list
143 if t is not None and t not in self._tab_list]
139 144
140 def _FindTabInfo(self, debugger_url): 145 def _FindTabInfo(self, debugger_url):
141 for tab_info in self._ListTabs(): 146 for tab_info in self._ListTabs():
142 if tab_info.get('webSocketDebuggerUrl') == debugger_url: 147 if tab_info.get('webSocketDebuggerUrl') == debugger_url:
143 return tab_info 148 return tab_info
144 return None 149 return None
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/browser_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698