Index: telemetry/telemetry/core/platform.py |
diff --git a/telemetry/telemetry/core/platform.py b/telemetry/telemetry/core/platform.py |
index 39f151b9fac08e33285a359b3ce73a8b14bcce54..77e35a94562d03eab5b2aec349d25006e95f1a29 100644 |
--- a/telemetry/telemetry/core/platform.py |
+++ b/telemetry/telemetry/core/platform.py |
@@ -10,6 +10,7 @@ from telemetry.core import memory_cache_http_server |
from telemetry.core import network_controller |
from telemetry.core import tracing_controller |
from telemetry.core import util |
+from telemetry.internal import forwarders |
from telemetry.internal.platform import (platform_backend as |
platform_backend_module) |
@@ -88,6 +89,7 @@ class Platform(object): |
self._local_server_controller = local_server.LocalServerController( |
self._platform_backend) |
self._is_monitoring_power = False |
+ self._forwarder = None |
@property |
def is_host_platform(self): |
@@ -410,10 +412,28 @@ class Platform(object): |
server = memory_cache_http_server.MemoryCacheHTTPServer(paths) |
self.StartLocalServer(server) |
+ |
+ # Requires port forwarding if browser is on remote device, and |
+ # replaces the http_server port number with the one resolved by |
+ # remote machine with ssh/adb remote port forwarding. |
+ if self._platform_backend.IsDeviceRemote(): |
+ # TODO(crbug.com/747293): |
+ # Originally the proxy_server is enabled for forwarding traffic |
+ # if the device is on remote. However, if the tracing is enabled, |
+ # the browser startup args will be reset which disables traffic |
+ # reroute through proxy_server. Here we have to create extra |
+ # port_forwarding. |
+ if self.tracing_controller.is_tracing_running: |
+ self._forwarder = self._platform_backend.CreatePortForwarder( |
+ forwarders.PortPair(self.http_server.port, 0), |
+ use_remote_port_forwarding=True) |
+ self.http_server.port = self._forwarder.host_port |
return True |
def StopAllLocalServers(self): |
self._local_server_controller.Close() |
+ if self._forwarder: |
+ self._forwarder.Close() |
@property |
def local_servers(self): |