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

Unified Diff: tools/telemetry/telemetry/core/platform/android_platform_backend.py

Issue 93733002: [Telemetry] Refactoring in preparation for video-based Speed Index support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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/core/platform/android_platform_backend.py
diff --git a/tools/telemetry/telemetry/core/platform/android_platform_backend.py b/tools/telemetry/telemetry/core/platform/android_platform_backend.py
index 9cd6f677bb4dbdcee2c1a41fe9612ccae855ec0a..33404777f04e672d947bde42ad8cf31a0ae94e49 100644
--- a/tools/telemetry/telemetry/core/platform/android_platform_backend.py
+++ b/tools/telemetry/telemetry/core/platform/android_platform_backend.py
@@ -3,6 +3,9 @@
# found in the LICENSE file.
import logging
+import os
+import subprocess
+import tempfile
from telemetry.core import exceptions
from telemetry.core import platform
@@ -39,6 +42,8 @@ class AndroidPlatformBackend(
self._host_platform_backend = platform.CreatePlatformBackendForCurrentOS()
self._can_access_protected_file_contents = \
self._adb.CanAccessProtectedFileContents()
+ self._video_recorder = None
+ self._video_output = None
if self._no_performance_mode:
logging.warning('CPU governor will not be set!')
@@ -135,6 +140,9 @@ class AndroidPlatformBackend(
def GetOSName(self):
return 'android'
+ def GetOSVersionName(self):
+ return self._adb.GetBuildId()[0]
+
def CanFlushIndividualFilesFromSystemCache(self):
return False
@@ -170,6 +178,29 @@ class AndroidPlatformBackend(
raise NotImplementedError(
'Please teach Telemetry how to install ' + application)
+ def CanCaptureBrowserVideo(self):
+ return self.GetOSVersionName() >= 'K'
+
+ def StartBrowserVideoCapture(self, tab, max_bitrate_mbps):
+ assert not self._video_recorder, 'Already started video capture'
+ assert max_bitrate_mbps >= 0.1 and max_bitrate_mbps <= 100
+ self._video_output = tempfile.mkstemp()[1]
+ self._video_recorder = subprocess.Popen(
+ [os.path.join(util.GetChromiumSrcDir(), 'build', 'android',
+ 'screenshot.py'),
+ '--video', '--bitrate', str(max_bitrate_mbps), '--file',
+ self._video_output], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+
+ def StopBrowserVideoCapture(self):
+ assert self._video_recorder, 'Must start video capture first'
+ self._video_recorder.communicate(input='\n')
+ self._video_recorder.wait()
+ self._video_recorder = None
+
+ # TODO(tonyg/szym): Decode the mp4 output and return the list of bitmaps.
+ raise NotImplementedError("mp4 video saved to %s, but Telemetry doesn't "
bulach 2013/11/28 11:05:23 drive-by: no idea if this is what you need, but: a
szym 2013/11/29 11:05:12 Like you said, it could easily reach 1-2GB. It wo
tonyg 2013/11/29 20:42:07 We accidentally checked in a PIL dep on the bots r
bulach 2013/12/02 18:11:59 I'm not volunteering myself but just throwing some
+ "know how to decode it." % self._video_output)
+
def _GetFileContents(self, fname):
if not self._can_access_protected_file_contents:
logging.warning('%s cannot be retrieved on non-rooted device.' % fname)

Powered by Google App Engine
This is Rietveld 408576698