OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_table.h" | 5 #include "components/autofill/core/browser/webdata/autofill_table.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <limits> | 9 #include <limits> |
10 #include <map> | 10 #include <map> |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 return MigrateToVersion57AddFullNameField(); | 462 return MigrateToVersion57AddFullNameField(); |
463 case 60: | 463 case 60: |
464 *update_compatible_version = false; | 464 *update_compatible_version = false; |
465 return MigrateToVersion60AddServerCards(); | 465 return MigrateToVersion60AddServerCards(); |
466 case 61: | 466 case 61: |
467 *update_compatible_version = false; | 467 *update_compatible_version = false; |
468 return MigrateToVersion61AddUsageStats(); | 468 return MigrateToVersion61AddUsageStats(); |
469 case 62: | 469 case 62: |
470 *update_compatible_version = false; | 470 *update_compatible_version = false; |
471 return MigrateToVersion62AddUsageStatsForUnmaskedCards(); | 471 return MigrateToVersion62AddUsageStatsForUnmaskedCards(); |
| 472 case 63: |
| 473 *update_compatible_version = false; |
| 474 return MigrateToVersion63AddServerRecipientName(); |
472 } | 475 } |
473 return true; | 476 return true; |
474 } | 477 } |
475 | 478 |
476 bool AutofillTable::AddFormFieldValues( | 479 bool AutofillTable::AddFormFieldValues( |
477 const std::vector<FormFieldData>& elements, | 480 const std::vector<FormFieldData>& elements, |
478 std::vector<AutofillChange>* changes) { | 481 std::vector<AutofillChange>* changes) { |
479 return AddFormFieldValuesTime(elements, changes, Time::Now()); | 482 return AddFormFieldValuesTime(elements, changes, Time::Now()); |
480 } | 483 } |
481 | 484 |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 return s.Succeeded(); | 895 return s.Succeeded(); |
893 } | 896 } |
894 | 897 |
895 bool AutofillTable::GetAutofillServerProfiles( | 898 bool AutofillTable::GetAutofillServerProfiles( |
896 std::vector<AutofillProfile*>* profiles) { | 899 std::vector<AutofillProfile*>* profiles) { |
897 profiles->clear(); | 900 profiles->clear(); |
898 | 901 |
899 sql::Statement s(db_->GetUniqueStatement( | 902 sql::Statement s(db_->GetUniqueStatement( |
900 "SELECT " | 903 "SELECT " |
901 "id," | 904 "id," |
| 905 "recipient_name," |
902 "company_name," | 906 "company_name," |
903 "street_address," | 907 "street_address," |
904 "address_1," // ADDRESS_HOME_STATE | 908 "address_1," // ADDRESS_HOME_STATE |
905 "address_2," // ADDRESS_HOME_CITY | 909 "address_2," // ADDRESS_HOME_CITY |
906 "address_3," // ADDRESS_HOME_DEPENDENT_LOCALITY | 910 "address_3," // ADDRESS_HOME_DEPENDENT_LOCALITY |
907 "address_4," // Not supported in AutofillProfile yet. | 911 "address_4," // Not supported in AutofillProfile yet. |
908 "postal_code," // ADDRESS_HOME_ZIP | 912 "postal_code," // ADDRESS_HOME_ZIP |
909 "sorting_code," // ADDRESS_HOME_SORTING_CODE | 913 "sorting_code," // ADDRESS_HOME_SORTING_CODE |
910 "country_code," // ADDRESS_HOME_COUNTRY | 914 "country_code," // ADDRESS_HOME_COUNTRY |
911 "language_code " | 915 "language_code " |
912 "FROM server_addresses")); | 916 "FROM server_addresses")); |
913 | 917 |
914 while (s.Step()) { | 918 while (s.Step()) { |
915 int index = 0; | 919 int index = 0; |
916 scoped_ptr<AutofillProfile> profile(new AutofillProfile( | 920 scoped_ptr<AutofillProfile> profile(new AutofillProfile( |
917 AutofillProfile::SERVER_PROFILE, s.ColumnString(index++))); | 921 AutofillProfile::SERVER_PROFILE, s.ColumnString(index++))); |
918 | 922 |
| 923 profile->SetRawInfo(NAME_FULL, s.ColumnString16(index++)); |
919 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++)); | 924 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++)); |
920 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++)); | 925 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++)); |
921 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++)); | 926 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++)); |
922 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++)); | 927 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++)); |
923 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY, | 928 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY, |
924 s.ColumnString16(index++)); | 929 s.ColumnString16(index++)); |
925 index++; // Skip address_4 which we haven't added to AutofillProfile yet. | 930 index++; // Skip address_4 which we haven't added to AutofillProfile yet. |
926 profile->SetRawInfo(ADDRESS_HOME_ZIP, s.ColumnString16(index++)); | 931 profile->SetRawInfo(ADDRESS_HOME_ZIP, s.ColumnString16(index++)); |
927 profile->SetRawInfo(ADDRESS_HOME_SORTING_CODE, s.ColumnString16(index++)); | 932 profile->SetRawInfo(ADDRESS_HOME_SORTING_CODE, s.ColumnString16(index++)); |
928 profile->SetRawInfo(ADDRESS_HOME_COUNTRY, s.ColumnString16(index++)); | 933 profile->SetRawInfo(ADDRESS_HOME_COUNTRY, s.ColumnString16(index++)); |
929 profile->set_language_code(s.ColumnString(index++)); | 934 profile->set_language_code(s.ColumnString(index++)); |
930 | 935 |
931 profiles->push_back(profile.release()); | 936 profiles->push_back(profile.release()); |
932 } | 937 } |
933 | 938 |
934 return s.Succeeded(); | 939 return s.Succeeded(); |
935 } | 940 } |
936 | 941 |
937 void AutofillTable::SetAutofillServerProfiles( | 942 void AutofillTable::SetAutofillServerProfiles( |
938 const std::vector<AutofillProfile>& profiles) { | 943 const std::vector<AutofillProfile>& profiles) { |
939 // Delete all old ones first. | 944 // Delete all old ones first. |
940 sql::Statement delete_old(db_->GetUniqueStatement( | 945 sql::Statement delete_old(db_->GetUniqueStatement( |
941 "DELETE FROM server_addresses")); | 946 "DELETE FROM server_addresses")); |
942 delete_old.Run(); | 947 delete_old.Run(); |
943 | 948 |
944 sql::Statement insert(db_->GetUniqueStatement( | 949 sql::Statement insert(db_->GetUniqueStatement( |
945 "INSERT INTO server_addresses(" | 950 "INSERT INTO server_addresses(" |
946 "id," | 951 "id," |
| 952 "recipient_name," |
947 "company_name," | 953 "company_name," |
948 "street_address," | 954 "street_address," |
949 "address_1," // ADDRESS_HOME_STATE | 955 "address_1," // ADDRESS_HOME_STATE |
950 "address_2," // ADDRESS_HOME_CITY | 956 "address_2," // ADDRESS_HOME_CITY |
951 "address_3," // ADDRESS_HOME_DEPENDENT_LOCALITY | 957 "address_3," // ADDRESS_HOME_DEPENDENT_LOCALITY |
952 "address_4," // Not supported in AutofillProfile yet. | 958 "address_4," // Not supported in AutofillProfile yet. |
953 "postal_code," // ADDRESS_HOME_ZIP | 959 "postal_code," // ADDRESS_HOME_ZIP |
954 "sorting_code," // ADDRESS_HOME_SORTING_CODE | 960 "sorting_code," // ADDRESS_HOME_SORTING_CODE |
955 "country_code," // ADDRESS_HOME_COUNTRY | 961 "country_code," // ADDRESS_HOME_COUNTRY |
956 "language_code) " | 962 "language_code) " |
957 "VALUES (?,?,?,?,?,?,?,?,?,?,?)")); | 963 "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)")); |
958 for (const auto& profile : profiles) { | 964 for (const auto& profile : profiles) { |
959 DCHECK(profile.record_type() == AutofillProfile::SERVER_PROFILE); | 965 DCHECK(profile.record_type() == AutofillProfile::SERVER_PROFILE); |
960 | 966 |
961 int index = 0; | 967 int index = 0; |
962 insert.BindString(index++, profile.server_id()); | 968 insert.BindString(index++, profile.server_id()); |
| 969 insert.BindString16(index++, profile.GetRawInfo(NAME_FULL)); |
963 insert.BindString16(index++, profile.GetRawInfo(COMPANY_NAME)); | 970 insert.BindString16(index++, profile.GetRawInfo(COMPANY_NAME)); |
964 insert.BindString16(index++, | 971 insert.BindString16(index++, |
965 profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); | 972 profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); |
966 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_STATE)); | 973 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_STATE)); |
967 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_CITY)); | 974 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_CITY)); |
968 insert.BindString16(index++, | 975 insert.BindString16(index++, |
969 profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)); | 976 profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)); |
970 index++; // SKip address_4 which we haven't added to AutofillProfile yet. | 977 index++; // SKip address_4 which we haven't added to AutofillProfile yet. |
971 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_ZIP)); | 978 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_ZIP)); |
972 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)); | 979 insert.BindString16(index++, profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)); |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1664 "use_date INTEGER NOT NULL DEFAULT 0)")) { | 1671 "use_date INTEGER NOT NULL DEFAULT 0)")) { |
1665 NOTREACHED(); | 1672 NOTREACHED(); |
1666 return false; | 1673 return false; |
1667 } | 1674 } |
1668 } | 1675 } |
1669 return true; | 1676 return true; |
1670 } | 1677 } |
1671 | 1678 |
1672 bool AutofillTable::InitServerAddressesTable() { | 1679 bool AutofillTable::InitServerAddressesTable() { |
1673 if (!db_->DoesTableExist("server_addresses")) { | 1680 if (!db_->DoesTableExist("server_addresses")) { |
| 1681 // The space after language_code is necessary to match what sqlite does |
| 1682 // when it appends the column in migration. |
1674 if (!db_->Execute("CREATE TABLE server_addresses (" | 1683 if (!db_->Execute("CREATE TABLE server_addresses (" |
1675 "id VARCHAR," | 1684 "id VARCHAR," |
1676 "company_name VARCHAR," | 1685 "company_name VARCHAR," |
1677 "street_address VARCHAR," | 1686 "street_address VARCHAR," |
1678 "address_1 VARCHAR," | 1687 "address_1 VARCHAR," |
1679 "address_2 VARCHAR," | 1688 "address_2 VARCHAR," |
1680 "address_3 VARCHAR," | 1689 "address_3 VARCHAR," |
1681 "address_4 VARCHAR," | 1690 "address_4 VARCHAR," |
1682 "postal_code VARCHAR," | 1691 "postal_code VARCHAR," |
1683 "sorting_code VARCHAR," | 1692 "sorting_code VARCHAR," |
1684 "country_code VARCHAR," | 1693 "country_code VARCHAR," |
1685 "language_code VARCHAR)")) { | 1694 "language_code VARCHAR, " // Space required. |
| 1695 "recipient_name VARCHAR)")) { |
1686 NOTREACHED(); | 1696 NOTREACHED(); |
1687 return false; | 1697 return false; |
1688 } | 1698 } |
1689 } | 1699 } |
1690 return true; | 1700 return true; |
1691 } | 1701 } |
1692 | 1702 |
1693 bool AutofillTable::MigrateToVersion54AddI18nFieldsAndRemoveDeprecatedFields() { | 1703 bool AutofillTable::MigrateToVersion54AddI18nFieldsAndRemoveDeprecatedFields() { |
1694 sql::Transaction transaction(db_); | 1704 sql::Transaction transaction(db_); |
1695 if (!transaction.Begin()) | 1705 if (!transaction.Begin()) |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1959 // Add use_date to unmasked_credit_cards. | 1969 // Add use_date to unmasked_credit_cards. |
1960 if (!db_->DoesColumnExist("unmasked_credit_cards", "use_date") && | 1970 if (!db_->DoesColumnExist("unmasked_credit_cards", "use_date") && |
1961 !db_->Execute("ALTER TABLE unmasked_credit_cards ADD COLUMN " | 1971 !db_->Execute("ALTER TABLE unmasked_credit_cards ADD COLUMN " |
1962 "use_date INTEGER NOT NULL DEFAULT 0")) { | 1972 "use_date INTEGER NOT NULL DEFAULT 0")) { |
1963 return false; | 1973 return false; |
1964 } | 1974 } |
1965 | 1975 |
1966 return transaction.Commit(); | 1976 return transaction.Commit(); |
1967 } | 1977 } |
1968 | 1978 |
| 1979 bool AutofillTable::MigrateToVersion63AddServerRecipientName() { |
| 1980 if (!db_->DoesColumnExist("server_addresses", "recipient_name") && |
| 1981 !db_->Execute("ALTER TABLE server_addresses ADD COLUMN " |
| 1982 "recipient_name VARCHAR")) { |
| 1983 return false; |
| 1984 } |
| 1985 return true; |
| 1986 } |
| 1987 |
1969 } // namespace autofill | 1988 } // namespace autofill |
OLD | NEW |