Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
index 4b486beab404c4e0f3bb6dddd9156522fa8676ac..94390bbe9c7659fdf095cb2da04d2fa2dd3b6cd4 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
@@ -153,7 +153,7 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
# Initialize fields so that an explosion during init doesn't break in Close. |
self._backend_settings = backend_settings |
- self._saved_cmdline = '' |
+ self._saved_cmdline = None |
self._target_arch = target_arch |
self._saved_sslflag = '' |
@@ -219,24 +219,33 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
self._adb.IsUserBuild()) |
try: |
- # Save the current command line to restore later, except if it appears to |
- # be a Telemetry created one. This is to prevent a common bug where |
- # --host-resolver-rules borks people's browsers if something goes wrong |
- # with Telemetry. |
- self._saved_cmdline = ''.join(self._adb.device().ReadFile(cmdline_file)) |
+ # Save the current command line to restore later |
+ self._saved_cmdline = self._adb.device().ReadFile( |
+ cmdline_file, as_root=True) |
+ # ... except if it appears to be a Telemetry created one. This is to |
+ # prevent common bug where --host-resolver-rules borks people's browsers |
+ # if something goes wrong with Telemetry. |
if '--host-resolver-rules' in self._saved_cmdline: |
- self._saved_cmdline = '' |
+ self._saved_cmdline = None |
+ except device_errors.CommandFailedError: # file may not exist |
+ self._saved_cmdline = None |
+ |
+ try: |
self._adb.device().WriteFile(cmdline_file, content, as_root=True) |
- except device_errors.CommandFailedError: |
- logging.critical('Cannot set Chrome command line. ' |
- 'Fix this by flashing to a userdebug build.') |
+ except device_errors.CommandFailedError as exc: |
+ logging.critical('Cannot set Chrome command line: %s', str(exc)) |
+ logging.critical('May be fixed by flashing to a userdebug build.') |
sys.exit(1) |
def _RestoreCommandLine(self): |
cmdline_file = self._backend_settings.GetCommandLineFile( |
self._adb.IsUserBuild()) |
- self._adb.device().WriteFile(cmdline_file, self._saved_cmdline, |
- as_root=True) |
+ if self._saved_cmdline is not None: |
+ self._adb.device().WriteFile(cmdline_file, self._saved_cmdline, |
+ as_root=True) |
+ else: |
+ self._adb.device().RunShellCommand(['rm', cmdline_file], |
+ as_root=True) |
def Start(self): |
self._SetUpCommandLine() |