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

Side by Side Diff: components/autofill/browser/webdata/autofill_webdata_service.cc

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 (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 #include "components/autofill/browser/webdata/autofill_webdata_service.h"
6
7 #include "base/logging.h"
8 #include "base/stl_util.h"
9 #include "components/autofill/browser/autofill_country.h"
10 #include "components/autofill/browser/autofill_profile.h"
11 #include "components/autofill/browser/credit_card.h"
12 #include "components/autofill/browser/webdata/autofill_change.h"
13 #include "components/autofill/browser/webdata/autofill_entry.h"
14 #include "components/autofill/browser/webdata/autofill_table.h"
15 #include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h"
16 #include "components/autofill/browser/webdata/autofill_webdata_service_observer. h"
17 #include "components/autofill/core/common/form_field_data.h"
18 #include "components/webdata/common/web_data_service_backend.h"
19 #include "components/webdata/common/web_database_service.h"
20
21 using base::Bind;
22 using base::Time;
23 using content::BrowserThread;
24
25 namespace autofill {
26
27 AutofillWebDataService::AutofillWebDataService(
28 scoped_refptr<WebDatabaseService> wdbs,
29 const ProfileErrorCallback& callback)
30 : WebDataServiceBase(wdbs, callback,
31 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
32 weak_ptr_factory_(this),
33 autofill_backend_(NULL) {
34
35 base::Closure on_changed_callback = Bind(
36 &AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread,
37 weak_ptr_factory_.GetWeakPtr());
38
39 autofill_backend_ = new AutofillWebDataBackendImpl(
40 wdbs_->GetBackend(),
41 on_changed_callback);
42 }
43
44 AutofillWebDataService::AutofillWebDataService()
45 : WebDataServiceBase(NULL, WebDataServiceBase::ProfileErrorCallback(),
46 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
47 weak_ptr_factory_(this),
48 autofill_backend_(new AutofillWebDataBackendImpl(NULL, base::Closure())) {
49 }
50
51 void AutofillWebDataService::ShutdownOnUIThread() {
52 weak_ptr_factory_.InvalidateWeakPtrs();
53 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
54 Bind(&AutofillWebDataBackendImpl::ResetUserData,
55 autofill_backend_));
56 WebDataServiceBase::ShutdownOnUIThread();
57 }
58
59 void AutofillWebDataService::AddFormFields(
60 const std::vector<FormFieldData>& fields) {
61 wdbs_->ScheduleDBTask(FROM_HERE,
62 Bind(&AutofillWebDataBackendImpl::AddFormElements,
63 autofill_backend_, fields));
64 }
65
66 WebDataServiceBase::Handle AutofillWebDataService::GetFormValuesForElementName(
67 const base::string16& name, const base::string16& prefix, int limit,
68 WebDataServiceConsumer* consumer) {
69 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
70 Bind(&AutofillWebDataBackendImpl::GetFormValuesForElementName,
71 autofill_backend_, name, prefix, limit), consumer);
72 }
73
74 WebDataServiceBase::Handle AutofillWebDataService::HasFormElements(
75 WebDataServiceConsumer* consumer) {
76 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
77 Bind(&AutofillWebDataBackendImpl::HasFormElements, autofill_backend_),
78 consumer);
79 }
80
81 void AutofillWebDataService::RemoveFormElementsAddedBetween(
82 const Time& delete_begin, const Time& delete_end) {
83 wdbs_->ScheduleDBTask(FROM_HERE,
84 Bind(&AutofillWebDataBackendImpl::RemoveFormElementsAddedBetween,
85 autofill_backend_, delete_begin, delete_end));
86 }
87
88 void AutofillWebDataService::RemoveFormValueForElementName(
89 const base::string16& name, const base::string16& value) {
90 wdbs_->ScheduleDBTask(FROM_HERE,
91 Bind(&AutofillWebDataBackendImpl::RemoveFormValueForElementName,
92 autofill_backend_, name, value));
93 }
94
95 void AutofillWebDataService::AddAutofillProfile(
96 const AutofillProfile& profile) {
97 wdbs_->ScheduleDBTask(FROM_HERE,
98 Bind(&AutofillWebDataBackendImpl::AddAutofillProfile,
99 autofill_backend_, profile));
100 }
101
102 void AutofillWebDataService::UpdateAutofillProfile(
103 const AutofillProfile& profile) {
104 wdbs_->ScheduleDBTask(FROM_HERE,
105 Bind(&AutofillWebDataBackendImpl::UpdateAutofillProfile,
106 autofill_backend_, profile));
107 }
108
109 void AutofillWebDataService::RemoveAutofillProfile(
110 const std::string& guid) {
111 wdbs_->ScheduleDBTask(FROM_HERE,
112 Bind(&AutofillWebDataBackendImpl::RemoveAutofillProfile,
113 autofill_backend_, guid));
114 }
115
116 WebDataServiceBase::Handle AutofillWebDataService::GetAutofillProfiles(
117 WebDataServiceConsumer* consumer) {
118 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
119 Bind(&AutofillWebDataBackendImpl::GetAutofillProfiles, autofill_backend_),
120 consumer);
121 }
122
123 void AutofillWebDataService::AddCreditCard(const CreditCard& credit_card) {
124 wdbs_->ScheduleDBTask(
125 FROM_HERE,
126 Bind(&AutofillWebDataBackendImpl::AddCreditCard,
127 autofill_backend_, credit_card));
128 }
129
130 void AutofillWebDataService::UpdateCreditCard(
131 const CreditCard& credit_card) {
132 wdbs_->ScheduleDBTask(
133 FROM_HERE,
134 Bind(&AutofillWebDataBackendImpl::UpdateCreditCard,
135 autofill_backend_, credit_card));
136 }
137
138 void AutofillWebDataService::RemoveCreditCard(const std::string& guid) {
139 wdbs_->ScheduleDBTask(
140 FROM_HERE,
141 Bind(&AutofillWebDataBackendImpl::RemoveCreditCard,
142 autofill_backend_, guid));
143 }
144
145 WebDataServiceBase::Handle AutofillWebDataService::GetCreditCards(
146 WebDataServiceConsumer* consumer) {
147 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
148 Bind(&AutofillWebDataBackendImpl::GetCreditCards, autofill_backend_),
149 consumer);
150 }
151
152 void AutofillWebDataService::RemoveAutofillDataModifiedBetween(
153 const Time& delete_begin,
154 const Time& delete_end) {
155 wdbs_->ScheduleDBTask(
156 FROM_HERE,
157 Bind(&AutofillWebDataBackendImpl::RemoveAutofillDataModifiedBetween,
158 autofill_backend_, delete_begin, delete_end));
159 }
160
161 void AutofillWebDataService::RemoveOriginURLsModifiedBetween(
162 const Time& delete_begin, const Time& delete_end) {
163 wdbs_->ScheduleDBTask(
164 FROM_HERE,
165 Bind(&AutofillWebDataBackendImpl::RemoveOriginURLsModifiedBetween,
166 autofill_backend_, delete_begin, delete_end));
167 }
168
169 void AutofillWebDataService::AddObserver(
170 AutofillWebDataServiceObserverOnDBThread* observer) {
171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
172 if (autofill_backend_.get())
173 autofill_backend_->AddObserver(observer);
174 }
175
176 void AutofillWebDataService::RemoveObserver(
177 AutofillWebDataServiceObserverOnDBThread* observer) {
178 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
179 if (autofill_backend_.get())
180 autofill_backend_->RemoveObserver(observer);
181 }
182
183 void AutofillWebDataService::AddObserver(
184 AutofillWebDataServiceObserverOnUIThread* observer) {
185 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
186 ui_observer_list_.AddObserver(observer);
187 }
188
189 void AutofillWebDataService::RemoveObserver(
190 AutofillWebDataServiceObserverOnUIThread* observer) {
191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
192 ui_observer_list_.RemoveObserver(observer);
193 }
194
195 base::SupportsUserData* AutofillWebDataService::GetDBUserData() {
196 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
197 return autofill_backend_->GetDBUserData();
198 }
199
200 void AutofillWebDataService::GetAutofillBackend(
201 const base::Callback<void(AutofillWebDataBackend*)>& callback) {
202 BrowserThread::PostTask(BrowserThread::DB,
203 FROM_HERE,
204 base::Bind(callback, autofill_backend_));
205 }
206
207 AutofillWebDataService::~AutofillWebDataService() {
208 }
209
210 void AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread() {
211 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
212 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnUIThread,
213 ui_observer_list_,
214 AutofillMultipleChanged());
215 }
216
217 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698