• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_CHANGE_H__
6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_CHANGE_H__
7 
8 #include <vector>
9 
10 #include "components/autofill/core/browser/webdata/autofill_entry.h"
11 
12 namespace autofill {
13 
14 class AutofillProfile;
15 class CreditCard;
16 
17 // For classic Autofill form fields, the KeyType is AutofillKey.
18 // Autofill++ types such as AutofillProfile and CreditCard simply use an int.
19 template <typename KeyType>
20 class GenericAutofillChange {
21  public:
22   enum Type {
23     ADD,
24     UPDATE,
25     REMOVE
26   };
27 
~GenericAutofillChange()28   virtual ~GenericAutofillChange() {}
29 
type()30   Type type() const { return type_; }
key()31   const KeyType& key() const { return key_; }
32 
33  protected:
GenericAutofillChange(Type type,const KeyType & key)34   GenericAutofillChange(Type type, const KeyType& key)
35       : type_(type),
36         key_(key) {}
37  private:
38   Type type_;
39   KeyType key_;
40 };
41 
42 class AutofillChange : public GenericAutofillChange<AutofillKey> {
43  public:
44   AutofillChange(Type type, const AutofillKey& key);
45   virtual ~AutofillChange();
46   bool operator==(const AutofillChange& change) const {
47     return type() == change.type() && key() == change.key();
48   }
49 };
50 
51 typedef std::vector<AutofillChange> AutofillChangeList;
52 
53 // Change notification details for Autofill profile changes.
54 class AutofillProfileChange : public GenericAutofillChange<std::string> {
55  public:
56   // The |type| input specifies the change type.  The |key| input is the key,
57   // which is expected to be the GUID identifying the |profile|.
58   // When |type| == ADD, |profile| should be non-NULL.
59   // When |type| == UPDATE, |profile| should be non-NULL.
60   // When |type| == REMOVE, |profile| should be NULL.
61   AutofillProfileChange(Type type,
62                         const std::string& key,
63                         const AutofillProfile* profile);
64   virtual ~AutofillProfileChange();
65 
profile()66   const AutofillProfile* profile() const { return profile_; }
67   bool operator==(const AutofillProfileChange& change) const;
68 
69  private:
70   // Weak reference, can be NULL.
71   const AutofillProfile* profile_;
72 };
73 
74 }  // namespace autofill
75 
76 #endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_CHANGE_H__
77