1*9c5db199SXin Li# Copyright 2014 The Chromium OS Authors. All rights reserved. 2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 3*9c5db199SXin Li# found in the LICENSE file. 4*9c5db199SXin Li 5*9c5db199SXin Liimport logging 6*9c5db199SXin Li 7*9c5db199SXin Lifrom autotest_lib.client.bin import utils 8*9c5db199SXin Lifrom autotest_lib.client.common_lib.cros import chrome 9*9c5db199SXin Li 10*9c5db199SXin Li 11*9c5db199SXin Lidef _ExecuteOobeCmd(browser, cmd): 12*9c5db199SXin Li logging.info('Invoking ' + cmd) 13*9c5db199SXin Li oobe = browser.oobe 14*9c5db199SXin Li oobe.WaitForJavaScriptCondition('typeof Oobe !== \'undefined\'', 15*9c5db199SXin Li timeout=10) 16*9c5db199SXin Li oobe.ExecuteJavaScript(cmd) 17*9c5db199SXin Li 18*9c5db199SXin Li 19*9c5db199SXin Lidef RemoraEnrollment(browser, user_id, password): 20*9c5db199SXin Li """Enterprise login for a Remora device. 21*9c5db199SXin Li 22*9c5db199SXin Li @param browser: telemetry browser object. 23*9c5db199SXin Li @param user_id: login credentials user_id. 24*9c5db199SXin Li @param password: login credentials password. 25*9c5db199SXin Li """ 26*9c5db199SXin Li browser.oobe.NavigateGaiaLogin( 27*9c5db199SXin Li user_id, password, enterprise_enroll=True, 28*9c5db199SXin Li for_user_triggered_enrollment=False) 29*9c5db199SXin Li 30*9c5db199SXin Li 31*9c5db199SXin Lidef EnterpriseEnrollment(browser, user_id, password, auto_login=False): 32*9c5db199SXin Li """Enterprise login for a kiosk device. 33*9c5db199SXin Li 34*9c5db199SXin Li @param browser: telemetry browser object. 35*9c5db199SXin Li @param user_id: login credentials user_id. 36*9c5db199SXin Li @param password: login credentials password. 37*9c5db199SXin Li @param auto_login: also login after enrollment. 38*9c5db199SXin Li """ 39*9c5db199SXin Li browser.oobe.NavigateGaiaLogin(user_id, password, 40*9c5db199SXin Li enterprise_enroll=True, 41*9c5db199SXin Li for_user_triggered_enrollment=True) 42*9c5db199SXin Li if auto_login: 43*9c5db199SXin Li browser.oobe.NavigateGaiaLogin(user_id, password) 44*9c5db199SXin Li # TODO(achuith): Replace with WaitForLogin. 45*9c5db199SXin Li utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=30) 46*9c5db199SXin Li 47*9c5db199SXin Li 48*9c5db199SXin Lidef EnterpriseFakeEnrollment(browser, user_id, password, gaia_id, 49*9c5db199SXin Li auto_login=False): 50*9c5db199SXin Li """Enterprise fake login. 51*9c5db199SXin Li 52*9c5db199SXin Li @param browser: telemetry browser object. 53*9c5db199SXin Li @param user_id: login credentials user_id. 54*9c5db199SXin Li @param password: login credentials password. 55*9c5db199SXin Li @param gaia_id: login credentials gaia_id. 56*9c5db199SXin Li @param auto_login: also login after enrollment. 57*9c5db199SXin Li """ 58*9c5db199SXin Li browser.oobe.NavigateFakeLogin(user_id, password, gaia_id, 59*9c5db199SXin Li enterprise_enroll=True) 60*9c5db199SXin Li # Oobe context recreated after after the enrollment. 61*9c5db199SXin Li utils.poll_for_condition( 62*9c5db199SXin Li lambda: browser.oobe_exists and 63*9c5db199SXin Li browser.oobe.EnterpriseWebviewVisible(user_id), timeout=30) 64*9c5db199SXin Li 65*9c5db199SXin Li if auto_login: 66*9c5db199SXin Li browser.oobe.NavigateFakeLogin(user_id, password, gaia_id) 67*9c5db199SXin Li # TODO(achuith): Replace with WaitForLogin. 68*9c5db199SXin Li utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=45) 69*9c5db199SXin Li 70*9c5db199SXin Li 71*9c5db199SXin Lidef OnlineDemoMode(browser): 72*9c5db199SXin Li """Switch to online demo mode. 73*9c5db199SXin Li 74*9c5db199SXin Li @param browser: telemetry browser object. 75*9c5db199SXin Li """ 76*9c5db199SXin Li _ExecuteOobeCmd(browser, 'Oobe.setUpOnlineDemoModeForTesting();') 77*9c5db199SXin Li utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=90) 78*9c5db199SXin Li 79*9c5db199SXin Li 80*9c5db199SXin Lidef KioskEnrollment(browser, user_id, password, gaia_id): 81*9c5db199SXin Li """Kiosk Enrollment. 82*9c5db199SXin Li 83*9c5db199SXin Li @param browser: telemetry browser object. 84*9c5db199SXin Li @param user_id: login credentials user_id. 85*9c5db199SXin Li @param password: login credentials password. 86*9c5db199SXin Li @param gaia_id: login credentials gaia_id. 87*9c5db199SXin Li """ 88*9c5db199SXin Li 89*9c5db199SXin Li cmd = ('Oobe.loginForTesting("{user}", "{password}", "{gaia_id}", true)' 90*9c5db199SXin Li .format(user=user_id, 91*9c5db199SXin Li password=password, 92*9c5db199SXin Li gaia_id=gaia_id)) 93*9c5db199SXin Li _ExecuteOobeCmd(browser, cmd) 94*9c5db199SXin Li 95*9c5db199SXin Li utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=60) 96