OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/password_manager/password_store_default.h" | 5 #include "chrome/browser/password_manager/password_store_default.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
11 #include "chrome/browser/password_manager/password_store_change.h" | 11 #include "chrome/browser/password_manager/password_store_change.h" |
12 #include "chrome/browser/prefs/pref_service.h" | 12 #include "chrome/browser/prefs/pref_service.h" |
13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/webdata/web_data_service.h" | 14 #include "chrome/browser/webdata/web_data_service.h" |
15 #include "chrome/common/chrome_constants.h" | 15 #include "chrome/common/chrome_constants.h" |
16 #include "chrome/common/chrome_notification_types.h" | 16 #include "chrome/common/chrome_notification_types.h" |
17 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
18 #include "content/browser/browser_thread.h" | 18 #include "content/browser/browser_thread.h" |
19 #include "content/common/notification_service.h" | 19 #include "content/public/browser/notification_service.h" |
20 | 20 |
21 using webkit_glue::PasswordForm; | 21 using webkit_glue::PasswordForm; |
22 | 22 |
23 // MigrateHelper handles migration from WebDB to PasswordStore. It runs | 23 // MigrateHelper handles migration from WebDB to PasswordStore. It runs |
24 // entirely on the UI thread and is owned by PasswordStoreDefault. | 24 // entirely on the UI thread and is owned by PasswordStoreDefault. |
25 class PasswordStoreDefault::MigrateHelper : public WebDataServiceConsumer { | 25 class PasswordStoreDefault::MigrateHelper : public WebDataServiceConsumer { |
26 public: | 26 public: |
27 MigrateHelper(Profile* profile, | 27 MigrateHelper(Profile* profile, |
28 WebDataService* web_data_service, | 28 WebDataService* web_data_service, |
29 PasswordStore* password_store) | 29 PasswordStore* password_store) |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 | 123 |
124 void PasswordStoreDefault::ReportMetricsImpl() { | 124 void PasswordStoreDefault::ReportMetricsImpl() { |
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
126 login_db_->ReportMetrics(); | 126 login_db_->ReportMetrics(); |
127 } | 127 } |
128 | 128 |
129 void PasswordStoreDefault::AddLoginImpl(const PasswordForm& form) { | 129 void PasswordStoreDefault::AddLoginImpl(const PasswordForm& form) { |
130 if (login_db_->AddLogin(form)) { | 130 if (login_db_->AddLogin(form)) { |
131 PasswordStoreChangeList changes; | 131 PasswordStoreChangeList changes; |
132 changes.push_back(PasswordStoreChange(PasswordStoreChange::ADD, form)); | 132 changes.push_back(PasswordStoreChange(PasswordStoreChange::ADD, form)); |
133 NotificationService::current()->Notify( | 133 content::NotificationService::current()->Notify( |
134 chrome::NOTIFICATION_LOGINS_CHANGED, | 134 chrome::NOTIFICATION_LOGINS_CHANGED, |
135 content::Source<PasswordStore>(this), | 135 content::Source<PasswordStore>(this), |
136 content::Details<PasswordStoreChangeList>(&changes)); | 136 content::Details<PasswordStoreChangeList>(&changes)); |
137 } | 137 } |
138 } | 138 } |
139 | 139 |
140 void PasswordStoreDefault::UpdateLoginImpl(const PasswordForm& form) { | 140 void PasswordStoreDefault::UpdateLoginImpl(const PasswordForm& form) { |
141 if (login_db_->UpdateLogin(form, NULL)) { | 141 if (login_db_->UpdateLogin(form, NULL)) { |
142 PasswordStoreChangeList changes; | 142 PasswordStoreChangeList changes; |
143 changes.push_back(PasswordStoreChange(PasswordStoreChange::UPDATE, form)); | 143 changes.push_back(PasswordStoreChange(PasswordStoreChange::UPDATE, form)); |
144 NotificationService::current()->Notify( | 144 content::NotificationService::current()->Notify( |
145 chrome::NOTIFICATION_LOGINS_CHANGED, | 145 chrome::NOTIFICATION_LOGINS_CHANGED, |
146 content::Source<PasswordStore>(this), | 146 content::Source<PasswordStore>(this), |
147 content::Details<PasswordStoreChangeList>(&changes)); | 147 content::Details<PasswordStoreChangeList>(&changes)); |
148 } | 148 } |
149 } | 149 } |
150 | 150 |
151 void PasswordStoreDefault::RemoveLoginImpl(const PasswordForm& form) { | 151 void PasswordStoreDefault::RemoveLoginImpl(const PasswordForm& form) { |
152 if (login_db_->RemoveLogin(form)) { | 152 if (login_db_->RemoveLogin(form)) { |
153 PasswordStoreChangeList changes; | 153 PasswordStoreChangeList changes; |
154 changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form)); | 154 changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form)); |
155 NotificationService::current()->Notify( | 155 content::NotificationService::current()->Notify( |
156 chrome::NOTIFICATION_LOGINS_CHANGED, | 156 chrome::NOTIFICATION_LOGINS_CHANGED, |
157 content::Source<PasswordStore>(this), | 157 content::Source<PasswordStore>(this), |
158 content::Details<PasswordStoreChangeList>(&changes)); | 158 content::Details<PasswordStoreChangeList>(&changes)); |
159 } | 159 } |
160 } | 160 } |
161 | 161 |
162 void PasswordStoreDefault::RemoveLoginsCreatedBetweenImpl( | 162 void PasswordStoreDefault::RemoveLoginsCreatedBetweenImpl( |
163 const base::Time& delete_begin, const base::Time& delete_end) { | 163 const base::Time& delete_begin, const base::Time& delete_end) { |
164 std::vector<PasswordForm*> forms; | 164 std::vector<PasswordForm*> forms; |
165 if (login_db_->GetLoginsCreatedBetween(delete_begin, delete_end, &forms)) { | 165 if (login_db_->GetLoginsCreatedBetween(delete_begin, delete_end, &forms)) { |
166 if (login_db_->RemoveLoginsCreatedBetween(delete_begin, delete_end)) { | 166 if (login_db_->RemoveLoginsCreatedBetween(delete_begin, delete_end)) { |
167 PasswordStoreChangeList changes; | 167 PasswordStoreChangeList changes; |
168 for (std::vector<PasswordForm*>::const_iterator it = forms.begin(); | 168 for (std::vector<PasswordForm*>::const_iterator it = forms.begin(); |
169 it != forms.end(); ++it) { | 169 it != forms.end(); ++it) { |
170 changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, | 170 changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, |
171 **it)); | 171 **it)); |
172 } | 172 } |
173 NotificationService::current()->Notify( | 173 content::NotificationService::current()->Notify( |
174 chrome::NOTIFICATION_LOGINS_CHANGED, | 174 chrome::NOTIFICATION_LOGINS_CHANGED, |
175 content::Source<PasswordStore>(this), | 175 content::Source<PasswordStore>(this), |
176 content::Details<PasswordStoreChangeList>(&changes)); | 176 content::Details<PasswordStoreChangeList>(&changes)); |
177 } | 177 } |
178 } | 178 } |
179 STLDeleteElements(&forms); | 179 STLDeleteElements(&forms); |
180 } | 180 } |
181 | 181 |
182 void PasswordStoreDefault::GetLoginsImpl( | 182 void PasswordStoreDefault::GetLoginsImpl( |
183 GetLoginsRequest* request, const webkit_glue::PasswordForm& form) { | 183 GetLoginsRequest* request, const webkit_glue::PasswordForm& form) { |
(...skipping 26 matching lines...) Expand all Loading... |
210 } | 210 } |
211 | 211 |
212 void PasswordStoreDefault::MigrateIfNecessary() { | 212 void PasswordStoreDefault::MigrateIfNecessary() { |
213 PrefService* prefs = profile_->GetPrefs(); | 213 PrefService* prefs = profile_->GetPrefs(); |
214 if (prefs->FindPreference(prefs::kLoginDatabaseMigrated)) | 214 if (prefs->FindPreference(prefs::kLoginDatabaseMigrated)) |
215 return; | 215 return; |
216 DCHECK(!migrate_helper_.get()); | 216 DCHECK(!migrate_helper_.get()); |
217 migrate_helper_.reset(new MigrateHelper(profile_, web_data_service_, this)); | 217 migrate_helper_.reset(new MigrateHelper(profile_, web_data_service_, this)); |
218 migrate_helper_->Init(); | 218 migrate_helper_->Init(); |
219 } | 219 } |
OLD | NEW |