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

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

Issue 441643007: ManagePasswordsUIController should make a deep copy of values which it doesn't own. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 19 matching lines...) Expand all
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 void DeepCopyMap(const autofill::PasswordFormMap& map,
vabr (Chromium) 2014/08/04 15:36:56 Please comment on the use and expectations. Things
vasilii 2014/08/04 16:20:59 Done.
41 autofill::ConstPasswordFormMap* ret,
42 ScopedVector<autofill::PasswordForm>* deleter) {
43 ConstifyMap(map).swap(*ret);
44 deleter->clear();
45 for (autofill::ConstPasswordFormMap::iterator i = ret->begin();
46 i != ret->end(); ++i) {
47 autofill::PasswordForm* form(new autofill::PasswordForm(*i->second));
vabr (Chromium) 2014/08/04 15:36:56 Please don't let naked pointers contain new-alloca
vasilii 2014/08/04 16:20:59 Done.
48 deleter->push_back(form);
49 i->second = form;
50 }
51 }
52
53 } // namespace
41 54
42 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsUIController); 55 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsUIController);
43 56
44 ManagePasswordsUIController::ManagePasswordsUIController( 57 ManagePasswordsUIController::ManagePasswordsUIController(
45 content::WebContents* web_contents) 58 content::WebContents* web_contents)
46 : content::WebContentsObserver(web_contents), 59 : content::WebContentsObserver(web_contents),
47 state_(password_manager::ui::INACTIVE_STATE) { 60 state_(password_manager::ui::INACTIVE_STATE) {
48 password_manager::PasswordStore* password_store = 61 password_manager::PasswordStore* password_store =
49 GetPasswordStore(web_contents); 62 GetPasswordStore(web_contents);
50 if (password_store) 63 if (password_store)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 password_form_map_ = ConstifyMap(form_manager_->best_matches()); 99 password_form_map_ = ConstifyMap(form_manager_->best_matches());
87 password_form_map_[form_manager_->associated_username()] = 100 password_form_map_[form_manager_->associated_username()] =
88 &form_manager_->pending_credentials(); 101 &form_manager_->pending_credentials();
89 origin_ = form_manager_->pending_credentials().origin; 102 origin_ = form_manager_->pending_credentials().origin;
90 state_ = password_manager::ui::CONFIRMATION_STATE; 103 state_ = password_manager::ui::CONFIRMATION_STATE;
91 UpdateBubbleAndIconVisibility(); 104 UpdateBubbleAndIconVisibility();
92 } 105 }
93 106
94 void ManagePasswordsUIController::OnPasswordAutofilled( 107 void ManagePasswordsUIController::OnPasswordAutofilled(
95 const PasswordFormMap& password_form_map) { 108 const PasswordFormMap& password_form_map) {
96 password_form_map_ = ConstifyMap(password_form_map); 109 DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_);
97 origin_ = password_form_map_.begin()->second->origin; 110 origin_ = password_form_map_.begin()->second->origin;
98 state_ = password_manager::ui::MANAGE_STATE; 111 state_ = password_manager::ui::MANAGE_STATE;
99 UpdateBubbleAndIconVisibility(); 112 UpdateBubbleAndIconVisibility();
100 } 113 }
101 114
102 void ManagePasswordsUIController::OnBlacklistBlockedAutofill( 115 void ManagePasswordsUIController::OnBlacklistBlockedAutofill(
103 const PasswordFormMap& password_form_map) { 116 const PasswordFormMap& password_form_map) {
104 password_form_map_ = ConstifyMap(password_form_map); 117 DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_);
105 origin_ = password_form_map_.begin()->second->origin; 118 origin_ = password_form_map_.begin()->second->origin;
106 state_ = password_manager::ui::BLACKLIST_STATE; 119 state_ = password_manager::ui::BLACKLIST_STATE;
107 UpdateBubbleAndIconVisibility(); 120 UpdateBubbleAndIconVisibility();
108 } 121 }
109 122
110 void ManagePasswordsUIController::WebContentsDestroyed() { 123 void ManagePasswordsUIController::WebContentsDestroyed() {
111 password_manager::PasswordStore* password_store = 124 password_manager::PasswordStore* password_store =
112 GetPasswordStore(web_contents()); 125 GetPasswordStore(web_contents());
113 if (password_store) 126 if (password_store)
114 password_store->RemoveObserver(this); 127 password_store->RemoveObserver(this);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 return; 270 return;
258 CommandUpdater* updater = browser->command_controller()->command_updater(); 271 CommandUpdater* updater = browser->command_controller()->command_updater();
259 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE); 272 updater->ExecuteCommand(IDC_MANAGE_PASSWORDS_FOR_PAGE);
260 #endif 273 #endif
261 } 274 }
262 275
263 bool ManagePasswordsUIController::PasswordPendingUserDecision() const { 276 bool ManagePasswordsUIController::PasswordPendingUserDecision() const {
264 return state_ == password_manager::ui::PENDING_PASSWORD_STATE || 277 return state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
265 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE; 278 state_ == password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE;
266 } 279 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698