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

Side by Side Diff: tools/perf/profile_creators/profile_extender.py

Issue 1491183003: [Telemetry] Move WPR life cycle from browser to platform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: work in progress 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/telemetry/telemetry/core/network_controller.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import copy 5 import copy
6 6
7 from telemetry.core import platform 7 from telemetry.core import platform
8 from telemetry.util import wpr_modes 8 from telemetry.util import wpr_modes
9 from telemetry.internal.browser import browser_finder 9 from telemetry.internal.browser import browser_finder
10 from telemetry.internal.browser import browser_finder_exceptions 10 from telemetry.internal.browser import browser_finder_exceptions
(...skipping 17 matching lines...) Expand all
28 then a new profile is created. Otherwise, the existing profile is 28 then a new profile is created. Otherwise, the existing profile is
29 appended on to. 29 appended on to.
30 """ 30 """
31 self._finder_options = copy.deepcopy(finder_options) 31 self._finder_options = copy.deepcopy(finder_options)
32 # Since profile extenders are not supported on remote platforms, 32 # Since profile extenders are not supported on remote platforms,
33 # this should be the same as target platform. 33 # this should be the same as target platform.
34 self._os_name = platform.GetHostPlatform().GetOSName() 34 self._os_name = platform.GetHostPlatform().GetOSName()
35 35
36 # A reference to the browser that will be performing all of the tab 36 # A reference to the browser that will be performing all of the tab
37 # navigations. 37 # navigations.
38 # This member is initialized during SetUpBrowser(). 38 # These members are initialized during SetUpBrowser().
39 self._possible_browser = None
39 self._browser = None 40 self._browser = None
40 41
41 def Run(self): 42 def Run(self):
42 """Creates or extends the profile.""" 43 """Creates or extends the profile."""
43 raise NotImplementedError() 44 raise NotImplementedError()
44 45
45 def WebPageReplayArchivePath(self): 46 def WebPageReplayArchivePath(self):
46 """Returns the path to the WPR archive. 47 """Returns the path to the WPR archive.
47 48
48 Can be overridden by subclasses. 49 Can be overridden by subclasses.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 def SetUpBrowser(self): 82 def SetUpBrowser(self):
82 """Finds and starts the browser. 83 """Finds and starts the browser.
83 84
84 Can be overridden by subclasses. The subclass implementation must call the 85 Can be overridden by subclasses. The subclass implementation must call the
85 super class implementation. 86 super class implementation.
86 87
87 Subclasses do not need to call this method. This method is only necessary 88 Subclasses do not need to call this method. This method is only necessary
88 if the subclass needs to start a browser. If a subclass does call this 89 if the subclass needs to start a browser. If a subclass does call this
89 method, the subclass must also call TearDownBrowser(). 90 method, the subclass must also call TearDownBrowser().
90 """ 91 """
91 possible_browser = self._GetPossibleBrowser(self.finder_options) 92 self._possible_browser = self._GetPossibleBrowser(self.finder_options)
92 enabled_os_list = self.EnabledOSList() 93 enabled_os_list = self.EnabledOSList()
93 if self._os_name not in enabled_os_list: 94 if self._os_name not in enabled_os_list:
94 raise NotImplementedError( 95 raise NotImplementedError(
95 'This profile extender on %s is not yet supported' 96 'This profile extender on %s is not yet supported'
96 % self._os_name) 97 % self._os_name)
97 if possible_browser.IsRemote(): 98 if self._possible_browser.IsRemote():
98 raise NotImplementedError( 99 raise NotImplementedError(
99 'Profile extenders are not yet supported on remote platforms.') 100 'Profile extenders are not yet supported on remote platforms.')
100 assert possible_browser.supports_tab_control 101 assert self._possible_browser.supports_tab_control
101 102
102 self._SetUpWebPageReplay(self.finder_options, possible_browser) 103 self._SetUpWebPageReplay(self.finder_options)
103 self._browser = possible_browser.Create(self.finder_options) 104 self._browser = possible_browser.Create(self.finder_options)
104 105
105 def TearDownBrowser(self): 106 def TearDownBrowser(self):
106 """Tears down the browser. 107 """Tears down the browser.
107 108
108 Can be overridden by subclasses. The subclass implementation must call the 109 Can be overridden by subclasses. The subclass implementation must call the
109 super class implementation. 110 super class implementation.
110 """ 111 """
111 if self._browser: 112 if self._browser:
112 self._browser.Close() 113 self._browser.Close()
113 self._browser = None 114 self._browser = None
115 if self._possible_browser:
116 self._possible_browser.platform.network_controller.Close()
114 117
115 def FetchWebPageReplayArchives(self): 118 def FetchWebPageReplayArchives(self):
116 """Fetches the web page replay archives. 119 """Fetches the web page replay archives.
117 120
118 Can be overridden by subclasses. 121 Can be overridden by subclasses.
119 """ 122 """
120 pass 123 pass
121 124
122 def _SetUpWebPageReplay(self, finder_options, possible_browser): 125 def _SetUpWebPageReplay(self, finder_options):
123 """Sets up Web Page Replay, if necessary.""" 126 """Sets up Web Page Replay, if necessary."""
124 127
125 wpr_archive_path = self.WebPageReplayArchivePath() 128 wpr_archive_path = self.WebPageReplayArchivePath()
126 if not wpr_archive_path: 129 if not wpr_archive_path:
127 return 130 return
128 131
129 self.FetchWebPageReplayArchives() 132 self.FetchWebPageReplayArchives()
130 133
131 # The browser options needs to be passed to both the network controller
132 # as well as the browser backend.
133 browser_options = finder_options.browser_options 134 browser_options = finder_options.browser_options
134 if finder_options.use_live_sites: 135 if finder_options.use_live_sites:
135 browser_options.wpr_mode = wpr_modes.WPR_OFF 136 wpr_mode = wpr_modes.WPR_OFF
136 else: 137 else:
137 browser_options.wpr_mode = wpr_modes.WPR_REPLAY 138 wpr_mode = wpr_modes.WPR_REPLAY
138 139
139 network_controller = possible_browser.platform.network_controller 140 network_controller = self._possible_browser.platform.network_controller
140 make_javascript_deterministic = True 141 network_controller.Open(
141 142 wpr_mode, browser_options.netsim, browser_options.extra_wpr_args)
142 network_controller.SetReplayArgs( 143 network_controller.StartReplay(
143 wpr_archive_path, browser_options.wpr_mode, browser_options.netsim, 144 wpr_archive_path, make_javascript_deterministic=True)
144 browser_options.extra_wpr_args, make_javascript_deterministic)
145 145
146 def _GetPossibleBrowser(self, finder_options): 146 def _GetPossibleBrowser(self, finder_options):
147 """Return a possible_browser with the given options.""" 147 """Return a possible_browser with the given options."""
148 possible_browser = browser_finder.FindBrowser(finder_options) 148 possible_browser = browser_finder.FindBrowser(finder_options)
149 if not possible_browser: 149 if not possible_browser:
150 raise browser_finder_exceptions.BrowserFinderException( 150 raise browser_finder_exceptions.BrowserFinderException(
151 'No browser found.\n\nAvailable browsers:\n%s\n' % 151 'No browser found.\n\nAvailable browsers:\n%s\n' %
152 '\n'.join(browser_finder.GetAllAvailableBrowserTypes(finder_options))) 152 '\n'.join(browser_finder.GetAllAvailableBrowserTypes(finder_options)))
153 finder_options.browser_options.browser_type = ( 153 finder_options.browser_options.browser_type = (
154 possible_browser.browser_type) 154 possible_browser.browser_type)
155 155
156 return possible_browser 156 return possible_browser
157
OLDNEW
« no previous file with comments | « no previous file | tools/telemetry/telemetry/core/network_controller.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698