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

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

Issue 2585253002: Integration of PasswordReuseDetector into PasswordStore. (Closed)
Patch Set: more tests 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..0ba89b1744d7750fdd744849b7dffc432f76905b 100644
--- a/components/password_manager/core/browser/password_store.h
+++ b/components/password_manager/core/browser/password_store.h
@@ -17,6 +17,7 @@
#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_store_change.h"
#include "components/password_manager/core/browser/password_store_sync.h"
#include "components/sync/model/syncable_service.h"
@@ -221,6 +222,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| should not be null.
vabr (Chromium) 2016/12/20 18:11:44 nit: Let's be clear about |consumer|: it must not
dvadym 2016/12/21 12:15:35 Done.
+ void CheckReuse(const base::string16& input,
+ const std::string& domain,
+ PasswordReuseDetectorConsumer* consumer);
+
protected:
friend class base::RefCountedThreadSafe<PasswordStore>;
@@ -256,6 +266,23 @@ 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:
+ explicit CheckReuseRequest(PasswordReuseDetectorConsumer* consumer);
vabr (Chromium) 2016/12/20 18:11:44 nit: Please mention that |consumer| must not be nu
dvadym 2016/12/21 12:15:35 Done.
+ ~CheckReuseRequest() override;
+
+ // PasswordReuseDetectorConsumer
+ void OnReuseFound(const base::string16& password,
+ const std::string& saved_domain) override;
+
+ private:
+ scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner_;
vabr (Chromium) 2016/12/20 18:11:44 const scoped_refptr<base::SingleThreadTaskRunner>
dvadym 2016/12/21 12:15:35 Done.
+ PasswordReuseDetectorConsumer* consumer_;
vabr (Chromium) 2016/12/20 18:11:44 PasswordReuseDetectorConsumer* const consumer_ to
dvadym 2016/12/21 12:15:35 Done.
+ };
vabr (Chromium) 2016/12/20 18:11:44 DISALLOW_COPY_AND_ASSIGN ?
dvadym 2016/12/21 12:15:35 Yeah, thanks
+
~PasswordStore() override;
// Get the TaskRunner to use for PasswordStore background tasks.
@@ -348,6 +375,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_;
@@ -494,6 +526,7 @@ class PasswordStore : protected PasswordStoreSync,
std::unique_ptr<PasswordSyncableService> syncable_service_;
std::unique_ptr<AffiliatedMatchHelper> affiliated_match_helper_;
+ std::unique_ptr<PasswordReuseDetector> reuse_detector_;
vabr (Chromium) 2016/12/20 18:11:44 Why is this a unique_ptr? Could it be just aggrega
dvadym 2016/12/21 12:15:35 Sure, it could be. Done
dvadym 2016/12/21 14:03:20 I've returned back to unique_ptr. It should be des
bool is_propagating_password_changes_to_web_credentials_enabled_;
bool shutdown_called_;

Powered by Google App Engine
This is Rietveld 408576698