Commit 9b218f5a authored by achuith@chromium.org's avatar achuith@chromium.org

Guest mode login changes.

oobe timeout error is no longer accurate, so update it.
Do not copy the chrome_login_ext if it's not going to be used.

BUG=None
Test=login_CryptohomeTelemetry, login_CryptohomeIncognitoTelemetry, and telemetry unittests for cros (regular + guest)
NOTRY=True

Review URL: https://chromiumcodereview.appspot.com/23710017

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221742 0039d316-1c4b-4281-b951-d872f2087c98
parent 07ec0acf
...@@ -32,18 +32,20 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -32,18 +32,20 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
self._SetBranchNumber(self._GetChromeVersion()) self._SetBranchNumber(self._GetChromeVersion())
self._login_ext_dir = os.path.join(os.path.dirname(__file__), self._login_ext_dir = None
'chromeos_login_ext') if not self._use_oobe_login_for_testing:
self._login_ext_dir = os.path.join(os.path.dirname(__file__),
# Push a dummy login extension to the device. 'chromeos_login_ext')
# This extension automatically logs in as test@test.test
# Note that we also perform this copy locally to ensure that # Push a dummy login extension to the device.
# the owner of the extensions is set to chronos. # This extension automatically logs in as test@test.test
logging.info('Copying dummy login extension to the device') # Note that we also perform this copy locally to ensure that
cri.PushFile(self._login_ext_dir, '/tmp/') # the owner of the extensions is set to chronos.
self._login_ext_dir = '/tmp/chromeos_login_ext' logging.info('Copying dummy login extension to the device')
cri.RunCmdOnDevice(['chown', '-R', 'chronos:chronos', cri.PushFile(self._login_ext_dir, '/tmp/')
self._login_ext_dir]) self._login_ext_dir = '/tmp/chromeos_login_ext'
cri.RunCmdOnDevice(['chown', '-R', 'chronos:chronos',
self._login_ext_dir])
# Copy extensions to temp directories on the device. # Copy extensions to temp directories on the device.
# Note that we also perform this copy locally to ensure that # Note that we also perform this copy locally to ensure that
...@@ -94,16 +96,17 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -94,16 +96,17 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
'--vmodule=*/browser/automation/*=2,*/chromeos/net/*=2,' + '--vmodule=*/browser/automation/*=2,*/chromeos/net/*=2,' +
'*/chromeos/login/*=2']) '*/chromeos/login/*=2'])
if self._is_guest:
if self.chrome_branch_number <= 1599:
args.extend([ args.extend([
# Jump to the login screen, skipping network selection, eula, etc. # Jump to the login screen, skipping network selection, eula, etc.
'--login-screen=login', '--login-screen=login',
# Skip hwid check, for VMs and pre-MP lab devices. # Skip hwid check, for VMs and pre-MP lab devices.
'--skip-hwid-check',]) '--skip-hwid-check'
if not self._is_guest: ])
# This extension bypasses gaia and logs us in. elif not self._use_oobe_login_for_testing:
args.append('--auth-ext-path=%s' % self._login_ext_dir) # This extension bypasses gaia and logs us in.
logging.info('Using --auth-ext-path=%s to login', self._login_ext_dir)
args.append('--auth-ext-path=%s' % self._login_ext_dir)
return args return args
...@@ -172,6 +175,11 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -172,6 +175,11 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
def hwid(self): def hwid(self):
return self._cri.RunCmdOnDevice(['/usr/bin/crossystem', 'hwid'])[0] return self._cri.RunCmdOnDevice(['/usr/bin/crossystem', 'hwid'])[0]
@property
def _use_oobe_login_for_testing(self):
"""Oobe.LoginForTesting was introduced after branch 1599."""
return self.chrome_branch_number > 1599
def GetRemotePort(self, _): def GetRemotePort(self, _):
return self._cri.GetRemotePort() return self._cri.GetRemotePort()
...@@ -328,13 +336,17 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -328,13 +336,17 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
if startup_window_ext_id in self.extension_dict_backend if startup_window_ext_id in self.extension_dict_backend
else self.tab_list_backend.Get(0, None)) else self.tab_list_backend.Get(0, None))
def _WaitForAccountPicker(self): def _WaitForSigininScreen(self):
"""Waits for the oobe screen to be in the account picker state.""" """Waits for oobe to be on the signin or account picker screen."""
def OnAccountPickerScreen():
signin_state = self._SigninUIState()
# GAIA_SIGNIN or ACCOUNT_PICKER screens.
return signin_state == 1 or signin_state == 2
try: try:
util.WaitFor(lambda: self._SigninUIState() == 2, 60) util.WaitFor(OnAccountPickerScreen, 60)
except util.TimeoutException: except util.TimeoutException:
self._cri.TakeScreenShot('guest-screen') self._cri.TakeScreenShot('guest-screen')
raise exceptions.LoginException('Timed out waiting for account picker, ' raise exceptions.LoginException('Timed out waiting for signin screen, '
'signin state %d' % self._SigninUIState()) 'signin state %d' % self._SigninUIState())
def _ClickBrowseAsGuest(self): def _ClickBrowseAsGuest(self):
...@@ -359,13 +371,14 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -359,13 +371,14 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
def _NavigateGuestLogin(self): def _NavigateGuestLogin(self):
"""Navigates through oobe login screen as guest""" """Navigates through oobe login screen as guest"""
assert self.oobe assert self.oobe
self._WaitForAccountPicker() self._WaitForSigininScreen()
self._ClickBrowseAsGuest() self._ClickBrowseAsGuest()
self._WaitForGuestFsMounted() self._WaitForGuestFsMounted()
def _NavigateLogin(self): def _NavigateLogin(self):
"""Navigates through oobe login screen""" """Navigates through oobe login screen"""
if self.chrome_branch_number > 1599: if self._use_oobe_login_for_testing:
logging.info('Invoking Oobe.loginForTesting')
util.WaitFor(lambda: self.oobe, 10) util.WaitFor(lambda: self.oobe, 10)
util.WaitFor(lambda: self.oobe.EvaluateJavaScript( util.WaitFor(lambda: self.oobe.EvaluateJavaScript(
'typeof Oobe !== \'undefined\''), 10) 'typeof Oobe !== \'undefined\''), 10)
...@@ -383,10 +396,7 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -383,10 +396,7 @@ class CrOSBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
util.WaitFor(lambda: self._IsLoggedIn(), 60) # pylint: disable=W0108 util.WaitFor(lambda: self._IsLoggedIn(), 60) # pylint: disable=W0108
except util.TimeoutException: except util.TimeoutException:
self._cri.TakeScreenShot('login-screen') self._cri.TakeScreenShot('login-screen')
raise exceptions.LoginException( raise exceptions.LoginException('Timed out going through login screen')
'Timed out going through oobe screen. Make sure the custom auth '
'extension passed through --auth-ext-path is valid and belongs '
'to user "chronos".')
if self.chrome_branch_number < 1500: if self.chrome_branch_number < 1500:
# Wait for the startup window, then close it. Startup window doesn't exist # Wait for the startup window, then close it. Startup window doesn't exist
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment