- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / password_manager / password_store_consumer.h
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.
4
5 #ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
6 #define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_
7
8 #include "chrome/browser/common/cancelable_request.h"
9 #include "chrome/common/cancelable_task_tracker.h"
10
11 namespace autofill {
12 struct PasswordForm;
13 }
14
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
19 // destruction.
20 class PasswordStoreConsumer {
21  public:
22   PasswordStoreConsumer();
23
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;
29
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_;
36   }
37
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;
43
44   // Cancels the task.
45   CancelableTaskTracker* cancelable_task_tracker() {
46     return &cancelable_task_tracker_;
47   }
48
49  protected:
50   virtual ~PasswordStoreConsumer();
51
52  private:
53   CancelableRequestConsumer cancelable_consumer_;
54   CancelableTaskTracker cancelable_task_tracker_;
55 };
56
57 #endif  // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_CONSUMER_H_