| 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 fb7d3bb25819c1b3939f1e46d83efc67543dc1e9..86664b463e5ad353caebffd64d87f2e912ec2cbf 100644
|
| --- a/components/password_manager/core/browser/password_store.h
|
| +++ b/components/password_manager/core/browser/password_store.h
|
| @@ -66,46 +66,6 @@ class PasswordStore : protected PasswordStoreSync,
|
| // passwords, which requires prompting the user for permission.
|
| enum AuthorizationPromptPolicy { ALLOW_PROMPT, DISALLOW_PROMPT };
|
|
|
| - // PasswordForm vector elements are meant to be owned by the
|
| - // PasswordStoreConsumer. However, if the request is canceled after the
|
| - // allocation, then the request must take care of the deletion.
|
| - class GetLoginsRequest {
|
| - public:
|
| - explicit GetLoginsRequest(PasswordStoreConsumer* consumer);
|
| - virtual ~GetLoginsRequest();
|
| -
|
| - void set_ignore_logins_cutoff(base::Time cutoff) {
|
| - ignore_logins_cutoff_ = cutoff;
|
| - }
|
| -
|
| - // Removes any logins in the result list that were saved before the cutoff.
|
| - void ApplyIgnoreLoginsCutoff();
|
| -
|
| - // Forward the result to the consumer on the original message loop.
|
| - void ForwardResult();
|
| -
|
| - std::vector<autofill::PasswordForm*>* result() const {
|
| - return result_.get();
|
| - }
|
| -
|
| - private:
|
| - // See GetLogins(). Logins older than this will be removed from the reply.
|
| - base::Time ignore_logins_cutoff_;
|
| -
|
| - base::WeakPtr<PasswordStoreConsumer> consumer_weak_;
|
| -
|
| - // The result of the request. It is filled in on the PasswordStore's task
|
| - // thread and consumed on the UI thread.
|
| - // TODO(dubroy): Remove this, and instead pass the vector directly to the
|
| - // backend methods.
|
| - scoped_ptr<std::vector<autofill::PasswordForm*>> result_;
|
| -
|
| - base::ThreadChecker thread_checker_;
|
| - scoped_refptr<base::MessageLoopProxy> origin_loop_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GetLoginsRequest);
|
| - };
|
| -
|
| // An interface used to notify clients (observers) of this object that data in
|
| // the password store has changed. Register the observer via
|
| // PasswordStore::AddObserver.
|
| @@ -192,6 +152,42 @@ class PasswordStore : protected PasswordStoreSync,
|
|
|
| typedef base::Callback<PasswordStoreChangeList(void)> ModificationTask;
|
|
|
| + // PasswordForm vector elements are meant to be owned by the
|
| + // PasswordStoreConsumer. However, if the request is canceled after the
|
| + // allocation, then the request must take care of the deletion.
|
| + class GetLoginsRequest {
|
| + public:
|
| + explicit GetLoginsRequest(PasswordStoreConsumer* consumer);
|
| + virtual ~GetLoginsRequest();
|
| +
|
| + void set_ignore_logins_cutoff(base::Time cutoff) {
|
| + ignore_logins_cutoff_ = cutoff;
|
| + }
|
| +
|
| + // Removes any logins in the result list that were saved before the cutoff.
|
| + void ApplyIgnoreLoginsCutoff();
|
| +
|
| + // Forward the result to the consumer on the original message loop.
|
| + void ForwardResult();
|
| +
|
| + ScopedVector<autofill::PasswordForm>* result() { return &result_; }
|
| +
|
| + private:
|
| + // See GetLogins(). Logins older than this will be removed from the reply.
|
| + base::Time ignore_logins_cutoff_;
|
| +
|
| + base::WeakPtr<PasswordStoreConsumer> consumer_weak_;
|
| +
|
| + // The result of the request. It is filled in on the PasswordStore's task
|
| + // thread and consumed on the UI thread.
|
| + ScopedVector<autofill::PasswordForm> result_;
|
| +
|
| + base::ThreadChecker thread_checker_;
|
| + scoped_refptr<base::MessageLoopProxy> origin_loop_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GetLoginsRequest);
|
| + };
|
| +
|
| ~PasswordStore() override;
|
|
|
| // Get the TaskRunner to use for PasswordStore background tasks.
|
| @@ -235,14 +231,15 @@ class PasswordStore : protected PasswordStoreSync,
|
| const ConsumerCallbackRunner& callback_runner) = 0;
|
|
|
| // Finds all non-blacklist PasswordForms, and notifies the consumer.
|
| - virtual void GetAutofillableLoginsImpl(GetLoginsRequest* request) = 0;
|
| + virtual void GetAutofillableLoginsImpl(
|
| + scoped_ptr<GetLoginsRequest> request) = 0;
|
|
|
| // Finds all blacklist PasswordForms, and notifies the consumer.
|
| - virtual void GetBlacklistLoginsImpl(GetLoginsRequest* request) = 0;
|
| + virtual void GetBlacklistLoginsImpl(scoped_ptr<GetLoginsRequest> request) = 0;
|
|
|
| // Dispatches the result to the PasswordStoreConsumer on the original caller's
|
| // thread so the callback can be executed there. This should be the UI thread.
|
| - static void ForwardLoginsResult(GetLoginsRequest* request);
|
| + static void ForwardLoginsResult(scoped_ptr<GetLoginsRequest> request);
|
|
|
| // Log UMA stats for number of bulk deletions.
|
| void LogStatsForBulkDeletion(int num_deletions);
|
| @@ -267,8 +264,8 @@ class PasswordStore : protected PasswordStoreSync,
|
| private:
|
| // Schedule the given |func| to be run in the PasswordStore's own thread with
|
| // responses delivered to |consumer| on the current thread.
|
| - template <typename BackendFunc>
|
| - void Schedule(BackendFunc func, PasswordStoreConsumer* consumer);
|
| + void Schedule(void (PasswordStore::*func)(scoped_ptr<GetLoginsRequest>),
|
| + PasswordStoreConsumer* consumer);
|
|
|
| // Wrapper method called on the destination thread (DB for non-mac) that
|
| // invokes |task| and then calls back into the source thread to notify
|
| @@ -291,7 +288,7 @@ class PasswordStore : protected PasswordStoreSync,
|
| // |GetLoginsImpl| and |PasswordStoreConsumer|.
|
| // TODO(dubroy): Get rid of this.
|
| static void CopyAndForwardLoginsResult(
|
| - PasswordStore::GetLoginsRequest* request,
|
| + scoped_ptr<PasswordStore::GetLoginsRequest> request,
|
| ScopedVector<autofill::PasswordForm> matched_forms);
|
|
|
| #if defined(PASSWORD_MANAGER_ENABLE_SYNC)
|
|
|