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