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 |