| 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 627472d2dbb075d869c053deae503f956fb9b052..abebed9a7f331a07df3f092b0de8e399e26a666c 100644
|
| --- a/components/password_manager/core/browser/password_store_default.cc
|
| +++ b/components/password_manager/core/browser/password_store_default.cc
|
| @@ -18,17 +18,34 @@ 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);
|
| + scoped_ptr<LoginDatabase> login_db)
|
| + : PasswordStore(main_thread_runner, db_thread_runner),
|
| + login_db_(login_db.Pass()) {
|
| }
|
|
|
| PasswordStoreDefault::~PasswordStoreDefault() {
|
| }
|
|
|
| +bool PasswordStoreDefault::Init(
|
| + const syncer::SyncableService::StartSyncFlare& flare) {
|
| + ScheduleTask(base::Bind(&PasswordStoreDefault::InitOnDBThread, this));
|
| + return PasswordStore::Init(flare);
|
| +}
|
| +
|
| +void PasswordStoreDefault::InitOnDBThread() {
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| + DCHECK(login_db_);
|
| + if (!login_db_->Init()) {
|
| + login_db_.reset();
|
| + LOG(ERROR) << "Could not create/open 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 +53,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 +70,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 +80,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 +100,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(); ++it) {
|
| @@ -97,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);
|
| }
|
|
|
| @@ -115,13 +139,13 @@ void PasswordStoreDefault::GetBlacklistLoginsImpl(GetLoginsRequest* request) {
|
| 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
|
|
|