Chromium Code Reviews| Index: chrome/browser/ui/passwords/manage_passwords_controller.cc |
| diff --git a/chrome/browser/ui/passwords/manage_passwords_controller.cc b/chrome/browser/ui/passwords/manage_passwords_controller.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..11849f38aa22de7021dd10b17eee2ffd4e834ecd |
| --- /dev/null |
| +++ b/chrome/browser/ui/passwords/manage_passwords_controller.cc |
| @@ -0,0 +1,82 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/ui/passwords/manage_passwords_controller.h" |
| + |
| +#include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/ui/browser_finder.h" |
| +#include "chrome/browser/ui/browser_window.h" |
| +#include "chrome/browser/ui/omnibox/location_bar.h" |
| +#include "content/public/browser/notification_service.h" |
| + |
| +using autofill::PasswordFormMap; |
| + |
| +DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsController); |
| + |
| +ManagePasswordsController::ManagePasswordsController( |
| + content::WebContents* web_contents) |
| + : content::WebContentsObserver(web_contents), |
| + manage_passwords_icon_to_be_shown_(false), |
| + password_to_be_saved_(false), |
| + manage_passwords_bubble_needs_showing_(false), |
| + password_submitted_(false) {} |
| + |
| +ManagePasswordsController::~ManagePasswordsController() {} |
| + |
| +void ManagePasswordsController::OnPasswordAction() { |
| + Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); |
| + if (!browser) |
| + return; |
| + LocationBar* location_bar = browser->window()->GetLocationBar(); |
| + DCHECK(location_bar); |
| + location_bar->UpdateManagePasswordsIconAndBubble(); |
| +} |
| + |
| +void ManagePasswordsController::OnPasswordSubmitted( |
| + PasswordFormManager* form_manager) { |
| + form_manager_.reset(form_manager); |
| + password_form_map_ = form_manager_->best_matches(); |
| + manage_passwords_icon_to_be_shown_ = true; |
| + password_to_be_saved_ = true; |
| + manage_passwords_bubble_needs_showing_ = true; |
| + password_submitted_ = true; |
| + OnPasswordAction(); |
| +} |
| + |
| +void ManagePasswordsController::OnPasswordAutofilled( |
| + const PasswordFormMap& password_form_map) { |
| + password_form_map_ = password_form_map; |
| + manage_passwords_icon_to_be_shown_ = true; |
| + password_to_be_saved_ = false; |
| + manage_passwords_bubble_needs_showing_ = false; |
| + password_submitted_ = false; |
| + OnPasswordAction(); |
| +} |
| + |
| +void ManagePasswordsController::RemoveFromBestMatches( |
| + autofill::PasswordForm password_form) { |
| + password_form_map_.erase(password_form.username_value); |
| +} |
| + |
| +void ManagePasswordsController::OnBubbleShown() { |
| + unset_manage_passwords_bubble_needs_showing(); |
| +} |
| + |
| +void ManagePasswordsController::SavePassword() { |
| + DCHECK(form_manager_.get()); |
| + form_manager_->Save(); |
| +} |
| + |
| +void ManagePasswordsController::DidNavigateMainFrame( |
| + const content::LoadCommittedDetails& details, |
| + const content::FrameNavigateParams& params) { |
| + if (!details.is_in_page) { |
|
markusheintz_
2013/11/26 12:44:37
nit: I guess we could could change this to:
if (d
npentrel
2013/11/26 14:25:55
Done.
|
| + // Reset password states for next page. |
| + manage_passwords_icon_to_be_shown_ = false; |
| + password_to_be_saved_ = false; |
| + manage_passwords_bubble_needs_showing_ = false; |
| + password_submitted_ = false; |
| + OnPasswordAction(); |
| + } |
| +} |