import os
from telemetry import decorators
+from telemetry.core import app
from telemetry.core import browser_credentials
from telemetry.core import exceptions
from telemetry.core import extension_dict
from telemetry.core import local_server
from telemetry.core import memory_cache_http_server
from telemetry.core import tab_list
-from telemetry.core import wpr_modes
-from telemetry.core import wpr_server
from telemetry.core.backends import browser_backend
-class Browser(object):
+class Browser(app.App):
"""A running browser instance that can be controlled in a limited way.
To create a browser instance, use browser_finder.FindBrowser.
Be sure to clean up after yourself by calling Close() when you are done with
the browser. Or better yet:
browser_to_create = FindBrowser(options)
- with browser_to_create.Create() as browser:
+ with browser_to_create.Create(options) as browser:
... do all your operations on browser here
"""
- def __init__(self, backend, platform_backend, archive_path,
- append_to_existing_wpr, make_javascript_deterministic,
- credentials_path):
- assert platform_backend.platform != None
-
+ def __init__(self, backend, platform_backend, credentials_path):
+ super(Browser, self).__init__(app_backend=backend,
+ platform_backend=platform_backend)
self._browser_backend = backend
self._platform_backend = platform_backend
- self._wpr_server = None
self._local_server_controller = local_server.LocalServerController(backend)
self._tabs = tab_list.TabList(backend.tab_list_backend)
self.credentials = browser_credentials.BrowserCredentials()
self.credentials.credentials_path = credentials_path
self._platform_backend.DidCreateBrowser(self, self._browser_backend)
- self.SetReplayArchivePath(archive_path,
- append_to_existing_wpr,
- make_javascript_deterministic)
-
browser_options = self._browser_backend.browser_options
self.platform.FlushDnsCache()
if browser_options.clear_sytem_cache_for_browser_and_profile_on_start:
self._browser_backend.Start()
self._platform_backend.DidStartBrowser(self, self._browser_backend)
- def __enter__(self):
- return self
-
- def __exit__(self, *args):
- self.Close()
-
- @property
- def platform(self):
- return self._platform_backend.platform
-
@property
def browser_type(self):
- return self._browser_backend.browser_type
+ return self.app_type
@property
def supports_extensions(self):
result = self._GetStatsCommon(self._platform_backend.GetCpuStats)
del result['ProcessCount']
+ # FIXME: Renderer process CPU times are impossible to compare correctly.
+ # http://crbug.com/419786#c11
+ if 'Renderer' in result:
+ del result['Renderer']
+
# We want a single time value, not the sum for all processes.
cpu_timestamp = self._platform_backend.GetCpuTimestamp()
for process_type in result:
if self._browser_backend.IsBrowserRunning():
self._platform_backend.WillCloseBrowser(self, self._browser_backend)
- if self._wpr_server:
- self._wpr_server.Close()
- self._wpr_server = None
-
self._local_server_controller.Close()
self._browser_backend.Close()
self.credentials = None
"""Returns the currently running local servers."""
return self._local_server_controller.local_servers
- def SetReplayArchivePath(self, archive_path, append_to_existing_wpr=False,
- make_javascript_deterministic=True):
- if self._wpr_server:
- self._wpr_server.Close()
- self._wpr_server = None
-
- if not archive_path:
- return None
-
- if self._browser_backend.wpr_mode == wpr_modes.WPR_OFF:
- return
-
- use_record_mode = self._browser_backend.wpr_mode == wpr_modes.WPR_RECORD
- if not use_record_mode:
- assert os.path.isfile(archive_path)
-
- self._wpr_server = wpr_server.ReplayServer(
- self._browser_backend,
- archive_path,
- use_record_mode,
- append_to_existing_wpr,
- make_javascript_deterministic)
-
def GetStandardOutput(self):
return self._browser_backend.GetStandardOutput()
See the documentation of the SystemInfo class for more details."""
return self._browser_backend.GetSystemInfo()
-
- # TODO: Remove after call to Start() has been removed from
- # related authotest files.
- def Start(self):
- pass