OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/webdata/web_database.h" | 5 #include "chrome/browser/webdata/web_database.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "app/l10n_util.h" | 12 #include "app/l10n_util.h" |
13 #include "app/sql/statement.h" | 13 #include "app/sql/statement.h" |
14 #include "app/sql/transaction.h" | 14 #include "app/sql/transaction.h" |
| 15 #include "base/guid.h" |
15 #include "base/string_number_conversions.h" | 16 #include "base/string_number_conversions.h" |
16 #include "base/string_split.h" | 17 #include "base/string_split.h" |
17 #include "base/string_util.h" | 18 #include "base/string_util.h" |
18 #include "base/tuple.h" | 19 #include "base/tuple.h" |
19 #include "base/utf_string_conversions.h" | 20 #include "base/utf_string_conversions.h" |
20 #include "chrome/browser/autofill/autofill_profile.h" | 21 #include "chrome/browser/autofill/autofill_profile.h" |
21 #include "chrome/browser/autofill/autofill_type.h" | 22 #include "chrome/browser/autofill/autofill_type.h" |
22 #include "chrome/browser/autofill/credit_card.h" | 23 #include "chrome/browser/autofill/credit_card.h" |
23 #include "chrome/browser/diagnostics/sqlite_diagnostics.h" | 24 #include "chrome/browser/diagnostics/sqlite_diagnostics.h" |
24 #include "chrome/browser/guid.h" | |
25 #include "chrome/browser/history/history_database.h" | 25 #include "chrome/browser/history/history_database.h" |
26 #include "chrome/browser/password_manager/encryptor.h" | 26 #include "chrome/browser/password_manager/encryptor.h" |
27 #include "chrome/browser/search_engines/template_url.h" | 27 #include "chrome/browser/search_engines/template_url.h" |
28 #include "chrome/browser/webdata/autofill_change.h" | 28 #include "chrome/browser/webdata/autofill_change.h" |
29 #include "chrome/common/notification_service.h" | 29 #include "chrome/common/notification_service.h" |
30 #include "gfx/codec/png_codec.h" | 30 #include "gfx/codec/png_codec.h" |
31 #include "third_party/skia/include/core/SkBitmap.h" | 31 #include "third_party/skia/include/core/SkBitmap.h" |
32 #include "webkit/glue/form_field.h" | 32 #include "webkit/glue/form_field.h" |
33 #include "webkit/glue/password_form.h" | 33 #include "webkit/glue/password_form.h" |
34 | 34 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 // See http://crbug.com/49332. | 248 // See http://crbug.com/49332. |
249 string16 LimitDataSize(const string16& data) { | 249 string16 LimitDataSize(const string16& data) { |
250 if (data.size() > kMaxDataLength) | 250 if (data.size() > kMaxDataLength) |
251 return data.substr(0, kMaxDataLength); | 251 return data.substr(0, kMaxDataLength); |
252 | 252 |
253 return data; | 253 return data; |
254 } | 254 } |
255 | 255 |
256 void BindAutoFillProfileToStatement(const AutoFillProfile& profile, | 256 void BindAutoFillProfileToStatement(const AutoFillProfile& profile, |
257 sql::Statement* s) { | 257 sql::Statement* s) { |
258 DCHECK(guid::IsValidGUID(profile.guid())); | 258 DCHECK(base::IsValidGUID(profile.guid())); |
259 s->BindString(0, profile.guid()); | 259 s->BindString(0, profile.guid()); |
260 s->BindString16(1, profile.Label()); | 260 s->BindString16(1, profile.Label()); |
261 | 261 |
262 string16 text = profile.GetFieldText(AutoFillType(NAME_FIRST)); | 262 string16 text = profile.GetFieldText(AutoFillType(NAME_FIRST)); |
263 s->BindString16(2, LimitDataSize(text)); | 263 s->BindString16(2, LimitDataSize(text)); |
264 text = profile.GetFieldText(AutoFillType(NAME_MIDDLE)); | 264 text = profile.GetFieldText(AutoFillType(NAME_MIDDLE)); |
265 s->BindString16(3, LimitDataSize(text)); | 265 s->BindString16(3, LimitDataSize(text)); |
266 text = profile.GetFieldText(AutoFillType(NAME_LAST)); | 266 text = profile.GetFieldText(AutoFillType(NAME_LAST)); |
267 s->BindString16(4, LimitDataSize(text)); | 267 s->BindString16(4, LimitDataSize(text)); |
268 text = profile.GetFieldText(AutoFillType(EMAIL_ADDRESS)); | 268 text = profile.GetFieldText(AutoFillType(EMAIL_ADDRESS)); |
(...skipping 15 matching lines...) Expand all Loading... |
284 text = profile.GetFieldText(AutoFillType(PHONE_HOME_WHOLE_NUMBER)); | 284 text = profile.GetFieldText(AutoFillType(PHONE_HOME_WHOLE_NUMBER)); |
285 s->BindString16(13, LimitDataSize(text)); | 285 s->BindString16(13, LimitDataSize(text)); |
286 text = profile.GetFieldText(AutoFillType(PHONE_FAX_WHOLE_NUMBER)); | 286 text = profile.GetFieldText(AutoFillType(PHONE_FAX_WHOLE_NUMBER)); |
287 s->BindString16(14, LimitDataSize(text)); | 287 s->BindString16(14, LimitDataSize(text)); |
288 s->BindInt64(15, Time::Now().ToTimeT()); | 288 s->BindInt64(15, Time::Now().ToTimeT()); |
289 } | 289 } |
290 | 290 |
291 AutoFillProfile* AutoFillProfileFromStatement(const sql::Statement& s) { | 291 AutoFillProfile* AutoFillProfileFromStatement(const sql::Statement& s) { |
292 AutoFillProfile* profile = new AutoFillProfile; | 292 AutoFillProfile* profile = new AutoFillProfile; |
293 profile->set_guid(s.ColumnString(0)); | 293 profile->set_guid(s.ColumnString(0)); |
294 DCHECK(guid::IsValidGUID(profile->guid())); | 294 DCHECK(base::IsValidGUID(profile->guid())); |
295 profile->set_label(s.ColumnString16(1)); | 295 profile->set_label(s.ColumnString16(1)); |
296 | 296 |
297 profile->SetInfo(AutoFillType(NAME_FIRST), | 297 profile->SetInfo(AutoFillType(NAME_FIRST), |
298 s.ColumnString16(2)); | 298 s.ColumnString16(2)); |
299 profile->SetInfo(AutoFillType(NAME_MIDDLE), | 299 profile->SetInfo(AutoFillType(NAME_MIDDLE), |
300 s.ColumnString16(3)); | 300 s.ColumnString16(3)); |
301 profile->SetInfo(AutoFillType(NAME_LAST), | 301 profile->SetInfo(AutoFillType(NAME_LAST), |
302 s.ColumnString16(4)); | 302 s.ColumnString16(4)); |
303 profile->SetInfo(AutoFillType(EMAIL_ADDRESS), | 303 profile->SetInfo(AutoFillType(EMAIL_ADDRESS), |
304 s.ColumnString16(5)); | 304 s.ColumnString16(5)); |
(...skipping 15 matching lines...) Expand all Loading... |
320 s.ColumnString16(13)); | 320 s.ColumnString16(13)); |
321 profile->SetInfo(AutoFillType(PHONE_FAX_WHOLE_NUMBER), | 321 profile->SetInfo(AutoFillType(PHONE_FAX_WHOLE_NUMBER), |
322 s.ColumnString16(14)); | 322 s.ColumnString16(14)); |
323 // Intentionally skip column 15, which stores the profile's modification date. | 323 // Intentionally skip column 15, which stores the profile's modification date. |
324 | 324 |
325 return profile; | 325 return profile; |
326 } | 326 } |
327 | 327 |
328 void BindCreditCardToStatement(const CreditCard& credit_card, | 328 void BindCreditCardToStatement(const CreditCard& credit_card, |
329 sql::Statement* s) { | 329 sql::Statement* s) { |
330 DCHECK(guid::IsValidGUID(credit_card.guid())); | 330 DCHECK(base::IsValidGUID(credit_card.guid())); |
331 s->BindString(0, credit_card.guid()); | 331 s->BindString(0, credit_card.guid()); |
332 s->BindString16(1, credit_card.Label()); | 332 s->BindString16(1, credit_card.Label()); |
333 | 333 |
334 string16 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_NAME)); | 334 string16 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_NAME)); |
335 s->BindString16(2, LimitDataSize(text)); | 335 s->BindString16(2, LimitDataSize(text)); |
336 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_EXP_MONTH)); | 336 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_EXP_MONTH)); |
337 s->BindString16(3, LimitDataSize(text)); | 337 s->BindString16(3, LimitDataSize(text)); |
338 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 338 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
339 s->BindString16(4, LimitDataSize(text)); | 339 s->BindString16(4, LimitDataSize(text)); |
340 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_NUMBER)); | 340 text = credit_card.GetFieldText(AutoFillType(CREDIT_CARD_NUMBER)); |
341 std::string encrypted_data; | 341 std::string encrypted_data; |
342 Encryptor::EncryptString16(text, &encrypted_data); | 342 Encryptor::EncryptString16(text, &encrypted_data); |
343 s->BindBlob(5, encrypted_data.data(), | 343 s->BindBlob(5, encrypted_data.data(), |
344 static_cast<int>(encrypted_data.length())); | 344 static_cast<int>(encrypted_data.length())); |
345 s->BindInt64(6, Time::Now().ToTimeT()); | 345 s->BindInt64(6, Time::Now().ToTimeT()); |
346 } | 346 } |
347 | 347 |
348 CreditCard* CreditCardFromStatement(const sql::Statement& s) { | 348 CreditCard* CreditCardFromStatement(const sql::Statement& s) { |
349 CreditCard* credit_card = new CreditCard; | 349 CreditCard* credit_card = new CreditCard; |
350 | 350 |
351 credit_card->set_guid(s.ColumnString(0)); | 351 credit_card->set_guid(s.ColumnString(0)); |
352 DCHECK(guid::IsValidGUID(credit_card->guid())); | 352 DCHECK(base::IsValidGUID(credit_card->guid())); |
353 credit_card->set_label(s.ColumnString16(1)); | 353 credit_card->set_label(s.ColumnString16(1)); |
354 | 354 |
355 credit_card->SetInfo(AutoFillType(CREDIT_CARD_NAME), | 355 credit_card->SetInfo(AutoFillType(CREDIT_CARD_NAME), |
356 s.ColumnString16(2)); | 356 s.ColumnString16(2)); |
357 credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_MONTH), | 357 credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_MONTH), |
358 s.ColumnString16(3)); | 358 s.ColumnString16(3)); |
359 credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), | 359 credit_card->SetInfo(AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR), |
360 s.ColumnString16(4)); | 360 s.ColumnString16(4)); |
361 int encrypted_number_len = s.ColumnByteLength(5); | 361 int encrypted_number_len = s.ColumnByteLength(5); |
362 string16 credit_card_number; | 362 string16 credit_card_number; |
(...skipping 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1641 if (!s.Step()) | 1641 if (!s.Step()) |
1642 return false; | 1642 return false; |
1643 | 1643 |
1644 *profile = AutoFillProfileFromStatement(s); | 1644 *profile = AutoFillProfileFromStatement(s); |
1645 | 1645 |
1646 return s.Succeeded(); | 1646 return s.Succeeded(); |
1647 } | 1647 } |
1648 | 1648 |
1649 bool WebDatabase::GetAutoFillProfileForGUID(const std::string& guid, | 1649 bool WebDatabase::GetAutoFillProfileForGUID(const std::string& guid, |
1650 AutoFillProfile** profile) { | 1650 AutoFillProfile** profile) { |
1651 DCHECK(guid::IsValidGUID(guid)); | 1651 DCHECK(base::IsValidGUID(guid)); |
1652 DCHECK(profile); | 1652 DCHECK(profile); |
1653 sql::Statement s(db_.GetUniqueStatement( | 1653 sql::Statement s(db_.GetUniqueStatement( |
1654 "SELECT guid, label, first_name, middle_name, last_name, email, " | 1654 "SELECT guid, label, first_name, middle_name, last_name, email, " |
1655 "company_name, address_line_1, address_line_2, city, state, zipcode, " | 1655 "company_name, address_line_1, address_line_2, city, state, zipcode, " |
1656 "country, phone, fax, date_modified " | 1656 "country, phone, fax, date_modified " |
1657 "FROM autofill_profiles " | 1657 "FROM autofill_profiles " |
1658 "WHERE guid = ?")); | 1658 "WHERE guid = ?")); |
1659 if (!s) { | 1659 if (!s) { |
1660 NOTREACHED() << "Statement prepare failed"; | 1660 NOTREACHED() << "Statement prepare failed"; |
1661 return false; | 1661 return false; |
(...skipping 23 matching lines...) Expand all Loading... |
1685 return false; | 1685 return false; |
1686 } | 1686 } |
1687 | 1687 |
1688 while (s.Step()) | 1688 while (s.Step()) |
1689 profiles->push_back(AutoFillProfileFromStatement(s)); | 1689 profiles->push_back(AutoFillProfileFromStatement(s)); |
1690 | 1690 |
1691 return s.Succeeded(); | 1691 return s.Succeeded(); |
1692 } | 1692 } |
1693 | 1693 |
1694 bool WebDatabase::UpdateAutoFillProfile(const AutoFillProfile& profile) { | 1694 bool WebDatabase::UpdateAutoFillProfile(const AutoFillProfile& profile) { |
1695 DCHECK(guid::IsValidGUID(profile.guid())); | 1695 DCHECK(base::IsValidGUID(profile.guid())); |
1696 | 1696 |
1697 AutoFillProfile* tmp_profile = NULL; | 1697 AutoFillProfile* tmp_profile = NULL; |
1698 if (!GetAutoFillProfileForGUID(profile.guid(), &tmp_profile)) | 1698 if (!GetAutoFillProfileForGUID(profile.guid(), &tmp_profile)) |
1699 return false; | 1699 return false; |
1700 | 1700 |
1701 // Preserve appropriate modification dates by not updating unchanged profiles. | 1701 // Preserve appropriate modification dates by not updating unchanged profiles. |
1702 scoped_ptr<AutoFillProfile> old_profile(tmp_profile); | 1702 scoped_ptr<AutoFillProfile> old_profile(tmp_profile); |
1703 if (*old_profile == profile) | 1703 if (*old_profile == profile) |
1704 return true; | 1704 return true; |
1705 | 1705 |
(...skipping 10 matching lines...) Expand all Loading... |
1716 } | 1716 } |
1717 | 1717 |
1718 BindAutoFillProfileToStatement(profile, &s); | 1718 BindAutoFillProfileToStatement(profile, &s); |
1719 s.BindString(16, profile.guid()); | 1719 s.BindString(16, profile.guid()); |
1720 bool result = s.Run(); | 1720 bool result = s.Run(); |
1721 DCHECK_GT(db_.GetLastChangeCount(), 0); | 1721 DCHECK_GT(db_.GetLastChangeCount(), 0); |
1722 return result; | 1722 return result; |
1723 } | 1723 } |
1724 | 1724 |
1725 bool WebDatabase::RemoveAutoFillProfile(const std::string& guid) { | 1725 bool WebDatabase::RemoveAutoFillProfile(const std::string& guid) { |
1726 DCHECK(guid::IsValidGUID(guid)); | 1726 DCHECK(base::IsValidGUID(guid)); |
1727 sql::Statement s(db_.GetUniqueStatement( | 1727 sql::Statement s(db_.GetUniqueStatement( |
1728 "DELETE FROM autofill_profiles WHERE guid = ?")); | 1728 "DELETE FROM autofill_profiles WHERE guid = ?")); |
1729 if (!s) { | 1729 if (!s) { |
1730 NOTREACHED() << "Statement prepare failed"; | 1730 NOTREACHED() << "Statement prepare failed"; |
1731 return false; | 1731 return false; |
1732 } | 1732 } |
1733 | 1733 |
1734 s.BindString(0, guid); | 1734 s.BindString(0, guid); |
1735 return s.Run(); | 1735 return s.Run(); |
1736 } | 1736 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1774 if (!s.Step()) | 1774 if (!s.Step()) |
1775 return false; | 1775 return false; |
1776 | 1776 |
1777 *credit_card = CreditCardFromStatement(s); | 1777 *credit_card = CreditCardFromStatement(s); |
1778 | 1778 |
1779 return s.Succeeded(); | 1779 return s.Succeeded(); |
1780 } | 1780 } |
1781 | 1781 |
1782 bool WebDatabase::GetCreditCardForGUID(const std::string& guid, | 1782 bool WebDatabase::GetCreditCardForGUID(const std::string& guid, |
1783 CreditCard** credit_card) { | 1783 CreditCard** credit_card) { |
1784 DCHECK(guid::IsValidGUID(guid)); | 1784 DCHECK(base::IsValidGUID(guid)); |
1785 sql::Statement s(db_.GetUniqueStatement( | 1785 sql::Statement s(db_.GetUniqueStatement( |
1786 "SELECT guid, label, name_on_card, expiration_month, expiration_year, " | 1786 "SELECT guid, label, name_on_card, expiration_month, expiration_year, " |
1787 "card_number_encrypted, date_modified " | 1787 "card_number_encrypted, date_modified " |
1788 "FROM credit_cards " | 1788 "FROM credit_cards " |
1789 "WHERE guid = ?")); | 1789 "WHERE guid = ?")); |
1790 if (!s) { | 1790 if (!s) { |
1791 NOTREACHED() << "Statement prepare failed"; | 1791 NOTREACHED() << "Statement prepare failed"; |
1792 return false; | 1792 return false; |
1793 } | 1793 } |
1794 | 1794 |
(...skipping 20 matching lines...) Expand all Loading... |
1815 return false; | 1815 return false; |
1816 } | 1816 } |
1817 | 1817 |
1818 while (s.Step()) | 1818 while (s.Step()) |
1819 credit_cards->push_back(CreditCardFromStatement(s)); | 1819 credit_cards->push_back(CreditCardFromStatement(s)); |
1820 | 1820 |
1821 return s.Succeeded(); | 1821 return s.Succeeded(); |
1822 } | 1822 } |
1823 | 1823 |
1824 bool WebDatabase::UpdateCreditCard(const CreditCard& credit_card) { | 1824 bool WebDatabase::UpdateCreditCard(const CreditCard& credit_card) { |
1825 DCHECK(guid::IsValidGUID(credit_card.guid())); | 1825 DCHECK(base::IsValidGUID(credit_card.guid())); |
1826 | 1826 |
1827 CreditCard* tmp_credit_card = NULL; | 1827 CreditCard* tmp_credit_card = NULL; |
1828 if (!GetCreditCardForGUID(credit_card.guid(), &tmp_credit_card)) | 1828 if (!GetCreditCardForGUID(credit_card.guid(), &tmp_credit_card)) |
1829 return false; | 1829 return false; |
1830 | 1830 |
1831 // Preserve appropriate modification dates by not updating unchanged cards. | 1831 // Preserve appropriate modification dates by not updating unchanged cards. |
1832 scoped_ptr<CreditCard> old_credit_card(tmp_credit_card); | 1832 scoped_ptr<CreditCard> old_credit_card(tmp_credit_card); |
1833 if (*old_credit_card == credit_card) | 1833 if (*old_credit_card == credit_card) |
1834 return true; | 1834 return true; |
1835 | 1835 |
1836 sql::Statement s(db_.GetUniqueStatement( | 1836 sql::Statement s(db_.GetUniqueStatement( |
1837 "UPDATE credit_cards " | 1837 "UPDATE credit_cards " |
1838 "SET guid=?, label=?, name_on_card=?, expiration_month=?, " | 1838 "SET guid=?, label=?, name_on_card=?, expiration_month=?, " |
1839 " expiration_year=?, card_number_encrypted=?, date_modified=? " | 1839 " expiration_year=?, card_number_encrypted=?, date_modified=? " |
1840 "WHERE guid=?")); | 1840 "WHERE guid=?")); |
1841 if (!s) { | 1841 if (!s) { |
1842 NOTREACHED() << "Statement prepare failed"; | 1842 NOTREACHED() << "Statement prepare failed"; |
1843 return false; | 1843 return false; |
1844 } | 1844 } |
1845 | 1845 |
1846 BindCreditCardToStatement(credit_card, &s); | 1846 BindCreditCardToStatement(credit_card, &s); |
1847 s.BindString(7, credit_card.guid()); | 1847 s.BindString(7, credit_card.guid()); |
1848 bool result = s.Run(); | 1848 bool result = s.Run(); |
1849 DCHECK_GT(db_.GetLastChangeCount(), 0); | 1849 DCHECK_GT(db_.GetLastChangeCount(), 0); |
1850 return result; | 1850 return result; |
1851 } | 1851 } |
1852 | 1852 |
1853 bool WebDatabase::RemoveCreditCard(const std::string& guid) { | 1853 bool WebDatabase::RemoveCreditCard(const std::string& guid) { |
1854 DCHECK(guid::IsValidGUID(guid)); | 1854 DCHECK(base::IsValidGUID(guid)); |
1855 sql::Statement s(db_.GetUniqueStatement( | 1855 sql::Statement s(db_.GetUniqueStatement( |
1856 "DELETE FROM credit_cards WHERE guid = ?")); | 1856 "DELETE FROM credit_cards WHERE guid = ?")); |
1857 if (!s) { | 1857 if (!s) { |
1858 NOTREACHED() << "Statement prepare failed"; | 1858 NOTREACHED() << "Statement prepare failed"; |
1859 return false; | 1859 return false; |
1860 } | 1860 } |
1861 | 1861 |
1862 s.BindString(0, guid); | 1862 s.BindString(0, guid); |
1863 return s.Run(); | 1863 return s.Run(); |
1864 } | 1864 } |
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2414 | 2414 |
2415 while (s.Step()) { | 2415 while (s.Step()) { |
2416 sql::Statement update_s( | 2416 sql::Statement update_s( |
2417 db_.GetUniqueStatement("UPDATE autofill_profiles " | 2417 db_.GetUniqueStatement("UPDATE autofill_profiles " |
2418 "SET guid=? WHERE unique_id=?")); | 2418 "SET guid=? WHERE unique_id=?")); |
2419 if (!update_s) { | 2419 if (!update_s) { |
2420 LOG(WARNING) << "Unable to update web database to version 30."; | 2420 LOG(WARNING) << "Unable to update web database to version 30."; |
2421 NOTREACHED(); | 2421 NOTREACHED(); |
2422 return sql::INIT_FAILURE; | 2422 return sql::INIT_FAILURE; |
2423 } | 2423 } |
2424 update_s.BindString(0, guid::GenerateGUID()); | 2424 update_s.BindString(0, base::GenerateGUID()); |
2425 update_s.BindInt(1, s.ColumnInt(0)); | 2425 update_s.BindInt(1, s.ColumnInt(0)); |
2426 | 2426 |
2427 if (!update_s.Run()) { | 2427 if (!update_s.Run()) { |
2428 LOG(WARNING) << "Unable to update web database to version 30."; | 2428 LOG(WARNING) << "Unable to update web database to version 30."; |
2429 NOTREACHED(); | 2429 NOTREACHED(); |
2430 return sql::INIT_FAILURE; | 2430 return sql::INIT_FAILURE; |
2431 } | 2431 } |
2432 } | 2432 } |
2433 } | 2433 } |
2434 } | 2434 } |
(...skipping 22 matching lines...) Expand all Loading... |
2457 | 2457 |
2458 while (s.Step()) { | 2458 while (s.Step()) { |
2459 sql::Statement update_s( | 2459 sql::Statement update_s( |
2460 db_.GetUniqueStatement("UPDATE credit_cards " | 2460 db_.GetUniqueStatement("UPDATE credit_cards " |
2461 "set guid=? WHERE unique_id=?")); | 2461 "set guid=? WHERE unique_id=?")); |
2462 if (!update_s) { | 2462 if (!update_s) { |
2463 LOG(WARNING) << "Unable to update web database to version 30."; | 2463 LOG(WARNING) << "Unable to update web database to version 30."; |
2464 NOTREACHED(); | 2464 NOTREACHED(); |
2465 return sql::INIT_FAILURE; | 2465 return sql::INIT_FAILURE; |
2466 } | 2466 } |
2467 update_s.BindString(0, guid::GenerateGUID()); | 2467 update_s.BindString(0, base::GenerateGUID()); |
2468 update_s.BindInt(1, s.ColumnInt(0)); | 2468 update_s.BindInt(1, s.ColumnInt(0)); |
2469 | 2469 |
2470 if (!update_s.Run()) { | 2470 if (!update_s.Run()) { |
2471 LOG(WARNING) << "Unable to update web database to version 30."; | 2471 LOG(WARNING) << "Unable to update web database to version 30."; |
2472 NOTREACHED(); | 2472 NOTREACHED(); |
2473 return sql::INIT_FAILURE; | 2473 return sql::INIT_FAILURE; |
2474 } | 2474 } |
2475 } | 2475 } |
2476 } | 2476 } |
2477 } | 2477 } |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2577 | 2577 |
2578 // Add successive versions here. Each should set the version number and | 2578 // Add successive versions here. Each should set the version number and |
2579 // compatible version number as appropriate, then fall through to the next | 2579 // compatible version number as appropriate, then fall through to the next |
2580 // case. | 2580 // case. |
2581 | 2581 |
2582 case kCurrentVersionNumber: | 2582 case kCurrentVersionNumber: |
2583 // No migration needed. | 2583 // No migration needed. |
2584 return sql::INIT_OK; | 2584 return sql::INIT_OK; |
2585 } | 2585 } |
2586 } | 2586 } |
OLD | NEW |