Index: chrome/browser/chromeos/login/kiosk_browsertest.cc |
diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
index 36f214811d7251e8b97b0877074eb5cd3ec6a121..7aaa12d9905db359558b17a29d354312f70e4c75 100644 |
--- a/chrome/browser/chromeos/login/kiosk_browsertest.cc |
+++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
@@ -319,6 +319,8 @@ class KioskTest : public OobeBaseTest { |
} |
void ReloadKioskApps() { |
+ // Remove then add to ensure NOTIFICATION_KIOSK_APPS_LOADED fires. |
+ KioskAppManager::Get()->RemoveApp(test_app_id_); |
KioskAppManager::Get()->AddApp(test_app_id_); |
} |
@@ -330,18 +332,23 @@ class KioskTest : public OobeBaseTest { |
void PrepareAppLaunch() { |
EnableConsumerKioskMode(); |
- // Start UI, find menu entry for this app and launch it. |
+ // Start UI |
content::WindowedNotificationObserver login_signal( |
- chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, |
- content::NotificationService::AllSources()); |
+ chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, |
+ content::NotificationService::AllSources()); |
chromeos::WizardController::SkipPostLoginScreensForTesting(); |
chromeos::WizardController* wizard_controller = |
chromeos::WizardController::default_controller(); |
- CHECK(wizard_controller); |
- wizard_controller->SkipToLoginForTesting(LoginScreenContext()); |
- login_signal.Wait(); |
+ if (wizard_controller) { |
+ wizard_controller->SkipToLoginForTesting(LoginScreenContext()); |
+ login_signal.Wait(); |
+ } else { |
+ // No wizard and running with an existing profile and it should land |
+ // on account picker. |
+ OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait(); |
+ } |
- // Wait for the Kiosk App configuration to reload, then launch the app. |
+ // Wait for the Kiosk App configuration to reload. |
content::WindowedNotificationObserver apps_loaded_signal( |
chrome::NOTIFICATION_KIOSK_APPS_LOADED, |
content::NotificationService::AllSources()); |
@@ -482,6 +489,43 @@ class KioskTest : public OobeBaseTest { |
true)); |
} |
+ void RunAppLaunchNetworkDownTest() { |
+ // Mock network could be configured with owner's password. |
+ ScopedCanConfigureNetwork can_configure_network(true, true); |
+ |
+ // Start app launch and wait for network connectivity timeout. |
+ StartAppLaunchFromLoginScreen(SimulateNetworkOfflineClosure()); |
+ OobeScreenWaiter splash_waiter(OobeDisplay::SCREEN_APP_LAUNCH_SPLASH); |
+ splash_waiter.Wait(); |
+ WaitForAppLaunchNetworkTimeout(); |
+ |
+ // Configure network link should be visible. |
+ JsExpect("$('splash-config-network').hidden == false"); |
+ |
+ // Set up fake user manager with an owner for the test. |
+ mock_user_manager()->SetActiveUser(kTestOwnerEmail); |
+ AppLaunchSigninScreen::SetUserManagerForTesting(mock_user_manager()); |
+ static_cast<LoginDisplayHostImpl*>(LoginDisplayHostImpl::default_host()) |
+ ->GetOobeUI()->ShowOobeUI(false); |
+ |
+ // Configure network should bring up lock screen for owner. |
+ OobeScreenWaiter lock_screen_waiter(OobeDisplay::SCREEN_ACCOUNT_PICKER); |
+ static_cast<AppLaunchSplashScreenActor::Delegate*>(GetAppLaunchController()) |
+ ->OnConfigureNetwork(); |
+ lock_screen_waiter.Wait(); |
+ |
+ // A network error screen should be shown after authenticating. |
+ OobeScreenWaiter error_screen_waiter(OobeDisplay::SCREEN_ERROR_MESSAGE); |
+ static_cast<AppLaunchSigninScreen::Delegate*>(GetAppLaunchController()) |
+ ->OnOwnerSigninSuccess(); |
+ error_screen_waiter.Wait(); |
+ |
+ ASSERT_TRUE(GetAppLaunchController()->showing_network_dialog()); |
+ |
+ SimulateNetworkOnline(); |
+ WaitForAppLaunchSuccess(); |
+ } |
+ |
AppLaunchController* GetAppLaunchController() { |
return chromeos::LoginDisplayHostImpl::default_host() |
->GetAppLaunchController(); |
@@ -506,41 +550,15 @@ IN_PROC_BROWSER_TEST_F(KioskTest, InstallAndLaunchApp) { |
WaitForAppLaunchSuccess(); |
} |
-IN_PROC_BROWSER_TEST_F(KioskTest, LaunchAppNetworkDown) { |
- // Mock network could be configured with owner's password. |
- ScopedCanConfigureNetwork can_configure_network(true, true); |
- |
- // Start app launch and wait for network connectivity timeout. |
- StartAppLaunchFromLoginScreen(SimulateNetworkOfflineClosure()); |
- OobeScreenWaiter splash_waiter(OobeDisplay::SCREEN_APP_LAUNCH_SPLASH); |
- splash_waiter.Wait(); |
- WaitForAppLaunchNetworkTimeout(); |
- |
- // Configure network link should be visible. |
- JsExpect("$('splash-config-network').hidden == false"); |
- |
- // Set up fake user manager with an owner for the test. |
- mock_user_manager()->SetActiveUser(kTestOwnerEmail); |
- AppLaunchSigninScreen::SetUserManagerForTesting(mock_user_manager()); |
- static_cast<LoginDisplayHostImpl*>(LoginDisplayHostImpl::default_host()) |
- ->GetOobeUI()->ShowOobeUI(false); |
- |
- // Configure network should bring up lock screen for owner. |
- OobeScreenWaiter lock_screen_waiter(OobeDisplay::SCREEN_ACCOUNT_PICKER); |
- static_cast<AppLaunchSplashScreenActor::Delegate*>(GetAppLaunchController()) |
- ->OnConfigureNetwork(); |
- lock_screen_waiter.Wait(); |
- |
- // A network error screen should be shown after authenticating. |
- OobeScreenWaiter error_screen_waiter(OobeDisplay::SCREEN_ERROR_MESSAGE); |
- static_cast<AppLaunchSigninScreen::Delegate*>(GetAppLaunchController()) |
- ->OnOwnerSigninSuccess(); |
- error_screen_waiter.Wait(); |
- |
- ASSERT_TRUE(GetAppLaunchController()->showing_network_dialog()); |
+IN_PROC_BROWSER_TEST_F(KioskTest, PRE_LaunchAppNetworkDown) { |
+ // Tests the network down case for the initial app download and launch. |
+ RunAppLaunchNetworkDownTest(); |
+} |
- SimulateNetworkOnline(); |
- WaitForAppLaunchSuccess(); |
+IN_PROC_BROWSER_TEST_F(KioskTest, LaunchAppNetworkDown) { |
+ // Tests the network down case for launching an existing app that is |
+ // installed in PRE_LaunchAppNetworkDown. |
+ RunAppLaunchNetworkDownTest(); |
} |
IN_PROC_BROWSER_TEST_F(KioskTest, LaunchAppNetworkDownConfigureNotAllowed) { |