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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_ui_controller.cc

Issue 399573002: [Password Generation] Trigger confirmation bubble when a password is saved (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/ui/passwords/manage_passwords_ui_controller.h" 5 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h"
6 6
7 #include "chrome/app/chrome_command_ids.h" 7 #include "chrome/app/chrome_command_ids.h"
8 #include "chrome/browser/browsing_data/browsing_data_helper.h" 8 #include "chrome/browser/browsing_data/browsing_data_helper.h"
9 #include "chrome/browser/chrome_notification_types.h" 9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/password_manager/password_store_factory.h" 10 #include "chrome/browser/password_manager/password_store_factory.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 void ManagePasswordsUIController::OnPasswordSubmitted( 67 void ManagePasswordsUIController::OnPasswordSubmitted(
68 PasswordFormManager* form_manager) { 68 PasswordFormManager* form_manager) {
69 form_manager_.reset(form_manager); 69 form_manager_.reset(form_manager);
70 password_form_map_ = form_manager_->best_matches(); 70 password_form_map_ = form_manager_->best_matches();
71 origin_ = PendingCredentials().origin; 71 origin_ = PendingCredentials().origin;
72 state_ = password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE; 72 state_ = password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE;
73 UpdateBubbleAndIconVisibility(); 73 UpdateBubbleAndIconVisibility();
74 } 74 }
75 75
76 void ManagePasswordsUIController::ShowSaveConfirmation(
77 scoped_ptr<PasswordFormManager> form_manager) {
78 form_manager_ = form_manager.Pass();
79 password_form_map_ = form_manager_->best_matches();
80 // const_cast<> is icky, but should be safe as PasswordForms stored in this
81 // map are not mutated.
82 password_form_map_[form_manager_->associated_username()] =
83 const_cast<autofill::PasswordForm*>(
84 &form_manager_->pending_credentials());
85 origin_ = form_manager_->pending_credentials().origin;
86 state_ = password_manager::ui::CONFIRMATION_STATE;
87 UpdateBubbleAndIconVisibility();
88 }
89
76 void ManagePasswordsUIController::OnPasswordAutofilled( 90 void ManagePasswordsUIController::OnPasswordAutofilled(
77 const PasswordFormMap& password_form_map) { 91 const PasswordFormMap& password_form_map) {
78 password_form_map_ = password_form_map; 92 password_form_map_ = password_form_map;
79 origin_ = password_form_map_.begin()->second->origin; 93 origin_ = password_form_map_.begin()->second->origin;
80 state_ = password_manager::ui::MANAGE_STATE; 94 state_ = password_manager::ui::MANAGE_STATE;
81 UpdateBubbleAndIconVisibility(); 95 UpdateBubbleAndIconVisibility();
82 } 96 }
83 97
84 void ManagePasswordsUIController::OnBlacklistBlockedAutofill( 98 void ManagePasswordsUIController::OnBlacklistBlockedAutofill(
85 const PasswordFormMap& password_form_map) { 99 const PasswordFormMap& password_form_map) {
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 } 210 }
197 211
198 const autofill::PasswordForm& ManagePasswordsUIController:: 212 const autofill::PasswordForm& ManagePasswordsUIController::
199 PendingCredentials() const { 213 PendingCredentials() const {
200 DCHECK(form_manager_); 214 DCHECK(form_manager_);
201 return form_manager_->pending_credentials(); 215 return form_manager_->pending_credentials();
202 } 216 }
203 217
204 void ManagePasswordsUIController::UpdateIconAndBubbleState( 218 void ManagePasswordsUIController::UpdateIconAndBubbleState(
205 ManagePasswordsIcon* icon) { 219 ManagePasswordsIcon* icon) {
206 if (state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE) { 220 icon->SetState(state_);
207 // We must display the icon before showing the bubble, as the bubble would 221 if (password_manager::ui::IsAutomaticDisplayState(state_))
208 // be otherwise unanchored. However, we can't change the controller's state
209 // until _after_ the bubble is shown, as our metrics depend on the
210 // distinction between PENDING_PASSWORD_AND_BUBBLE_STATE and
211 // PENDING_PASSWORD_STATE to determine if the bubble opened automagically
212 // or via user action.
213 icon->SetState(password_manager::ui::PENDING_PASSWORD_STATE);
Garrett Casto 2014/07/16 06:29:00 This code make it seems like the views only expect
Mike West 2014/07/16 07:55:03 Not doing the transition here means that the icon
Garrett Casto 2014/07/17 06:42:45 Part of the reason that I was wondering about this
214 ShowBubbleWithoutUserInteraction(); 222 ShowBubbleWithoutUserInteraction();
215 state_ = password_manager::ui::PENDING_PASSWORD_STATE;
216 } else {
217 icon->SetState(state_);
218 }
219 } 223 }
220 224
221 void ManagePasswordsUIController::ShowBubbleWithoutUserInteraction() { 225 void ManagePasswordsUIController::ShowBubbleWithoutUserInteraction() {
222 DCHECK_EQ(state_, password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); 226 DCHECK(password_manager::ui::IsAutomaticDisplayState(state_));
223 #if !defined(OS_ANDROID) 227 #if !defined(OS_ANDROID)
224 Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); 228 Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
225 if (!browser || browser->toolbar_model()->input_in_progress()) 229 if (!browser || browser->toolbar_model()->input_in_progress())
226 return; 230 return;
227 CommandUpdater* updater = browser->command_controller()->command_updater(); 231 CommandUpdater* updater = browser->command_controller()->command_updater();
228 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE); 232 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE);
229 #endif 233 #endif
230 } 234 }
231 235
232 bool ManagePasswordsUIController::PasswordPendingUserDecision() const { 236 bool ManagePasswordsUIController::PasswordPendingUserDecision() const {
233 return state_ == password_manager::ui::PENDING_PASSWORD_STATE || 237 return state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
234 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE; 238 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE;
235 } 239 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698