Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "chrome/browser/chromeos/login/wizard_controller.h" | 5 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| 11 #include "base/prefs/pref_registry_simple.h" | 11 #include "base/prefs/pref_registry_simple.h" |
| 12 #include "base/prefs/pref_service.h" | 12 #include "base/prefs/pref_service.h" |
| 13 #include "base/prefs/pref_service_factory.h" | 13 #include "base/prefs/pref_service_factory.h" |
| 14 #include "base/prefs/testing_pref_store.h" | 14 #include "base/prefs/testing_pref_store.h" |
| 15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 16 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
| 17 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
| 18 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
| 19 #include "chrome/browser/browser_shutdown.h" | 19 #include "chrome/browser/browser_shutdown.h" |
| 20 #include "chrome/browser/chrome_notification_types.h" | 20 #include "chrome/browser/chrome_notification_types.h" |
| 21 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" | 21 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" |
| 22 #include "chrome/browser/chromeos/base/locale_util.h" | 22 #include "chrome/browser/chromeos/base/locale_util.h" |
| 23 #include "chrome/browser/chromeos/geolocation/simple_geolocation_provider.h" | 23 #include "chrome/browser/chromeos/geolocation/simple_geolocation_provider.h" |
| 24 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" | 24 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h" |
| 25 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc reen.h" | 25 #include "chrome/browser/chromeos/login/enrollment/mock_auto_enrollment_check_sc reen.h" |
| 26 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h" | 26 #include "chrome/browser/chromeos/login/enrollment/mock_enrollment_screen.h" |
| 27 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 27 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 28 #include "chrome/browser/chromeos/login/screens/device_disabled_screen.h" | |
| 28 #include "chrome/browser/chromeos/login/screens/error_screen.h" | 29 #include "chrome/browser/chromeos/login/screens/error_screen.h" |
| 29 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h" | 30 #include "chrome/browser/chromeos/login/screens/hid_detection_screen.h" |
| 31 #include "chrome/browser/chromeos/login/screens/mock_device_disabled_screen_acto r.h" | |
| 30 #include "chrome/browser/chromeos/login/screens/mock_eula_screen.h" | 32 #include "chrome/browser/chromeos/login/screens/mock_eula_screen.h" |
| 31 #include "chrome/browser/chromeos/login/screens/mock_network_screen.h" | 33 #include "chrome/browser/chromeos/login/screens/mock_network_screen.h" |
| 32 #include "chrome/browser/chromeos/login/screens/mock_update_screen.h" | 34 #include "chrome/browser/chromeos/login/screens/mock_update_screen.h" |
| 33 #include "chrome/browser/chromeos/login/screens/network_screen.h" | 35 #include "chrome/browser/chromeos/login/screens/network_screen.h" |
| 34 #include "chrome/browser/chromeos/login/screens/reset_screen.h" | 36 #include "chrome/browser/chromeos/login/screens/reset_screen.h" |
| 35 #include "chrome/browser/chromeos/login/screens/user_image_screen.h" | 37 #include "chrome/browser/chromeos/login/screens/user_image_screen.h" |
| 36 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h" | 38 #include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h" |
| 37 #include "chrome/browser/chromeos/login/startup_utils.h" | 39 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 38 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" | 40 #include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" |
| 39 #include "chrome/browser/chromeos/login/test_login_utils.h" | 41 #include "chrome/browser/chromeos/login/test_login_utils.h" |
| 40 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" | 42 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" |
| 41 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" | 43 #include "chrome/browser/chromeos/login/ui/webui_login_view.h" |
| 42 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" | 44 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" |
| 43 #include "chrome/browser/chromeos/policy/server_backed_device_state.h" | 45 #include "chrome/browser/chromeos/policy/server_backed_device_state.h" |
| 46 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h" | |
| 44 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 47 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 45 #include "chrome/browser/chromeos/timezone/timezone_request.h" | 48 #include "chrome/browser/chromeos/timezone/timezone_request.h" |
| 46 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" | 49 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
| 47 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" | 50 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
| 48 #include "chrome/common/chrome_paths.h" | 51 #include "chrome/common/chrome_paths.h" |
| 49 #include "chrome/common/chrome_switches.h" | 52 #include "chrome/common/chrome_switches.h" |
| 50 #include "chrome/common/pref_names.h" | 53 #include "chrome/common/pref_names.h" |
| 51 #include "chrome/grit/generated_resources.h" | 54 #include "chrome/grit/generated_resources.h" |
| 52 #include "chrome/test/base/ui_test_utils.h" | 55 #include "chrome/test/base/ui_test_utils.h" |
| 53 #include "chromeos/audio/cras_audio_handler.h" | 56 #include "chromeos/audio/cras_audio_handler.h" |
| 54 #include "chromeos/chromeos_switches.h" | 57 #include "chromeos/chromeos_switches.h" |
| 55 #include "chromeos/chromeos_test_utils.h" | 58 #include "chromeos/chromeos_test_utils.h" |
| 56 #include "chromeos/dbus/dbus_thread_manager.h" | 59 #include "chromeos/dbus/dbus_thread_manager.h" |
| 57 #include "chromeos/dbus/fake_session_manager_client.h" | 60 #include "chromeos/dbus/fake_session_manager_client.h" |
| 58 #include "chromeos/login/auth/key.h" | 61 #include "chromeos/login/auth/key.h" |
| 59 #include "chromeos/login/auth/mock_auth_status_consumer.h" | 62 #include "chromeos/login/auth/mock_auth_status_consumer.h" |
| 60 #include "chromeos/login/auth/mock_authenticator.h" | 63 #include "chromeos/login/auth/mock_authenticator.h" |
| 61 #include "chromeos/login/auth/user_context.h" | 64 #include "chromeos/login/auth/user_context.h" |
| 62 #include "chromeos/network/network_state.h" | 65 #include "chromeos/network/network_state.h" |
| 63 #include "chromeos/network/network_state_handler.h" | 66 #include "chromeos/network/network_state_handler.h" |
| 64 #include "chromeos/settings/timezone_settings.h" | 67 #include "chromeos/settings/timezone_settings.h" |
| 65 #include "chromeos/system/fake_statistics_provider.h" | 68 #include "chromeos/system/fake_statistics_provider.h" |
| 66 #include "chromeos/system/statistics_provider.h" | 69 #include "chromeos/system/statistics_provider.h" |
| 70 #include "components/policy/core/common/cloud/cloud_policy_constants.h" | |
| 67 #include "content/public/test/browser_test_utils.h" | 71 #include "content/public/test/browser_test_utils.h" |
| 68 #include "content/public/test/test_utils.h" | 72 #include "content/public/test/test_utils.h" |
| 69 #include "net/test/spawned_test_server/spawned_test_server.h" | 73 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 70 #include "net/url_request/test_url_fetcher_factory.h" | 74 #include "net/url_request/test_url_fetcher_factory.h" |
| 71 #include "net/url_request/url_fetcher_impl.h" | 75 #include "net/url_request/url_fetcher_impl.h" |
| 72 #include "testing/gmock/include/gmock/gmock.h" | 76 #include "testing/gmock/include/gmock/gmock.h" |
| 73 #include "testing/gtest/include/gtest/gtest.h" | 77 #include "testing/gtest/include/gtest/gtest.h" |
| 74 #include "third_party/icu/source/common/unicode/locid.h" | 78 #include "third_party/icu/source/common/unicode/locid.h" |
| 75 #include "ui/base/accelerators/accelerator.h" | 79 #include "ui/base/accelerators/accelerator.h" |
| 76 #include "ui/base/l10n/l10n_util.h" | 80 #include "ui/base/l10n/l10n_util.h" |
| 77 | 81 |
| 78 using ::testing::Exactly; | 82 using ::testing::Exactly; |
| 79 using ::testing::Invoke; | 83 using ::testing::Invoke; |
| 84 using ::testing::Mock; | |
| 80 using ::testing::Return; | 85 using ::testing::Return; |
| 81 | 86 |
| 82 namespace chromeos { | 87 namespace chromeos { |
| 83 | 88 |
| 84 namespace { | 89 namespace { |
| 85 | 90 |
| 86 const char kUsername[] = "test_user@managedchrome.com"; | 91 const char kUsername[] = "test_user@managedchrome.com"; |
| 87 const char kPassword[] = "test_password"; | 92 const char kPassword[] = "test_password"; |
| 88 | 93 |
| 89 const char kGeolocationResponseBody[] = | 94 const char kGeolocationResponseBody[] = |
| 90 "{\n" | 95 "{\n" |
| 91 " \"location\": {\n" | 96 " \"location\": {\n" |
| 92 " \"lat\": 51.0,\n" | 97 " \"lat\": 51.0,\n" |
| 93 " \"lng\": -0.1\n" | 98 " \"lng\": -0.1\n" |
| 94 " },\n" | 99 " },\n" |
| 95 " \"accuracy\": 1200.4\n" | 100 " \"accuracy\": 1200.4\n" |
| 96 "}"; | 101 "}"; |
| 97 | 102 |
| 98 // Timezone should not match kGeolocationResponseBody to check that exactly | 103 // Timezone should not match kGeolocationResponseBody to check that exactly |
| 99 // this value will be used. | 104 // this value will be used. |
| 100 const char kTimezoneResponseBody[] = | 105 const char kTimezoneResponseBody[] = |
| 101 "{\n" | 106 "{\n" |
| 102 " \"dstOffset\" : 0.0,\n" | 107 " \"dstOffset\" : 0.0,\n" |
| 103 " \"rawOffset\" : -32400.0,\n" | 108 " \"rawOffset\" : -32400.0,\n" |
| 104 " \"status\" : \"OK\",\n" | 109 " \"status\" : \"OK\",\n" |
| 105 " \"timeZoneId\" : \"America/Anchorage\",\n" | 110 " \"timeZoneId\" : \"America/Anchorage\",\n" |
| 106 " \"timeZoneName\" : \"Pacific Standard Time\"\n" | 111 " \"timeZoneName\" : \"Pacific Standard Time\"\n" |
| 107 "}"; | 112 "}"; |
| 108 | 113 |
| 114 const char kDisabledMessage[] = "This device has been disabled."; | |
| 115 | |
| 109 class PrefStoreStub : public TestingPrefStore { | 116 class PrefStoreStub : public TestingPrefStore { |
| 110 public: | 117 public: |
| 111 // TestingPrefStore overrides: | 118 // TestingPrefStore overrides: |
| 112 virtual PrefReadError GetReadError() const override { | 119 virtual PrefReadError GetReadError() const override { |
| 113 return PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE; | 120 return PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE; |
| 114 } | 121 } |
| 115 | 122 |
| 116 virtual bool IsInitializationComplete() const override { | 123 virtual bool IsInitializationComplete() const override { |
| 117 return true; | 124 return true; |
| 118 } | 125 } |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 }; | 390 }; |
| 384 | 391 |
| 385 class WizardControllerFlowTest : public WizardControllerTest { | 392 class WizardControllerFlowTest : public WizardControllerTest { |
| 386 protected: | 393 protected: |
| 387 WizardControllerFlowTest() {} | 394 WizardControllerFlowTest() {} |
| 388 // Overriden from InProcessBrowserTest: | 395 // Overriden from InProcessBrowserTest: |
| 389 virtual void SetUpOnMainThread() override { | 396 virtual void SetUpOnMainThread() override { |
| 390 WizardControllerTest::SetUpOnMainThread(); | 397 WizardControllerTest::SetUpOnMainThread(); |
| 391 | 398 |
| 392 // Make sure that OOBE is run as an "official" build. | 399 // Make sure that OOBE is run as an "official" build. |
| 393 WizardController::default_controller()->is_official_build_ = true; | 400 WizardController* wizard_controller = |
| 401 WizardController::default_controller(); | |
| 402 wizard_controller->is_official_build_ = true; | |
| 394 | 403 |
| 395 // Clear portal list (as it is by default in OOBE). | 404 // Clear portal list (as it is by default in OOBE). |
| 396 NetworkHandler::Get()->network_state_handler()->SetCheckPortalList(""); | 405 NetworkHandler::Get()->network_state_handler()->SetCheckPortalList(""); |
| 397 | 406 |
| 398 // Set up the mocks for all screens. | 407 // Set up the mocks for all screens. |
| 399 MOCK(mock_network_screen_, | 408 MOCK(mock_network_screen_, |
| 400 kNetworkScreenName, | 409 kNetworkScreenName, |
| 401 MockNetworkScreen, | 410 MockNetworkScreen, |
| 402 MockNetworkScreenActor); | 411 MockNetworkScreenActor); |
| 403 MOCK(mock_update_screen_, | 412 MOCK(mock_update_screen_, |
| 404 kUpdateScreenName, | 413 kUpdateScreenName, |
| 405 MockUpdateScreen, | 414 MockUpdateScreen, |
| 406 MockUpdateScreenActor); | 415 MockUpdateScreenActor); |
| 407 MOCK(mock_eula_screen_, | 416 MOCK(mock_eula_screen_, |
| 408 kEulaScreenName, | 417 kEulaScreenName, |
| 409 MockEulaScreen, | 418 MockEulaScreen, |
| 410 MockEulaScreenActor); | 419 MockEulaScreenActor); |
| 411 MOCK(mock_enrollment_screen_, | 420 MOCK(mock_enrollment_screen_, |
| 412 kEnrollmentScreenName, | 421 kEnrollmentScreenName, |
| 413 MockEnrollmentScreen, | 422 MockEnrollmentScreen, |
| 414 MockEnrollmentScreenActor); | 423 MockEnrollmentScreenActor); |
| 415 MOCK(mock_auto_enrollment_check_screen_, | 424 MOCK(mock_auto_enrollment_check_screen_, |
| 416 kAutoEnrollmentCheckScreenName, | 425 kAutoEnrollmentCheckScreenName, |
| 417 MockAutoEnrollmentCheckScreen, | 426 MockAutoEnrollmentCheckScreen, |
| 418 MockAutoEnrollmentCheckScreenActor); | 427 MockAutoEnrollmentCheckScreenActor); |
| 428 device_disabled_screen_actor_.reset(new MockDeviceDisabledScreenActor); | |
| 429 wizard_controller->screens_[WizardController::kDeviceDisabledScreenName] = | |
| 430 make_linked_ptr(new DeviceDisabledScreen( | |
| 431 wizard_controller, | |
| 432 device_disabled_screen_actor_.get())); | |
| 433 EXPECT_CALL(*device_disabled_screen_actor_, Show(_)).Times(0); | |
| 419 | 434 |
| 420 // Switch to the initial screen. | 435 // Switch to the initial screen. |
| 421 EXPECT_EQ(NULL, WizardController::default_controller()->current_screen()); | 436 EXPECT_EQ(NULL, wizard_controller->current_screen()); |
| 422 EXPECT_CALL(*mock_network_screen_, Show()).Times(1); | 437 EXPECT_CALL(*mock_network_screen_, Show()).Times(1); |
| 423 WizardController::default_controller()->AdvanceToScreen( | 438 wizard_controller->AdvanceToScreen(WizardController::kNetworkScreenName); |
| 424 WizardController::kNetworkScreenName); | 439 } |
| 440 | |
| 441 void TearDownOnMainThread() override { | |
| 442 device_disabled_screen_actor_.reset(); | |
| 443 WizardControllerTest::TearDownOnMainThread(); | |
| 425 } | 444 } |
| 426 | 445 |
| 427 virtual void TearDown() { | 446 virtual void TearDown() { |
| 428 if (fallback_fetcher_factory_) { | 447 if (fallback_fetcher_factory_) { |
| 429 fetcher_factory_.reset(); | 448 fetcher_factory_.reset(); |
| 430 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get()); | 449 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get()); |
| 431 fallback_fetcher_factory_.reset(); | 450 fallback_fetcher_factory_.reset(); |
| 432 } | 451 } |
| 433 } | 452 } |
| 434 | 453 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 481 } | 500 } |
| 482 | 501 |
| 483 MockOutShowHide<MockNetworkScreen, MockNetworkScreenActor>* | 502 MockOutShowHide<MockNetworkScreen, MockNetworkScreenActor>* |
| 484 mock_network_screen_; | 503 mock_network_screen_; |
| 485 MockOutShowHide<MockUpdateScreen, MockUpdateScreenActor>* mock_update_screen_; | 504 MockOutShowHide<MockUpdateScreen, MockUpdateScreenActor>* mock_update_screen_; |
| 486 MockOutShowHide<MockEulaScreen, MockEulaScreenActor>* mock_eula_screen_; | 505 MockOutShowHide<MockEulaScreen, MockEulaScreenActor>* mock_eula_screen_; |
| 487 MockOutShowHide<MockEnrollmentScreen, | 506 MockOutShowHide<MockEnrollmentScreen, |
| 488 MockEnrollmentScreenActor>* mock_enrollment_screen_; | 507 MockEnrollmentScreenActor>* mock_enrollment_screen_; |
| 489 MockOutShowHide<MockAutoEnrollmentCheckScreen, | 508 MockOutShowHide<MockAutoEnrollmentCheckScreen, |
| 490 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_; | 509 MockAutoEnrollmentCheckScreenActor>* mock_auto_enrollment_check_screen_; |
| 510 scoped_ptr<MockDeviceDisabledScreenActor> device_disabled_screen_actor_; | |
| 491 | 511 |
| 492 private: | 512 private: |
| 493 NetworkPortalDetectorTestImpl* network_portal_detector_; | 513 NetworkPortalDetectorTestImpl* network_portal_detector_; |
| 494 | 514 |
| 495 // Use a test factory as a fallback so we don't have to deal with other | 515 // Use a test factory as a fallback so we don't have to deal with other |
| 496 // requests. | 516 // requests. |
| 497 scoped_ptr<WizardControllerTestURLFetcherFactory> fallback_fetcher_factory_; | 517 scoped_ptr<WizardControllerTestURLFetcherFactory> fallback_fetcher_factory_; |
| 498 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_; | 518 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_; |
| 499 | 519 |
| 500 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest); | 520 DISALLOW_COPY_AND_ASSIGN(WizardControllerFlowTest); |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 693 ExistingUserController::current_controller()->ShowWrongHWIDScreen(); | 713 ExistingUserController::current_controller()->ShowWrongHWIDScreen(); |
| 694 | 714 |
| 695 CheckCurrentScreen(WizardController::kWrongHWIDScreenName); | 715 CheckCurrentScreen(WizardController::kWrongHWIDScreenName); |
| 696 | 716 |
| 697 // After warning is skipped, user returns to sign-in screen. | 717 // After warning is skipped, user returns to sign-in screen. |
| 698 // And this destroys WizardController. | 718 // And this destroys WizardController. |
| 699 OnExit(ScreenObserver::WRONG_HWID_WARNING_SKIPPED); | 719 OnExit(ScreenObserver::WRONG_HWID_WARNING_SKIPPED); |
| 700 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); | 720 EXPECT_FALSE(ExistingUserController::current_controller() == NULL); |
| 701 } | 721 } |
| 702 | 722 |
| 703 class WizardControllerEnrollmentFlowTest : public WizardControllerFlowTest { | 723 class WizardControllerDeviceStateTest : public WizardControllerFlowTest { |
| 704 protected: | 724 protected: |
| 705 WizardControllerEnrollmentFlowTest() { | 725 WizardControllerDeviceStateTest() |
| 726 : install_attributes_("", "", "", policy::DEVICE_MODE_NOT_SET) { | |
|
Nikita (slow)
2014/10/24 10:31:26
nit: std::string()
Nikita (slow)
2014/10/24 10:31:26
You're setting policy::DEVICE_MODE_NOT_SET here m
bartfab (slow)
2014/10/24 11:13:52
Done.
bartfab (slow)
2014/10/24 11:13:52
This is the value that the device state would have
| |
| 706 fake_statistics_provider_.SetMachineStatistic("serial_number", "test"); | 727 fake_statistics_provider_.SetMachineStatistic("serial_number", "test"); |
| 707 fake_statistics_provider_.SetMachineStatistic(system::kActivateDateKey, | 728 fake_statistics_provider_.SetMachineStatistic(system::kActivateDateKey, |
| 708 "2000-01"); | 729 "2000-01"); |
| 709 } | 730 } |
| 710 | 731 |
| 711 virtual void SetUpCommandLine(CommandLine* command_line) override { | 732 virtual void SetUpCommandLine(CommandLine* command_line) override { |
| 712 WizardControllerFlowTest::SetUpCommandLine(command_line); | 733 WizardControllerFlowTest::SetUpCommandLine(command_line); |
| 713 | 734 |
| 714 command_line->AppendSwitchASCII( | 735 command_line->AppendSwitchASCII( |
| 715 switches::kEnterpriseEnableForcedReEnrollment, | 736 switches::kEnterpriseEnableForcedReEnrollment, |
| 716 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways); | 737 chromeos::AutoEnrollmentController::kForcedReEnrollmentAlways); |
| 717 command_line->AppendSwitchASCII( | 738 command_line->AppendSwitchASCII( |
| 718 switches::kEnterpriseEnrollmentInitialModulus, "1"); | 739 switches::kEnterpriseEnrollmentInitialModulus, "1"); |
| 719 command_line->AppendSwitchASCII( | 740 command_line->AppendSwitchASCII( |
| 720 switches::kEnterpriseEnrollmentModulusLimit, "2"); | 741 switches::kEnterpriseEnrollmentModulusLimit, "2"); |
| 721 } | 742 } |
| 722 | 743 |
| 723 system::ScopedFakeStatisticsProvider fake_statistics_provider_; | 744 system::ScopedFakeStatisticsProvider fake_statistics_provider_; |
| 724 | 745 |
| 725 private: | 746 private: |
| 726 DISALLOW_COPY_AND_ASSIGN(WizardControllerEnrollmentFlowTest); | 747 policy::ScopedStubEnterpriseInstallAttributes install_attributes_; |
| 748 | |
| 749 DISALLOW_COPY_AND_ASSIGN(WizardControllerDeviceStateTest); | |
| 727 }; | 750 }; |
| 728 | 751 |
| 729 IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest, | 752 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 730 ControlFlowForcedReEnrollment) { | 753 ControlFlowForcedReEnrollment) { |
| 731 CheckCurrentScreen(WizardController::kNetworkScreenName); | 754 CheckCurrentScreen(WizardController::kNetworkScreenName); |
| 732 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 755 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 733 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 756 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 734 OnExit(ScreenObserver::NETWORK_CONNECTED); | 757 OnExit(ScreenObserver::NETWORK_CONNECTED); |
| 735 | 758 |
| 736 CheckCurrentScreen(WizardController::kEulaScreenName); | 759 CheckCurrentScreen(WizardController::kEulaScreenName); |
| 737 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | 760 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 738 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | 761 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 739 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | 762 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 773 | 796 |
| 774 ResetAutoEnrollmentCheckScreen(); | 797 ResetAutoEnrollmentCheckScreen(); |
| 775 | 798 |
| 776 // Make sure enterprise enrollment page shows up. | 799 // Make sure enterprise enrollment page shows up. |
| 777 CheckCurrentScreen(WizardController::kEnrollmentScreenName); | 800 CheckCurrentScreen(WizardController::kEnrollmentScreenName); |
| 778 OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_COMPLETED); | 801 OnExit(ScreenObserver::ENTERPRISE_ENROLLMENT_COMPLETED); |
| 779 | 802 |
| 780 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); | 803 EXPECT_TRUE(StartupUtils::IsOobeCompleted()); |
| 781 } | 804 } |
| 782 | 805 |
| 783 IN_PROC_BROWSER_TEST_F(WizardControllerEnrollmentFlowTest, | 806 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, |
| 784 ControlFlowNoForcedReEnrollmentOnFirstBoot) { | 807 ControlFlowNoForcedReEnrollmentOnFirstBoot) { |
| 785 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); | 808 fake_statistics_provider_.ClearMachineStatistic(system::kActivateDateKey); |
| 786 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 809 EXPECT_NE(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 787 LoginDisplayHostImpl::default_host() | 810 LoginDisplayHostImpl::default_host() |
| 788 ->GetAutoEnrollmentController() | 811 ->GetAutoEnrollmentController() |
| 789 ->state()); | 812 ->state()); |
| 790 | 813 |
| 791 CheckCurrentScreen(WizardController::kNetworkScreenName); | 814 CheckCurrentScreen(WizardController::kNetworkScreenName); |
| 792 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | 815 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); |
| 793 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | 816 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); |
| 794 OnExit(ScreenObserver::NETWORK_CONNECTED); | 817 OnExit(ScreenObserver::NETWORK_CONNECTED); |
| 795 | 818 |
| 796 CheckCurrentScreen(WizardController::kEulaScreenName); | 819 CheckCurrentScreen(WizardController::kEulaScreenName); |
| 797 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | 820 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); |
| 798 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | 821 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); |
| 799 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | 822 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); |
| 800 OnExit(ScreenObserver::EULA_ACCEPTED); | 823 OnExit(ScreenObserver::EULA_ACCEPTED); |
| 801 // Let update screen smooth time process (time = 0ms). | 824 // Let update screen smooth time process (time = 0ms). |
| 802 content::RunAllPendingInMessageLoop(); | 825 content::RunAllPendingInMessageLoop(); |
| 803 | 826 |
| 804 CheckCurrentScreen(WizardController::kUpdateScreenName); | 827 CheckCurrentScreen(WizardController::kUpdateScreenName); |
| 805 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); | 828 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); |
| 806 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); | 829 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); |
| 807 OnExit(ScreenObserver::UPDATE_INSTALLED); | 830 OnExit(ScreenObserver::UPDATE_INSTALLED); |
| 808 | 831 |
| 809 AutoEnrollmentCheckScreen* screen = | 832 AutoEnrollmentCheckScreen* screen = |
| 810 AutoEnrollmentCheckScreen::Get(WizardController::default_controller()); | 833 AutoEnrollmentCheckScreen::Get(WizardController::default_controller()); |
| 811 EXPECT_EQ(screen, | 834 EXPECT_EQ(screen, |
| 812 WizardController::default_controller()->current_screen()); | 835 WizardController::default_controller()->current_screen()); |
| 836 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1); | |
| 813 screen->Start(); | 837 screen->Start(); |
| 814 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, | 838 EXPECT_EQ(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT, |
| 815 LoginDisplayHostImpl::default_host() | 839 LoginDisplayHostImpl::default_host() |
| 816 ->GetAutoEnrollmentController() | 840 ->GetAutoEnrollmentController() |
| 817 ->state()); | 841 ->state()); |
| 818 } | 842 } |
| 819 | 843 |
| 844 IN_PROC_BROWSER_TEST_F(WizardControllerDeviceStateTest, | |
| 845 ControlFlowDeviceDisabled) { | |
| 846 CheckCurrentScreen(WizardController::kNetworkScreenName); | |
| 847 EXPECT_CALL(*mock_network_screen_, Hide()).Times(1); | |
| 848 EXPECT_CALL(*mock_eula_screen_, Show()).Times(1); | |
| 849 OnExit(ScreenObserver::NETWORK_CONNECTED); | |
| 850 | |
| 851 CheckCurrentScreen(WizardController::kEulaScreenName); | |
| 852 EXPECT_CALL(*mock_eula_screen_, Hide()).Times(1); | |
| 853 EXPECT_CALL(*mock_update_screen_, StartNetworkCheck()).Times(1); | |
| 854 EXPECT_CALL(*mock_update_screen_, Show()).Times(1); | |
| 855 OnExit(ScreenObserver::EULA_ACCEPTED); | |
| 856 // Let update screen smooth time process (time = 0ms). | |
|
Nikita (slow)
2014/10/24 10:31:26
nit: insert empty line before comment.
bartfab (slow)
2014/10/24 11:13:52
Done, here and elsewhere in the file (this line is
| |
| 857 content::RunAllPendingInMessageLoop(); | |
| 858 | |
| 859 CheckCurrentScreen(WizardController::kUpdateScreenName); | |
| 860 EXPECT_CALL(*mock_update_screen_, Hide()).Times(1); | |
| 861 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Show()).Times(1); | |
| 862 OnExit(ScreenObserver::UPDATE_INSTALLED); | |
| 863 | |
| 864 AutoEnrollmentCheckScreen* screen = | |
| 865 AutoEnrollmentCheckScreen::Get(WizardController::default_controller()); | |
| 866 EXPECT_EQ(screen, | |
| 867 WizardController::default_controller()->current_screen()); | |
| 868 EXPECT_CALL(*mock_auto_enrollment_check_screen_, Hide()).Times(1); | |
| 869 screen->Start(); | |
| 870 // Wait for auto-enrollment controller to encounter the connection error. | |
|
Nikita (slow)
2014/10/24 10:31:26
nit: insert empty line before comment.
bartfab (slow)
2014/10/24 11:13:52
Done.
| |
| 871 WaitForAutoEnrollmentState(policy::AUTO_ENROLLMENT_STATE_CONNECTION_ERROR); | |
| 872 | |
| 873 // The error screen shows up if device state could not be retrieved. | |
| 874 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); | |
| 875 EXPECT_EQ(GetErrorScreen(), | |
| 876 WizardController::default_controller()->current_screen()); | |
| 877 base::DictionaryValue device_state; | |
| 878 device_state.SetBoolean(policy::kDeviceStateDisabled, true); | |
| 879 device_state.SetString(policy::kDeviceStateDisabledMessage, kDisabledMessage); | |
| 880 g_browser_process->local_state()->Set(prefs::kServerBackedDeviceState, | |
| 881 device_state); | |
| 882 EXPECT_CALL(*device_disabled_screen_actor_, Show(kDisabledMessage)).Times(1); | |
| 883 OnExit(ScreenObserver::ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED); | |
| 884 | |
| 885 ResetAutoEnrollmentCheckScreen(); | |
| 886 | |
| 887 // Make sure the device disabled screen is shown. | |
| 888 CheckCurrentScreen(WizardController::kDeviceDisabledScreenName); | |
| 889 | |
| 890 EXPECT_FALSE(StartupUtils::IsOobeCompleted()); | |
| 891 } | |
| 892 | |
| 820 class WizardControllerBrokenLocalStateTest : public WizardControllerTest { | 893 class WizardControllerBrokenLocalStateTest : public WizardControllerTest { |
| 821 protected: | 894 protected: |
| 822 WizardControllerBrokenLocalStateTest() | 895 WizardControllerBrokenLocalStateTest() |
| 823 : fake_session_manager_client_(NULL) { | 896 : fake_session_manager_client_(NULL) { |
| 824 } | 897 } |
| 825 | 898 |
| 826 virtual ~WizardControllerBrokenLocalStateTest() {} | 899 virtual ~WizardControllerBrokenLocalStateTest() {} |
| 827 | 900 |
| 828 virtual void SetUpInProcessBrowserTestFixture() override { | 901 virtual void SetUpInProcessBrowserTestFixture() override { |
| 829 WizardControllerTest::SetUpInProcessBrowserTestFixture(); | 902 WizardControllerTest::SetUpInProcessBrowserTestFixture(); |
| 830 | 903 |
| 831 fake_session_manager_client_ = new FakeSessionManagerClient; | 904 fake_session_manager_client_ = new FakeSessionManagerClient; |
| 832 DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient( | 905 DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient( |
| 833 scoped_ptr<SessionManagerClient>(fake_session_manager_client_)); | 906 scoped_ptr<SessionManagerClient>(fake_session_manager_client_)); |
| 834 } | 907 } |
| 835 | 908 |
| 836 virtual void SetUpOnMainThread() override { | 909 virtual void SetUpOnMainThread() override { |
| 837 base::PrefServiceFactory factory; | 910 base::PrefServiceFactory factory; |
| 838 factory.set_user_prefs(make_scoped_refptr(new PrefStoreStub())); | 911 factory.set_user_prefs(make_scoped_refptr(new PrefStoreStub())); |
| 839 local_state_ = factory.Create(new PrefRegistrySimple()).Pass(); | 912 local_state_ = factory.Create(new PrefRegistrySimple()).Pass(); |
| 840 WizardController::set_local_state_for_testing(local_state_.get()); | 913 WizardController::set_local_state_for_testing(local_state_.get()); |
| 841 | 914 |
| 842 WizardControllerTest::SetUpOnMainThread(); | 915 WizardControllerTest::SetUpOnMainThread(); |
| 843 | 916 |
| 844 // Make sure that OOBE is run as an "official" build. | 917 // Make sure that OOBE is run as an "official" build. |
| 845 WizardController::default_controller()->is_official_build_ = true; | 918 WizardController::default_controller()->is_official_build_ = true; |
| 846 } | 919 } |
| 847 | 920 |
| 848 virtual void TearDownInProcessBrowserTestFixture() override { | |
| 849 WizardControllerTest::TearDownInProcessBrowserTestFixture(); | |
| 850 } | |
| 851 | |
| 852 | |
| 853 FakeSessionManagerClient* fake_session_manager_client() const { | 921 FakeSessionManagerClient* fake_session_manager_client() const { |
| 854 return fake_session_manager_client_; | 922 return fake_session_manager_client_; |
| 855 } | 923 } |
| 856 | 924 |
| 857 private: | 925 private: |
| 858 scoped_ptr<PrefService> local_state_; | 926 scoped_ptr<PrefService> local_state_; |
| 859 FakeSessionManagerClient* fake_session_manager_client_; | 927 FakeSessionManagerClient* fake_session_manager_client_; |
| 860 | 928 |
| 861 DISALLOW_COPY_AND_ASSIGN(WizardControllerBrokenLocalStateTest); | 929 DISALLOW_COPY_AND_ASSIGN(WizardControllerBrokenLocalStateTest); |
| 862 }; | 930 }; |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1106 // TODO(dzhioev): Add test emaulating device with wrong HWID. | 1174 // TODO(dzhioev): Add test emaulating device with wrong HWID. |
| 1107 | 1175 |
| 1108 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 | 1176 // TODO(nkostylev): Add test for WebUI accelerators http://crosbug.com/22571 |
| 1109 | 1177 |
| 1110 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when | 1178 // TODO(merkulova): Add tests for bluetooth HID detection screen variations when |
| 1111 // UI and logic is ready. http://crbug.com/127016 | 1179 // UI and logic is ready. http://crbug.com/127016 |
| 1112 | 1180 |
| 1113 // TODO(dzhioev): Add tests for controller/host pairing flow. | 1181 // TODO(dzhioev): Add tests for controller/host pairing flow. |
| 1114 // http://crbug.com/375191 | 1182 // http://crbug.com/375191 |
| 1115 | 1183 |
| 1116 COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 23, | 1184 COMPILE_ASSERT(ScreenObserver::EXIT_CODES_COUNT == 24, |
| 1117 add_tests_for_new_control_flow_you_just_introduced); | 1185 add_tests_for_new_control_flow_you_just_introduced); |
| 1118 | 1186 |
| 1119 } // namespace chromeos | 1187 } // namespace chromeos |
| OLD | NEW |