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 c022e202e575889b319ad09ced05dd726fbb5183..6194dbaddbb7da4c5d4c4e586e1ecefad070109e 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_backend.py |
@@ -11,7 +11,6 @@ import time |
from telemetry.core import exceptions |
from telemetry.core import forwarders |
-from telemetry.core import platform |
from telemetry.core import util |
from telemetry.core.backends import adb_commands |
from telemetry.core.backends import browser_backend |
@@ -26,13 +25,14 @@ from pylib.device import intent # pylint: disable=F0401 |
class AndroidBrowserBackendSettings(object): |
def __init__(self, adb, activity, cmdline_file, package, pseudo_exec_name, |
- supports_tab_control): |
+ supports_tab_control, relax_ssl_check=False): |
self.adb = adb |
self.activity = activity |
self.cmdline_file = cmdline_file |
self.package = package |
self.pseudo_exec_name = pseudo_exec_name |
self.supports_tab_control = supports_tab_control |
+ self.relax_ssl_check = relax_ssl_check |
def GetDevtoolsRemotePort(self): |
raise NotImplementedError() |
@@ -185,6 +185,7 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
self._backend_settings = backend_settings |
self._saved_cmdline = '' |
self._target_arch = target_arch |
+ self._saved_sslflag = '' |
# TODO(tonyg): This is flaky because it doesn't reserve the port that it |
# allocates. Need to fix this. |
@@ -202,9 +203,8 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
self._forwarder_factory = android_forwarder.AndroidForwarderFactory( |
self._adb, use_rndis_forwarder) |
- if (self.browser_options.netsim or |
- platform.GetHostPlatform().GetOSName() == 'mac'): |
- assert use_rndis_forwarder, 'Netsim and/or Mac require RNDIS forwarding.' |
+ if self.browser_options.netsim or use_rndis_forwarder: |
+ assert use_rndis_forwarder, 'Netsim requires RNDIS forwarding.' |
self.wpr_port_pairs = forwarders.PortPairs( |
http=forwarders.PortPair(0, 80), |
https=forwarders.PortPair(0, 443), |
@@ -265,6 +265,14 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
def Start(self): |
self._SetUpCommandLine() |
+ |
+ # Disables android.net SSL certificate check. This is necessary for |
+ # applications using the android.net stack to work with proxy HTTPS server |
+ # created by telemetry |
+ if self._backend_settings.relax_ssl_check: |
+ self._saved_sslflag = self._adb.device().GetProp('socket.relaxsslcheck') |
+ self._adb.device().SetProp('socket.relaxsslcheck', 'yes') |
+ |
self._adb.device().RunShellCommand('logcat -c') |
if self.browser_options.startup_url: |
url = self.browser_options.startup_url |
@@ -361,6 +369,10 @@ class AndroidBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
super(AndroidBrowserBackend, self).Close() |
self._adb.device().ForceStop(self._backend_settings.package) |
+ # Restore android.net SSL check |
+ if self._backend_settings.relax_ssl_check: |
+ self._adb.device().SetProp('socket.relaxsslcheck', self._saved_sslflag) |
+ |
if self._output_profile_path: |
logging.info("Pulling profile directory from device: '%s'->'%s'.", |
self._backend_settings.profile_dir, |