Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/core/browser/webdata/autofill_profile_syncable_ser vice.h" | 5 #include "components/autofill/core/browser/webdata/autofill_profile_syncable_ser vice.h" |
| 6 | 6 |
| 7 #include "base/guid.h" | 7 #include "base/guid.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 317 bool diff = false; | 317 bool diff = false; |
| 318 if (specifics.has_origin() && profile->origin() != specifics.origin()) { | 318 if (specifics.has_origin() && profile->origin() != specifics.origin()) { |
| 319 bool was_verified = profile->IsVerified(); | 319 bool was_verified = profile->IsVerified(); |
| 320 profile->set_origin(specifics.origin()); | 320 profile->set_origin(specifics.origin()); |
| 321 diff = true; | 321 diff = true; |
| 322 | 322 |
| 323 // Verified profiles should never be overwritten by unverified ones. | 323 // Verified profiles should never be overwritten by unverified ones. |
| 324 DCHECK(!was_verified || profile->IsVerified()); | 324 DCHECK(!was_verified || profile->IsVerified()); |
| 325 } | 325 } |
| 326 | 326 |
| 327 // Update all multivalued fields: names, emails, and phones. | 327 // Update all multivalued fields: names, emails, and phones. |
|
vabr (Chromium)
2015/07/08 13:20:04
The comment looks obsolete, please update.
Deepak
2015/07/08 14:53:36
Done.
| |
| 328 diff = UpdateMultivaluedField(NAME_FIRST, | 328 ::google::protobuf::RepeatedPtrField<std::string> values = |
| 329 specifics.name_first(), profile) || diff; | 329 specifics.name_first(); |
| 330 diff = UpdateMultivaluedField(NAME_MIDDLE, | 330 diff = |
| 331 specifics.name_middle(), profile) || diff; | 331 UpdateField(NAME_FIRST, values.size() < 1 ? std::string() : values.Get(0), |
| 332 diff = UpdateMultivaluedField(NAME_LAST, | 332 profile) || diff; |
| 333 specifics.name_last(), profile) || diff; | 333 values = specifics.name_middle(); |
| 334 diff = | |
| 335 UpdateField(NAME_MIDDLE, | |
| 336 values.size() < 1 ? std::string() : values.Get(0), | |
| 337 profile) || diff; | |
| 338 values = specifics.name_last(); | |
| 339 diff = | |
| 340 UpdateField(NAME_LAST, values.size() < 1 ? std::string() : values.Get(0), | |
| 341 profile) || diff; | |
| 334 // Older versions don't have a separate full name; don't overwrite full name | 342 // Older versions don't have a separate full name; don't overwrite full name |
| 335 // in this case. | 343 // in this case. |
| 336 if (specifics.name_full().size() > 0) { | 344 if (specifics.name_full().size() > 0) { |
| 337 diff = UpdateMultivaluedField(NAME_FULL, | 345 values = specifics.name_full(); |
| 338 specifics.name_full(), profile) || diff; | 346 diff = UpdateField(NAME_FULL, |
| 347 values.size() < 1 ? std::string() : values.Get(0), | |
| 348 profile) || diff; | |
| 339 } | 349 } |
| 340 diff = UpdateMultivaluedField(EMAIL_ADDRESS, | 350 values = specifics.email_address(); |
| 341 specifics.email_address(), profile) || diff; | 351 diff = |
| 342 diff = UpdateMultivaluedField(PHONE_HOME_WHOLE_NUMBER, | 352 UpdateField(EMAIL_ADDRESS, |
| 343 specifics.phone_home_whole_number(), | 353 values.size() < 1 ? std::string() : values.Get(0), |
| 344 profile) || diff; | 354 profile) || diff; |
| 355 values = specifics.phone_home_whole_number(); | |
| 356 diff = | |
| 357 UpdateField(PHONE_HOME_WHOLE_NUMBER, | |
| 358 values.size() < 1 ? std::string() : values.Get(0), | |
| 359 profile) || diff; | |
| 345 | 360 |
| 346 // Update all simple single-valued address fields. | 361 // Update all simple single-valued address fields. |
| 347 diff = UpdateField(COMPANY_NAME, specifics.company_name(), profile) || diff; | 362 diff = UpdateField(COMPANY_NAME, specifics.company_name(), profile) || diff; |
| 348 diff = UpdateField(ADDRESS_HOME_CITY, | 363 diff = UpdateField(ADDRESS_HOME_CITY, |
| 349 specifics.address_home_city(), profile) || diff; | 364 specifics.address_home_city(), profile) || diff; |
| 350 diff = UpdateField(ADDRESS_HOME_STATE, | 365 diff = UpdateField(ADDRESS_HOME_STATE, |
| 351 specifics.address_home_state(), profile) || diff; | 366 specifics.address_home_state(), profile) || diff; |
| 352 diff = UpdateField(ADDRESS_HOME_ZIP, | 367 diff = UpdateField(ADDRESS_HOME_ZIP, |
| 353 specifics.address_home_zip(), profile) || diff; | 368 specifics.address_home_zip(), profile) || diff; |
| 354 diff = UpdateField(ADDRESS_HOME_SORTING_CODE, | 369 diff = UpdateField(ADDRESS_HOME_SORTING_CODE, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 449 specifics->set_address_home_sorting_code( | 464 specifics->set_address_home_sorting_code( |
| 450 LimitData(UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)))); | 465 LimitData(UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)))); |
| 451 specifics->set_address_home_dependent_locality( | 466 specifics->set_address_home_dependent_locality( |
| 452 LimitData( | 467 LimitData( |
| 453 UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)))); | 468 UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)))); |
| 454 specifics->set_address_home_language_code(LimitData(profile.language_code())); | 469 specifics->set_address_home_language_code(LimitData(profile.language_code())); |
| 455 | 470 |
| 456 // TODO(estade): this should be set_email_address. | 471 // TODO(estade): this should be set_email_address. |
| 457 specifics->add_email_address( | 472 specifics->add_email_address( |
| 458 LimitData(UTF16ToUTF8(profile.GetRawInfo(EMAIL_ADDRESS)))); | 473 LimitData(UTF16ToUTF8(profile.GetRawInfo(EMAIL_ADDRESS)))); |
| 459 std::vector<base::string16> values; | |
| 460 | 474 |
| 461 specifics->set_company_name( | 475 specifics->set_company_name( |
| 462 LimitData(UTF16ToUTF8(profile.GetRawInfo(COMPANY_NAME)))); | 476 LimitData(UTF16ToUTF8(profile.GetRawInfo(COMPANY_NAME)))); |
| 463 | 477 |
| 464 // TODO(estade): this should be set_phone_home_whole_number. | 478 // TODO(estade): this should be set_phone_home_whole_number. |
| 465 specifics->add_phone_home_whole_number( | 479 specifics->add_phone_home_whole_number( |
| 466 LimitData(UTF16ToUTF8(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)))); | 480 LimitData(UTF16ToUTF8(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)))); |
| 467 } | 481 } |
| 468 | 482 |
| 469 void AutofillProfileSyncableService::CreateGUIDToProfileMap( | 483 void AutofillProfileSyncableService::CreateGUIDToProfileMap( |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 617 bool AutofillProfileSyncableService::UpdateField( | 631 bool AutofillProfileSyncableService::UpdateField( |
| 618 ServerFieldType field_type, | 632 ServerFieldType field_type, |
| 619 const std::string& new_value, | 633 const std::string& new_value, |
| 620 AutofillProfile* autofill_profile) { | 634 AutofillProfile* autofill_profile) { |
| 621 if (UTF16ToUTF8(autofill_profile->GetRawInfo(field_type)) == new_value) | 635 if (UTF16ToUTF8(autofill_profile->GetRawInfo(field_type)) == new_value) |
| 622 return false; | 636 return false; |
| 623 autofill_profile->SetRawInfo(field_type, UTF8ToUTF16(new_value)); | 637 autofill_profile->SetRawInfo(field_type, UTF8ToUTF16(new_value)); |
| 624 return true; | 638 return true; |
| 625 } | 639 } |
| 626 | 640 |
| 627 // TODO(estade): remove this function. | |
| 628 bool AutofillProfileSyncableService::UpdateMultivaluedField( | |
| 629 ServerFieldType field_type, | |
| 630 const ::google::protobuf::RepeatedPtrField<std::string>& new_values, | |
| 631 AutofillProfile* autofill_profile) { | |
| 632 return UpdateField(field_type, | |
| 633 new_values.size() < 1 ? std::string() : new_values.Get(0), | |
| 634 autofill_profile); | |
| 635 } | |
| 636 | |
| 637 bool AutofillProfileSyncableService::MergeProfile( | 641 bool AutofillProfileSyncableService::MergeProfile( |
| 638 const AutofillProfile& merge_from, | 642 const AutofillProfile& merge_from, |
| 639 AutofillProfile* merge_into, | 643 AutofillProfile* merge_into, |
| 640 const std::string& app_locale) { | 644 const std::string& app_locale) { |
| 641 // Overwrites all values. Does not overwrite GUID. | 645 // Overwrites all values. Does not overwrite GUID. |
| 642 merge_into->OverwriteWith(merge_from, app_locale); | 646 merge_into->OverwriteWith(merge_from, app_locale); |
| 643 return !merge_into->EqualsForSyncPurposes(merge_from); | 647 return !merge_into->EqualsForSyncPurposes(merge_from); |
| 644 } | 648 } |
| 645 | 649 |
| 646 AutofillTable* AutofillProfileSyncableService::GetAutofillTable() const { | 650 AutofillTable* AutofillProfileSyncableService::GetAutofillTable() const { |
| 647 return AutofillTable::FromWebDatabase(webdata_backend_->GetDatabase()); | 651 return AutofillTable::FromWebDatabase(webdata_backend_->GetDatabase()); |
| 648 } | 652 } |
| 649 | 653 |
| 650 void AutofillProfileSyncableService::InjectStartSyncFlare( | 654 void AutofillProfileSyncableService::InjectStartSyncFlare( |
| 651 const syncer::SyncableService::StartSyncFlare& flare) { | 655 const syncer::SyncableService::StartSyncFlare& flare) { |
| 652 flare_ = flare; | 656 flare_ = flare; |
| 653 } | 657 } |
| 654 | 658 |
| 655 AutofillProfileSyncableService::DataBundle::DataBundle() {} | 659 AutofillProfileSyncableService::DataBundle::DataBundle() {} |
| 656 | 660 |
| 657 AutofillProfileSyncableService::DataBundle::~DataBundle() {} | 661 AutofillProfileSyncableService::DataBundle::~DataBundle() {} |
| 658 | 662 |
| 659 } // namespace autofill | 663 } // namespace autofill |
| OLD | NEW |