| 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()
|
|
|