| 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 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 return reinterpret_cast<void*>(&table_key); | 438 return reinterpret_cast<void*>(&table_key); |
| 439 } | 439 } |
| 440 | 440 |
| 441 time_t GetEndTime(const base::Time& end) { | 441 time_t GetEndTime(const base::Time& end) { |
| 442 if (end.is_null() || end == base::Time::Max()) | 442 if (end.is_null() || end == base::Time::Max()) |
| 443 return std::numeric_limits<time_t>::max(); | 443 return std::numeric_limits<time_t>::max(); |
| 444 | 444 |
| 445 return end.ToTimeT(); | 445 return end.ToTimeT(); |
| 446 } | 446 } |
| 447 | 447 |
| 448 std::string ServerStatusEnumToString(CreditCard::ServerStatus status) { |
| 449 switch (status) { |
| 450 case CreditCard::EXPIRED: |
| 451 return "EXPIRED"; |
| 452 |
| 453 case CreditCard::OK: |
| 454 return "OK"; |
| 455 } |
| 456 |
| 457 NOTREACHED(); |
| 458 return "OK"; |
| 459 } |
| 460 |
| 461 CreditCard::ServerStatus ServerStatusStringToEnum(const std::string& status) { |
| 462 if (status == "EXPIRED") |
| 463 return CreditCard::EXPIRED; |
| 464 |
| 465 DCHECK_EQ("OK", status); |
| 466 return CreditCard::OK; |
| 467 } |
| 468 |
| 448 } // namespace | 469 } // namespace |
| 449 | 470 |
| 450 // The maximum length allowed for form data. | 471 // The maximum length allowed for form data. |
| 451 const size_t AutofillTable::kMaxDataLength = 1024; | 472 const size_t AutofillTable::kMaxDataLength = 1024; |
| 452 | 473 |
| 453 AutofillTable::AutofillTable(const std::string& app_locale) | 474 AutofillTable::AutofillTable(const std::string& app_locale) |
| 454 : app_locale_(app_locale) { | 475 : app_locale_(app_locale) { |
| 455 } | 476 } |
| 456 | 477 |
| 457 AutofillTable::~AutofillTable() { | 478 AutofillTable::~AutofillTable() { |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1222 : full_card_number); | 1243 : full_card_number); |
| 1223 std::string card_type = s.ColumnString(index++); | 1244 std::string card_type = s.ColumnString(index++); |
| 1224 if (record_type == CreditCard::MASKED_SERVER_CARD) { | 1245 if (record_type == CreditCard::MASKED_SERVER_CARD) { |
| 1225 // The type must be set after setting the number to override the | 1246 // The type must be set after setting the number to override the |
| 1226 // autodectected type. | 1247 // autodectected type. |
| 1227 card->SetTypeForMaskedCard(card_type.c_str()); | 1248 card->SetTypeForMaskedCard(card_type.c_str()); |
| 1228 } else { | 1249 } else { |
| 1229 DCHECK_EQ(CreditCard::GetCreditCardType(full_card_number), card_type); | 1250 DCHECK_EQ(CreditCard::GetCreditCardType(full_card_number), card_type); |
| 1230 } | 1251 } |
| 1231 | 1252 |
| 1232 index++; // TODO(brettw) hook up status. For now, skip over it. | 1253 card->SetServerStatus(ServerStatusStringToEnum(s.ColumnString(index++))); |
| 1233 card->SetRawInfo(CREDIT_CARD_NAME, s.ColumnString16(index++)); | 1254 card->SetRawInfo(CREDIT_CARD_NAME, s.ColumnString16(index++)); |
| 1234 card->SetRawInfo(CREDIT_CARD_EXP_MONTH, s.ColumnString16(index++)); | 1255 card->SetRawInfo(CREDIT_CARD_EXP_MONTH, s.ColumnString16(index++)); |
| 1235 card->SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, s.ColumnString16(index++)); | 1256 card->SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, s.ColumnString16(index++)); |
| 1236 credit_cards->push_back(card); | 1257 credit_cards->push_back(card); |
| 1237 } | 1258 } |
| 1238 | 1259 |
| 1239 static bool do_once = true; | 1260 static bool do_once = true; |
| 1240 // Fake out some masked cards. TODO(estade): remove this block of code. | 1261 // Fake out some masked cards. TODO(estade): remove this block of code. |
| 1241 if (do_once && | 1262 if (do_once && |
| 1242 base::CommandLine::ForCurrentProcess()->HasSwitch( | 1263 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1260 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NAME, | 1281 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NAME, |
| 1261 ASCIIToUTF16("Elena Salazar")); | 1282 ASCIIToUTF16("Elena Salazar")); |
| 1262 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_MONTH, | 1283 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_MONTH, |
| 1263 ASCIIToUTF16("05")); | 1284 ASCIIToUTF16("05")); |
| 1264 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 1285 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 1265 ASCIIToUTF16("2017")); | 1286 ASCIIToUTF16("2017")); |
| 1266 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NUMBER, | 1287 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NUMBER, |
| 1267 ASCIIToUTF16("9424")); | 1288 ASCIIToUTF16("9424")); |
| 1268 fake_masked_cards.back().SetTypeForMaskedCard(kDiscoverCard); | 1289 fake_masked_cards.back().SetTypeForMaskedCard(kDiscoverCard); |
| 1269 | 1290 |
| 1291 fake_masked_cards.push_back( |
| 1292 CreditCard(CreditCard::MASKED_SERVER_CARD, "c789")); |
| 1293 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NAME, |
| 1294 ASCIIToUTF16("Efren Salazar, Sr")); |
| 1295 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_MONTH, |
| 1296 ASCIIToUTF16("12")); |
| 1297 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 1298 ASCIIToUTF16("2014")); |
| 1299 fake_masked_cards.back().SetRawInfo(CREDIT_CARD_NUMBER, |
| 1300 ASCIIToUTF16("1881")); |
| 1301 fake_masked_cards.back().SetTypeForMaskedCard(kVisaCard); |
| 1302 fake_masked_cards.back().SetServerStatus(CreditCard::EXPIRED); |
| 1303 |
| 1270 SetServerCreditCards(fake_masked_cards); | 1304 SetServerCreditCards(fake_masked_cards); |
| 1271 return GetServerCreditCards(credit_cards); | 1305 return GetServerCreditCards(credit_cards); |
| 1272 } | 1306 } |
| 1273 | 1307 |
| 1274 return s.Succeeded(); | 1308 return s.Succeeded(); |
| 1275 } | 1309 } |
| 1276 | 1310 |
| 1277 void AutofillTable::SetServerCreditCards( | 1311 void AutofillTable::SetServerCreditCards( |
| 1278 const std::vector<CreditCard>& credit_cards) { | 1312 const std::vector<CreditCard>& credit_cards) { |
| 1279 // Delete all old values. | 1313 // Delete all old values. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1319 sql::Statement unmasked_insert(db_->GetUniqueStatement( | 1353 sql::Statement unmasked_insert(db_->GetUniqueStatement( |
| 1320 "INSERT INTO unmasked_credit_cards(" | 1354 "INSERT INTO unmasked_credit_cards(" |
| 1321 "id," // 0 | 1355 "id," // 0 |
| 1322 "card_number_encrypted)" // 1 | 1356 "card_number_encrypted)" // 1 |
| 1323 "VALUES (?,?)")); | 1357 "VALUES (?,?)")); |
| 1324 for (const CreditCard& card : credit_cards) { | 1358 for (const CreditCard& card : credit_cards) { |
| 1325 DCHECK(card.record_type() != CreditCard::LOCAL_CARD); | 1359 DCHECK(card.record_type() != CreditCard::LOCAL_CARD); |
| 1326 | 1360 |
| 1327 masked_insert.BindString(0, card.server_id()); | 1361 masked_insert.BindString(0, card.server_id()); |
| 1328 masked_insert.BindString(1, card.type()); | 1362 masked_insert.BindString(1, card.type()); |
| 1329 masked_insert.BindNull(2); // Skip status which doesn't have storage yet. | 1363 masked_insert.BindString(2, |
| 1364 ServerStatusEnumToString(card.GetServerStatus())); |
| 1330 masked_insert.BindString16(3, card.GetRawInfo(CREDIT_CARD_NAME)); | 1365 masked_insert.BindString16(3, card.GetRawInfo(CREDIT_CARD_NAME)); |
| 1331 masked_insert.BindString16(4, card.LastFourDigits()); | 1366 masked_insert.BindString16(4, card.LastFourDigits()); |
| 1332 masked_insert.BindString16(5, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); | 1367 masked_insert.BindString16(5, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); |
| 1333 masked_insert.BindString16(6, | 1368 masked_insert.BindString16(6, |
| 1334 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 1369 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1335 | 1370 |
| 1336 masked_insert.Run(); | 1371 masked_insert.Run(); |
| 1337 masked_insert.Reset(true); | 1372 masked_insert.Reset(true); |
| 1338 | 1373 |
| 1339 if (card.record_type() == CreditCard::FULL_SERVER_CARD) { | 1374 if (card.record_type() == CreditCard::FULL_SERVER_CARD) { |
| (...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2702 "ADD COLUMN full_name VARCHAR"); | 2737 "ADD COLUMN full_name VARCHAR"); |
| 2703 } | 2738 } |
| 2704 | 2739 |
| 2705 bool AutofillTable::MigrateToVersion60AddServerCards() { | 2740 bool AutofillTable::MigrateToVersion60AddServerCards() { |
| 2706 return InitMaskedCreditCardsTable() && | 2741 return InitMaskedCreditCardsTable() && |
| 2707 InitUnmaskedCreditCardsTable() && | 2742 InitUnmaskedCreditCardsTable() && |
| 2708 InitServerAddressesTable(); | 2743 InitServerAddressesTable(); |
| 2709 } | 2744 } |
| 2710 | 2745 |
| 2711 } // namespace autofill | 2746 } // namespace autofill |
| OLD | NEW |