| 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.core 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 |