Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(565)

Unified Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller.cc

Issue 1445383003: Introduce PasswordsModelDelegate as an abstraction between ManagePasswordsBubbleModel and ManagePas… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Mac Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index d6903dde75926e710c2670557155fbbd73e4c17e..857d4a5e831868fd5448e30fe917e04b86fd1be4 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -174,20 +174,108 @@ void ManagePasswordsUIController::OnPasswordAutofilled(
void ManagePasswordsUIController::OnLoginsChanged(
const password_manager::PasswordStoreChangeList& changes) {
- password_manager::ui::State current_state = state();
+ password_manager::ui::State current_state = GetState();
passwords_data_.ProcessLoginsChanged(changes);
- if (current_state != state())
+ if (current_state != GetState())
UpdateBubbleAndIconVisibility();
}
-void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() {
-#if defined(OS_ANDROID)
- chrome::android::ChromeApplication::ShowPasswordSettings();
-#else
- chrome::ShowSettingsSubPage(
- chrome::FindBrowserWithWebContents(web_contents()),
- chrome::kPasswordManagerSubPage);
-#endif
+const GURL& ManagePasswordsUIController::GetOrigin() const {
+ return passwords_data_.origin();
+}
+
+password_manager::ui::State ManagePasswordsUIController::GetState() const {
+ return passwords_data_.state();
+}
+
+const autofill::PasswordForm& ManagePasswordsUIController::
+ GetPendingPassword() const {
+ if (GetState() == password_manager::ui::AUTO_SIGNIN_STATE)
+ return *GetCurrentForms()[0];
+
+ DCHECK(GetState() == password_manager::ui::PENDING_PASSWORD_STATE ||
+ GetState() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE ||
+ GetState() == password_manager::ui::CONFIRMATION_STATE)
+ << GetState();
+ password_manager::PasswordFormManager* form_manager =
+ passwords_data_.form_manager();
+ return form_manager->pending_credentials();
+}
+
+bool ManagePasswordsUIController::IsPasswordOverridden() const {
+ const password_manager::PasswordFormManager* form_manager =
+ passwords_data_.form_manager();
+ return form_manager ? form_manager->password_overridden() : false;
+}
+
+const std::vector<const autofill::PasswordForm*>&
+ManagePasswordsUIController::GetCurrentForms() const {
+ return passwords_data_.GetCurrentForms();
+}
+
+const std::vector<const autofill::PasswordForm*>&
+ManagePasswordsUIController::GetFederatedForms() const {
+ return passwords_data_.federated_credentials_forms();
+}
+
+void ManagePasswordsUIController::OnBubbleShown() {
+ should_pop_up_bubble_ = false;
+}
+
+void ManagePasswordsUIController::OnBubbleHidden() {
+ // Avoid using |state()| which is overridden for some unit tests.
vabr (Chromium) 2015/11/18 08:59:45 There is no more state(), and the code below is us
vasilii 2015/11/18 12:27:45 Done.
+ if (GetState() == password_manager::ui::CREDENTIAL_REQUEST_STATE ||
+ GetState() == password_manager::ui::CONFIRMATION_STATE ||
+ GetState() == password_manager::ui::AUTO_SIGNIN_STATE) {
+ passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
+ UpdateBubbleAndIconVisibility();
+ }
+}
+
+void ManagePasswordsUIController::OnNoInteractionOnUpdate() {
+ if (GetState() != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
+ // Do nothing if the state was changed. It can happen for example when the
+ // update bubble is active and a page navigation happens.
+ return;
+ }
+ password_manager::PasswordFormManager* form_manager =
+ passwords_data_.form_manager();
+ DCHECK(form_manager);
+ form_manager->OnNoInteractionOnUpdate();
+}
+
+void ManagePasswordsUIController::OnNopeUpdateClicked() {
+ password_manager::PasswordFormManager* form_manager =
+ passwords_data_.form_manager();
+ DCHECK(form_manager);
+ form_manager->OnNopeUpdateClicked();
+}
+
+void ManagePasswordsUIController::NeverSavePassword() {
+ DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState());
+ NeverSavePasswordInternal();
+ // The state stays the same.
+}
+
+void ManagePasswordsUIController::SavePassword() {
+ DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, GetState());
+ SavePasswordInternal();
+ passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
+ UpdateBubbleAndIconVisibility();
+}
+
+void ManagePasswordsUIController::UpdatePassword(
+ const autofill::PasswordForm& password_form) {
+ DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, GetState());
+ UpdatePasswordInternal(password_form);
+ passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
+ UpdateBubbleAndIconVisibility();
+}
+
+void ManagePasswordsUIController::ChooseCredential(
+ const autofill::PasswordForm& form,
+ password_manager::CredentialType credential_type) {
+ passwords_data_.ChooseCredential(form, credential_type);
}
void ManagePasswordsUIController::NavigateToExternalPasswordManager() {
@@ -228,25 +316,14 @@ void ManagePasswordsUIController::NavigateToSmartLockHelpPage() {
#endif
}
-void ManagePasswordsUIController::SavePassword() {
- DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state());
- SavePasswordInternal();
- passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
- UpdateBubbleAndIconVisibility();
-}
-
-void ManagePasswordsUIController::UpdatePassword(
- const autofill::PasswordForm& password_form) {
- DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_UPDATE_STATE, state());
- UpdatePasswordInternal(password_form);
- passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
- UpdateBubbleAndIconVisibility();
-}
-
-void ManagePasswordsUIController::ChooseCredential(
- const autofill::PasswordForm& form,
- password_manager::CredentialType credential_type) {
- passwords_data_.ChooseCredential(form, credential_type);
+void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() {
+#if defined(OS_ANDROID)
+ chrome::android::ChromeApplication::ShowPasswordSettings();
+#else
+ chrome::ShowSettingsSubPage(
+ chrome::FindBrowserWithWebContents(web_contents()),
+ chrome::kPasswordManagerSubPage);
+#endif
}
void ManagePasswordsUIController::SavePasswordInternal() {
@@ -269,12 +346,6 @@ void ManagePasswordsUIController::UpdatePasswordInternal(
form_manager->Update(password_form);
}
-void ManagePasswordsUIController::NeverSavePassword() {
- DCHECK_EQ(password_manager::ui::PENDING_PASSWORD_STATE, state());
- NeverSavePasswordInternal();
- // The state stays the same.
-}
-
void ManagePasswordsUIController::NeverSavePasswordInternal() {
password_manager::PasswordFormManager* form_manager =
passwords_data_.form_manager();
@@ -308,77 +379,20 @@ void ManagePasswordsUIController::WasHidden() {
#endif
}
-const autofill::PasswordForm& ManagePasswordsUIController::
- PendingPassword() const {
- if (state() == password_manager::ui::AUTO_SIGNIN_STATE)
- return *GetCurrentForms()[0];
-
- DCHECK(state() == password_manager::ui::PENDING_PASSWORD_STATE ||
- state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE ||
- state() == password_manager::ui::CONFIRMATION_STATE)
- << state();
- password_manager::PasswordFormManager* form_manager =
- passwords_data_.form_manager();
- return form_manager->pending_credentials();
-}
-
-bool ManagePasswordsUIController::PasswordOverridden() const {
- const password_manager::PasswordFormManager* form_manager =
- passwords_data_.form_manager();
- return form_manager ? form_manager->password_overridden() : false;
-}
-
#if !defined(OS_ANDROID)
void ManagePasswordsUIController::UpdateIconAndBubbleState(
ManagePasswordsIconView* icon) {
if (should_pop_up_bubble_) {
// We must display the icon before showing the bubble, as the bubble would
// be otherwise unanchored.
- icon->SetState(state());
+ icon->SetState(GetState());
ShowBubbleWithoutUserInteraction();
} else {
- icon->SetState(state());
+ icon->SetState(GetState());
}
}
#endif
-void ManagePasswordsUIController::OnBubbleShown() {
- should_pop_up_bubble_ = false;
-}
-
-void ManagePasswordsUIController::OnNopeUpdateClicked() {
- password_manager::PasswordFormManager* form_manager =
- passwords_data_.form_manager();
- DCHECK(form_manager);
- form_manager->OnNopeUpdateClicked();
-}
-
-void ManagePasswordsUIController::OnNoInteractionOnUpdate() {
- if (state() != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
- // Do nothing if the state was changed. It can happen for example when the
- // update bubble is active and a page navigation happens.
- return;
- }
- password_manager::PasswordFormManager* form_manager =
- passwords_data_.form_manager();
- DCHECK(form_manager);
- form_manager->OnNoInteractionOnUpdate();
-}
-
-void ManagePasswordsUIController::OnBubbleHidden() {
- // Avoid using |state()| which is overridden for some unit tests.
- if (state() == password_manager::ui::CREDENTIAL_REQUEST_STATE ||
- state() == password_manager::ui::CONFIRMATION_STATE ||
- state() == password_manager::ui::AUTO_SIGNIN_STATE) {
- passwords_data_.TransitionToState(password_manager::ui::MANAGE_STATE);
- UpdateBubbleAndIconVisibility();
- }
-}
-
-password_manager::ui::State ManagePasswordsUIController::state() const {
- return passwords_data_.state();
-}
-
void ManagePasswordsUIController::ShowBubbleWithoutUserInteraction() {
DCHECK(should_pop_up_bubble_);
#if !defined(OS_ANDROID)
@@ -397,3 +411,9 @@ void ManagePasswordsUIController::WebContentsDestroyed() {
if (password_store)
password_store->RemoveObserver(this);
}
+
+PasswordsModelDelegate* PasswordsModelDelegateFromWebContents(
vabr (Chromium) 2015/11/18 08:59:45 I am not happy about the definition of this functi
vasilii 2015/11/18 12:27:45 Done.
vabr (Chromium) 2015/11/18 12:36:40 Just to acknowledge that I was incorrect here, and
+ content::WebContents* web_contents) {
+ DCHECK(web_contents);
+ return ManagePasswordsUIController::FromWebContents(web_contents);
+}

Powered by Google App Engine
This is Rietveld 408576698