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

Unified Diff: tools/telemetry/telemetry/browser_backend.py

Issue 11882033: Telemetry support for extensions. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: copyright 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/browser.py ('k') | tools/telemetry/telemetry/browser_finder.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/browser_backend.py
===================================================================
--- tools/telemetry/telemetry/browser_backend.py (revision 182312)
+++ tools/telemetry/telemetry/browser_backend.py (working copy)
@@ -10,6 +10,7 @@
import sys
from telemetry import browser_gone_exception
+from telemetry import extension_dict_backend
from telemetry import options_for_unittests
from telemetry import tab_list_backend
from telemetry import tracing_backend
@@ -18,15 +19,19 @@
from telemetry import wpr_modes
from telemetry import wpr_server
+class ExtensionsNotSupportedException(Exception):
+ pass
+
class BrowserBackend(object):
"""A base class for browser backends. Provides basic functionality
once a remote-debugger port has been established."""
WEBPAGEREPLAY_HOST = '127.0.0.1'
- def __init__(self, is_content_shell, options):
+ def __init__(self, is_content_shell, supports_extensions, options):
self.browser_type = options.browser_type
self.is_content_shell = is_content_shell
+ self._supports_extensions = supports_extensions
self.options = options
self._browser = None
self._port = None
@@ -47,6 +52,10 @@
'such as about:flags settings, cookies, and '
'extensions.\n')
self._tab_list_backend = tab_list_backend.TabListBackend(self)
+ self._extension_dict_backend = None
+ if supports_extensions:
+ self._extension_dict_backend = \
+ extension_dict_backend.ExtensionDictBackend(self)
def SetBrowser(self, browser):
self._browser = browser
@@ -57,9 +66,18 @@
return self._browser
@property
+ def supports_extensions(self):
+ """True if this browser backend supports extensions."""
+ return self._supports_extensions
+
+ @property
def tab_list_backend(self):
return self._tab_list_backend
+ @property
+ def extension_dict_backend(self):
+ return self._extension_dict_backend
+
def GetBrowserStartupArgs(self):
args = []
args.extend(self.options.extra_browser_args)
@@ -73,6 +91,12 @@
self.webpagereplay_remote_https_port))
args.extend(user_agent.GetChromeUserAgentArgumentFromType(
self.options.browser_user_agent_type))
+
+ extensions = ','.join(
+ [extension.path for extension in self.options.extensions_to_load])
+ if len(self.options.extensions_to_load) > 0:
+ args.append('--load-extension=%s' % extensions)
+
return args
@property
@@ -92,6 +116,17 @@
except util.TimeoutException:
raise browser_gone_exception.BrowserGoneException()
+ def AllExtensionsLoaded():
+ for e in self.options.extensions_to_load:
+ extension_id = e.extension_id()
+ if not extension_id in self._extension_dict_backend:
+ return False
+ extension_object = self._extension_dict_backend[extension_id]
+ extension_object.WaitForDocumentReadyStateToBeInteractiveOrBetter()
+ return True
+ if self._supports_extensions:
+ util.WaitFor(AllExtensionsLoaded, timeout=30)
+
def _PostBrowserStartupInitialization(self):
# Detect version information.
data = self.Request('version')
« no previous file with comments | « tools/telemetry/telemetry/browser.py ('k') | tools/telemetry/telemetry/browser_finder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698