| Index: chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
|
| diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
|
| index 890bf6798b5fe0c909098457484fba7b5b89651d..899edd95ce88a711383c0d4ac857e00b7a926b5d 100644
|
| --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
|
| +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
|
| @@ -37,7 +37,21 @@ autofill::ConstPasswordFormMap ConstifyMap(
|
| return ret;
|
| }
|
|
|
| -} // namespace
|
| +// Performs a deep copy of the PasswordForm pointers in |map|. The resulting map
|
| +// is returned via |ret|. |deleter| is populated with these new objects.
|
| +void DeepCopyMap(const autofill::PasswordFormMap& map,
|
| + autofill::ConstPasswordFormMap* ret,
|
| + ScopedVector<autofill::PasswordForm>* deleter) {
|
| + ConstifyMap(map).swap(*ret);
|
| + deleter->clear();
|
| + for (autofill::ConstPasswordFormMap::iterator i = ret->begin();
|
| + i != ret->end(); ++i) {
|
| + deleter->push_back(new autofill::PasswordForm(*i->second));
|
| + i->second = deleter->back();
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
|
|
| DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagePasswordsUIController);
|
|
|
| @@ -93,7 +107,7 @@ void ManagePasswordsUIController::OnAutomaticPasswordSave(
|
|
|
| void ManagePasswordsUIController::OnPasswordAutofilled(
|
| const PasswordFormMap& password_form_map) {
|
| - password_form_map_ = ConstifyMap(password_form_map);
|
| + DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_);
|
| origin_ = password_form_map_.begin()->second->origin;
|
| state_ = password_manager::ui::MANAGE_STATE;
|
| UpdateBubbleAndIconVisibility();
|
| @@ -101,7 +115,7 @@ void ManagePasswordsUIController::OnPasswordAutofilled(
|
|
|
| void ManagePasswordsUIController::OnBlacklistBlockedAutofill(
|
| const PasswordFormMap& password_form_map) {
|
| - password_form_map_ = ConstifyMap(password_form_map);
|
| + DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_);
|
| origin_ = password_form_map_.begin()->second->origin;
|
| state_ = password_manager::ui::BLACKLIST_STATE;
|
| UpdateBubbleAndIconVisibility();
|
|
|