OLD | NEW |
---|---|
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 logging | 5 import logging |
6 import os | 6 import os |
7 | 7 |
8 from telemetry.core import exceptions | 8 from telemetry.core import exceptions |
9 from telemetry.core import util | 9 from telemetry.core import util |
10 from telemetry import decorators | 10 from telemetry import decorators |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
160 '--dest=org.chromium.SessionManager', | 160 '--dest=org.chromium.SessionManager', |
161 '/org/chromium/SessionManager', | 161 '/org/chromium/SessionManager', |
162 'org.chromium.SessionManagerInterface.EnableChromeTesting', | 162 'org.chromium.SessionManagerInterface.EnableChromeTesting', |
163 'boolean:true', | 163 'boolean:true', |
164 'array:string:"%s"' % ','.join(startup_args)] | 164 'array:string:"%s"' % ','.join(startup_args)] |
165 logging.info(' '.join(args)) | 165 logging.info(' '.join(args)) |
166 self._cri.RunCmdOnDevice(args) | 166 self._cri.RunCmdOnDevice(args) |
167 | 167 |
168 # Wait for new chrome and oobe. | 168 # Wait for new chrome and oobe. |
169 py_utils.WaitFor(lambda: pid != self.pid, 15) | 169 py_utils.WaitFor(lambda: pid != self.pid, 15) |
170 self._WaitForBrowserToComeUp() | 170 # Disable tracing for the login-screen instance of Chrome, otherwise |
171 # tracing on the instance of Chrome running the benchmark will fail. | |
172 self._WaitForBrowserToComeUp(enable_tracing=False) | |
171 py_utils.WaitFor(lambda: self.oobe_exists, 30) | 173 py_utils.WaitFor(lambda: self.oobe_exists, 30) |
172 | 174 |
173 if self.browser_options.auto_login: | 175 if self.browser_options.auto_login: |
174 if self._is_guest: | 176 if self._is_guest: |
175 pid = self.pid | 177 pid = self.pid |
176 self.oobe.NavigateGuestLogin() | 178 self.oobe.NavigateGuestLogin() |
177 # Guest browsing shuts down the current browser and launches an | 179 # Guest browsing shuts down the current browser and launches an |
178 # incognito browser in a separate process, which we need to wait for. | 180 # incognito browser in a separate process, which we need to wait for. |
179 try: | 181 try: |
180 # TODO(achuith): Reduce this timeout to 15 sec after crbug.com/631640 | 182 # TODO(achuith): Reduce this timeout to 15 sec after crbug.com/631640 |
181 # is resolved. | 183 # is resolved. |
182 py_utils.WaitFor(lambda: pid != self.pid, 60) | 184 py_utils.WaitFor(lambda: pid != self.pid, 60) |
183 except py_utils.TimeoutException: | 185 except py_utils.TimeoutException: |
184 self._RaiseOnLoginFailure( | 186 self._RaiseOnLoginFailure( |
185 'Failed to restart browser in guest mode (pid %d).' % pid) | 187 'Failed to restart browser in guest mode (pid %d).' % pid) |
186 | 188 |
187 elif self.browser_options.gaia_login: | 189 elif self.browser_options.gaia_login: |
188 self.oobe.NavigateGaiaLogin(self._username, self._password) | 190 self.oobe.NavigateGaiaLogin(self._username, self._password) |
189 else: | 191 else: |
190 self.oobe.NavigateFakeLogin( | 192 self.oobe.NavigateFakeLogin( |
191 self._username, self._password, self._gaia_id, | 193 self._username, self._password, self._gaia_id, |
192 not self.browser_options.disable_gaia_services) | 194 not self.browser_options.disable_gaia_services) |
193 | 195 |
194 try: | 196 try: |
195 self._WaitForLogin() | 197 self._WaitForLogin(enable_tracing=True) |
196 except py_utils.TimeoutException: | 198 except py_utils.TimeoutException: |
197 self._RaiseOnLoginFailure('Timed out going through login screen. ' | 199 self._RaiseOnLoginFailure('Timed out going through login screen. ' |
198 + self._GetLoginStatus()) | 200 + self._GetLoginStatus()) |
199 | 201 |
200 logging.info('Browser is up!') | 202 logging.info('Browser is up!') |
201 | 203 |
202 def Background(self): | 204 def Background(self): |
203 raise NotImplementedError | 205 raise NotImplementedError |
204 | 206 |
205 def Close(self): | 207 def Close(self): |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
283 status += 'Browser didn\'t launch. ' | 285 status += 'Browser didn\'t launch. ' |
284 if self.oobe_exists: | 286 if self.oobe_exists: |
285 status += 'OOBE not dismissed.' | 287 status += 'OOBE not dismissed.' |
286 return status | 288 return status |
287 | 289 |
288 def _IsLoggedIn(self): | 290 def _IsLoggedIn(self): |
289 """Returns True if cryptohome has mounted, the browser is | 291 """Returns True if cryptohome has mounted, the browser is |
290 responsive to devtools requests, and the oobe has been dismissed.""" | 292 responsive to devtools requests, and the oobe has been dismissed.""" |
291 return not self._GetLoginStatus() | 293 return not self._GetLoginStatus() |
292 | 294 |
293 def _WaitForLogin(self): | 295 def _WaitForLogin(self, enable_tracing): |
294 # Wait for cryptohome to mount. | 296 # Wait for cryptohome to mount. |
295 py_utils.WaitFor(self._IsLoggedIn, 900) | 297 py_utils.WaitFor(self._IsLoggedIn, 900) |
296 | 298 |
297 # For incognito mode, the session manager actually relaunches chrome with | 299 # For incognito mode, the session manager actually relaunches chrome with |
298 # new arguments, so we have to wait for the browser to come up. | 300 # new arguments, so we have to wait for the browser to come up. |
299 self._WaitForBrowserToComeUp() | 301 self._WaitForBrowserToComeUp(enable_tracing) |
achuithb
2017/08/17 15:29:26
I think we may be able to get rid of this call, bu
| |
300 | 302 |
301 # Wait for extensions to load. | 303 # Wait for extensions to load. |
302 if self._supports_extensions: | 304 if self._supports_extensions: |
303 self._WaitForExtensionsToLoad() | 305 self._WaitForExtensionsToLoad() |
304 | 306 |
305 def _RaiseOnLoginFailure(self, error): | 307 def _RaiseOnLoginFailure(self, error): |
306 if self._platform_backend.CanTakeScreenshot(): | 308 if self._platform_backend.CanTakeScreenshot(): |
307 self._cri.TakeScreenshotWithPrefix('login-screen') | 309 self._cri.TakeScreenshotWithPrefix('login-screen') |
308 raise exceptions.LoginException(error) | 310 raise exceptions.LoginException(error) |
OLD | NEW |