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 "chrome/browser/webdata/autocomplete_syncable_service.h" | 5 #include "chrome/browser/webdata/autocomplete_syncable_service.h" |
6 | 6 |
7 #include "base/location.h" | 7 #include "base/location.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 | 292 |
293 DCHECK_EQ(web_data_service_, wds); | 293 DCHECK_EQ(web_data_service_, wds); |
294 | 294 |
295 AutofillChangeList* changes = | 295 AutofillChangeList* changes = |
296 content::Details<AutofillChangeList>(details).ptr(); | 296 content::Details<AutofillChangeList>(details).ptr(); |
297 ActOnChanges(*changes); | 297 ActOnChanges(*changes); |
298 } | 298 } |
299 | 299 |
300 bool AutocompleteSyncableService::LoadAutofillData( | 300 bool AutocompleteSyncableService::LoadAutofillData( |
301 std::vector<AutofillEntry>* entries) const { | 301 std::vector<AutofillEntry>* entries) const { |
302 return web_data_service_->GetDatabase()-> | 302 return AutofillTable::FromWebDatabase( |
303 GetAutofillTable()->GetAllAutofillEntries(entries); | 303 web_data_service_->GetDatabase())->GetAllAutofillEntries(entries); |
304 } | 304 } |
305 | 305 |
306 bool AutocompleteSyncableService::SaveChangesToWebData( | 306 bool AutocompleteSyncableService::SaveChangesToWebData( |
307 const std::vector<AutofillEntry>& new_entries) { | 307 const std::vector<AutofillEntry>& new_entries) { |
308 DCHECK(CalledOnValidThread()); | 308 DCHECK(CalledOnValidThread()); |
309 | 309 |
310 if (!new_entries.empty() && | 310 if (!new_entries.empty() && |
311 !web_data_service_->GetDatabase()-> | 311 !AutofillTable::FromWebDatabase( |
312 GetAutofillTable()->UpdateAutofillEntries(new_entries)) { | 312 web_data_service_->GetDatabase())->UpdateAutofillEntries( |
| 313 new_entries)) { |
313 return false; | 314 return false; |
314 } | 315 } |
315 return true; | 316 return true; |
316 } | 317 } |
317 | 318 |
318 // Creates or updates an autocomplete entry based on |data|. | 319 // Creates or updates an autocomplete entry based on |data|. |
319 void AutocompleteSyncableService::CreateOrUpdateEntry( | 320 void AutocompleteSyncableService::CreateOrUpdateEntry( |
320 const syncer::SyncData& data, | 321 const syncer::SyncData& data, |
321 AutocompleteEntryMap* loaded_data, | 322 AutocompleteEntryMap* loaded_data, |
322 std::vector<AutofillEntry>* new_entries) { | 323 std::vector<AutofillEntry>* new_entries) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 autofill->set_value(UTF16ToUTF8(entry.key().value())); | 375 autofill->set_value(UTF16ToUTF8(entry.key().value())); |
375 const std::vector<base::Time>& ts(entry.timestamps()); | 376 const std::vector<base::Time>& ts(entry.timestamps()); |
376 for (std::vector<base::Time>::const_iterator timestamp = ts.begin(); | 377 for (std::vector<base::Time>::const_iterator timestamp = ts.begin(); |
377 timestamp != ts.end(); ++timestamp) { | 378 timestamp != ts.end(); ++timestamp) { |
378 autofill->add_usage_timestamp(timestamp->ToInternalValue()); | 379 autofill->add_usage_timestamp(timestamp->ToInternalValue()); |
379 } | 380 } |
380 } | 381 } |
381 | 382 |
382 syncer::SyncError AutocompleteSyncableService::AutofillEntryDelete( | 383 syncer::SyncError AutocompleteSyncableService::AutofillEntryDelete( |
383 const sync_pb::AutofillSpecifics& autofill) { | 384 const sync_pb::AutofillSpecifics& autofill) { |
384 if (!web_data_service_->GetDatabase()->GetAutofillTable()->RemoveFormElement( | 385 if (!AutofillTable::FromWebDatabase( |
385 UTF8ToUTF16(autofill.name()), UTF8ToUTF16(autofill.value()))) { | 386 web_data_service_->GetDatabase())->RemoveFormElement( |
| 387 UTF8ToUTF16(autofill.name()), UTF8ToUTF16(autofill.value()))) { |
386 return error_handler_->CreateAndUploadError( | 388 return error_handler_->CreateAndUploadError( |
387 FROM_HERE, | 389 FROM_HERE, |
388 "Could not remove autocomplete entry from WebDatabase."); | 390 "Could not remove autocomplete entry from WebDatabase."); |
389 } | 391 } |
390 return syncer::SyncError(); | 392 return syncer::SyncError(); |
391 } | 393 } |
392 | 394 |
393 void AutocompleteSyncableService::ActOnChanges( | 395 void AutocompleteSyncableService::ActOnChanges( |
394 const AutofillChangeList& changes) { | 396 const AutofillChangeList& changes) { |
395 DCHECK(sync_processor_.get()); | 397 DCHECK(sync_processor_.get()); |
396 syncer::SyncChangeList new_changes; | 398 syncer::SyncChangeList new_changes; |
397 for (AutofillChangeList::const_iterator change = changes.begin(); | 399 for (AutofillChangeList::const_iterator change = changes.begin(); |
398 change != changes.end(); ++change) { | 400 change != changes.end(); ++change) { |
399 switch (change->type()) { | 401 switch (change->type()) { |
400 case AutofillChange::ADD: | 402 case AutofillChange::ADD: |
401 case AutofillChange::UPDATE: { | 403 case AutofillChange::UPDATE: { |
402 std::vector<base::Time> timestamps; | 404 std::vector<base::Time> timestamps; |
403 if (!web_data_service_->GetDatabase()-> | 405 if (!AutofillTable::FromWebDatabase( |
404 GetAutofillTable()->GetAutofillTimestamps( | 406 web_data_service_->GetDatabase())->GetAutofillTimestamps( |
405 change->key().name(), | 407 change->key().name(), |
406 change->key().value(), | 408 change->key().value(), |
407 ×tamps)) { | 409 ×tamps)) { |
408 NOTREACHED(); | 410 NOTREACHED(); |
409 return; | 411 return; |
410 } | 412 } |
411 AutofillEntry entry(change->key(), timestamps); | 413 AutofillEntry entry(change->key(), timestamps); |
412 syncer::SyncChange::SyncChangeType change_type = | 414 syncer::SyncChange::SyncChangeType change_type = |
413 (change->type() == AutofillChange::ADD) ? | 415 (change->type() == AutofillChange::ADD) ? |
414 syncer::SyncChange::ACTION_ADD : | 416 syncer::SyncChange::ACTION_ADD : |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 UTF16ToUTF8(entry.key().value()))); | 457 UTF16ToUTF8(entry.key().value()))); |
456 return syncer::SyncData::CreateLocalData(tag, tag, autofill_specifics); | 458 return syncer::SyncData::CreateLocalData(tag, tag, autofill_specifics); |
457 } | 459 } |
458 | 460 |
459 // static | 461 // static |
460 std::string AutocompleteSyncableService::KeyToTag(const std::string& name, | 462 std::string AutocompleteSyncableService::KeyToTag(const std::string& name, |
461 const std::string& value) { | 463 const std::string& value) { |
462 std::string ns(kAutofillEntryNamespaceTag); | 464 std::string ns(kAutofillEntryNamespaceTag); |
463 return ns + net::EscapePath(name) + "|" + net::EscapePath(value); | 465 return ns + net::EscapePath(name) + "|" + net::EscapePath(value); |
464 } | 466 } |
OLD | NEW |