1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
6 #define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
8 #include "chrome/browser/common/cancelable_request.h"
9 #include "chrome/common/cancelable_task_tracker.h"
15 // Reads from the PasswordStore are done asynchronously on a separate
16 // thread. PasswordStoreConsumer provides the virtual callback method, which is
17 // guaranteed to be executed on this (the UI) thread. It also provides the
18 // CancelableRequestConsumer member, which cancels any outstanding requests upon
20 class PasswordStoreConsumer
{
22 PasswordStoreConsumer();
24 // Call this when the request is finished. If there are no results, call it
25 // anyway with an empty vector.
26 virtual void OnPasswordStoreRequestDone(
27 CancelableRequestProvider::Handle handle
,
28 const std::vector
<autofill::PasswordForm
*>& result
) = 0;
30 // The CancelableRequest framework needs both a callback (the
31 // PasswordStoreConsumer::OnPasswordStoreRequestDone) as well as a
32 // CancelableRequestConsumer. This accessor makes the API simpler for callers
33 // as PasswordStore can get both from the PasswordStoreConsumer.
34 CancelableRequestConsumerBase
* cancelable_consumer() {
35 return &cancelable_consumer_
;
38 // Called when the request is finished. If there are no results, it is called
39 // with an empty vector.
40 // Note: The implementation owns all PasswordForms in the vector.
41 virtual void OnGetPasswordStoreResults(
42 const std::vector
<autofill::PasswordForm
*>& results
) = 0;
45 CancelableTaskTracker
* cancelable_task_tracker() {
46 return &cancelable_task_tracker_
;
50 virtual ~PasswordStoreConsumer();
53 CancelableRequestConsumer cancelable_consumer_
;
54 CancelableTaskTracker cancelable_task_tracker_
;
57 #endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_