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