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

Unified Diff: chrome/browser/webdata/autofill_util.cc

Issue 6677124: Move migration code out of WebDatabase and into table-specific classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits from dhollowa Created 9 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/webdata/autofill_util.h ('k') | chrome/browser/webdata/keyword_table.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/webdata/autofill_util.cc
diff --git a/chrome/browser/webdata/autofill_util.cc b/chrome/browser/webdata/autofill_util.cc
deleted file mode 100644
index 1b3c74ec6e7bda0ef8fcab5bbd522f64dee401b8..0000000000000000000000000000000000000000
--- a/chrome/browser/webdata/autofill_util.cc
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/webdata/autofill_util.h"
-
-#include "app/sql/statement.h"
-#include "base/logging.h"
-#include "base/time.h"
-#include "chrome/browser/autofill/autofill_profile.h"
-#include "chrome/browser/autofill/autofill_type.h"
-#include "chrome/browser/autofill/credit_card.h"
-#include "chrome/browser/password_manager/encryptor.h"
-#include "chrome/common/guid.h"
-
-using base::Time;
-
-namespace autofill_util {
-
-// The maximum length allowed for form data.
-const size_t kMaxDataLength = 1024;
-
-string16 LimitDataSize(const string16& data) {
- if (data.size() > kMaxDataLength)
- return data.substr(0, kMaxDataLength);
-
- return data;
-}
-
-void BindAutofillProfileToStatement(const AutofillProfile& profile,
- sql::Statement* s) {
- DCHECK(guid::IsValidGUID(profile.guid()));
- s->BindString(0, profile.guid());
-
- string16 text = profile.GetInfo(COMPANY_NAME);
- s->BindString16(1, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_LINE1);
- s->BindString16(2, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_LINE2);
- s->BindString16(3, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_CITY);
- s->BindString16(4, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_STATE);
- s->BindString16(5, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_ZIP);
- s->BindString16(6, LimitDataSize(text));
- text = profile.GetInfo(ADDRESS_HOME_COUNTRY);
- s->BindString16(7, LimitDataSize(text));
- std::string country_code = profile.CountryCode();
- s->BindString(8, country_code);
- s->BindInt64(9, Time::Now().ToTimeT());
-}
-
-AutofillProfile* AutofillProfileFromStatement(const sql::Statement& s) {
- AutofillProfile* profile = new AutofillProfile;
- profile->set_guid(s.ColumnString(0));
- DCHECK(guid::IsValidGUID(profile->guid()));
-
- profile->SetInfo(COMPANY_NAME, s.ColumnString16(1));
- profile->SetInfo(ADDRESS_HOME_LINE1, s.ColumnString16(2));
- profile->SetInfo(ADDRESS_HOME_LINE2, s.ColumnString16(3));
- profile->SetInfo(ADDRESS_HOME_CITY, s.ColumnString16(4));
- profile->SetInfo(ADDRESS_HOME_STATE, s.ColumnString16(5));
- profile->SetInfo(ADDRESS_HOME_ZIP, s.ColumnString16(6));
- // Intentionally skip column 7, which stores the localized country name.
- profile->SetCountryCode(s.ColumnString(8));
- // Intentionally skip column 9, which stores the profile's modification date.
-
- return profile;
-}
-
-void BindCreditCardToStatement(const CreditCard& credit_card,
- sql::Statement* s) {
- DCHECK(guid::IsValidGUID(credit_card.guid()));
- s->BindString(0, credit_card.guid());
-
- string16 text = credit_card.GetInfo(CREDIT_CARD_NAME);
- s->BindString16(1, LimitDataSize(text));
- text = credit_card.GetInfo(CREDIT_CARD_EXP_MONTH);
- s->BindString16(2, LimitDataSize(text));
- text = credit_card.GetInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR);
- s->BindString16(3, LimitDataSize(text));
- text = credit_card.GetInfo(CREDIT_CARD_NUMBER);
- std::string encrypted_data;
- Encryptor::EncryptString16(text, &encrypted_data);
- s->BindBlob(4, encrypted_data.data(),
- static_cast<int>(encrypted_data.length()));
- s->BindInt64(5, Time::Now().ToTimeT());
-}
-
-CreditCard* CreditCardFromStatement(const sql::Statement& s) {
- CreditCard* credit_card = new CreditCard;
-
- credit_card->set_guid(s.ColumnString(0));
- DCHECK(guid::IsValidGUID(credit_card->guid()));
-
- credit_card->SetInfo(CREDIT_CARD_NAME, s.ColumnString16(1));
- credit_card->SetInfo(CREDIT_CARD_EXP_MONTH,
- s.ColumnString16(2));
- credit_card->SetInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR,
- s.ColumnString16(3));
- int encrypted_number_len = s.ColumnByteLength(4);
- string16 credit_card_number;
- if (encrypted_number_len) {
- std::string encrypted_number;
- encrypted_number.resize(encrypted_number_len);
- memcpy(&encrypted_number[0], s.ColumnBlob(4), encrypted_number_len);
- Encryptor::DecryptString16(encrypted_number, &credit_card_number);
- }
- credit_card->SetInfo(CREDIT_CARD_NUMBER, credit_card_number);
- // Intentionally skip column 5, which stores the modification date.
-
- return credit_card;
-}
-
-bool AddAutofillProfileNamesToProfile(sql::Connection* db,
- AutofillProfile* profile) {
- sql::Statement s(db->GetUniqueStatement(
- "SELECT guid, first_name, middle_name, last_name "
- "FROM autofill_profile_names "
- "WHERE guid=?"));
- if (!s) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
- s.BindString(0, profile->guid());
-
- std::vector<string16> first_names;
- std::vector<string16> middle_names;
- std::vector<string16> last_names;
- while (s.Step()) {
- DCHECK_EQ(profile->guid(), s.ColumnString(0));
- first_names.push_back(s.ColumnString16(1));
- middle_names.push_back(s.ColumnString16(2));
- last_names.push_back(s.ColumnString16(3));
- }
- profile->SetMultiInfo(NAME_FIRST, first_names);
- profile->SetMultiInfo(NAME_MIDDLE, middle_names);
- profile->SetMultiInfo(NAME_LAST, last_names);
- return true;
-}
-
-bool AddAutofillProfileEmailsToProfile(sql::Connection* db,
- AutofillProfile* profile) {
- sql::Statement s(db->GetUniqueStatement(
- "SELECT guid, email "
- "FROM autofill_profile_emails "
- "WHERE guid=?"));
- if (!s) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
- s.BindString(0, profile->guid());
-
- std::vector<string16> emails;
- while (s.Step()) {
- DCHECK_EQ(profile->guid(), s.ColumnString(0));
- emails.push_back(s.ColumnString16(1));
- }
- profile->SetMultiInfo(EMAIL_ADDRESS, emails);
- return true;
-}
-
-bool AddAutofillProfilePhonesToProfile(sql::Connection* db,
- AutofillProfile* profile) {
- sql::Statement s(db->GetUniqueStatement(
- "SELECT guid, type, number "
- "FROM autofill_profile_phones "
- "WHERE guid=? AND type=?"));
- if (!s) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
- s.BindString(0, profile->guid());
- s.BindInt(1, kAutofillPhoneNumber);
-
- std::vector<string16> numbers;
- while (s.Step()) {
- DCHECK_EQ(profile->guid(), s.ColumnString(0));
- numbers.push_back(s.ColumnString16(2));
- }
- profile->SetMultiInfo(PHONE_HOME_WHOLE_NUMBER, numbers);
- return true;
-}
-
-bool AddAutofillProfileFaxesToProfile(sql::Connection* db,
- AutofillProfile* profile) {
- sql::Statement s(db->GetUniqueStatement(
- "SELECT guid, type, number "
- "FROM autofill_profile_phones "
- "WHERE guid=? AND type=?"));
- if (!s) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
- s.BindString(0, profile->guid());
- s.BindInt(1, kAutofillFaxNumber);
-
- std::vector<string16> numbers;
- while (s.Step()) {
- DCHECK_EQ(profile->guid(), s.ColumnString(0));
- numbers.push_back(s.ColumnString16(2));
- }
- profile->SetMultiInfo(PHONE_FAX_WHOLE_NUMBER, numbers);
- return true;
-}
-
-
-bool AddAutofillProfileNames(const AutofillProfile& profile,
- sql::Connection* db) {
- std::vector<string16> first_names;
- profile.GetMultiInfo(NAME_FIRST, &first_names);
- std::vector<string16> middle_names;
- profile.GetMultiInfo(NAME_MIDDLE, &middle_names);
- std::vector<string16> last_names;
- profile.GetMultiInfo(NAME_LAST, &last_names);
- DCHECK_EQ(first_names.size(), middle_names.size());
- DCHECK_EQ(middle_names.size(), last_names.size());
-
- for (size_t i = 0; i < first_names.size(); ++i) {
- // Add the new name.
- sql::Statement s(db->GetUniqueStatement(
- "INSERT INTO autofill_profile_names"
- " (guid, first_name, middle_name, last_name) "
- "VALUES (?,?,?,?)"));
- if (!s) {
- NOTREACHED();
- return false;
- }
- s.BindString(0, profile.guid());
- s.BindString16(1, first_names[i]);
- s.BindString16(2, middle_names[i]);
- s.BindString16(3, last_names[i]);
-
- if (!s.Run()) {
- NOTREACHED();
- return false;
- }
- }
- return true;
-}
-
-bool AddAutofillProfileEmails(const AutofillProfile& profile,
- sql::Connection* db) {
- std::vector<string16> emails;
- profile.GetMultiInfo(EMAIL_ADDRESS, &emails);
-
- for (size_t i = 0; i < emails.size(); ++i) {
- // Add the new email.
- sql::Statement s(db->GetUniqueStatement(
- "INSERT INTO autofill_profile_emails"
- " (guid, email) "
- "VALUES (?,?)"));
- if (!s) {
- NOTREACHED();
- return false;
- }
- s.BindString(0, profile.guid());
- s.BindString16(1, emails[i]);
-
- if (!s.Run()) {
- NOTREACHED();
- return false;
- }
- }
- return true;
-}
-
-bool AddAutofillProfilePhones(const AutofillProfile& profile,
- AutofillPhoneType phone_type,
- sql::Connection* db) {
- AutofillFieldType field_type;
- if (phone_type == kAutofillPhoneNumber) {
- field_type = PHONE_HOME_WHOLE_NUMBER;
- } else if (phone_type == kAutofillFaxNumber) {
- field_type = PHONE_FAX_WHOLE_NUMBER;
- } else {
- NOTREACHED();
- return false;
- }
-
- std::vector<string16> numbers;
- profile.GetMultiInfo(field_type, &numbers);
-
- for (size_t i = 0; i < numbers.size(); ++i) {
- // Add the new number.
- sql::Statement s(db->GetUniqueStatement(
- "INSERT INTO autofill_profile_phones"
- " (guid, type, number) "
- "VALUES (?,?,?)"));
- if (!s) {
- NOTREACHED();
- return false;
- }
- s.BindString(0, profile.guid());
- s.BindInt(1, phone_type);
- s.BindString16(2, numbers[i]);
-
- if (!s.Run()) {
- NOTREACHED();
- return false;
- }
- }
- return true;
-}
-
-bool AddAutofillProfilePieces(const AutofillProfile& profile,
- sql::Connection* db) {
- if (!AddAutofillProfileNames(profile, db))
- return false;
-
- if (!AddAutofillProfileEmails(profile, db))
- return false;
-
- if (!AddAutofillProfilePhones(profile, kAutofillPhoneNumber, db))
- return false;
-
- if (!AddAutofillProfilePhones(profile, kAutofillFaxNumber, db))
- return false;
-
- return true;
-}
-
-bool RemoveAutofillProfilePieces(const std::string& guid, sql::Connection* db) {
- sql::Statement s1(db->GetUniqueStatement(
- "DELETE FROM autofill_profile_names WHERE guid = ?"));
- if (!s1) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
-
- s1.BindString(0, guid);
- if (!s1.Run())
- return false;
-
- sql::Statement s2(db->GetUniqueStatement(
- "DELETE FROM autofill_profile_emails WHERE guid = ?"));
- if (!s2) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
-
- s2.BindString(0, guid);
- if (!s2.Run())
- return false;
-
- sql::Statement s3(db->GetUniqueStatement(
- "DELETE FROM autofill_profile_phones WHERE guid = ?"));
- if (!s3) {
- NOTREACHED() << "Statement prepare failed";
- return false;
- }
-
- s3.BindString(0, guid);
- return s3.Run();
-}
-
-} // namespace autofill_util
« no previous file with comments | « chrome/browser/webdata/autofill_util.h ('k') | chrome/browser/webdata/keyword_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698