Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: tools/android/loading/device_setup.py

Issue 1684653003: sandwich: Adds web page replay support for HTTP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes pylint failure with [] as a default argument Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/android/loading/run_sandwich.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/android/loading/device_setup.py
diff --git a/tools/android/loading/device_setup.py b/tools/android/loading/device_setup.py
index c3847078948cdbb809cdf6d66f99c9fa2993653a..498695775fade2fdfb3ed60a6f9176e037c2f28a 100644
--- a/tools/android/loading/device_setup.py
+++ b/tools/android/loading/device_setup.py
@@ -16,12 +16,19 @@ _SRC_DIR = os.path.abspath(os.path.join(
sys.path.append(os.path.join(_SRC_DIR, 'third_party', 'catapult', 'devil'))
from devil.android import device_utils
+from devil.android import forwarder
from devil.android.sdk import intent
sys.path.append(os.path.join(_SRC_DIR, 'build', 'android'))
from pylib import constants
from pylib import flag_changer
+sys.path.append(os.path.join(_SRC_DIR, 'tools', 'perf'))
+from chrome_telemetry_build import chromium_config
+
+sys.path.append(chromium_config.GetTelemetryDir())
+from telemetry.internal.util import webpagereplay
+
import devtools_monitor
DEVTOOLS_PORT = 9222
@@ -104,12 +111,58 @@ def _SetUpDevice(device, package_info):
@contextlib.contextmanager
+def WprHost(device, wpr_archive_path, record=False):
+ """Launches web page replay host.
+
+ Args:
+ device: Android device.
+ wpr_archive_path: host sided WPR archive's path.
+ record: Enables or disables WPR archive recording.
+
+ Returns:
+ Additional flags list that may be used for chromium to load web page through
+ the running web page replay host.
+ """
+ assert device
+ if wpr_archive_path == None:
+ yield []
+ return
+
+ wpr_server_args = ['--use_closest_match']
+ if record:
+ wpr_server_args.append('--record')
+ if os.path.exists(wpr_archive_path):
+ os.remove(wpr_archive_path)
+ else:
+ assert os.path.exists(wpr_archive_path)
+ wpr_server = webpagereplay.ReplayServer(wpr_archive_path,
+ '127.0.0.1', 0, 0, None, wpr_server_args)
+ ports = wpr_server.StartServer()[:-1]
+ host_http_port = ports[0]
+ host_https_port = ports[1]
+
+ forwarder.Forwarder.Map([(0, host_http_port), (0, host_https_port)], device)
+ device_http_port = forwarder.Forwarder.DevicePortForHostPort(host_http_port)
+ device_https_port = forwarder.Forwarder.DevicePortForHostPort(host_https_port)
+
+ try:
+ yield [
+ '--host-resolver-rules="MAP * 127.0.0.1,EXCLUDE localhost"',
+ '--testing-fixed-http-port={}'.format(device_http_port),
+ '--testing-fixed-https-port={}'.format(device_https_port)]
+ finally:
+ forwarder.Forwarder.UnmapDevicePort(device_http_port, device)
+ forwarder.Forwarder.UnmapDevicePort(device_https_port, device)
+ wpr_server.StopServer()
+
+@contextlib.contextmanager
def DeviceConnection(device,
package=DEFAULT_CHROME_PACKAGE,
hostname=DEVTOOLS_HOSTNAME,
port=DEVTOOLS_PORT,
host_exe='out/Release/chrome',
- host_profile_dir=None):
+ host_profile_dir=None,
+ additional_flags=None):
"""Context for starting recording on a device.
Sets up and restores any device and tracing appropriately
@@ -122,6 +175,7 @@ def DeviceConnection(device,
host_exe: The binary to execute when running on the host.
host_profile_dir: The profile dir to use when running on the host (if None,
a fresh profile dir will be used).
+ additional_flags: Additional chromium arguments.
Returns:
A context manager type which evaluates to a DevToolsConnection.
@@ -131,6 +185,8 @@ def DeviceConnection(device,
new_flags = ['--disable-fre',
'--enable-test-events',
'--remote-debugging-port=%d' % port]
+ if additional_flags != None:
+ new_flags.extend(additional_flags)
if device:
_SetUpDevice(device, package_info)
with FlagReplacer(device, command_line_path, new_flags):
« no previous file with comments | « no previous file | tools/android/loading/run_sandwich.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698