Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / reset_browsertest.cc
index f9c2577..7c79a9c 100644 (file)
@@ -38,13 +38,12 @@ class ResetTest : public LoginManagerTest {
   }
   virtual ~ResetTest() {}
 
-  virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
+  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
     LoginManagerTest::SetUpCommandLine(command_line);
-    command_line->AppendSwitch(switches::kEnableRollbackOption);
   }
 
   // LoginManagerTest overrides:
-  virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
+  virtual void SetUpInProcessBrowserTestFixture() override {
     scoped_ptr<DBusThreadManagerSetter> dbus_setter =
         chromeos::DBusThreadManager::GetSetterForTesting();
     session_manager_client_ = new FakeSessionManagerClient;
@@ -75,8 +74,11 @@ class ResetTest : public LoginManagerTest {
   }
 
   void InvokeRollbackOption() {
-    ASSERT_TRUE(JSExecuted(
-        "cr.ui.Oobe.handleAccelerator('show_rollback_on_reset_screen');"));
+    ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');"));
+  }
+
+  void HideRollbackOption() {
+    ASSERT_TRUE(JSExecuted("cr.ui.Oobe.handleAccelerator('reset');"));
   }
 
   void CloseResetScreen() {
@@ -84,7 +86,7 @@ class ResetTest : public LoginManagerTest {
   }
 
   void ClickResetButton() {
-    ASSERT_TRUE(JSExecuted("$('reset-button').click();"));
+    ASSERT_TRUE(JSExecuted("$('reset-confirm-commit').click();"));
   }
 
   void ClickRestartButton() {
@@ -93,6 +95,9 @@ class ResetTest : public LoginManagerTest {
   void ClickToConfirmButton() {
     ASSERT_TRUE(JSExecuted("$('reset-toconfirm-button').click();"));
   }
+  void ClickDismissConfirmationButton() {
+    ASSERT_TRUE(JSExecuted("$('reset-confirm-dismiss').click();"));
+  }
 
   FakeUpdateEngineClient* update_engine_client_;
   FakeSessionManagerClient* session_manager_client_;
@@ -103,10 +108,9 @@ class ResetFirstAfterBootTest : public ResetTest {
  public:
   virtual ~ResetFirstAfterBootTest() {}
 
-  virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
+  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
     LoginManagerTest::SetUpCommandLine(command_line);
     command_line->AppendSwitch(switches::kFirstExecAfterBoot);
-    command_line->AppendSwitch(switches::kEnableRollbackOption);
   }
 };
 
@@ -139,71 +143,146 @@ IN_PROC_BROWSER_TEST_F(ResetTest, RestartBeforePowerwash) {
   EXPECT_TRUE(prefs->GetBoolean(prefs::kFactoryResetRequested));
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShortcutInvokedCases) {
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ViewsLogic) {
   PrefService* prefs = g_browser_process->local_state();
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
   RegisterSomeUser();
+  update_engine_client_->set_can_rollback_check_result(false);
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShortcutInvokedCases) {
-  // rollback unavailable
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ViewsLogic) {
+  PrefService* prefs = g_browser_process->local_state();
+
+  // Rollback unavailable. Show and cancel.
   update_engine_client_->set_can_rollback_check_result(false);
+  JSExpect("document.querySelector('#reset').hidden");
+  JSExpect("document.querySelector('#overlay-reset').hidden");
+  InvokeResetScreen();
+  JSExpect("!document.querySelector('#reset').hidden");
+  JSExpect("document.querySelector('#overlay-reset').hidden");
+  CloseResetScreen();
+  JSExpect("document.querySelector('#reset').hidden");
+
+  // Go to confirmation phase, cancel from there in 2 steps.
+  prefs->SetBoolean(prefs::kFactoryResetRequested, true);
+  InvokeResetScreen();
+  JSExpect("document.querySelector('#overlay-reset').hidden");
+  ClickToConfirmButton();
+  JSExpect("!document.querySelector('#overlay-reset').hidden");
+  ClickDismissConfirmationButton();
+  JSExpect("document.querySelector('#overlay-reset').hidden");
+  JSExpect("!document.querySelector('#reset').hidden");
+  CloseResetScreen();
+  JSExpect("document.querySelector('#reset').hidden");
+
+  // Rollback available. Show and cancel from confirmation screen.
+  update_engine_client_->set_can_rollback_check_result(true);
+  prefs->SetBoolean(prefs::kFactoryResetRequested, true);
   InvokeResetScreen();
-  EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
-  EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
-  EXPECT_EQ(0, update_engine_client_->rollback_call_count());
   InvokeRollbackOption();
+  JSExpect("document.querySelector('#overlay-reset').hidden");
   ClickToConfirmButton();
-  ClickResetButton();
-  EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
-  EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
-  EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  JSExpect("!document.querySelector('#overlay-reset').hidden");
+  ClickDismissConfirmationButton();
+  JSExpect("document.querySelector('#overlay-reset').hidden");
+  JSExpect("!document.querySelector('#reset').hidden");
   CloseResetScreen();
-  OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
+  JSExpect("document.querySelector('#reset').hidden");
+}
 
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ShowAfterBootIfRequested) {
   PrefService* prefs = g_browser_process->local_state();
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
-  update_engine_client_->set_can_rollback_check_result(true);
-  // rollback available and unchecked
+  RegisterSomeUser();
+}
+
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ShowAfterBootIfRequested) {
+  OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
+  JSExpect("!document.querySelector('#reset').hidden");
+  CloseResetScreen();
+  JSExpect("document.querySelector('#reset').hidden");
+}
+
+
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RollbackUnavailable) {
+  PrefService* prefs = g_browser_process->local_state();
+  prefs->SetBoolean(prefs::kFactoryResetRequested, true);
+  RegisterSomeUser();
+}
+
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RollbackUnavailable) {
+  update_engine_client_->set_can_rollback_check_result(false);
+
   InvokeResetScreen();
+  EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
+  EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
+  EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  InvokeRollbackOption();  // No changes
   ClickToConfirmButton();
   ClickResetButton();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
-  EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
+  EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
   EXPECT_EQ(0, update_engine_client_->rollback_call_count());
   CloseResetScreen();
   OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
 
+  // Next invocation leads to rollback view.
+  PrefService* prefs = g_browser_process->local_state();
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
-  // rollback available and checked
   InvokeResetScreen();
-  InvokeRollbackOption();
   ClickToConfirmButton();
   ClickResetButton();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
   EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
-  EXPECT_EQ(1, update_engine_client_->rollback_call_count());
+  EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  CloseResetScreen();
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_PowerwashRequested) {
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RollbackAvailable) {
   PrefService* prefs = g_browser_process->local_state();
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
   RegisterSomeUser();
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PowerwashRequested) {
-  OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RollbackAvailable) {
+  update_engine_client_->set_can_rollback_check_result(true);
+  PrefService* prefs = g_browser_process->local_state();
+
+  InvokeResetScreen();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
   EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
   EXPECT_EQ(0, update_engine_client_->rollback_call_count());
   ClickToConfirmButton();
+  ClickResetButton();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
-  EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
+  EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
   EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  CloseResetScreen();
+  OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
+
+  // Next invocation leads to simple reset, not rollback view.
+  prefs->SetBoolean(prefs::kFactoryResetRequested, true);
+  InvokeResetScreen();
+  InvokeRollbackOption();  // Shows rollback.
+  ClickDismissConfirmationButton();
+  CloseResetScreen();
+  InvokeResetScreen();
+  ClickToConfirmButton();
   ClickResetButton();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
-  EXPECT_EQ(1, session_manager_client_->start_device_wipe_call_count());
+  EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
   EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  CloseResetScreen();
+  OobeScreenWaiter(OobeDisplay::SCREEN_ACCOUNT_PICKER).Wait();
+
+  prefs->SetBoolean(prefs::kFactoryResetRequested, true);
+  InvokeResetScreen();
+  InvokeRollbackOption();  // Shows rollback.
+  ClickToConfirmButton();
+  ClickResetButton();
+  EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
+  EXPECT_EQ(2, session_manager_client_->start_device_wipe_call_count());
+  EXPECT_EQ(1, update_engine_client_->rollback_call_count());
 }
 
 IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_ErrorOnRollbackRequested) {
@@ -233,29 +312,26 @@ IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, ErrorOnRollbackRequested) {
   OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest,
-                       PRE_SuccessOnRollbackRequested) {
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, PRE_RevertAfterCancel) {
   PrefService* prefs = g_browser_process->local_state();
   prefs->SetBoolean(prefs::kFactoryResetRequested, true);
   RegisterSomeUser();
 }
 
-IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, SuccessOnRollbackRequested) {
+IN_PROC_BROWSER_TEST_F(ResetFirstAfterBootTest, RevertAfterCancel) {
   update_engine_client_->set_can_rollback_check_result(true);
   OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
-  InvokeRollbackOption();
-  ClickToConfirmButton();
-  ClickResetButton();
   EXPECT_EQ(0, power_manager_client_->num_request_restart_calls());
   EXPECT_EQ(0, session_manager_client_->start_device_wipe_call_count());
-  EXPECT_EQ(1, update_engine_client_->rollback_call_count());
-  UpdateEngineClient::Status ready_for_reboot_status;
-  ready_for_reboot_status.status =
-      UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT;
-  update_engine_client_->NotifyObserversThatStatusChanged(
-      ready_for_reboot_status);
-  EXPECT_EQ(1, power_manager_client_->num_request_restart_calls());
+  EXPECT_EQ(0, update_engine_client_->rollback_call_count());
+  JSExpect("!$('reset').classList.contains('rollback-proposal-view')");
+  InvokeRollbackOption();
+  JSExpect("$('reset').classList.contains('rollback-proposal-view')");
+  CloseResetScreen();
+  InvokeResetScreen();
+  OobeScreenWaiter(OobeDisplay::SCREEN_OOBE_RESET).Wait();
+  InvokeRollbackOption();
+  JSExpect("$('reset').classList.contains('rollback-proposal-view')");
 }
 
-
 }  // namespace chromeos