Index: tools/telemetry/telemetry/core/platform/__init__.py |
diff --git a/tools/telemetry/telemetry/core/platform/__init__.py b/tools/telemetry/telemetry/core/platform/__init__.py |
index 91c9747adba6e21dde1b1ad01499e04422795fa7..bf74b4610c141a29d2224b5fd91c5459a31ef247 100644 |
--- a/tools/telemetry/telemetry/core/platform/__init__.py |
+++ b/tools/telemetry/telemetry/core/platform/__init__.py |
@@ -2,12 +2,44 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-from telemetry.core.platform import factory |
- |
+import sys |
+ |
+def _CreateHostPlatformBackend(): |
+ if sys.platform.startswith('linux'): |
+ from telemetry.core.platform import linux_platform_backend |
+ return linux_platform_backend.LinuxPlatformBackend() |
+ elif sys.platform == 'darwin': |
+ from telemetry.core.platform import mac_platform_backend |
+ return mac_platform_backend.MacPlatformBackend() |
+ elif sys.platform == 'win32': |
+ from telemetry.core.platform import win_platform_backend |
+ return win_platform_backend.WinPlatformBackend() |
+ else: |
+ raise NotImplementedError() |
+ |
+_host_platform = None |
+ |
+def ResetHostPlatformSingleton(): |
tonyg
2014/08/02 15:58:18
What's the use case for resetting? I can't think o
|
+ global _host_platform |
+ if _host_platform: |
+ _host_platform.Close() |
+ _host_platform = None |
+ |
+def GetHostPlatformName(): |
+ if sys.platform.startswith('linux'): |
+ return 'linux' |
tonyg
2014/08/02 15:58:18
This ends up duplicating strings from the platform
|
+ elif sys.platform == 'darwin': |
+ return 'mac' |
+ elif sys.platform == 'win32': |
+ return 'win' |
+ else: |
+ raise NotImplementedError() |
def GetHostPlatform(): |
- return Platform(factory.GetPlatformBackendForCurrentOS()) |
- |
+ global _host_platform |
+ if not _host_platform: |
+ _host_platform = Platform(_CreateHostPlatformBackend()) |
+ return _host_platform |
class Platform(object): |
"""The platform that the target browser is running on. |
@@ -18,6 +50,10 @@ class Platform(object): |
""" |
def __init__(self, platform_backend): |
self._platform_backend = platform_backend |
+ self._platform_backend.SetPlatform(self) |
+ |
+ def Close(self): |
+ pass |
def IsRawDisplayFrameRateSupported(self): |
"""Platforms may be able to collect GL surface stats.""" |
@@ -235,3 +271,35 @@ class Platform(object): |
} |
""" |
return self._platform_backend.StopMonitoringPower() |
+ |
+ def GetChildPids(self, pid): |
tonyg
2014/08/02 15:58:18
Isn't this a backendy thing? Are we really exposin
|
+ return self._platform_backend.GetChildPids(pid) |
+ |
+ def GetCommandLine(self, pid): |
+ return self._platform_backend.GetCommandLine(pid) |
+ |
+ def WillGetMemoryStats(self): |
tonyg
2014/08/02 15:58:18
Seems like another good thing to hide from the API
|
+ self._platform_backend.PurgeUnpinnedMemory() |
+ |
+ def GetMemoryStats(self, pid): |
+ return self._platform_backend.GetMemoryStats(pid) |
+ |
+ def GetSystemCommitCharge(self): |
+ return self._platform_backend.GetSystemCommitCharge() |
+ |
+ def GetSystemTotalPhysicalMemory(self): |
+ return self._platform_backend.GetSystemTotalPhysicalMemory() |
+ |
+ def GetCpuStats(self, pid): |
+ return self._platform_backend.GetCpuStats(pid) |
+ |
+ def GetIOStats(self, pid): |
+ return self._platform.GetIOStats(pid) |
+ |
+ def InstantiateProfiler(self, profiler_class, browser_backend, |
+ base_output_file, state): |
+ return profiler_class(browser_backend, self, base_output_file, state) |
+ |
+ def WillCloseBrowser(self, browser_backend, profiler_classes): |
+ for cls in profiler_classes: |
+ cls.WillCloseBrowser(browser_backend, self._platform_backend) |