Chromium Code Reviews| 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 |