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/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "components/autofill/browser/autofill_country.h" | 10 #include "components/autofill/browser/autofill_country.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 } | 43 } |
44 | 44 |
45 AutofillWebDataBackendImpl::~AutofillWebDataBackendImpl() { | 45 AutofillWebDataBackendImpl::~AutofillWebDataBackendImpl() { |
46 } | 46 } |
47 | 47 |
48 WebDatabase* AutofillWebDataBackendImpl::GetDatabase() { | 48 WebDatabase* AutofillWebDataBackendImpl::GetDatabase() { |
49 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 49 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
50 return web_database_backend_->database(); | 50 return web_database_backend_->database(); |
51 } | 51 } |
52 | 52 |
53 void AutofillWebDataBackendImpl::RemoveExpiredFormElementsWrapper() { | 53 void AutofillWebDataBackendImpl::RemoveExpiredFormElements() { |
54 web_database_backend_->ExecuteWriteTask( | 54 web_database_backend_->ExecuteWriteTask( |
55 Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElements, this)); | 55 Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElementsImpl, |
| 56 this)); |
56 } | 57 } |
57 | 58 |
58 void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() { | 59 void AutofillWebDataBackendImpl::NotifyOfMultipleAutofillChanges() { |
59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 60 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
60 BrowserThread::PostTask(BrowserThread::UI, | 61 BrowserThread::PostTask(BrowserThread::UI, |
61 FROM_HERE, | 62 FROM_HERE, |
62 on_changed_callback_); | 63 on_changed_callback_); |
63 } | 64 } |
64 | 65 |
65 WebDatabase::State AutofillWebDataBackendImpl::AddFormElements( | 66 WebDatabase::State AutofillWebDataBackendImpl::AddFormElements( |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 // will be done on the DB thread, and not the UI thread. | 119 // will be done on the DB thread, and not the UI thread. |
119 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, | 120 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
120 db_observer_list_, | 121 db_observer_list_, |
121 AutofillEntriesChanged(changes)); | 122 AutofillEntriesChanged(changes)); |
122 } | 123 } |
123 return WebDatabase::COMMIT_NEEDED; | 124 return WebDatabase::COMMIT_NEEDED; |
124 } | 125 } |
125 return WebDatabase::COMMIT_NOT_NEEDED; | 126 return WebDatabase::COMMIT_NOT_NEEDED; |
126 } | 127 } |
127 | 128 |
128 WebDatabase::State AutofillWebDataBackendImpl::RemoveExpiredFormElements( | |
129 WebDatabase* db) { | |
130 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | |
131 AutofillChangeList changes; | |
132 | |
133 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) { | |
134 if (!changes.empty()) { | |
135 // Post the notifications including the list of affected keys. | |
136 // This is sent here so that work resulting from this notification | |
137 // will be done on the DB thread, and not the UI thread. | |
138 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, | |
139 db_observer_list_, | |
140 AutofillEntriesChanged(changes)); | |
141 } | |
142 return WebDatabase::COMMIT_NEEDED; | |
143 } | |
144 return WebDatabase::COMMIT_NOT_NEEDED; | |
145 } | |
146 | |
147 WebDatabase::State AutofillWebDataBackendImpl::RemoveFormValueForElementName( | 129 WebDatabase::State AutofillWebDataBackendImpl::RemoveFormValueForElementName( |
148 const base::string16& name, const base::string16& value, WebDatabase* db) { | 130 const base::string16& name, const base::string16& value, WebDatabase* db) { |
149 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); | 131 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
150 | 132 |
151 if (AutofillTable::FromWebDatabase(db)->RemoveFormElement(name, value)) { | 133 if (AutofillTable::FromWebDatabase(db)->RemoveFormElement(name, value)) { |
152 AutofillChangeList changes; | 134 AutofillChangeList changes; |
153 changes.push_back( | 135 changes.push_back( |
154 AutofillChange(AutofillChange::REMOVE, AutofillKey(name, value))); | 136 AutofillChange(AutofillChange::REMOVE, AutofillKey(name, value))); |
155 | 137 |
156 // Post the notifications including the list of affected keys. | 138 // Post the notifications including the list of affected keys. |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 db_observer_list_, | 324 db_observer_list_, |
343 AutofillProfileChanged(change)); | 325 AutofillProfileChanged(change)); |
344 } | 326 } |
345 // Note: It is the caller's responsibility to post notifications for any | 327 // Note: It is the caller's responsibility to post notifications for any |
346 // changes, e.g. by calling the Refresh() method of PersonalDataManager. | 328 // changes, e.g. by calling the Refresh() method of PersonalDataManager. |
347 return WebDatabase::COMMIT_NEEDED; | 329 return WebDatabase::COMMIT_NEEDED; |
348 } | 330 } |
349 return WebDatabase::COMMIT_NOT_NEEDED; | 331 return WebDatabase::COMMIT_NOT_NEEDED; |
350 } | 332 } |
351 | 333 |
| 334 WebDatabase::State AutofillWebDataBackendImpl::RemoveExpiredFormElementsImpl( |
| 335 WebDatabase* db) { |
| 336 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
| 337 AutofillChangeList changes; |
| 338 |
| 339 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) { |
| 340 if (!changes.empty()) { |
| 341 // Post the notifications including the list of affected keys. |
| 342 // This is sent here so that work resulting from this notification |
| 343 // will be done on the DB thread, and not the UI thread. |
| 344 FOR_EACH_OBSERVER(AutofillWebDataServiceObserverOnDBThread, |
| 345 db_observer_list_, |
| 346 AutofillEntriesChanged(changes)); |
| 347 } |
| 348 return WebDatabase::COMMIT_NEEDED; |
| 349 } |
| 350 return WebDatabase::COMMIT_NOT_NEEDED; |
| 351 } |
| 352 |
352 void AutofillWebDataBackendImpl::DestroyAutofillProfileResult( | 353 void AutofillWebDataBackendImpl::DestroyAutofillProfileResult( |
353 const WDTypedResult* result) { | 354 const WDTypedResult* result) { |
354 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT); | 355 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT); |
355 const WDResult<std::vector<AutofillProfile*> >* r = | 356 const WDResult<std::vector<AutofillProfile*> >* r = |
356 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result); | 357 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result); |
357 std::vector<AutofillProfile*> profiles = r->GetValue(); | 358 std::vector<AutofillProfile*> profiles = r->GetValue(); |
358 STLDeleteElements(&profiles); | 359 STLDeleteElements(&profiles); |
359 } | 360 } |
360 | 361 |
361 void AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult( | 362 void AutofillWebDataBackendImpl::DestroyAutofillCreditCardResult( |
362 const WDTypedResult* result) { | 363 const WDTypedResult* result) { |
363 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT); | 364 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT); |
364 const WDResult<std::vector<CreditCard*> >* r = | 365 const WDResult<std::vector<CreditCard*> >* r = |
365 static_cast<const WDResult<std::vector<CreditCard*> >*>(result); | 366 static_cast<const WDResult<std::vector<CreditCard*> >*>(result); |
366 | 367 |
367 std::vector<CreditCard*> credit_cards = r->GetValue(); | 368 std::vector<CreditCard*> credit_cards = r->GetValue(); |
368 STLDeleteElements(&credit_cards); | 369 STLDeleteElements(&credit_cards); |
369 } | 370 } |
370 | 371 |
371 } // namespace autofill | 372 } // namespace autofill |
OLD | NEW |