Index: tools/telemetry/telemetry/browser_backend.py |
diff --git a/tools/telemetry/telemetry/browser_backend.py b/tools/telemetry/telemetry/browser_backend.py |
index b45919dd237c2d5c92e5d358f6f05432512e7a6e..7b69e9f266451e41cd785ffbcb888e6bd4ee470c 100644 |
--- a/tools/telemetry/telemetry/browser_backend.py |
+++ b/tools/telemetry/telemetry/browser_backend.py |
@@ -7,6 +7,7 @@ import socket |
import json |
from telemetry import browser_gone_exception |
+from telemetry import extension_page |
from telemetry import inspector_backend |
from telemetry import tab |
from telemetry import user_agent |
@@ -65,6 +66,14 @@ class BrowserBackend(object): |
def _debugger_url(self): |
return 'http://localhost:%i/json' % self._port |
+ def _ListExtensionPages(self, extension_id, timeout=None): |
+ req = urllib2.urlopen(self._debugger_url, timeout=timeout) |
+ data = req.read() |
+ all_contexts = json.loads(data) |
+ pages = [ctx for ctx in all_contexts |
+ if ctx['url'].startswith('chrome-extension://%s' % extension_id)] |
+ return pages |
+ |
def _ListTabs(self, timeout=None): |
req = urllib2.urlopen(self._debugger_url, timeout=timeout) |
data = req.read() |
@@ -102,6 +111,11 @@ class BrowserBackend(object): |
def GetNthTabUrl(self, index): |
return self._ListTabs()[index]['url'] |
+ def ConnectToExtensionPage(self, browser, extension_id): |
+ ib = inspector_backend.InspectorBackend(self, |
+ self._ListExtensionPages(extension_id)[0]) |
+ return extension_page.ExtensionPage(browser, ib) |
+ |
def ConnectToNthTab(self, browser, index): |
ib = inspector_backend.InspectorBackend(self, self._ListTabs()[index]) |
return tab.Tab(browser, ib) |