| Index: components/password_manager/core/browser/password_store_default.cc
|
| diff --git a/components/password_manager/core/browser/password_store_default.cc b/components/password_manager/core/browser/password_store_default.cc
|
| index 4799dde6a6cea24bde0b960f16900aa273abcd56..9520308888078c8bd8f8384c34a0816b81f79abf 100644
|
| --- a/components/password_manager/core/browser/password_store_default.cc
|
| +++ b/components/password_manager/core/browser/password_store_default.cc
|
| @@ -18,17 +18,33 @@ namespace password_manager {
|
| PasswordStoreDefault::PasswordStoreDefault(
|
| scoped_refptr<base::SingleThreadTaskRunner> main_thread_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> db_thread_runner,
|
| - LoginDatabase* login_db)
|
| - : PasswordStore(main_thread_runner, db_thread_runner), login_db_(login_db) {
|
| - DCHECK(login_db);
|
| + const base::FilePath& login_db_file_path)
|
| + : PasswordStore(main_thread_runner, db_thread_runner),
|
| + login_db_file_path_(login_db_file_path) {
|
| }
|
|
|
| PasswordStoreDefault::~PasswordStoreDefault() {
|
| }
|
|
|
| +bool PasswordStoreDefault::Init(
|
| + const syncer::SyncableService::StartSyncFlare& flare) {
|
| + ScheduleTask(base::Bind(&PasswordStoreDefault::InitOnDBThread, this));
|
| + return PasswordStore::Init(flare);
|
| +}
|
| +
|
| +void PasswordStoreDefault::InitOnDBThread() {
|
| + login_db_.reset(new LoginDatabase());
|
| + if (!login_db_->Init(login_db_file_path_)) {
|
| + login_db_.reset();
|
| + LOG(ERROR) << "Could not initialize login database.";
|
| + }
|
| +}
|
| +
|
| void PasswordStoreDefault::ReportMetricsImpl(
|
| const std::string& sync_username,
|
| bool custom_passphrase_sync_enabled) {
|
| + if (!login_db_)
|
| + return;
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| login_db_->ReportMetrics(sync_username, custom_passphrase_sync_enabled);
|
| }
|
| @@ -36,12 +52,16 @@ void PasswordStoreDefault::ReportMetricsImpl(
|
| PasswordStoreChangeList PasswordStoreDefault::AddLoginImpl(
|
| const PasswordForm& form) {
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| + if (!login_db_)
|
| + return PasswordStoreChangeList();
|
| return login_db_->AddLogin(form);
|
| }
|
|
|
| PasswordStoreChangeList PasswordStoreDefault::UpdateLoginImpl(
|
| const PasswordForm& form) {
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| + if (!login_db_)
|
| + return PasswordStoreChangeList();
|
| return login_db_->UpdateLogin(form);
|
| }
|
|
|
| @@ -49,7 +69,7 @@ PasswordStoreChangeList PasswordStoreDefault::RemoveLoginImpl(
|
| const PasswordForm& form) {
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| PasswordStoreChangeList changes;
|
| - if (login_db_->RemoveLogin(form))
|
| + if (login_db_ && login_db_->RemoveLogin(form))
|
| changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form));
|
| return changes;
|
| }
|
| @@ -59,7 +79,8 @@ PasswordStoreChangeList PasswordStoreDefault::RemoveLoginsCreatedBetweenImpl(
|
| base::Time delete_end) {
|
| std::vector<PasswordForm*> forms;
|
| PasswordStoreChangeList changes;
|
| - if (login_db_->GetLoginsCreatedBetween(delete_begin, delete_end, &forms)) {
|
| + if (login_db_ &&
|
| + login_db_->GetLoginsCreatedBetween(delete_begin, delete_end, &forms)) {
|
| if (login_db_->RemoveLoginsCreatedBetween(delete_begin, delete_end)) {
|
| for (std::vector<PasswordForm*>::const_iterator it = forms.begin();
|
| it != forms.end(); ++it) {
|
| @@ -78,7 +99,8 @@ PasswordStoreChangeList PasswordStoreDefault::RemoveLoginsSyncedBetweenImpl(
|
| base::Time delete_end) {
|
| std::vector<PasswordForm*> forms;
|
| PasswordStoreChangeList changes;
|
| - if (login_db_->GetLoginsSyncedBetween(delete_begin, delete_end, &forms)) {
|
| + if (login_db_ &&
|
| + login_db_->GetLoginsSyncedBetween(delete_begin, delete_end, &forms)) {
|
| if (login_db_->RemoveLoginsSyncedBetween(delete_begin, delete_end)) {
|
| for (std::vector<PasswordForm*>::const_iterator it = forms.begin();
|
| it != forms.end();
|
| @@ -98,7 +120,8 @@ void PasswordStoreDefault::GetLoginsImpl(
|
| AuthorizationPromptPolicy prompt_policy,
|
| const ConsumerCallbackRunner& callback_runner) {
|
| std::vector<PasswordForm*> matched_forms;
|
| - login_db_->GetLogins(form, &matched_forms);
|
| + if (login_db_)
|
| + login_db_->GetLogins(form, &matched_forms);
|
| callback_runner.Run(matched_forms);
|
| }
|
|
|
| @@ -117,13 +140,13 @@ void PasswordStoreDefault::GetBlacklistLoginsImpl(
|
| bool PasswordStoreDefault::FillAutofillableLogins(
|
| std::vector<PasswordForm*>* forms) {
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| - return login_db_->GetAutofillableLogins(forms);
|
| + return login_db_ && login_db_->GetAutofillableLogins(forms);
|
| }
|
|
|
| bool PasswordStoreDefault::FillBlacklistLogins(
|
| std::vector<PasswordForm*>* forms) {
|
| DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| - return login_db_->GetBlacklistLogins(forms);
|
| + return login_db_ && login_db_->GetBlacklistLogins(forms);
|
| }
|
|
|
| } // namespace password_manager
|
|
|