• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_TEST_PASSWORD_STORE_H_
6 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_TEST_PASSWORD_STORE_H_
7 
8 #include <map>
9 #include <string>
10 #include <vector>
11 
12 #include "base/memory/ref_counted.h"
13 #include "components/password_manager/core/browser/password_store.h"
14 
15 namespace content {
16 class BrowserContext;
17 }
18 
19 namespace password_manager {
20 
21 // A very simple PasswordStore implementation that keeps all of the passwords
22 // in memory and does all its manipulations on the main thread. Since this
23 // is only used for testing, only the parts of the interface that are needed
24 // for testing have been implemented.
25 class TestPasswordStore : public PasswordStore {
26  public:
27   TestPasswordStore();
28 
29   typedef std::map<std::string /* signon_realm */,
30                    std::vector<autofill::PasswordForm> > PasswordMap;
31 
32   const PasswordMap& stored_passwords() const;
33   void Clear();
34 
35   // Returns true if no passwords are stored in the store. Note that this is not
36   // as simple as asking whether stored_passwords().empty(), because the map can
37   // have entries of size 0.
38   bool IsEmpty() const;
39 
40  protected:
41   virtual ~TestPasswordStore();
42 
43   // Helper function to determine if forms are considered equivalent.
44   bool FormsAreEquivalent(const autofill::PasswordForm& lhs,
45                           const autofill::PasswordForm& rhs);
46 
47   // PasswordStore interface
48   virtual PasswordStoreChangeList AddLoginImpl(
49       const autofill::PasswordForm& form) OVERRIDE;
50   virtual PasswordStoreChangeList UpdateLoginImpl(
51       const autofill::PasswordForm& form) OVERRIDE;
52   virtual PasswordStoreChangeList RemoveLoginImpl(
53       const autofill::PasswordForm& form) OVERRIDE;
54   virtual void GetLoginsImpl(
55       const autofill::PasswordForm& form,
56       PasswordStore::AuthorizationPromptPolicy prompt_policy,
57       const ConsumerCallbackRunner& runner) OVERRIDE;
58   virtual void WrapModificationTask(ModificationTask task) OVERRIDE;
59 
60   // Unused portions of PasswordStore interface
ReportMetricsImpl()61   virtual void ReportMetricsImpl() OVERRIDE {}
62   virtual PasswordStoreChangeList RemoveLoginsCreatedBetweenImpl(
63       base::Time begin,
64       base::Time end) OVERRIDE;
65   virtual PasswordStoreChangeList RemoveLoginsSyncedBetweenImpl(
66       base::Time delete_begin,
67       base::Time delete_end) OVERRIDE;
GetAutofillableLoginsImpl(PasswordStore::GetLoginsRequest * request)68   virtual void GetAutofillableLoginsImpl(
69       PasswordStore::GetLoginsRequest* request) OVERRIDE {}
GetBlacklistLoginsImpl(PasswordStore::GetLoginsRequest * request)70   virtual void GetBlacklistLoginsImpl(
71       PasswordStore::GetLoginsRequest* request) OVERRIDE {}
72   virtual bool FillAutofillableLogins(
73       std::vector<autofill::PasswordForm*>* forms) OVERRIDE;
74   virtual bool FillBlacklistLogins(
75       std::vector<autofill::PasswordForm*>* forms) OVERRIDE;
76 
77  private:
78   PasswordMap stored_passwords_;
79 
80   DISALLOW_COPY_AND_ASSIGN(TestPasswordStore);
81 };
82 
83 }  // namespace password_manager
84 
85 #endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_TEST_PASSWORD_STORE_H_
86