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

Unified Diff: tools/telemetry/telemetry/internal/browser/browser.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
Index: tools/telemetry/telemetry/internal/browser/browser.py
diff --git a/tools/telemetry/telemetry/internal/browser/browser.py b/tools/telemetry/telemetry/internal/browser/browser.py
deleted file mode 100644
index a36631f724807cd2e3d65a02835d3f45972fb9d8..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/browser/browser.py
+++ /dev/null
@@ -1,286 +0,0 @@
-# Copyright 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import logging
-import sys
-
-from catapult_base import cloud_storage # pylint: disable=import-error
-
-from telemetry.core import exceptions
-from telemetry.core import profiling_controller
-from telemetry import decorators
-from telemetry.internal import app
-from telemetry.internal.backends import browser_backend
-from telemetry.internal.browser import browser_credentials
-from telemetry.internal.browser import extension_dict
-from telemetry.internal.browser import tab_list
-from telemetry.internal.browser import web_contents
-from telemetry.internal.util import exception_formatter
-
-
-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(options) as browser:
- ... do all your operations on browser here
- """
- def __init__(self, backend, platform_backend, credentials_path):
- super(Browser, self).__init__(app_backend=backend,
- platform_backend=platform_backend)
- try:
- self._browser_backend = backend
- self._platform_backend = platform_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)
- browser_options = self._browser_backend.browser_options
- self.platform.FlushDnsCache()
- if browser_options.clear_sytem_cache_for_browser_and_profile_on_start:
- if self.platform.CanFlushIndividualFilesFromSystemCache():
- self.platform.FlushSystemCacheForDirectory(
- self._browser_backend.profile_directory)
- self.platform.FlushSystemCacheForDirectory(
- self._browser_backend.browser_directory)
- else:
- self.platform.FlushEntireSystemCache()
-
- self._browser_backend.SetBrowser(self)
- self._browser_backend.Start()
- self._platform_backend.DidStartBrowser(self, self._browser_backend)
- self._profiling_controller = profiling_controller.ProfilingController(
- self._browser_backend.profiling_controller_backend)
- except Exception:
- exc_info = sys.exc_info()
- logging.exception('Failure while starting browser backend.')
- try:
- self._platform_backend.WillCloseBrowser(self, self._browser_backend)
- except Exception:
- exception_formatter.PrintFormattedException(
- msg='Exception raised while closing platform backend')
- raise exc_info[0], exc_info[1], exc_info[2]
-
- @property
- def profiling_controller(self):
- return self._profiling_controller
-
- @property
- def browser_type(self):
- return self.app_type
-
- @property
- def supports_extensions(self):
- return self._browser_backend.supports_extensions
-
- @property
- def supports_tab_control(self):
- return self._browser_backend.supports_tab_control
-
- @property
- def tabs(self):
- return self._tabs
-
- @property
- def foreground_tab(self):
- for i in xrange(len(self._tabs)):
- # The foreground tab is the first (only) one that isn't hidden.
- # This only works through luck on Android, due to crbug.com/322544
- # which means that tabs that have never been in the foreground return
- # document.hidden as false; however in current code the Android foreground
- # tab is always tab 0, which will be the first one that isn't hidden
- if self._tabs[i].EvaluateJavaScript('!document.hidden'):
- return self._tabs[i]
- raise Exception("No foreground tab found")
-
- @property
- @decorators.Cache
- def extensions(self):
- if not self.supports_extensions:
- raise browser_backend.ExtensionsNotSupportedException(
- 'Extensions not supported')
- return extension_dict.ExtensionDict(self._browser_backend.extension_backend)
-
- def _GetStatsCommon(self, pid_stats_function):
- browser_pid = self._browser_backend.pid
- result = {
- 'Browser': dict(pid_stats_function(browser_pid), **{'ProcessCount': 1}),
- 'Renderer': {'ProcessCount': 0},
- 'Gpu': {'ProcessCount': 0},
- 'Other': {'ProcessCount': 0}
- }
- process_count = 1
- for child_pid in self._platform_backend.GetChildPids(browser_pid):
- try:
- child_cmd_line = self._platform_backend.GetCommandLine(child_pid)
- child_stats = pid_stats_function(child_pid)
- except exceptions.ProcessGoneException:
- # It is perfectly fine for a process to have gone away between calling
- # GetChildPids() and then further examining it.
- continue
- child_process_name = self._browser_backend.GetProcessName(child_cmd_line)
- process_name_type_key_map = {'gpu-process': 'Gpu', 'renderer': 'Renderer'}
- if child_process_name in process_name_type_key_map:
- child_process_type_key = process_name_type_key_map[child_process_name]
- else:
- # TODO: identify other process types (zygote, plugin, etc), instead of
- # lumping them in a single category.
- child_process_type_key = 'Other'
- result[child_process_type_key]['ProcessCount'] += 1
- for k, v in child_stats.iteritems():
- if k in result[child_process_type_key]:
- result[child_process_type_key][k] += v
- else:
- result[child_process_type_key][k] = v
- process_count += 1
- for v in result.itervalues():
- if v['ProcessCount'] > 1:
- for k in v.keys():
- if k.endswith('Peak'):
- del v[k]
- del v['ProcessCount']
- result['ProcessCount'] = process_count
- return result
-
- @property
- def memory_stats(self):
- """Returns a dict of memory statistics for the browser:
- { 'Browser': {
- 'VM': R,
- 'VMPeak': S,
- 'WorkingSetSize': T,
- 'WorkingSetSizePeak': U,
- 'ProportionalSetSize': V,
- 'PrivateDirty': W
- },
- 'Gpu': {
- 'VM': R,
- 'VMPeak': S,
- 'WorkingSetSize': T,
- 'WorkingSetSizePeak': U,
- 'ProportionalSetSize': V,
- 'PrivateDirty': W
- },
- 'Renderer': {
- 'VM': R,
- 'VMPeak': S,
- 'WorkingSetSize': T,
- 'WorkingSetSizePeak': U,
- 'ProportionalSetSize': V,
- 'PrivateDirty': W
- },
- 'SystemCommitCharge': X,
- 'SystemTotalPhysicalMemory': Y,
- 'ProcessCount': Z,
- }
- Any of the above keys may be missing on a per-platform basis.
- """
- self._platform_backend.PurgeUnpinnedMemory()
- result = self._GetStatsCommon(self._platform_backend.GetMemoryStats)
- commit_charge = self._platform_backend.GetSystemCommitCharge()
- if commit_charge:
- result['SystemCommitCharge'] = commit_charge
- total = self._platform_backend.GetSystemTotalPhysicalMemory()
- if total:
- result['SystemTotalPhysicalMemory'] = total
- return result
-
- @property
- def cpu_stats(self):
- """Returns a dict of cpu statistics for the system.
- { 'Browser': {
- 'CpuProcessTime': S,
- 'TotalTime': T
- },
- 'Gpu': {
- 'CpuProcessTime': S,
- 'TotalTime': T
- },
- 'Renderer': {
- 'CpuProcessTime': S,
- 'TotalTime': T
- }
- }
- Any of the above keys may be missing on a per-platform basis.
- """
- result = self._GetStatsCommon(self._platform_backend.GetCpuStats)
- del result['ProcessCount']
-
- # We want a single time value, not the sum for all processes.
- cpu_timestamp = self._platform_backend.GetCpuTimestamp()
- for process_type in result:
- # Skip any process_types that are empty
- if not len(result[process_type]):
- continue
- result[process_type].update(cpu_timestamp)
- return result
-
- def Close(self):
- """Closes this browser."""
- if self._browser_backend.IsBrowserRunning():
- self._platform_backend.WillCloseBrowser(self, self._browser_backend)
-
- self._browser_backend.profiling_controller_backend.WillCloseBrowser()
- if self._browser_backend.supports_uploading_logs:
- try:
- self._browser_backend.UploadLogsToCloudStorage()
- except cloud_storage.CloudStorageError as e:
- logging.error('Cannot upload browser log: %s' % str(e))
- self._browser_backend.Close()
- self.credentials = None
-
-
- def GetStandardOutput(self):
- return self._browser_backend.GetStandardOutput()
-
- def GetStackTrace(self):
- return self._browser_backend.GetStackTrace()
-
- @property
- def supports_system_info(self):
- return self._browser_backend.supports_system_info
-
- def GetSystemInfo(self):
- """Returns low-level information about the system, if available.
-
- See the documentation of the SystemInfo class for more details."""
- return self._browser_backend.GetSystemInfo()
-
- @property
- def supports_memory_dumping(self):
- return self._browser_backend.supports_memory_dumping
-
- def DumpMemory(self, timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
- return self._browser_backend.DumpMemory(timeout)
-
- @property
- def supports_overriding_memory_pressure_notifications(self):
- return (
- self._browser_backend.supports_overriding_memory_pressure_notifications)
-
- def SetMemoryPressureNotificationsSuppressed(
- self, suppressed, timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
- self._browser_backend.SetMemoryPressureNotificationsSuppressed(
- suppressed, timeout)
-
- def SimulateMemoryPressureNotification(
- self, pressure_level, timeout=web_contents.DEFAULT_WEB_CONTENTS_TIMEOUT):
- self._browser_backend.SimulateMemoryPressureNotification(
- pressure_level, timeout)
-
- @property
- def supports_cpu_metrics(self):
- return self._browser_backend.supports_cpu_metrics
-
- @property
- def supports_memory_metrics(self):
- return self._browser_backend.supports_memory_metrics
-
- @property
- def supports_power_metrics(self):
- return self._browser_backend.supports_power_metrics

Powered by Google App Engine
This is Rietveld 408576698