OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h" | 5 #include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "components/autofill/browser/autofill_country.h" | 9 #include "components/autofill/browser/autofill_country.h" |
10 #include "components/autofill/browser/autofill_profile.h" | 10 #include "components/autofill/browser/autofill_profile.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 } | 42 } |
43 | 43 |
44 AutofillWebDataBackendImpl::~AutofillWebDataBackendImpl() { | 44 AutofillWebDataBackendImpl::~AutofillWebDataBackendImpl() { |
45 } | 45 } |
46 | 46 |
47 WebDatabase* AutofillWebDataBackendImpl::GetDatabase() { | 47 WebDatabase* AutofillWebDataBackendImpl::GetDatabase() { |
48 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 48 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
49 return web_database_backend_->database(); | 49 return web_database_backend_->database(); |
50 } | 50 } |
51 | 51 |
52 void AutofillWebDataBackendImpl::RemoveExpiredFormElementsWrapper() { | 52 void AutofillWebDataBackendImpl::RemoveExpiredFormElements() { |
53 web_database_backend_->ExecuteWriteTask( | 53 web_database_backend_->ExecuteWriteTask( |
54 Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElements, this)); | 54 Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElementsImpl, |
| 55 this)); |
55 } | 56 } |
56 | 57 |
57 void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() { | 58 void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() { |
58 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
59 BrowserThread::PostTask(BrowserThread::UI, | 60 BrowserThread::PostTask(BrowserThread::UI, |
60 FROM_HERE, | 61 FROM_HERE, |
61 on_changed_callback_); | 62 on_changed_callback_); |
62 } | 63 } |
63 | 64 |
64 WebDatabase::State AutofillWebDataBackendImpl::AddFormElements( | 65 WebDatabase::State AutofillWebDataBackendImpl::AddFormElements( |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 // will be done on the DB thread, and not the UI thread. | 117 // will be done on the DB thread, and not the UI thread. |
117 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, | 118 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
118 db_observer_list_, | 119 db_observer_list_, |
119 AutofillEntriesChanged(changes)); | 120 AutofillEntriesChanged(changes)); |
120 } | 121 } |
121 return WebDatabase::COMMIT_NEEDED; | 122 return WebDatabase::COMMIT_NEEDED; |
122 } | 123 } |
123 return WebDatabase::COMMIT_NOT_NEEDED; | 124 return WebDatabase::COMMIT_NOT_NEEDED; |
124 } | 125 } |
125 | 126 |
126 WebDatabase::State AutofillWebDataBackendImpl::RemoveExpiredFormElements( | |
127 WebDatabase* db) { | |
128 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | |
129 AutofillChangeList changes; | |
130 | |
131 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) { | |
132 if (!changes.empty()) { | |
133 // Post the notifications including the list of affected keys. | |
134 // This is sent here so that work resulting from this notification | |
135 // will be done on the DB thread, and not the UI thread. | |
136 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, | |
137 db_observer_list_, | |
138 AutofillEntriesChanged(changes)); | |
139 } | |
140 return WebDatabase::COMMIT_NEEDED; | |
141 } | |
142 return WebDatabase::COMMIT_NOT_NEEDED; | |
143 } | |
144 | |
145 WebDatabase::State AutofillWebDataBackendImpl::RemoveFormValueForElementName( | 127 WebDatabase::State AutofillWebDataBackendImpl::RemoveFormValueForElementName( |
146 const base::string16& name, const base::string16& value, WebDatabase* db) { | 128 const base::string16& name, const base::string16& value, WebDatabase* db) { |
147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 129 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
148 | 130 |
149 if (AutofillTable::FromWebDatabase(db)->RemoveFormElement(name, value)) { | 131 if (AutofillTable::FromWebDatabase(db)->RemoveFormElement(name, value)) { |
150 AutofillChangeList changes; | 132 AutofillChangeList changes; |
151 changes.push_back( | 133 changes.push_back( |
152 AutofillChange(AutofillChange::REMOVE, AutofillKey(name, value))); | 134 AutofillChange(AutofillChange::REMOVE, AutofillKey(name, value))); |
153 | 135 |
154 // Post the notifications including the list of affected keys. | 136 // Post the notifications including the list of affected keys. |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 db_observer_list_, | 300 db_observer_list_, |
319 AutofillProfileChanged(change)); | 301 AutofillProfileChanged(change)); |
320 } | 302 } |
321 // Note: It is the caller's responsibility to post notifications for any | 303 // Note: It is the caller's responsibility to post notifications for any |
322 // changes, e.g. by calling the Refresh() method of PersonalDataManager. | 304 // changes, e.g. by calling the Refresh() method of PersonalDataManager. |
323 return WebDatabase::COMMIT_NEEDED; | 305 return WebDatabase::COMMIT_NEEDED; |
324 } | 306 } |
325 return WebDatabase::COMMIT_NOT_NEEDED; | 307 return WebDatabase::COMMIT_NOT_NEEDED; |
326 } | 308 } |
327 | 309 |
| 310 WebDatabase::State AutofillWebDataBackendImpl::RemoveExpiredFormElementsImpl( |
| 311 WebDatabase* db) { |
| 312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 313 AutofillChangeList changes; |
| 314 |
| 315 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) { |
| 316 if (!changes.empty()) { |
| 317 // Post the notifications including the list of affected keys. |
| 318 // This is sent here so that work resulting from this notification |
| 319 // will be done on the DB thread, and not the UI thread. |
| 320 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
| 321 db_observer_list_, |
| 322 AutofillEntriesChanged(changes)); |
| 323 } |
| 324 return WebDatabase::COMMIT_NEEDED; |
| 325 } |
| 326 return WebDatabase::COMMIT_NOT_NEEDED; |
| 327 } |
| 328 |
328 void AutofillWebDataBackendImpl::DestroyAutofillProfileResult( | 329 void AutofillWebDataBackendImpl::DestroyAutofillProfileResult( |
329 const WDTypedResult* result) { | 330 const WDTypedResult* result) { |
330 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT); | 331 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT); |
331 const WDResult<std::vector<AutofillProfile*> >* r = | 332 const WDResult<std::vector<AutofillProfile*> >* r = |
332 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result); | 333 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result); |
333 std::vector<AutofillProfile*> profiles = r->GetValue(); | 334 std::vector<AutofillProfile*> profiles = r->GetValue(); |
334 STLDeleteElements(&profiles); | 335 STLDeleteElements(&profiles); |
335 } | 336 } |
336 | 337 |
337 void AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult( | 338 void AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult( |
338 const WDTypedResult* result) { | 339 const WDTypedResult* result) { |
339 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT); | 340 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT); |
340 const WDResult<std::vector<CreditCard*> >* r = | 341 const WDResult<std::vector<CreditCard*> >* r = |
341 static_cast<const WDResult<std::vector<CreditCard*> >*>(result); | 342 static_cast<const WDResult<std::vector<CreditCard*> >*>(result); |
342 | 343 |
343 std::vector<CreditCard*> credit_cards = r->GetValue(); | 344 std::vector<CreditCard*> credit_cards = r->GetValue(); |
344 STLDeleteElements(&credit_cards); | 345 STLDeleteElements(&credit_cards); |
345 } | 346 } |
346 | 347 |
347 } // namespace autofill | 348 } // namespace autofill |
OLD | NEW |