OLD | NEW |
| (Empty) |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 import os | |
5 import sys | |
6 | |
7 from telemetry import util | |
8 | |
9 # Get chrome/test/functional scripts into our path. | |
10 # TODO(tonyg): Move webpagereplay.py to a common location. | |
11 sys.path.append( | |
12 os.path.abspath( | |
13 os.path.join(os.path.dirname(__file__), | |
14 '../../../chrome/test/functional'))) | |
15 import webpagereplay # pylint: disable=F0401 | |
16 | |
17 def GetChromeFlags(replay_host, http_port, https_port): | |
18 return webpagereplay.GetChromeFlags(replay_host, http_port, https_port) | |
19 | |
20 class ReplayServer(object): | |
21 def __init__(self, browser_backend, path, is_record_mode, webpagereplay_host, | |
22 webpagereplay_local_http_port, webpagereplay_local_https_port, | |
23 webpagereplay_remote_http_port, webpagereplay_remote_https_port): | |
24 self._browser_backend = browser_backend | |
25 self._forwarder = None | |
26 self._web_page_replay = None | |
27 self._is_record_mode = is_record_mode | |
28 self._webpagereplay_host = webpagereplay_host | |
29 self._webpagereplay_local_http_port = webpagereplay_local_http_port | |
30 self._webpagereplay_local_https_port = webpagereplay_local_https_port | |
31 self._webpagereplay_remote_http_port = webpagereplay_remote_http_port | |
32 self._webpagereplay_remote_https_port = webpagereplay_remote_https_port | |
33 | |
34 self._forwarder = browser_backend.CreateForwarder( | |
35 util.PortPair(self._webpagereplay_local_http_port, | |
36 self._webpagereplay_remote_http_port), | |
37 util.PortPair(self._webpagereplay_local_https_port, | |
38 self._webpagereplay_remote_https_port)) | |
39 | |
40 options = browser_backend.options.extra_wpr_args | |
41 if self._is_record_mode: | |
42 options.append('--record') | |
43 if not browser_backend.options.wpr_make_javascript_deterministic: | |
44 options.append('--inject_scripts=') | |
45 self._web_page_replay = webpagereplay.ReplayServer( | |
46 path, | |
47 self._webpagereplay_host, | |
48 self._webpagereplay_local_http_port, | |
49 self._webpagereplay_local_https_port, | |
50 options) | |
51 self._web_page_replay.StartServer() | |
52 | |
53 def __enter__(self): | |
54 return self | |
55 | |
56 def __exit__(self, *args): | |
57 self.Close() | |
58 | |
59 def Close(self): | |
60 if self._forwarder: | |
61 self._forwarder.Close() | |
62 self._forwarder = None | |
63 if self._web_page_replay: | |
64 self._web_page_replay.StopServer() | |
65 self._web_page_replay = None | |
OLD | NEW |