Chromium Code Reviews| Index: components/password_manager/core/browser/password_store.cc |
| diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc |
| index b5a8a13605cf2539709359b5c94c38420fd84480..08caa79f2c5be86453ebd860d4582ce88597580b 100644 |
| --- a/components/password_manager/core/browser/password_store.cc |
| +++ b/components/password_manager/core/browser/password_store.cc |
| @@ -59,6 +59,23 @@ void PasswordStore::GetLoginsRequest::NotifyWithSiteStatistics( |
| consumer_weak_, base::Passed(&stats))); |
| } |
| +PasswordStore::CheckReuseRequest::CheckReuseRequest( |
| + PasswordReuseDetectorConsumer* consumer) |
| + : consumer_(consumer) { |
| + origin_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
|
vabr (Chromium)
2016/12/20 18:11:44
Why not add
, origin_task_runner_(base::ThreadTask
dvadym
2016/12/21 12:15:35
Done.
|
| +} |
|
vabr (Chromium)
2016/12/20 18:11:44
DCHECK(consumer) ?
dvadym
2016/12/21 12:15:35
Done.
|
| + |
| +PasswordStore::CheckReuseRequest::~CheckReuseRequest() {} |
| + |
| +void PasswordStore::CheckReuseRequest::OnReuseFound( |
| + const base::string16& password, |
| + const std::string& saved_domain) { |
| + origin_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&PasswordReuseDetectorConsumer::OnReuseFound, |
| + base::Unretained(consumer_), password, saved_domain)); |
|
vabr (Chromium)
2016/12/20 18:11:44
PasswordStoreConsumer is called with a weak pointe
dvadym
2016/12/21 12:15:35
Thanks, that's a very good point. I've done with w
|
| +} |
| + |
| PasswordStore::FormDigest::FormDigest(autofill::PasswordForm::Scheme new_scheme, |
| const std::string& new_signon_realm, |
| const GURL& new_origin) |
| @@ -90,12 +107,13 @@ PasswordStore::PasswordStore( |
| : main_thread_runner_(main_thread_runner), |
| db_thread_runner_(db_thread_runner), |
| observers_(new base::ObserverListThreadSafe<Observer>()), |
| + reuse_detector_(new PasswordReuseDetector), |
| is_propagating_password_changes_to_web_credentials_enabled_(false), |
| - shutdown_called_(false) { |
| -} |
| + shutdown_called_(false) {} |
| bool PasswordStore::Init(const syncer::SyncableService::StartSyncFlare& flare) { |
| ScheduleTask(base::Bind(&PasswordStore::InitSyncableService, this, flare)); |
| + GetAutofillableLogins(reuse_detector_.get()); |
| return true; |
| } |
| @@ -285,6 +303,15 @@ PasswordStore::GetPasswordSyncableService() { |
| return syncable_service_->AsWeakPtr(); |
| } |
| +void PasswordStore::CheckReuse(const base::string16& input, |
| + const std::string& domain, |
| + PasswordReuseDetectorConsumer* consumer) { |
| + std::unique_ptr<CheckReuseRequest> check_reuse_request( |
|
vabr (Chromium)
2016/12/20 18:11:44
nit: auto check_reuse_request = base::MakeUnique<C
dvadym
2016/12/21 12:15:35
Thanks
|
| + new CheckReuseRequest(consumer)); |
| + ScheduleTask(base::Bind(&PasswordStore::CheckReuseImpl, this, |
| + base::Passed(&check_reuse_request), input, domain)); |
| +} |
| + |
| PasswordStore::~PasswordStore() { |
| DCHECK(shutdown_called_); |
| } |
| @@ -349,9 +376,16 @@ void PasswordStore::NotifyLoginsChanged( |
| observers_->Notify(FROM_HERE, &Observer::OnLoginsChanged, changes); |
| if (syncable_service_) |
| syncable_service_->ActOnPasswordStoreChanges(changes); |
| + reuse_detector_->OnLoginsChanged(changes); |
| } |
| } |
| +void PasswordStore::CheckReuseImpl(std::unique_ptr<CheckReuseRequest> request, |
| + const base::string16& input, |
| + const std::string& domain) { |
| + reuse_detector_->CheckReuse(input, domain, request.get()); |
| +} |
| + |
| void PasswordStore::Schedule( |
| void (PasswordStore::*func)(std::unique_ptr<GetLoginsRequest>), |
| PasswordStoreConsumer* consumer) { |