Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: components/autofill/browser/webdata/autofill_webdata_backend_impl.h

Issue 17392006: In components/autofill, move browser/ to core/browser/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to fix conflicts Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
6 #define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/observer_list.h"
11 #include "base/supports_user_data.h"
12 #include "components/autofill/browser/webdata/autofill_webdata.h"
13 #include "components/autofill/browser/webdata/autofill_webdata_backend.h"
14 #include "components/autofill/core/common/form_field_data.h"
15 #include "components/webdata/common/web_data_results.h"
16 #include "components/webdata/common/web_data_service_base.h"
17 #include "components/webdata/common/web_data_service_consumer.h"
18 #include "components/webdata/common/web_database.h"
19 #include "content/public/browser/browser_thread.h"
20
21 class WebDataServiceBackend;
22
23 namespace autofill {
24
25 class AutofillChange;
26 class AutofillProfile;
27 class AutofillWebDataServiceObserverOnDBThread;
28 class CreditCard;
29
30 // Backend implentation for the AutofillWebDataService. This class runs on the
31 // DB thread, as it handles reads and writes to the WebDatabase, and functions
32 // in it should only be called from that thread. Most functions here are just
33 // the implementations of the corresponding functions in the Autofill
34 // WebDataService.
35 class AutofillWebDataBackendImpl
36 : public base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
37 content::BrowserThread::DeleteOnDBThread>,
38 public AutofillWebDataBackend {
39 public:
40 // |web_database_backend| is used to access the WebDatabase directly for
41 // Sync-related operations. |on_changed_callback| is a closure which can be
42 // used to notify the UI thread of changes initiated by Sync (this callback
43 // may be called multiple times).
44 AutofillWebDataBackendImpl(
45 scoped_refptr<WebDataServiceBackend> web_database_backend,
46 const base::Closure& on_changed_callback);
47
48 // AutofillWebDataBackend implementation.
49 virtual void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer)
50 OVERRIDE;
51 virtual void RemoveObserver(
52 AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE;
53 virtual WebDatabase* GetDatabase() OVERRIDE;
54 virtual void RemoveExpiredFormElements() OVERRIDE;
55 virtual void NotifyOfMultipleAutofillChanges() OVERRIDE;
56
57 // Returns a SupportsUserData objects that may be used to store data
58 // owned by the DB thread on this object. Should be called only from
59 // the DB thread, and will be destroyed on the DB thread soon after
60 // |ShutdownOnUIThread()| is called.
61 base::SupportsUserData* GetDBUserData();
62
63 void ResetUserData();
64
65 // Adds form fields to the web database.
66 WebDatabase::State AddFormElements(const std::vector<FormFieldData>& fields,
67 WebDatabase* db);
68
69 // Returns a vector of values which have been entered in form input fields
70 // named |name|.
71 scoped_ptr<WDTypedResult> GetFormValuesForElementName(
72 const base::string16& name,
73 const base::string16& prefix,
74 int limit,
75 WebDatabase* db);
76
77 // Returns true if there are any elements in the form.
78 scoped_ptr<WDTypedResult> HasFormElements(WebDatabase* db);
79
80 // Removes form elements recorded for Autocomplete from the database.
81 WebDatabase::State RemoveFormElementsAddedBetween(
82 const base::Time& delete_begin,
83 const base::Time& delete_end,
84 WebDatabase* db);
85
86
87 // Removes the Form-value |value| which has been entered in form input fields
88 // named |name| from the database.
89 WebDatabase::State RemoveFormValueForElementName(const base::string16& name,
90 const base::string16& value,
91 WebDatabase* db);
92
93 // Adds an Autofill profile to the web database.
94 WebDatabase::State AddAutofillProfile(const AutofillProfile& profile,
95 WebDatabase* db);
96
97 // Updates an Autofill profile in the web database.
98 WebDatabase::State UpdateAutofillProfile(const AutofillProfile& profile,
99 WebDatabase* db);
100
101 // Removes an Autofill profile from the web database.
102 WebDatabase::State RemoveAutofillProfile(const std::string& guid,
103 WebDatabase* db);
104
105 // Returns all Autofill profiles from the web database.
106 scoped_ptr<WDTypedResult> GetAutofillProfiles(WebDatabase* db);
107
108 // Adds a credit card to the web database.
109 WebDatabase::State AddCreditCard(const CreditCard& credit_card,
110 WebDatabase* db);
111
112 // Updates a credit card in the web database.
113 WebDatabase::State UpdateCreditCard(const CreditCard& credit_card,
114 WebDatabase* db);
115
116 // Removes a credit card from the web database.
117 WebDatabase::State RemoveCreditCard(const std::string& guid,
118 WebDatabase* db);
119
120 // Returns a vector of all credit cards from the web database.
121 scoped_ptr<WDTypedResult> GetCreditCards(WebDatabase* db);
122
123 // Removes Autofill records from the database.
124 WebDatabase::State RemoveAutofillDataModifiedBetween(
125 const base::Time& delete_begin,
126 const base::Time& delete_end,
127 WebDatabase* db);
128
129 // Removes origin URLs associated with Autofill profiles and credit cards from
130 // the database.
131 WebDatabase::State RemoveOriginURLsModifiedBetween(
132 const base::Time& delete_begin,
133 const base::Time& delete_end,
134 WebDatabase* db);
135
136 protected:
137 virtual ~AutofillWebDataBackendImpl();
138
139 private:
140 friend struct content::BrowserThread::DeleteOnThread<
141 content::BrowserThread::DB>;
142 friend class base::DeleteHelper<AutofillWebDataBackendImpl>;
143 // We have to friend RCTS<> so WIN shared-lib build is happy
144 // (http://crbug/112250).
145 friend class base::RefCountedThreadSafe<AutofillWebDataBackendImpl,
146 content::BrowserThread::DeleteOnDBThread>;
147
148 // This makes the destructor public, and thus allows us to aggregate
149 // SupportsUserData. It is private by default to prevent incorrect
150 // usage in class hierarchies where it is inherited by
151 // reference-counted objects.
152 class SupportsUserDataAggregatable : public base::SupportsUserData {
153 public:
154 SupportsUserDataAggregatable() {}
155 virtual ~SupportsUserDataAggregatable() {}
156 private:
157 DISALLOW_COPY_AND_ASSIGN(SupportsUserDataAggregatable);
158 };
159
160 // Storage for user data to be accessed only on the DB thread. May
161 // be used e.g. for SyncableService subclasses that need to be owned
162 // by this object. Is created on first call to |GetDBUserData()|.
163 scoped_ptr<SupportsUserDataAggregatable> user_data_;
164
165 WebDatabase::State RemoveExpiredFormElementsImpl(WebDatabase* db);
166
167 // Callbacks to ensure that sensitive info is destroyed if request is
168 // cancelled.
169 void DestroyAutofillProfileResult(const WDTypedResult* result);
170 void DestroyAutofillCreditCardResult(const WDTypedResult* result);
171
172 ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_;
173
174 // WebDataServiceBackend allows direct access to DB.
175 // TODO(caitkp): Make it so nobody but us needs direct DB access anymore.
176 scoped_refptr<WebDataServiceBackend> web_database_backend_;
177
178 base::Closure on_changed_callback_;
179
180 DISALLOW_COPY_AND_ASSIGN(AutofillWebDataBackendImpl);
181 };
182
183 } // namespace autofill
184
185 #endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698