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

Side by Side Diff: components/autofill/core/browser/webdata/autofill_table.cc

Issue 1859453002: components/autofill: scoped_ptr -> unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments addressed Created 4 years, 8 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
OLDNEW
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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_ZIP)); 92 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_ZIP));
93 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_SORTING_CODE)); 93 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_SORTING_CODE));
94 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_COUNTRY)); 94 s->BindString16(index++, GetInfo(profile, ADDRESS_HOME_COUNTRY));
95 s->BindInt64(index++, profile.use_count()); 95 s->BindInt64(index++, profile.use_count());
96 s->BindInt64(index++, profile.use_date().ToTimeT()); 96 s->BindInt64(index++, profile.use_date().ToTimeT());
97 s->BindInt64(index++, modification_date.ToTimeT()); 97 s->BindInt64(index++, modification_date.ToTimeT());
98 s->BindString(index++, profile.origin()); 98 s->BindString(index++, profile.origin());
99 s->BindString(index++, profile.language_code()); 99 s->BindString(index++, profile.language_code());
100 } 100 }
101 101
102 scoped_ptr<AutofillProfile> AutofillProfileFromStatement( 102 std::unique_ptr<AutofillProfile> AutofillProfileFromStatement(
103 const sql::Statement& s) { 103 const sql::Statement& s) {
104 scoped_ptr<AutofillProfile> profile(new AutofillProfile); 104 std::unique_ptr<AutofillProfile> profile(new AutofillProfile);
105 int index = 0; 105 int index = 0;
106 profile->set_guid(s.ColumnString(index++)); 106 profile->set_guid(s.ColumnString(index++));
107 DCHECK(base::IsValidGUID(profile->guid())); 107 DCHECK(base::IsValidGUID(profile->guid()));
108 108
109 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++)); 109 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++));
110 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++)); 110 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++));
111 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY, 111 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY,
112 s.ColumnString16(index++)); 112 s.ColumnString16(index++));
113 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++)); 113 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++));
114 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++)); 114 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 if (encrypted_number_len) { 159 if (encrypted_number_len) {
160 std::string encrypted_number; 160 std::string encrypted_number;
161 encrypted_number.resize(encrypted_number_len); 161 encrypted_number.resize(encrypted_number_len);
162 memcpy(&encrypted_number[0], s.ColumnBlob(column_index), 162 memcpy(&encrypted_number[0], s.ColumnBlob(column_index),
163 encrypted_number_len); 163 encrypted_number_len);
164 OSCrypt::DecryptString16(encrypted_number, &credit_card_number); 164 OSCrypt::DecryptString16(encrypted_number, &credit_card_number);
165 } 165 }
166 return credit_card_number; 166 return credit_card_number;
167 } 167 }
168 168
169 scoped_ptr<CreditCard> CreditCardFromStatement(const sql::Statement& s) { 169 std::unique_ptr<CreditCard> CreditCardFromStatement(const sql::Statement& s) {
170 scoped_ptr<CreditCard> credit_card(new CreditCard); 170 std::unique_ptr<CreditCard> credit_card(new CreditCard);
171 171
172 int index = 0; 172 int index = 0;
173 credit_card->set_guid(s.ColumnString(index++)); 173 credit_card->set_guid(s.ColumnString(index++));
174 DCHECK(base::IsValidGUID(credit_card->guid())); 174 DCHECK(base::IsValidGUID(credit_card->guid()));
175 175
176 credit_card->SetRawInfo(CREDIT_CARD_NAME_FULL, s.ColumnString16(index++)); 176 credit_card->SetRawInfo(CREDIT_CARD_NAME_FULL, s.ColumnString16(index++));
177 credit_card->SetRawInfo(CREDIT_CARD_EXP_MONTH, s.ColumnString16(index++)); 177 credit_card->SetRawInfo(CREDIT_CARD_EXP_MONTH, s.ColumnString16(index++));
178 credit_card->SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, 178 credit_card->SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR,
179 s.ColumnString16(index++)); 179 s.ColumnString16(index++));
180 credit_card->SetRawInfo(CREDIT_CARD_NUMBER, 180 credit_card->SetRawInfo(CREDIT_CARD_NUMBER,
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 " date_modified, origin, language_code)" 867 " date_modified, origin, language_code)"
868 "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)")); 868 "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"));
869 BindAutofillProfileToStatement(profile, Time::Now(), &s); 869 BindAutofillProfileToStatement(profile, Time::Now(), &s);
870 870
871 if (!s.Run()) 871 if (!s.Run())
872 return false; 872 return false;
873 873
874 return AddAutofillProfilePieces(profile, db_); 874 return AddAutofillProfilePieces(profile, db_);
875 } 875 }
876 876
877 scoped_ptr<AutofillProfile> AutofillTable::GetAutofillProfile( 877 std::unique_ptr<AutofillProfile> AutofillTable::GetAutofillProfile(
878 const std::string& guid) { 878 const std::string& guid) {
879 DCHECK(base::IsValidGUID(guid)); 879 DCHECK(base::IsValidGUID(guid));
880 sql::Statement s(db_->GetUniqueStatement( 880 sql::Statement s(db_->GetUniqueStatement(
881 "SELECT guid, company_name, street_address, dependent_locality, city," 881 "SELECT guid, company_name, street_address, dependent_locality, city,"
882 " state, zipcode, sorting_code, country_code, use_count, use_date," 882 " state, zipcode, sorting_code, country_code, use_count, use_date,"
883 " date_modified, origin, language_code " 883 " date_modified, origin, language_code "
884 "FROM autofill_profiles " 884 "FROM autofill_profiles "
885 "WHERE guid=?")); 885 "WHERE guid=?"));
886 s.BindString(0, guid); 886 s.BindString(0, guid);
887 887
888 scoped_ptr<AutofillProfile> p; 888 std::unique_ptr<AutofillProfile> p;
889 if (!s.Step()) 889 if (!s.Step())
890 return p; 890 return p;
891 891
892 p = AutofillProfileFromStatement(s); 892 p = AutofillProfileFromStatement(s);
893 893
894 // Get associated name info. 894 // Get associated name info.
895 AddAutofillProfileNamesToProfile(db_, p.get()); 895 AddAutofillProfileNamesToProfile(db_, p.get());
896 896
897 // Get associated email info. 897 // Get associated email info.
898 AddAutofillProfileEmailsToProfile(db_, p.get()); 898 AddAutofillProfileEmailsToProfile(db_, p.get());
899 899
900 // Get associated phone info. 900 // Get associated phone info.
901 AddAutofillProfilePhonesToProfile(db_, p.get()); 901 AddAutofillProfilePhonesToProfile(db_, p.get());
902 902
903 return p; 903 return p;
904 } 904 }
905 905
906 bool AutofillTable::GetAutofillProfiles( 906 bool AutofillTable::GetAutofillProfiles(
907 std::vector<AutofillProfile*>* profiles) { 907 std::vector<AutofillProfile*>* profiles) {
908 DCHECK(profiles); 908 DCHECK(profiles);
909 profiles->clear(); 909 profiles->clear();
910 910
911 sql::Statement s(db_->GetUniqueStatement( 911 sql::Statement s(db_->GetUniqueStatement(
912 "SELECT guid " 912 "SELECT guid "
913 "FROM autofill_profiles " 913 "FROM autofill_profiles "
914 "ORDER BY date_modified DESC, guid")); 914 "ORDER BY date_modified DESC, guid"));
915 915
916 while (s.Step()) { 916 while (s.Step()) {
917 std::string guid = s.ColumnString(0); 917 std::string guid = s.ColumnString(0);
918 scoped_ptr<AutofillProfile> profile = GetAutofillProfile(guid); 918 std::unique_ptr<AutofillProfile> profile = GetAutofillProfile(guid);
919 if (!profile) 919 if (!profile)
920 return false; 920 return false;
921 profiles->push_back(profile.release()); 921 profiles->push_back(profile.release());
922 } 922 }
923 923
924 return s.Succeeded(); 924 return s.Succeeded();
925 } 925 }
926 926
927 bool AutofillTable::GetServerProfiles(std::vector<AutofillProfile*>* profiles) { 927 bool AutofillTable::GetServerProfiles(std::vector<AutofillProfile*>* profiles) {
928 profiles->clear(); 928 profiles->clear();
(...skipping 13 matching lines...) Expand all
942 "postal_code," // ADDRESS_HOME_ZIP 942 "postal_code," // ADDRESS_HOME_ZIP
943 "sorting_code," // ADDRESS_HOME_SORTING_CODE 943 "sorting_code," // ADDRESS_HOME_SORTING_CODE
944 "country_code," // ADDRESS_HOME_COUNTRY 944 "country_code," // ADDRESS_HOME_COUNTRY
945 "phone_number," // PHONE_HOME_WHOLE_NUMBER 945 "phone_number," // PHONE_HOME_WHOLE_NUMBER
946 "language_code " 946 "language_code "
947 "FROM server_addresses addresses " 947 "FROM server_addresses addresses "
948 "LEFT OUTER JOIN server_address_metadata USING (id)")); 948 "LEFT OUTER JOIN server_address_metadata USING (id)"));
949 949
950 while (s.Step()) { 950 while (s.Step()) {
951 int index = 0; 951 int index = 0;
952 scoped_ptr<AutofillProfile> profile(new AutofillProfile( 952 std::unique_ptr<AutofillProfile> profile(new AutofillProfile(
953 AutofillProfile::SERVER_PROFILE, s.ColumnString(index++))); 953 AutofillProfile::SERVER_PROFILE, s.ColumnString(index++)));
954 profile->set_use_count(s.ColumnInt64(index++)); 954 profile->set_use_count(s.ColumnInt64(index++));
955 profile->set_use_date(Time::FromInternalValue(s.ColumnInt64(index++))); 955 profile->set_use_date(Time::FromInternalValue(s.ColumnInt64(index++)));
956 956
957 base::string16 recipient_name = s.ColumnString16(index++); 957 base::string16 recipient_name = s.ColumnString16(index++);
958 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++)); 958 profile->SetRawInfo(COMPANY_NAME, s.ColumnString16(index++));
959 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++)); 959 profile->SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, s.ColumnString16(index++));
960 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++)); 960 profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(index++));
961 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++)); 961 profile->SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(index++));
962 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY, 962 profile->SetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 } 1042 }
1043 1043
1044 bool AutofillTable::UpdateAutofillProfile(const AutofillProfile& profile) { 1044 bool AutofillTable::UpdateAutofillProfile(const AutofillProfile& profile) {
1045 DCHECK(base::IsValidGUID(profile.guid())); 1045 DCHECK(base::IsValidGUID(profile.guid()));
1046 1046
1047 // Don't update anything until the trash has been emptied. There may be 1047 // Don't update anything until the trash has been emptied. There may be
1048 // pending modifications to process. 1048 // pending modifications to process.
1049 if (!IsAutofillProfilesTrashEmpty()) 1049 if (!IsAutofillProfilesTrashEmpty())
1050 return true; 1050 return true;
1051 1051
1052 scoped_ptr<AutofillProfile> old_profile = GetAutofillProfile(profile.guid()); 1052 std::unique_ptr<AutofillProfile> old_profile =
1053 GetAutofillProfile(profile.guid());
1053 if (!old_profile) 1054 if (!old_profile)
1054 return false; 1055 return false;
1055 1056
1056 bool update_modification_date = *old_profile != profile; 1057 bool update_modification_date = *old_profile != profile;
1057 1058
1058 sql::Statement s(db_->GetUniqueStatement( 1059 sql::Statement s(db_->GetUniqueStatement(
1059 "UPDATE autofill_profiles " 1060 "UPDATE autofill_profiles "
1060 "SET guid=?, company_name=?, street_address=?, dependent_locality=?, " 1061 "SET guid=?, company_name=?, street_address=?, dependent_locality=?, "
1061 " city=?, state=?, zipcode=?, sorting_code=?, country_code=?, " 1062 " city=?, state=?, zipcode=?, sorting_code=?, country_code=?, "
1062 " use_count=?, use_date=?, date_modified=?, origin=?, language_code=? " 1063 " use_count=?, use_date=?, date_modified=?, origin=?, language_code=? "
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 "VALUES (?,?,?,?,?,?,?,?,?)")); 1136 "VALUES (?,?,?,?,?,?,?,?,?)"));
1136 BindCreditCardToStatement(credit_card, Time::Now(), &s); 1137 BindCreditCardToStatement(credit_card, Time::Now(), &s);
1137 1138
1138 if (!s.Run()) 1139 if (!s.Run())
1139 return false; 1140 return false;
1140 1141
1141 DCHECK_GT(db_->GetLastChangeCount(), 0); 1142 DCHECK_GT(db_->GetLastChangeCount(), 0);
1142 return true; 1143 return true;
1143 } 1144 }
1144 1145
1145 scoped_ptr<CreditCard> AutofillTable::GetCreditCard(const std::string& guid) { 1146 std::unique_ptr<CreditCard> AutofillTable::GetCreditCard(
1147 const std::string& guid) {
1146 DCHECK(base::IsValidGUID(guid)); 1148 DCHECK(base::IsValidGUID(guid));
1147 sql::Statement s(db_->GetUniqueStatement( 1149 sql::Statement s(db_->GetUniqueStatement(
1148 "SELECT guid, name_on_card, expiration_month, expiration_year, " 1150 "SELECT guid, name_on_card, expiration_month, expiration_year, "
1149 "card_number_encrypted, use_count, use_date, date_modified, " 1151 "card_number_encrypted, use_count, use_date, date_modified, "
1150 "origin " 1152 "origin "
1151 "FROM credit_cards " 1153 "FROM credit_cards "
1152 "WHERE guid = ?")); 1154 "WHERE guid = ?"));
1153 s.BindString(0, guid); 1155 s.BindString(0, guid);
1154 1156
1155 if (!s.Step()) 1157 if (!s.Step())
1156 return scoped_ptr<CreditCard>(); 1158 return std::unique_ptr<CreditCard>();
1157 1159
1158 return CreditCardFromStatement(s); 1160 return CreditCardFromStatement(s);
1159 } 1161 }
1160 1162
1161 bool AutofillTable::GetCreditCards( 1163 bool AutofillTable::GetCreditCards(
1162 std::vector<CreditCard*>* credit_cards) { 1164 std::vector<CreditCard*>* credit_cards) {
1163 DCHECK(credit_cards); 1165 DCHECK(credit_cards);
1164 credit_cards->clear(); 1166 credit_cards->clear();
1165 1167
1166 sql::Statement s(db_->GetUniqueStatement( 1168 sql::Statement s(db_->GetUniqueStatement(
1167 "SELECT guid " 1169 "SELECT guid "
1168 "FROM credit_cards " 1170 "FROM credit_cards "
1169 "ORDER BY date_modified DESC, guid")); 1171 "ORDER BY date_modified DESC, guid"));
1170 1172
1171 while (s.Step()) { 1173 while (s.Step()) {
1172 std::string guid = s.ColumnString(0); 1174 std::string guid = s.ColumnString(0);
1173 scoped_ptr<CreditCard> credit_card = GetCreditCard(guid); 1175 std::unique_ptr<CreditCard> credit_card = GetCreditCard(guid);
1174 if (!credit_card) 1176 if (!credit_card)
1175 return false; 1177 return false;
1176 credit_cards->push_back(credit_card.release()); 1178 credit_cards->push_back(credit_card.release());
1177 } 1179 }
1178 1180
1179 return s.Succeeded(); 1181 return s.Succeeded();
1180 } 1182 }
1181 1183
1182 bool AutofillTable::GetServerCreditCards( 1184 bool AutofillTable::GetServerCreditCards(
1183 std::vector<CreditCard*>* credit_cards) { 1185 std::vector<CreditCard*>* credit_cards) {
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 address_metadata.Run(); 1412 address_metadata.Run();
1411 changed |= db_->GetLastChangeCount() > 0; 1413 changed |= db_->GetLastChangeCount() > 0;
1412 1414
1413 transaction.Commit(); 1415 transaction.Commit();
1414 return changed; 1416 return changed;
1415 } 1417 }
1416 1418
1417 bool AutofillTable::UpdateCreditCard(const CreditCard& credit_card) { 1419 bool AutofillTable::UpdateCreditCard(const CreditCard& credit_card) {
1418 DCHECK(base::IsValidGUID(credit_card.guid())); 1420 DCHECK(base::IsValidGUID(credit_card.guid()));
1419 1421
1420 scoped_ptr<CreditCard> old_credit_card = GetCreditCard(credit_card.guid()); 1422 std::unique_ptr<CreditCard> old_credit_card =
1423 GetCreditCard(credit_card.guid());
1421 if (!old_credit_card) 1424 if (!old_credit_card)
1422 return false; 1425 return false;
1423 1426
1424 bool update_modification_date = *old_credit_card != credit_card; 1427 bool update_modification_date = *old_credit_card != credit_card;
1425 1428
1426 sql::Statement s(db_->GetUniqueStatement( 1429 sql::Statement s(db_->GetUniqueStatement(
1427 "UPDATE credit_cards " 1430 "UPDATE credit_cards "
1428 "SET guid=?, name_on_card=?, expiration_month=?," 1431 "SET guid=?, name_on_card=?, expiration_month=?,"
1429 "expiration_year=?, card_number_encrypted=?, use_count=?, use_date=?," 1432 "expiration_year=?, card_number_encrypted=?, use_count=?, use_date=?,"
1430 "date_modified=?, origin=?" 1433 "date_modified=?, origin=?"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 return false; 1548 return false;
1546 1549
1547 // Clear out the origins for the found Autofill profiles. 1550 // Clear out the origins for the found Autofill profiles.
1548 for (const std::string& guid : profile_guids) { 1551 for (const std::string& guid : profile_guids) {
1549 sql::Statement s_profile(db_->GetUniqueStatement( 1552 sql::Statement s_profile(db_->GetUniqueStatement(
1550 "UPDATE autofill_profiles SET origin='' WHERE guid=?")); 1553 "UPDATE autofill_profiles SET origin='' WHERE guid=?"));
1551 s_profile.BindString(0, guid); 1554 s_profile.BindString(0, guid);
1552 if (!s_profile.Run()) 1555 if (!s_profile.Run())
1553 return false; 1556 return false;
1554 1557
1555 scoped_ptr<AutofillProfile> profile = GetAutofillProfile(guid); 1558 std::unique_ptr<AutofillProfile> profile = GetAutofillProfile(guid);
1556 if (!profile) 1559 if (!profile)
1557 return false; 1560 return false;
1558 1561
1559 profiles->push_back(profile.release()); 1562 profiles->push_back(profile.release());
1560 } 1563 }
1561 1564
1562 // Remember Autofill credit cards with URL origins in the time range. 1565 // Remember Autofill credit cards with URL origins in the time range.
1563 sql::Statement s_credit_cards_get(db_->GetUniqueStatement( 1566 sql::Statement s_credit_cards_get(db_->GetUniqueStatement(
1564 "SELECT guid, origin FROM credit_cards " 1567 "SELECT guid, origin FROM credit_cards "
1565 "WHERE date_modified >= ? AND date_modified < ?")); 1568 "WHERE date_modified >= ? AND date_modified < ?"));
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2253 insert.BindString16(index++, profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)); 2256 insert.BindString16(index++, profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
2254 insert.BindString(index++, profile.language_code()); 2257 insert.BindString(index++, profile.language_code());
2255 insert.Run(); 2258 insert.Run();
2256 insert.Reset(true); 2259 insert.Reset(true);
2257 } 2260 }
2258 2261
2259 return transaction.Commit(); 2262 return transaction.Commit();
2260 } 2263 }
2261 2264
2262 } // namespace autofill 2265 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698