summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/resources/chromeos/login/header_bar.js7
-rw-r--r--chrome/browser/resources/chromeos/login/screen_password_changed.js24
-rw-r--r--chrome/browser/ui/webui/chromeos/login/oobe_ui.cc8
-rw-r--r--chrome/browser/ui/webui/chromeos/login/oobe_ui.h2
-rw-r--r--chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc23
-rw-r--r--chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h6
6 files changed, 55 insertions, 15 deletions
diff --git a/chrome/browser/resources/chromeos/login/header_bar.js b/chrome/browser/resources/chromeos/login/header_bar.js
index 51d2a69..d0ee6a7 100644
--- a/chrome/browser/resources/chromeos/login/header_bar.js
+++ b/chrome/browser/resources/chromeos/login/header_bar.js
@@ -80,6 +80,13 @@ cr.define('login', function() {
* @private
*/
handleCancelAddUserClick_: function(e) {
+ // Let screen handle cancel itself if that is capable of doing so.
+ if (Oobe.getInstance().currentScreen &&
+ Oobe.getInstance().currentScreen.cancel) {
+ Oobe.getInstance().currentScreen.cancel();
+ return;
+ }
+
$('login-header-bar').signinUIActive = false;
$('pod-row').loadLastWallpaper();
diff --git a/chrome/browser/resources/chromeos/login/screen_password_changed.js b/chrome/browser/resources/chromeos/login/screen_password_changed.js
index 82c3a21..2318640 100644
--- a/chrome/browser/resources/chromeos/login/screen_password_changed.js
+++ b/chrome/browser/resources/chromeos/login/screen_password_changed.js
@@ -72,7 +72,7 @@ cr.define('login', function() {
backButton.addEventListener('click', function(e) {
var screen = $('password-changed');
if (screen.classList.contains('migrate')) {
- chrome.send('cancelPasswordChangedFlow');
+ screen.cancel();
} else {
// Resync all data UI step.
screen.classList.remove('resync');
@@ -98,12 +98,8 @@ cr.define('login', function() {
localStrings.getString('proceedAnywayButton');
proceedAnywayButton.addEventListener('click', function(e) {
var screen = $('password-changed');
- if (screen.classList.contains('migrate')) {
- screen.classList.remove('resync');
- screen.classList.add('migrate');
- } else {
+ if (screen.classList.contains('resync'))
$('password-changed').resync();
- }
e.stopPropagation();
});
buttons.push(proceedAnywayButton);
@@ -138,6 +134,16 @@ cr.define('login', function() {
},
/**
+ * Cancels password migration and drops the user back to the login screen.
+ */
+ cancel: function() {
+ this.disabled = true;
+ // Reset login action bar state.
+ $('login-header-bar').signinUIActive = false;
+ chrome.send('cancelPasswordChangedFlow');
+ },
+
+ /**
* Starts migration process using old password that user provided.
*/
migrate: function() {
@@ -166,8 +172,10 @@ cr.define('login', function() {
// We'll get here after the successful online authentication.
// It assumes session is about to start so hides login screen controls.
Oobe.getInstance().headerHidden = false;
- $('password-changed').classList[
- showError ? 'add' : 'remove']('password-error');
+ var screen = $('password-changed');
+ screen.classList[showError ? 'add' : 'remove']('password-error');
+ screen.classList.add('migrate');
+ screen.classList.remove('resync');
$('old-password').value = '';
$('password-changed').disabled = false;
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index 89ae4fd..b11eb15 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -130,6 +130,7 @@ const char OobeUI::kScreenGaiaSignin[] = "gaia-signin";
const char OobeUI::kScreenAccountPicker[] = "account-picker";
const char OobeUI::kScreenUserImagePicker[] = "user-image";
const char OobeUI::kScreenTpmError[] = "tpm-error-message";
+const char OobeUI::kScreenPasswordChanged[] = "password-changed";
OobeUI::OobeUI(content::WebUI* web_ui)
: WebUIController(web_ui),
@@ -303,6 +304,7 @@ void OobeUI::InitializeScreenMap() {
screen_map_[kScreenAccountPicker] = SCREEN_ACCOUNT_PICKER;
screen_map_[kScreenUserImagePicker] = SCREEN_USER_IMAGE_PICKER;
screen_map_[kScreenTpmError] = SCREEN_TMP_ERROR;
+ screen_map_[kScreenPasswordChanged] = SCREEN_PASSWORD_CHANGED;
}
void OobeUI::AddScreenHandler(BaseScreenHandler* handler) {
@@ -339,8 +341,12 @@ void OobeUI::ResetSigninScreenHandlerDelegate() {
}
void OobeUI::OnCurrentScreenChanged(const std::string& screen) {
- if (screen_map_.count(screen))
+ if (screen_map_.count(screen)) {
current_screen_ = screen_map_[screen];
+ } else {
+ NOTREACHED() << "Screen should be registered in InitializeScreenMap()";
+ current_screen_ = SCREEN_UNKNOWN;
+ }
}
} // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
index a45bb82..291c42f 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
@@ -48,6 +48,7 @@ class OobeUI : public OobeDisplay,
SCREEN_ACCOUNT_PICKER,
SCREEN_USER_IMAGE_PICKER,
SCREEN_TMP_ERROR,
+ SCREEN_PASSWORD_CHANGED,
SCREEN_UNKNOWN
};
@@ -60,6 +61,7 @@ class OobeUI : public OobeDisplay,
static const char kScreenAccountPicker[];
static const char kScreenUserImagePicker[];
static const char kScreenTpmError[];
+ static const char kScreenPasswordChanged[];
explicit OobeUI(content::WebUI* web_ui);
virtual ~OobeUI();
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 1ec0571..88aa39e 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -503,7 +503,8 @@ void SigninScreenHandler::OnBrowsingDataRemoverDone() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
cookie_remover_ = NULL;
cookies_cleared_ = true;
- ShowSigninScreenIfReady();
+ cookie_remover_callback_.Run();
+ cookie_remover_callback_.Reset();
}
void SigninScreenHandler::OnCapsLockChange(bool enabled) {
@@ -753,6 +754,10 @@ void SigninScreenHandler::HandleShowAddUser(const base::ListValue* args) {
ShowSigninScreenIfReady();
} else {
StartClearingDnsCache();
+
+ cookie_remover_callback_ = base::Bind(
+ &SigninScreenHandler::ShowSigninScreenIfReady,
+ weak_factory_.GetWeakPtr());
StartClearingCookies();
}
}
@@ -987,11 +992,10 @@ void SigninScreenHandler::HandleLoginVisible(const base::ListValue* args) {
void SigninScreenHandler::HandleCancelPasswordChangedFlow(
const base::ListValue* args) {
- if (delegate_) {
- // TODO(nkostylev): Cleanup cookies / cache. http://crbug.com/124699
- Show(oobe_ui_);
- delegate_->CancelPasswordChangedFlow();
- }
+ cookie_remover_callback_ = base::Bind(
+ &SigninScreenHandler::CancelPasswordChangedFlowInternal,
+ weak_factory_.GetWeakPtr());
+ StartClearingCookies();
}
void SigninScreenHandler::HandleMigrateUserData(const base::ListValue* args) {
@@ -1110,4 +1114,11 @@ void SigninScreenHandler::SendState(const std::string& callback,
state_value, network_value, reason_value, last_network_value);
}
+void SigninScreenHandler::CancelPasswordChangedFlowInternal() {
+ if (delegate_) {
+ Show(oobe_ui_);
+ delegate_->CancelPasswordChangedFlow();
+ }
+}
+
} // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
index 7828937..ba9a1f5b 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/callback.h"
#include "base/hash_tables.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
@@ -278,6 +279,10 @@ class SigninScreenHandler
const std::string& reason,
ConnectionType last_network_type);
+ // Cancels password changed flow - switches back to login screen.
+ // Called as a callback after cookies are cleared.
+ void CancelPasswordChangedFlowInternal();
+
// A delegate that glues this handler with backend LoginDisplay.
SigninScreenHandlerDelegate* delegate_;
@@ -327,6 +332,7 @@ class SigninScreenHandler
std::string test_pass_;
BrowsingDataRemover* cookie_remover_;
+ base::Closure cookie_remover_callback_;
base::WeakPtrFactory<SigninScreenHandler> weak_factory_;