Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: components/password_manager/core/browser/password_store.h

Issue 2585253002: Integration of PasswordReuseDetector into PasswordStore. (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/password_manager/core/browser/password_store.h
diff --git a/components/password_manager/core/browser/password_store.h b/components/password_manager/core/browser/password_store.h
index 28a7046526cb8a086dae46c17f6c107322424379..4c243578cc9737ab113d010949ec9ea09df328eb 100644
--- a/components/password_manager/core/browser/password_store.h
+++ b/components/password_manager/core/browser/password_store.h
@@ -17,6 +17,8 @@
#include "base/single_thread_task_runner.h"
#include "base/time/time.h"
#include "components/keyed_service/core/refcounted_keyed_service.h"
+#include "components/password_manager/core/browser/password_reuse_detector.h"
+#include "components/password_manager/core/browser/password_reuse_detector_consumer.h"
#include "components/password_manager/core/browser/password_store_change.h"
#include "components/password_manager/core/browser/password_store_sync.h"
#include "components/sync/model/syncable_service.h"
@@ -221,6 +223,15 @@ class PasswordStore : protected PasswordStoreSync,
base::WeakPtr<syncer::SyncableService> GetPasswordSyncableService();
+ // Checks that some suffix of |input| equals to a password saved on another
+ // registry controlled domain than |domain|.
+ // If such suffix is found, |consumer|->OnReuseFound() is called on the same
+ // thread on which this method is called.
+ // |consumer| must not be null.
+ void CheckReuse(const base::string16& input,
+ const std::string& domain,
+ PasswordReuseDetectorConsumer* consumer);
+
protected:
friend class base::RefCountedThreadSafe<PasswordStore>;
@@ -256,6 +267,26 @@ class PasswordStore : protected PasswordStoreSync,
DISALLOW_COPY_AND_ASSIGN(GetLoginsRequest);
};
+ // Represents a single CheckReuse() request. Implements functionality to
+ // listen to reuse events and propagate them to |consumer| on the thread on
+ // which CheckReuseRequest is created.
+ class CheckReuseRequest : public PasswordReuseDetectorConsumer {
+ public:
+ // |consumer| must not be null.
+ explicit CheckReuseRequest(PasswordReuseDetectorConsumer* consumer);
+ ~CheckReuseRequest() override;
+
+ // PasswordReuseDetectorConsumer
+ void OnReuseFound(const base::string16& password,
+ const std::string& saved_domain) override;
+
+ private:
+ const scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner_;
+ const base::WeakPtr<PasswordReuseDetectorConsumer> consumer_weak_;
+
+ DISALLOW_COPY_AND_ASSIGN(CheckReuseRequest);
+ };
+
~PasswordStore() override;
// Get the TaskRunner to use for PasswordStore background tasks.
@@ -348,6 +379,11 @@ class PasswordStore : protected PasswordStoreSync,
// may have been changed.
void NotifyLoginsChanged(const PasswordStoreChangeList& changes) override;
+ // Synchronous implementation of CheckReuse().
+ void CheckReuseImpl(std::unique_ptr<CheckReuseRequest> request,
+ const base::string16& input,
+ const std::string& domain);
+
// TaskRunner for tasks that run on the main thread (usually the UI thread).
scoped_refptr<base::SingleThreadTaskRunner> main_thread_runner_;
@@ -482,18 +518,20 @@ class PasswordStore : protected PasswordStoreSync,
const autofill::PasswordForm& updated_android_form,
const std::vector<std::string>& affiliated_web_realms);
- // Creates PasswordSyncableService instance on the background thread.
- void InitSyncableService(
+ // Creates PasswordSyncableService and PasswordReuseDetector instances on the
+ // background thread.
+ void InitOnBackgroundThread(
const syncer::SyncableService::StartSyncFlare& flare);
- // Deletes PasswordSyncableService instance on the background thread.
- void DestroySyncableService();
+ // Deletes objest that should be destroyed on the background thread.
+ void DestroyOnBackgroundThread();
// The observers.
scoped_refptr<base::ObserverListThreadSafe<Observer>> observers_;
std::unique_ptr<PasswordSyncableService> syncable_service_;
std::unique_ptr<AffiliatedMatchHelper> affiliated_match_helper_;
+ std::unique_ptr<PasswordReuseDetector> reuse_detector_;
bool is_propagating_password_changes_to_web_credentials_enabled_;
bool shutdown_called_;

Powered by Google App Engine
This is Rietveld 408576698