Chromium Code Reviews| 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 401b7b926d9add1e35b38a9828f7be7b72aaa257..29d20aafa10564aab2cbb7b027869ecfc1856bd2 100644 |
| --- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
| +++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
| @@ -6,8 +6,10 @@ import logging |
| import os |
| import pipes |
| import re |
| +import shutil |
| import subprocess |
| import sys |
| +import tempfile |
| import time |
| from telemetry.core import exceptions |
| @@ -22,6 +24,11 @@ util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
| from pylib.device import device_errors # pylint: disable=F0401 |
| from pylib.device import intent # pylint: disable=F0401 |
| +util.AddDirToPythonPath(util.GetChromiumSrcDir(), |
| + 'third_party', 'webpagereplay') |
| +import adb_install_cert # pylint: disable=F0401 |
| +import certutils # pylint: disable=F0401 |
|
hjd
2014/10/01 18:05:01
This import seems to have broken http://build.chro
|
| + |
| class AndroidBrowserBackendSettings(object): |
| @@ -189,6 +196,9 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
| self._saved_cmdline = '' |
| self._target_arch = target_arch |
| self._saved_sslflag = '' |
| + self._use_rndis_forwarder = use_rndis_forwarder |
| + self._cert_util = None |
| + self._ca_cert_path = os.path.join(tempfile.mkdtemp(), 'testca.pem') |
| # TODO(tonyg): This is flaky because it doesn't reserve the port that it |
| # allocates. Need to fix this. |
| @@ -201,6 +211,8 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
| self._saved_sslflag = self._adb.device().GetProp('socket.relaxsslcheck') |
| self._adb.device().SetProp('socket.relaxsslcheck', 'yes') |
| + self._InstallTestCa() |
| + |
| # Kill old browser. |
| self._KillBrowser() |
| @@ -230,6 +242,20 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
| def _adb(self): |
| return self._android_platform_backend.adb |
| + def _InstallTestCa(self): |
| + certutils.write_dummy_ca_cert(*certutils.generate_dummy_ca_cert(), |
| + cert_path=self._ca_cert_path) |
| + self._cert_util = adb_install_cert.AndroidCertInstaller( |
| + self._adb.device_serial(), None, self._ca_cert_path) |
| + |
| + logging.info('Installing test CA') |
| + self._cert_util.install_cert(True) |
| + |
| + def _RemoveTestCa(self): |
| + self._cert_util.remove_cert() |
| + ca_cert_dir = os.path.dirname(self._ca_cert_path) |
| + shutil.rmtree(ca_cert_dir) |
| + |
| def _KillBrowser(self): |
| # We use KillAll rather than ForceStop for efficiency reasons. |
| try: |
| @@ -377,6 +403,8 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
| if self._backend_settings.relax_ssl_check: |
| self._adb.device().SetProp('socket.relaxsslcheck', self._saved_sslflag) |
| + self._RemoveTestCa() |
| + |
| if self._output_profile_path: |
| logging.info("Pulling profile directory from device: '%s'->'%s'.", |
| self._backend_settings.profile_dir, |
| @@ -440,3 +468,6 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
| extra_wpr_args.append('--no-dns_forwarding') |
| if self.browser_options.netsim: |
| extra_wpr_args.append('--net=%s' % self.browser_options.netsim) |
| + if self.browser_options.netsim or self._use_rndis_forwarder: |
| + extra_wpr_args.append('--should_generate_certs') |
| + extra_wpr_args.append('--https_root_ca_cert_path=%s' % self._ca_cert_path) |