Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 urllib2 | 4 import urllib2 |
| 5 import httplib | 5 import httplib |
| 6 import socket | 6 import socket |
| 7 import json | 7 import json |
| 8 | 8 |
| 9 from telemetry import browser_gone_exception | 9 from telemetry import browser_gone_exception |
| 10 from telemetry import inspector_backend | 10 from telemetry import inspector_backend |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 58 return True | 58 return True |
| 59 try: | 59 try: |
| 60 util.WaitFor(IsBrowserUp, timeout=30) | 60 util.WaitFor(IsBrowserUp, timeout=30) |
| 61 except util.TimeoutException: | 61 except util.TimeoutException: |
| 62 raise browser_gone_exception.BrowserGoneException() | 62 raise browser_gone_exception.BrowserGoneException() |
| 63 | 63 |
| 64 @property | 64 @property |
| 65 def _debugger_url(self): | 65 def _debugger_url(self): |
| 66 return 'http://localhost:%i/json' % self._port | 66 return 'http://localhost:%i/json' % self._port |
| 67 | 67 |
| 68 def _ListExtensionPages(self, extension_id, timeout=None): | |
| 69 req = urllib2.urlopen(self._debugger_url, timeout=timeout) | |
| 70 data = req.read() | |
| 71 all_contexts = json.loads(data) | |
| 72 pages = [ctx for ctx in all_contexts | |
| 73 if ctx['url'].startswith('chrome-extension://%s' % extension_id)] | |
| 74 return pages | |
| 75 | |
| 68 def _ListTabs(self, timeout=None): | 76 def _ListTabs(self, timeout=None): |
| 69 req = urllib2.urlopen(self._debugger_url, timeout=timeout) | 77 req = urllib2.urlopen(self._debugger_url, timeout=timeout) |
| 70 data = req.read() | 78 data = req.read() |
| 71 all_contexts = json.loads(data) | 79 all_contexts = json.loads(data) |
| 72 tabs = [ctx for ctx in all_contexts | 80 tabs = [ctx for ctx in all_contexts |
| 73 if not ctx['url'].startswith('chrome-extension://')] | 81 if not ctx['url'].startswith('chrome-extension://')] |
| 74 # FIXME(dtu): The remote debugger protocol returns in order of most | 82 # FIXME(dtu): The remote debugger protocol returns in order of most |
| 75 # recently created tab first. In order to convert it to the UI tab | 83 # recently created tab first. In order to convert it to the UI tab |
| 76 # order, we just reverse the list, which assumes we can't move tabs. | 84 # order, we just reverse the list, which assumes we can't move tabs. |
| 77 # We should guarantee that the remote debugger returns in the UI tab order. | 85 # We should guarantee that the remote debugger returns in the UI tab order. |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 95 | 103 |
| 96 util.WaitFor(lambda: self.num_tabs == target_num_tabs, timeout=5) | 104 util.WaitFor(lambda: self.num_tabs == target_num_tabs, timeout=5) |
| 97 | 105 |
| 98 @property | 106 @property |
| 99 def num_tabs(self): | 107 def num_tabs(self): |
| 100 return len(self._ListTabs()) | 108 return len(self._ListTabs()) |
| 101 | 109 |
| 102 def GetNthTabUrl(self, index): | 110 def GetNthTabUrl(self, index): |
| 103 return self._ListTabs()[index]['url'] | 111 return self._ListTabs()[index]['url'] |
| 104 | 112 |
| 113 def ConnectToExtensionPage(self, browser, extension_id): | |
| 114 ib = inspector_backend.InspectorBackend(self, | |
| 115 self._ListExtensionPages(extension_id)[0]) | |
| 116 return tab.Tab(browser, ib) | |
|
nduca
2012/11/29 05:09:27
raise exception if nothing found
nduca
2012/11/29 05:09:27
this change looks totally landable. we'll want a u
zel
2012/12/04 03:12:48
I don't see browser_backend_unittest.py - what am
| |
| 117 | |
| 105 def ConnectToNthTab(self, browser, index): | 118 def ConnectToNthTab(self, browser, index): |
| 106 ib = inspector_backend.InspectorBackend(self, self._ListTabs()[index]) | 119 ib = inspector_backend.InspectorBackend(self, self._ListTabs()[index]) |
| 107 return tab.Tab(browser, ib) | 120 return tab.Tab(browser, ib) |
| 108 | 121 |
| 109 def DoesDebuggerUrlExist(self, url): | 122 def DoesDebuggerUrlExist(self, url): |
| 110 matches = [t for t in self._ListTabs() | 123 matches = [t for t in self._ListTabs() |
| 111 if 'webSocketDebuggerUrl' in t and\ | 124 if 'webSocketDebuggerUrl' in t and\ |
| 112 t['webSocketDebuggerUrl'] == url] | 125 t['webSocketDebuggerUrl'] == url] |
| 113 return len(matches) >= 1 | 126 return len(matches) >= 1 |
| 114 | 127 |
| 115 def CreateForwarder(self, host_port): | 128 def CreateForwarder(self, host_port): |
| 116 raise NotImplementedError() | 129 raise NotImplementedError() |
| 117 | 130 |
| 118 def IsBrowserRunning(self): | 131 def IsBrowserRunning(self): |
| 119 raise NotImplementedError() | 132 raise NotImplementedError() |
| OLD | NEW |