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 19 matching lines...) Expand all Loading... |
30 Profile::EXPLICIT_ACCESS).get(); | 30 Profile::EXPLICIT_ACCESS).get(); |
31 } | 31 } |
32 | 32 |
33 autofill::ConstPasswordFormMap ConstifyMap( | 33 autofill::ConstPasswordFormMap ConstifyMap( |
34 const autofill::PasswordFormMap& map) { | 34 const autofill::PasswordFormMap& map) { |
35 autofill::ConstPasswordFormMap ret; | 35 autofill::ConstPasswordFormMap ret; |
36 ret.insert(map.begin(), map.end()); | 36 ret.insert(map.begin(), map.end()); |
37 return ret; | 37 return ret; |
38 } | 38 } |
39 | 39 |
40 } // namespace | 40 // Performs a deep copy of the PasswordForm pointers in |map|. The resulting map |
| 41 // is returned via |ret|. |deleter| is populated with these new objects. |
| 42 void DeepCopyMap(const autofill::PasswordFormMap& map, |
| 43 autofill::ConstPasswordFormMap* ret, |
| 44 ScopedVector<autofill::PasswordForm>* deleter) { |
| 45 ConstifyMap(map).swap(*ret); |
| 46 deleter->clear(); |
| 47 for (autofill::ConstPasswordFormMap::iterator i = ret->begin(); |
| 48 i != ret->end(); ++i) { |
| 49 deleter->push_back(new autofill::PasswordForm(*i->second)); |
| 50 i->second = deleter->back(); |
| 51 } |
| 52 } |
| 53 |
| 54 } // namespace |
41 | 55 |
42 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsUIController); | 56 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsUIController); |
43 | 57 |
44 ManagePasswordsUIController::ManagePasswordsUIController( | 58 ManagePasswordsUIController::ManagePasswordsUIController( |
45 content::WebContents* web_contents) | 59 content::WebContents* web_contents) |
46 : content::WebContentsObserver(web_contents), | 60 : content::WebContentsObserver(web_contents), |
47 state_(password_manager::ui::INACTIVE_STATE) { | 61 state_(password_manager::ui::INACTIVE_STATE) { |
48 password_manager::PasswordStore* password_store = | 62 password_manager::PasswordStore* password_store = |
49 GetPasswordStore(web_contents); | 63 GetPasswordStore(web_contents); |
50 if (password_store) | 64 if (password_store) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 password_form_map_ = ConstifyMap(form_manager_->best_matches()); | 100 password_form_map_ = ConstifyMap(form_manager_->best_matches()); |
87 password_form_map_[form_manager_->associated_username()] = | 101 password_form_map_[form_manager_->associated_username()] = |
88 &form_manager_->pending_credentials(); | 102 &form_manager_->pending_credentials(); |
89 origin_ = form_manager_->pending_credentials().origin; | 103 origin_ = form_manager_->pending_credentials().origin; |
90 state_ = password_manager::ui::CONFIRMATION_STATE; | 104 state_ = password_manager::ui::CONFIRMATION_STATE; |
91 UpdateBubbleAndIconVisibility(); | 105 UpdateBubbleAndIconVisibility(); |
92 } | 106 } |
93 | 107 |
94 void ManagePasswordsUIController::OnPasswordAutofilled( | 108 void ManagePasswordsUIController::OnPasswordAutofilled( |
95 const PasswordFormMap& password_form_map) { | 109 const PasswordFormMap& password_form_map) { |
96 password_form_map_ = ConstifyMap(password_form_map); | 110 DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_); |
97 origin_ = password_form_map_.begin()->second->origin; | 111 origin_ = password_form_map_.begin()->second->origin; |
98 state_ = password_manager::ui::MANAGE_STATE; | 112 state_ = password_manager::ui::MANAGE_STATE; |
99 UpdateBubbleAndIconVisibility(); | 113 UpdateBubbleAndIconVisibility(); |
100 } | 114 } |
101 | 115 |
102 void ManagePasswordsUIController::OnBlacklistBlockedAutofill( | 116 void ManagePasswordsUIController::OnBlacklistBlockedAutofill( |
103 const PasswordFormMap& password_form_map) { | 117 const PasswordFormMap& password_form_map) { |
104 password_form_map_ = ConstifyMap(password_form_map); | 118 DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_); |
105 origin_ = password_form_map_.begin()->second->origin; | 119 origin_ = password_form_map_.begin()->second->origin; |
106 state_ = password_manager::ui::BLACKLIST_STATE; | 120 state_ = password_manager::ui::BLACKLIST_STATE; |
107 UpdateBubbleAndIconVisibility(); | 121 UpdateBubbleAndIconVisibility(); |
108 } | 122 } |
109 | 123 |
110 void ManagePasswordsUIController::WebContentsDestroyed() { | 124 void ManagePasswordsUIController::WebContentsDestroyed() { |
111 password_manager::PasswordStore* password_store = | 125 password_manager::PasswordStore* password_store = |
112 GetPasswordStore(web_contents()); | 126 GetPasswordStore(web_contents()); |
113 if (password_store) | 127 if (password_store) |
114 password_store->RemoveObserver(this); | 128 password_store->RemoveObserver(this); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 return; | 271 return; |
258 CommandUpdater* updater = browser->command_controller()->command_updater(); | 272 CommandUpdater* updater = browser->command_controller()->command_updater(); |
259 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE); | 273 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE); |
260 #endif | 274 #endif |
261 } | 275 } |
262 | 276 |
263 bool ManagePasswordsUIController::PasswordPendingUserDecision() const { | 277 bool ManagePasswordsUIController::PasswordPendingUserDecision() const { |
264 return state_ == password_manager::ui::PENDING_PASSWORD_STATE || | 278 return state_ == password_manager::ui::PENDING_PASSWORD_STATE || |
265 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE; | 279 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE; |
266 } | 280 } |
OLD | NEW |