| Index: chrome/browser/password_manager/password_store_mac.cc
|
| diff --git a/chrome/browser/password_manager/password_store_mac.cc b/chrome/browser/password_manager/password_store_mac.cc
|
| index 8b0d7be69c427078499d12e4b9d9a885af270763..13ceae02d4991cf0dd38976bee75bc2e15dc9fb7 100644
|
| --- a/chrome/browser/password_manager/password_store_mac.cc
|
| +++ b/chrome/browser/password_manager/password_store_mac.cc
|
| @@ -918,53 +918,27 @@ PasswordStoreMac::PasswordStoreMac(
|
| scoped_refptr<base::SingleThreadTaskRunner> main_thread_runner,
|
| scoped_refptr<base::SingleThreadTaskRunner> db_thread_runner,
|
| scoped_ptr<AppleKeychain> keychain,
|
| - scoped_ptr<password_manager::LoginDatabase> login_db)
|
| + password_manager::LoginDatabase* login_db)
|
| : password_manager::PasswordStore(main_thread_runner, db_thread_runner),
|
| keychain_(keychain.Pass()),
|
| - login_metadata_db_(login_db.Pass()) {
|
| + login_metadata_db_(login_db) {
|
| DCHECK(keychain_.get());
|
| - DCHECK(login_metadata_db_.get());
|
| login_metadata_db_->set_clear_password_values(true);
|
| }
|
|
|
| PasswordStoreMac::~PasswordStoreMac() {}
|
|
|
| -bool PasswordStoreMac::Init(
|
| - const syncer::SyncableService::StartSyncFlare& flare) {
|
| +void PasswordStoreMac::InitWithTaskRunner(
|
| + scoped_refptr<base::SingleThreadTaskRunner> background_task_runner) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - thread_.reset(new base::Thread("Chrome_PasswordStore_Thread"));
|
| -
|
| - if (!thread_->Start()) {
|
| - thread_.reset(NULL);
|
| - return false;
|
| - }
|
| -
|
| - ScheduleTask(base::Bind(&PasswordStoreMac::InitOnBackgroundThread, this));
|
| - return password_manager::PasswordStore::Init(flare);
|
| + db_thread_runner_ = background_task_runner;
|
| }
|
|
|
| -void PasswordStoreMac::InitOnBackgroundThread() {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| - DCHECK(login_metadata_db_);
|
| - if (!login_metadata_db_->Init()) {
|
| - login_metadata_db_.reset();
|
| - LOG(ERROR) << "Could not create/open login database.";
|
| - }
|
| -}
|
| -
|
| -void PasswordStoreMac::Shutdown() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - password_manager::PasswordStore::Shutdown();
|
| - thread_->Stop();
|
| -}
|
| -
|
| -// Mac stores passwords in the system keychain, which can block for an
|
| -// arbitrarily long time (most notably, it can block on user confirmation
|
| -// from a dialog). Run tasks on a dedicated thread to avoid blocking the DB
|
| -// thread.
|
| -scoped_refptr<base::SingleThreadTaskRunner>
|
| -PasswordStoreMac::GetBackgroundTaskRunner() {
|
| - return (thread_.get()) ? thread_->task_runner() : NULL;
|
| +bool PasswordStoreMac::Init(
|
| + const syncer::SyncableService::StartSyncFlare& flare) {
|
| + // The class should be used inside PasswordStoreProxyMac only.
|
| + NOTREACHED();
|
| + return true;
|
| }
|
|
|
| void PasswordStoreMac::ReportMetricsImpl(const std::string& sync_username,
|
| @@ -977,7 +951,7 @@ void PasswordStoreMac::ReportMetricsImpl(const std::string& sync_username,
|
|
|
| PasswordStoreChangeList PasswordStoreMac::AddLoginImpl(
|
| const PasswordForm& form) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| if (login_metadata_db_ && AddToKeychainIfNecessary(form))
|
| return login_metadata_db_->AddLogin(form);
|
| return PasswordStoreChangeList();
|
| @@ -985,7 +959,7 @@ PasswordStoreChangeList PasswordStoreMac::AddLoginImpl(
|
|
|
| PasswordStoreChangeList PasswordStoreMac::UpdateLoginImpl(
|
| const PasswordForm& form) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| if (!login_metadata_db_)
|
| return PasswordStoreChangeList();
|
|
|
| @@ -1009,7 +983,7 @@ PasswordStoreChangeList PasswordStoreMac::UpdateLoginImpl(
|
|
|
| PasswordStoreChangeList PasswordStoreMac::RemoveLoginImpl(
|
| const PasswordForm& form) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| PasswordStoreChangeList changes;
|
| if (login_metadata_db_ && login_metadata_db_->RemoveLogin(form)) {
|
| // See if we own a Keychain item associated with this item. We can do an
|
| @@ -1121,25 +1095,9 @@ ScopedVector<autofill::PasswordForm> PasswordStoreMac::FillMatchingLogins(
|
| return matched_forms.Pass();
|
| }
|
|
|
| -void PasswordStoreMac::GetBlacklistLoginsImpl(
|
| - scoped_ptr<PasswordStore::GetLoginsRequest> request) {
|
| - ScopedVector<PasswordForm> obtained_forms;
|
| - if (!FillBlacklistLogins(&obtained_forms))
|
| - obtained_forms.clear();
|
| - request->NotifyConsumerWithResults(obtained_forms.Pass());
|
| -}
|
| -
|
| -void PasswordStoreMac::GetAutofillableLoginsImpl(
|
| - scoped_ptr<PasswordStore::GetLoginsRequest> request) {
|
| - ScopedVector<PasswordForm> obtained_forms;
|
| - if (!FillAutofillableLogins(&obtained_forms))
|
| - obtained_forms.clear();
|
| - request->NotifyConsumerWithResults(obtained_forms.Pass());
|
| -}
|
| -
|
| bool PasswordStoreMac::FillAutofillableLogins(
|
| ScopedVector<PasswordForm>* forms) {
|
| - DCHECK_EQ(thread_->message_loop(), base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| forms->clear();
|
|
|
| ScopedVector<PasswordForm> database_forms;
|
| @@ -1159,26 +1117,26 @@ bool PasswordStoreMac::FillAutofillableLogins(
|
| }
|
|
|
| bool PasswordStoreMac::FillBlacklistLogins(ScopedVector<PasswordForm>* forms) {
|
| - DCHECK_EQ(thread_->message_loop(), base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| return login_metadata_db_ && login_metadata_db_->GetBlacklistLogins(forms);
|
| }
|
|
|
| void PasswordStoreMac::AddSiteStatsImpl(
|
| const password_manager::InteractionsStats& stats) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| if (login_metadata_db_)
|
| login_metadata_db_->stats_table().AddRow(stats);
|
| }
|
|
|
| void PasswordStoreMac::RemoveSiteStatsImpl(const GURL& origin_domain) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| if (login_metadata_db_)
|
| login_metadata_db_->stats_table().RemoveRow(origin_domain);
|
| }
|
|
|
| scoped_ptr<password_manager::InteractionsStats>
|
| PasswordStoreMac::GetSiteStatsImpl(const GURL& origin_domain) {
|
| - DCHECK(thread_->message_loop() == base::MessageLoop::current());
|
| + DCHECK(GetBackgroundTaskRunner()->BelongsToCurrentThread());
|
| return login_metadata_db_
|
| ? login_metadata_db_->stats_table().GetRow(origin_domain)
|
| : scoped_ptr<password_manager::InteractionsStats>();
|
|
|