password_manager_handler.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 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_UI_WEBUI_OPTIONS_PASSWORD_MANAGER_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_PASSWORD_MANAGER_HANDLER_H_
7
8#include <string>
9#include <vector>
10
11#include "base/memory/scoped_vector.h"
12#include "base/prefs/pref_member.h"
13#include "chrome/browser/password_manager/password_store.h"
14#include "chrome/browser/password_manager/password_store_consumer.h"
15#include "chrome/browser/ui/webui/options/options_ui.h"
16
17namespace content {
18struct PasswordForm;
19}
20
21namespace options {
22
23class PasswordManagerHandler : public OptionsPageUIHandler,
24                               public PasswordStore::Observer {
25 public:
26  PasswordManagerHandler();
27  virtual ~PasswordManagerHandler();
28
29  // OptionsPageUIHandler implementation.
30  virtual void GetLocalizedValues(DictionaryValue* localized_strings) OVERRIDE;
31  virtual void InitializeHandler() OVERRIDE;
32  virtual void RegisterMessages() OVERRIDE;
33
34  // PasswordStore::Observer implementation.
35  virtual void OnLoginsChanged() OVERRIDE;
36
37 private:
38  // The password store associated with the currently active profile.
39  PasswordStore* GetPasswordStore();
40
41  // Called when the JS PasswordManager object is initialized.
42  void UpdatePasswordLists(const ListValue* args);
43
44  // Remove an entry.
45  // @param value the entry index to be removed.
46  void RemoveSavedPassword(const ListValue* args);
47
48  // Remove an password exception.
49  // @param value the entry index to be removed.
50  void RemovePasswordException(const ListValue* args);
51
52  // Remove all saved passwords
53  void RemoveAllSavedPasswords(const ListValue* args);
54
55  // Remove All password exceptions
56  void RemoveAllPasswordExceptions(const ListValue* args);
57
58  // Get password value for the selected entry.
59  // @param value the selected entry index.
60  void ShowSelectedPassword(const ListValue* args);
61
62  // Sets the password and exception list contents to the given data.
63  // We take ownership of the PasswordForms in the vector.
64  void SetPasswordList();
65  void SetPasswordExceptionList();
66
67  // A short class to mediate requests to the password store.
68  class ListPopulater : public PasswordStoreConsumer {
69   public:
70    explicit ListPopulater(PasswordManagerHandler* page);
71    virtual ~ListPopulater();
72
73    // Send a query to the password store to populate a list.
74    virtual void Populate() = 0;
75
76   protected:
77    PasswordManagerHandler* page_;
78    CancelableRequestProvider::Handle pending_login_query_;
79  };
80
81  // A short class to mediate requests to the password store for passwordlist.
82  class PasswordListPopulater : public ListPopulater {
83   public:
84    explicit PasswordListPopulater(PasswordManagerHandler* page);
85
86    // Send a query to the password store to populate a password list.
87    virtual void Populate() OVERRIDE;
88
89    // Send the password store's reply back to the handler.
90    virtual void OnPasswordStoreRequestDone(
91        CancelableRequestProvider::Handle handle,
92        const std::vector<content::PasswordForm*>& result) OVERRIDE;
93    virtual void OnGetPasswordStoreResults(
94        const std::vector<content::PasswordForm*>& results) OVERRIDE;
95  };
96
97  // A short class to mediate requests to the password store for exceptions.
98  class PasswordExceptionListPopulater : public ListPopulater {
99   public:
100    explicit PasswordExceptionListPopulater(PasswordManagerHandler* page);
101
102    // Send a query to the password store to populate a passwordException list.
103    virtual void Populate() OVERRIDE;
104
105    // Send the password store's reply back to the handler.
106    virtual void OnPasswordStoreRequestDone(
107        CancelableRequestProvider::Handle handle,
108        const std::vector<content::PasswordForm*>& result) OVERRIDE;
109    virtual void OnGetPasswordStoreResults(
110        const std::vector<content::PasswordForm*>& results) OVERRIDE;
111  };
112
113  // Password store consumer for populating the password list and exceptions.
114  PasswordListPopulater populater_;
115  PasswordExceptionListPopulater exception_populater_;
116
117  ScopedVector<content::PasswordForm> password_list_;
118  ScopedVector<content::PasswordForm> password_exception_list_;
119
120  // User's pref
121  std::string languages_;
122
123  // Whether to show stored passwords or not.
124  BooleanPrefMember show_passwords_;
125
126  DISALLOW_COPY_AND_ASSIGN(PasswordManagerHandler);
127};
128
129}  // namespace options
130
131#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_PASSWORD_MANAGER_HANDLER_H_
132