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

Side by Side Diff: chrome/browser/webdata/autofill_web_data_service_impl.cc

Issue 12987023: Rip autofill code out of webdataservice (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change method name in AutofillTable Created 7 years, 9 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
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 "chrome/browser/webdata/autofill_web_data_service_impl.h" 5 #include "chrome/browser/webdata/autofill_web_data_service_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 "chrome/browser/webdata/autofill_change.h" 9 #include "chrome/browser/webdata/autofill_change.h"
10 #include "chrome/browser/webdata/autofill_entry.h" 10 #include "chrome/browser/webdata/autofill_entry.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 82
83 WebDataServiceBase::Handle 83 WebDataServiceBase::Handle
84 AutofillWebDataServiceImpl::GetFormValuesForElementName( 84 AutofillWebDataServiceImpl::GetFormValuesForElementName(
85 const string16& name, const string16& prefix, int limit, 85 const string16& name, const string16& prefix, int limit,
86 WebDataServiceConsumer* consumer) { 86 WebDataServiceConsumer* consumer) {
87 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE, 87 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
88 Bind(&AutofillWebDataServiceImpl::GetFormValuesForElementNameImpl, 88 Bind(&AutofillWebDataServiceImpl::GetFormValuesForElementNameImpl,
89 this, name, prefix, limit), consumer); 89 this, name, prefix, limit), consumer);
90 } 90 }
91 91
92 void AutofillWebDataServiceImpl::RemoveFormElementsAddedBetween(
93 const Time& delete_begin, const Time& delete_end) {
94 wdbs_->ScheduleDBTask(FROM_HERE,
95 Bind(&AutofillWebDataServiceImpl::RemoveFormElementsAddedBetweenImpl,
96 this, delete_begin, delete_end));
97 }
98
92 void AutofillWebDataServiceImpl::RemoveExpiredFormElements() { 99 void AutofillWebDataServiceImpl::RemoveExpiredFormElements() {
93 wdbs_->ScheduleDBTask(FROM_HERE, 100 wdbs_->ScheduleDBTask(FROM_HERE,
94 Bind(&AutofillWebDataServiceImpl::RemoveExpiredFormElementsImpl, this)); 101 Bind(&AutofillWebDataServiceImpl::RemoveExpiredFormElementsImpl, this));
95 } 102 }
96 103
97 void AutofillWebDataServiceImpl::RemoveFormValueForElementName( 104 void AutofillWebDataServiceImpl::RemoveFormValueForElementName(
98 const string16& name, const string16& value) { 105 const string16& name, const string16& value) {
99 wdbs_->ScheduleDBTask(FROM_HERE, 106 wdbs_->ScheduleDBTask(FROM_HERE,
100 Bind(&AutofillWebDataServiceImpl::RemoveFormValueForElementNameImpl, 107 Bind(&AutofillWebDataServiceImpl::RemoveFormValueForElementNameImpl,
101 this, name, value)); 108 this, name, value));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 wdbs_->ScheduleDBTask(FROM_HERE, 150 wdbs_->ScheduleDBTask(FROM_HERE,
144 Bind(&AutofillWebDataServiceImpl::RemoveCreditCardImpl, this, guid)); 151 Bind(&AutofillWebDataServiceImpl::RemoveCreditCardImpl, this, guid));
145 } 152 }
146 153
147 AutofillWebDataServiceImpl::Handle AutofillWebDataServiceImpl::GetCreditCards( 154 AutofillWebDataServiceImpl::Handle AutofillWebDataServiceImpl::GetCreditCards(
148 WebDataServiceConsumer* consumer) { 155 WebDataServiceConsumer* consumer) {
149 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE, 156 return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
150 Bind(&AutofillWebDataServiceImpl::GetCreditCardsImpl, this), consumer); 157 Bind(&AutofillWebDataServiceImpl::GetCreditCardsImpl, this), consumer);
151 } 158 }
152 159
160 void AutofillWebDataServiceImpl::RemoveAutofillDataModifiedBetween(
161 const Time& delete_begin, const Time& delete_end) {
162 wdbs_->ScheduleDBTask(FROM_HERE, Bind(
163 &AutofillWebDataServiceImpl::RemoveAutofillDataModifiedBetweenImpl,
164 this, delete_begin, delete_end));
165 }
166
153 AutofillWebDataServiceImpl::~AutofillWebDataServiceImpl() { 167 AutofillWebDataServiceImpl::~AutofillWebDataServiceImpl() {
154 } 168 }
155 169
156 //////////////////////////////////////////////////////////////////////////////// 170 ////////////////////////////////////////////////////////////////////////////////
157 // 171 //
158 // Autofill implementation. 172 // Autofill implementation.
159 // 173 //
160 //////////////////////////////////////////////////////////////////////////////// 174 ////////////////////////////////////////////////////////////////////////////////
161 175
162 WebDatabase::State AutofillWebDataServiceImpl::AddFormElementsImpl( 176 WebDatabase::State AutofillWebDataServiceImpl::AddFormElementsImpl(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 content::NotificationService::current()->Notify( 221 content::NotificationService::current()->Notify(
208 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED, 222 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
209 content::Source<AutofillWebDataService>(this), 223 content::Source<AutofillWebDataService>(this),
210 content::Details<AutofillChangeList>(&changes)); 224 content::Details<AutofillChangeList>(&changes));
211 } 225 }
212 return WebDatabase::COMMIT_NEEDED; 226 return WebDatabase::COMMIT_NEEDED;
213 } 227 }
214 return WebDatabase::COMMIT_NOT_NEEDED; 228 return WebDatabase::COMMIT_NOT_NEEDED;
215 } 229 }
216 230
217 WebDatabase::State 231 WebDatabase::State AutofillWebDataServiceImpl::RemoveExpiredFormElementsImpl(
218 AutofillWebDataServiceImpl::RemoveExpiredFormElementsImpl(
219 WebDatabase* db) { 232 WebDatabase* db) {
220 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 233 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
221 AutofillChangeList changes; 234 AutofillChangeList changes;
222 235
223 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) { 236 if (AutofillTable::FromWebDatabase(db)->RemoveExpiredFormElements(&changes)) {
224 if (!changes.empty()) { 237 if (!changes.empty()) {
225 // Post the notifications including the list of affected keys. 238 // Post the notifications including the list of affected keys.
226 // This is sent here so that work resulting from this notification 239 // This is sent here so that work resulting from this notification
227 // will be done on the DB thread, and not the UI thread. 240 // will be done on the DB thread, and not the UI thread.
228 content::NotificationService::current()->Notify( 241 content::NotificationService::current()->Notify(
(...skipping 20 matching lines...) Expand all
249 content::NotificationService::current()->Notify( 262 content::NotificationService::current()->Notify(
250 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED, 263 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
251 content::Source<AutofillWebDataService>(this), 264 content::Source<AutofillWebDataService>(this),
252 content::Details<AutofillChangeList>(&changes)); 265 content::Details<AutofillChangeList>(&changes));
253 266
254 return WebDatabase::COMMIT_NEEDED; 267 return WebDatabase::COMMIT_NEEDED;
255 } 268 }
256 return WebDatabase::COMMIT_NOT_NEEDED; 269 return WebDatabase::COMMIT_NOT_NEEDED;
257 } 270 }
258 271
259 WebDatabase::State 272 WebDatabase::State AutofillWebDataServiceImpl::AddAutofillProfileImpl(
260 AutofillWebDataServiceImpl::AddAutofillProfileImpl(
261 const AutofillProfile& profile, WebDatabase* db) { 273 const AutofillProfile& profile, WebDatabase* db) {
262 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
263 if (!AutofillTable::FromWebDatabase(db)->AddAutofillProfile(profile)) { 275 if (!AutofillTable::FromWebDatabase(db)->AddAutofillProfile(profile)) {
264 NOTREACHED(); 276 NOTREACHED();
265 return WebDatabase::COMMIT_NOT_NEEDED; 277 return WebDatabase::COMMIT_NOT_NEEDED;
266 } 278 }
267 279
268 // Send GUID-based notification. 280 // Send GUID-based notification.
269 AutofillProfileChange change(AutofillProfileChange::ADD, 281 AutofillProfileChange change(AutofillProfileChange::ADD,
270 profile.guid(), &profile); 282 profile.guid(), &profile);
271 content::NotificationService::current()->Notify( 283 content::NotificationService::current()->Notify(
272 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 284 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
273 content::Source<AutofillWebDataService>(this), 285 content::Source<AutofillWebDataService>(this),
274 content::Details<AutofillProfileChange>(&change)); 286 content::Details<AutofillProfileChange>(&change));
275 287
276 return WebDatabase::COMMIT_NEEDED; 288 return WebDatabase::COMMIT_NEEDED;
277 } 289 }
278 290
279 WebDatabase::State 291 WebDatabase::State AutofillWebDataServiceImpl::UpdateAutofillProfileImpl(
280 AutofillWebDataServiceImpl::UpdateAutofillProfileImpl(
281 const AutofillProfile& profile, WebDatabase* db) { 292 const AutofillProfile& profile, WebDatabase* db) {
282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
283 // Only perform the update if the profile exists. It is currently 294 // Only perform the update if the profile exists. It is currently
284 // valid to try to update a missing profile. We simply drop the write and 295 // valid to try to update a missing profile. We simply drop the write and
285 // the caller will detect this on the next refresh. 296 // the caller will detect this on the next refresh.
286 AutofillProfile* original_profile = NULL; 297 AutofillProfile* original_profile = NULL;
287 if (!AutofillTable::FromWebDatabase(db)->GetAutofillProfile(profile.guid(), 298 if (!AutofillTable::FromWebDatabase(db)->GetAutofillProfile(profile.guid(),
288 &original_profile)) { 299 &original_profile)) {
289 return WebDatabase::COMMIT_NOT_NEEDED; 300 return WebDatabase::COMMIT_NOT_NEEDED;
290 } 301 }
291 scoped_ptr<AutofillProfile> scoped_profile(original_profile); 302 scoped_ptr<AutofillProfile> scoped_profile(original_profile);
292 303
293 if (!AutofillTable::FromWebDatabase(db)->UpdateAutofillProfileMulti( 304 if (!AutofillTable::FromWebDatabase(db)->UpdateAutofillProfileMulti(
294 profile)) { 305 profile)) {
295 NOTREACHED(); 306 NOTREACHED();
296 return WebDatabase::COMMIT_NEEDED; 307 return WebDatabase::COMMIT_NEEDED;
297 } 308 }
298 309
299 // Send GUID-based notification. 310 // Send GUID-based notification.
300 AutofillProfileChange change(AutofillProfileChange::UPDATE, 311 AutofillProfileChange change(AutofillProfileChange::UPDATE,
301 profile.guid(), &profile); 312 profile.guid(), &profile);
302 content::NotificationService::current()->Notify( 313 content::NotificationService::current()->Notify(
303 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 314 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
304 content::Source<AutofillWebDataService>(this), 315 content::Source<AutofillWebDataService>(this),
305 content::Details<AutofillProfileChange>(&change)); 316 content::Details<AutofillProfileChange>(&change));
306 317
307 return WebDatabase::COMMIT_NEEDED; 318 return WebDatabase::COMMIT_NEEDED;
308 } 319 }
309 320
310 WebDatabase::State 321 WebDatabase::State AutofillWebDataServiceImpl::RemoveAutofillProfileImpl(
311 AutofillWebDataServiceImpl::RemoveAutofillProfileImpl(
312 const std::string& guid, WebDatabase* db) { 322 const std::string& guid, WebDatabase* db) {
313 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 323 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
314 AutofillProfile* profile = NULL; 324 AutofillProfile* profile = NULL;
315 if (!AutofillTable::FromWebDatabase(db)->GetAutofillProfile(guid, &profile)) { 325 if (!AutofillTable::FromWebDatabase(db)->GetAutofillProfile(guid, &profile)) {
316 NOTREACHED(); 326 NOTREACHED();
317 return WebDatabase::COMMIT_NOT_NEEDED; 327 return WebDatabase::COMMIT_NOT_NEEDED;
318 } 328 }
319 scoped_ptr<AutofillProfile> scoped_profile(profile); 329 scoped_ptr<AutofillProfile> scoped_profile(profile);
320 330
321 if (!AutofillTable::FromWebDatabase(db)->RemoveAutofillProfile(guid)) { 331 if (!AutofillTable::FromWebDatabase(db)->RemoveAutofillProfile(guid)) {
322 NOTREACHED(); 332 NOTREACHED();
323 return WebDatabase::COMMIT_NOT_NEEDED; 333 return WebDatabase::COMMIT_NOT_NEEDED;
324 } 334 }
325 335
326 // Send GUID-based notification. 336 // Send GUID-based notification.
327 AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL); 337 AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL);
328 content::NotificationService::current()->Notify( 338 content::NotificationService::current()->Notify(
329 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 339 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
330 content::Source<AutofillWebDataService>(this), 340 content::Source<AutofillWebDataService>(this),
331 content::Details<AutofillProfileChange>(&change)); 341 content::Details<AutofillProfileChange>(&change));
332 342
333 return WebDatabase::COMMIT_NEEDED; 343 return WebDatabase::COMMIT_NEEDED;
334 } 344 }
335 345
336 scoped_ptr<WDTypedResult> 346 scoped_ptr<WDTypedResult> AutofillWebDataServiceImpl::GetAutofillProfilesImpl(
337 AutofillWebDataServiceImpl::GetAutofillProfilesImpl(
338 WebDatabase* db) { 347 WebDatabase* db) {
339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
340 std::vector<AutofillProfile*> profiles; 349 std::vector<AutofillProfile*> profiles;
341 AutofillTable::FromWebDatabase(db)->GetAutofillProfiles(&profiles); 350 AutofillTable::FromWebDatabase(db)->GetAutofillProfiles(&profiles);
342 return scoped_ptr<WDTypedResult>( 351 return scoped_ptr<WDTypedResult>(
343 new WDDestroyableResult<std::vector<AutofillProfile*> >( 352 new WDDestroyableResult<std::vector<AutofillProfile*> >(
344 AUTOFILL_PROFILES_RESULT, 353 AUTOFILL_PROFILES_RESULT,
345 profiles, 354 profiles,
346 base::Bind(&AutofillWebDataServiceImpl::DestroyAutofillProfileResult, 355 base::Bind(&AutofillWebDataServiceImpl::DestroyAutofillProfileResult,
347 base::Unretained(this)))); 356 base::Unretained(this))));
348 } 357 }
349 358
350 WebDatabase::State 359 WebDatabase::State AutofillWebDataServiceImpl::AddCreditCardImpl(
351 AutofillWebDataServiceImpl::AddCreditCardImpl(
352 const CreditCard& credit_card, WebDatabase* db) { 360 const CreditCard& credit_card, WebDatabase* db) {
353 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 361 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
354 if (!AutofillTable::FromWebDatabase(db)->AddCreditCard(credit_card)) { 362 if (!AutofillTable::FromWebDatabase(db)->AddCreditCard(credit_card)) {
355 NOTREACHED(); 363 NOTREACHED();
356 return WebDatabase::COMMIT_NOT_NEEDED; 364 return WebDatabase::COMMIT_NOT_NEEDED;
357 } 365 }
358 366
359 return WebDatabase::COMMIT_NEEDED; 367 return WebDatabase::COMMIT_NEEDED;
360 } 368 }
361 369
362 WebDatabase::State 370 WebDatabase::State AutofillWebDataServiceImpl::UpdateCreditCardImpl(
363 AutofillWebDataServiceImpl::UpdateCreditCardImpl(
364 const CreditCard& credit_card, WebDatabase* db) { 371 const CreditCard& credit_card, WebDatabase* db) {
365 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 372 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
366 // It is currently valid to try to update a missing profile. We simply drop 373 // It is currently valid to try to update a missing profile. We simply drop
367 // the write and the caller will detect this on the next refresh. 374 // the write and the caller will detect this on the next refresh.
368 CreditCard* original_credit_card = NULL; 375 CreditCard* original_credit_card = NULL;
369 if (!AutofillTable::FromWebDatabase(db)->GetCreditCard(credit_card.guid(), 376 if (!AutofillTable::FromWebDatabase(db)->GetCreditCard(credit_card.guid(),
370 &original_credit_card)) { 377 &original_credit_card)) {
371 return WebDatabase::COMMIT_NOT_NEEDED; 378 return WebDatabase::COMMIT_NOT_NEEDED;
372 } 379 }
373 scoped_ptr<CreditCard> scoped_credit_card(original_credit_card); 380 scoped_ptr<CreditCard> scoped_credit_card(original_credit_card);
374 381
375 if (!AutofillTable::FromWebDatabase(db)->UpdateCreditCard(credit_card)) { 382 if (!AutofillTable::FromWebDatabase(db)->UpdateCreditCard(credit_card)) {
376 NOTREACHED(); 383 NOTREACHED();
377 return WebDatabase::COMMIT_NOT_NEEDED; 384 return WebDatabase::COMMIT_NOT_NEEDED;
378 } 385 }
379 return WebDatabase::COMMIT_NEEDED; 386 return WebDatabase::COMMIT_NEEDED;
380 } 387 }
381 388
382 WebDatabase::State 389 WebDatabase::State AutofillWebDataServiceImpl::RemoveCreditCardImpl(
383 AutofillWebDataServiceImpl::RemoveCreditCardImpl(
384 const std::string& guid, WebDatabase* db) { 390 const std::string& guid, WebDatabase* db) {
385 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 391 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
386 if (!AutofillTable::FromWebDatabase(db)->RemoveCreditCard(guid)) { 392 if (!AutofillTable::FromWebDatabase(db)->RemoveCreditCard(guid)) {
387 NOTREACHED(); 393 NOTREACHED();
388 return WebDatabase::COMMIT_NOT_NEEDED; 394 return WebDatabase::COMMIT_NOT_NEEDED;
389 } 395 }
390 return WebDatabase::COMMIT_NEEDED; 396 return WebDatabase::COMMIT_NEEDED;
391 } 397 }
392 398
393 scoped_ptr<WDTypedResult> 399 scoped_ptr<WDTypedResult> AutofillWebDataServiceImpl::GetCreditCardsImpl(
394 AutofillWebDataServiceImpl::GetCreditCardsImpl(WebDatabase* db) { 400 WebDatabase* db) {
395 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 401 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
396 std::vector<CreditCard*> credit_cards; 402 std::vector<CreditCard*> credit_cards;
397 AutofillTable::FromWebDatabase(db)->GetCreditCards(&credit_cards); 403 AutofillTable::FromWebDatabase(db)->GetCreditCards(&credit_cards);
398 return scoped_ptr<WDTypedResult>( 404 return scoped_ptr<WDTypedResult>(
399 new WDDestroyableResult<std::vector<CreditCard*> >( 405 new WDDestroyableResult<std::vector<CreditCard*> >(
400 AUTOFILL_CREDITCARDS_RESULT, 406 AUTOFILL_CREDITCARDS_RESULT,
401 credit_cards, 407 credit_cards,
402 base::Bind(&AutofillWebDataServiceImpl::DestroyAutofillCreditCardResult, 408 base::Bind(&AutofillWebDataServiceImpl::DestroyAutofillCreditCardResult,
403 base::Unretained(this)))); 409 base::Unretained(this))));
404 } 410 }
405 411
412 WebDatabase::State
413 AutofillWebDataServiceImpl::RemoveAutofillDataModifiedBetweenImpl(
414 const base::Time& delete_begin, const base::Time& delete_end,
415 WebDatabase* db) {
416 std::vector<std::string> profile_guids;
417 std::vector<std::string> credit_card_guids;
418 if (AutofillTable::FromWebDatabase(db)->
419 RemoveAutofillDataModifiedBetween(
420 delete_begin,
421 delete_end,
422 &profile_guids,
423 &credit_card_guids)) {
424 for (std::vector<std::string>::iterator iter = profile_guids.begin();
425 iter != profile_guids.end(); ++iter) {
426 AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter,
427 NULL);
428 content::NotificationService::current()->Notify(
429 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
430 content::Source<AutofillWebDataService>(this),
431 content::Details<AutofillProfileChange>(&change));
432 }
433 // Note: It is the caller's responsibility to post notifications for any
434 // changes, e.g. by calling the Refresh() method of PersonalDataManager.
435 return WebDatabase::COMMIT_NEEDED;
436 }
437 return WebDatabase::COMMIT_NOT_NEEDED;
438 }
439
406 void AutofillWebDataServiceImpl::DestroyAutofillProfileResult( 440 void AutofillWebDataServiceImpl::DestroyAutofillProfileResult(
407 const WDTypedResult* result) { 441 const WDTypedResult* result) {
408 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT); 442 DCHECK(result->GetType() == AUTOFILL_PROFILES_RESULT);
409 const WDResult<std::vector<AutofillProfile*> >* r = 443 const WDResult<std::vector<AutofillProfile*> >* r =
410 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result); 444 static_cast<const WDResult<std::vector<AutofillProfile*> >*>(result);
411 std::vector<AutofillProfile*> profiles = r->GetValue(); 445 std::vector<AutofillProfile*> profiles = r->GetValue();
412 STLDeleteElements(&profiles); 446 STLDeleteElements(&profiles);
413 } 447 }
414 448
415 void AutofillWebDataServiceImpl::DestroyAutofillCreditCardResult( 449 void AutofillWebDataServiceImpl::DestroyAutofillCreditCardResult(
416 const WDTypedResult* result) { 450 const WDTypedResult* result) {
417 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT); 451 DCHECK(result->GetType() == AUTOFILL_CREDITCARDS_RESULT);
418 const WDResult<std::vector<CreditCard*> >* r = 452 const WDResult<std::vector<CreditCard*> >* r =
419 static_cast<const WDResult<std::vector<CreditCard*> >*>(result); 453 static_cast<const WDResult<std::vector<CreditCard*> >*>(result);
420 454
421 std::vector<CreditCard*> credit_cards = r->GetValue(); 455 std::vector<CreditCard*> credit_cards = r->GetValue();
422 STLDeleteElements(&credit_cards); 456 STLDeleteElements(&credit_cards);
423 } 457 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/autofill_web_data_service_impl.h ('k') | chrome/browser/webdata/web_data_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698