OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |