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

Unified Diff: components/autofill/browser/webdata/autofill_table.h

Issue 17392006: In components/autofill, move browser/ to core/browser/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to fix conflicts Created 7 years, 6 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
Index: components/autofill/browser/webdata/autofill_table.h
diff --git a/components/autofill/browser/webdata/autofill_table.h b/components/autofill/browser/webdata/autofill_table.h
deleted file mode 100644
index 2e78fea8df08273b16e3270326514bda008990b6..0000000000000000000000000000000000000000
--- a/components/autofill/browser/webdata/autofill_table.h
+++ /dev/null
@@ -1,388 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_TABLE_H_
-#define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_TABLE_H_
-
-#include <vector>
-
-#include "base/compiler_specific.h"
-#include "base/gtest_prod_util.h"
-#include "base/memory/scoped_vector.h"
-#include "base/strings/string16.h"
-#include "components/webdata/common/web_database_table.h"
-
-class WebDatabase;
-
-namespace base {
-class Time;
-}
-
-namespace autofill {
-
-class AutofillChange;
-class AutofillEntry;
-class AutofillProfile;
-class AutofillTableTest;
-class CreditCard;
-
-struct FormFieldData;
-
-// This class manages the various Autofill tables within the SQLite database
-// passed to the constructor. It expects the following schemas:
-//
-// Note: The database stores time in seconds, UTC.
-//
-// autofill
-// name The name of the input as specified in the html.
-// value The literal contents of the text field.
-// value_lower The contents of the text field made lower_case.
-// pair_id An ID number unique to the row in the table.
-// count How many times the user has entered the string |value|
-// in a field of name |name|.
-//
-// autofill_dates This table associates a row to each separate time the
-// user submits a form containing a certain name/value
-// pair. The |pair_id| should match the |pair_id| field
-// in the appropriate row of the autofill table.
-// pair_id
-// date_created
-//
-// autofill_profiles This table contains Autofill profile data added by the
-// user with the Autofill dialog. Most of the columns are
-// standard entries in a contact information form.
-//
-// guid A guid string to uniquely identify the profile.
-// Added in version 31.
-// company_name
-// address_line_1
-// address_line_2
-// city
-// state
-// zipcode
-// country The country name. Deprecated, should be removed once
-// the stable channel reaches version 11.
-// country_code
-// date_modified The date on which this profile was last modified.
-// Added in version 30.
-// origin The domain of origin for this profile.
-// Added in version 50.
-//
-// autofill_profile_names
-// This table contains the multi-valued name fields
-// associated with a profile.
-//
-// guid The guid string that identifies the profile to which
-// the name belongs.
-// first_name
-// middle_name
-// last_name
-//
-// autofill_profile_emails
-// This table contains the multi-valued email fields
-// associated with a profile.
-//
-// guid The guid string that identifies the profile to which
-// the email belongs.
-// email
-//
-// autofill_profile_phones
-// This table contains the multi-valued phone fields
-// associated with a profile.
-//
-// guid The guid string that identifies the profile to which
-// the phone number belongs.
-// type An integer constant designating either phone type of the
-// number.
-// TODO(jhawkins): Remove the type column and migrate the
-// database.
-// number
-//
-// autofill_profiles_trash
-// This table contains guids of "trashed" autofill
-// profiles. When a profile is removed its guid is added
-// to this table so that Sync can perform deferred removal.
-//
-// guid The guid string that identifies the trashed profile.
-//
-// credit_cards This table contains credit card data added by the user
-// with the Autofill dialog. Most of the columns are
-// standard entries in a credit card form.
-//
-// guid A guid string to uniquely identify the profile.
-// Added in version 31.
-// name_on_card
-// expiration_month
-// expiration_year
-// card_number_encrypted Stores encrypted credit card number.
-// date_modified The date on which this entry was last modified.
-// Added in version 30.
-// origin The domain of origin for this profile.
-// Added in version 50.
-//
-class AutofillTable : public WebDatabaseTable {
- public:
- explicit AutofillTable(const std::string& app_locale);
- virtual ~AutofillTable();
-
- // Retrieves the AutofillTable* owned by |database|.
- static AutofillTable* FromWebDatabase(WebDatabase* db);
-
- virtual WebDatabaseTable::TypeKey GetTypeKey() const OVERRIDE;
- virtual bool Init(sql::Connection* db, sql::MetaTable* meta_table) OVERRIDE;
- virtual bool IsSyncable() OVERRIDE;
- virtual bool MigrateToVersion(int version,
- bool* update_compatible_version) OVERRIDE;
-
- // Records the form elements in |elements| in the database in the
- // autofill table. A list of all added and updated autofill entries
- // is returned in the changes out parameter.
- bool AddFormFieldValues(const std::vector<FormFieldData>& elements,
- std::vector<AutofillChange>* changes);
-
- // Records a single form element in the database in the autofill table. A list
- // of all added and updated autofill entries is returned in the changes out
- // parameter.
- bool AddFormFieldValue(const FormFieldData& element,
- std::vector<AutofillChange>* changes);
-
- // Retrieves a vector of all values which have been recorded in the autofill
- // table as the value in a form element with name |name| and which start with
- // |prefix|. The comparison of the prefix is case insensitive.
- bool GetFormValuesForElementName(const base::string16& name,
- const base::string16& prefix,
- std::vector<base::string16>* values,
- int limit);
-
- // Returns whether any form elements are stored in the database.
- bool HasFormElements();
-
- // Removes rows from autofill_dates if they were created on or after
- // |delete_begin| and strictly before |delete_end|. Decrements the
- // count of the corresponding rows in the autofill table, and
- // removes those rows if the count goes to 0. A list of all changed
- // keys and whether each was updater or removed is returned in the
- // changes out parameter.
- bool RemoveFormElementsAddedBetween(const base::Time& delete_begin,
- const base::Time& delete_end,
- std::vector<AutofillChange>* changes);
-
- // Removes rows from autofill_dates if they were accessed strictly before
- // |AutofillEntry::ExpirationTime()|. Removes the corresponding row from the
- // autofill table. Also culls timestamps to only two. TODO(georgey): remove
- // culling in future versions.
- bool RemoveExpiredFormElements(std::vector<AutofillChange>* changes);
-
- // Removes from autofill_dates rows with given pair_id where date_created lies
- // between |delete_begin| and |delete_end|.
- bool RemoveFormElementForTimeRange(int64 pair_id,
- const base::Time& delete_begin,
- const base::Time& delete_end,
- int* how_many);
-
- // Increments the count in the row corresponding to |pair_id| by |delta|.
- bool AddToCountOfFormElement(int64 pair_id, int delta);
-
- // Counts how many timestamp data rows are in the |autofill_dates| table for
- // a given |pair_id|. GetCountOfFormElement() on the other hand gives the
- // |count| property for a given id.
- int CountTimestampsData(int64 pair_id);
-
- // Gets the pair_id and count entries from name and value specified in
- // |element|. Sets *pair_id and *count to 0 if there is no such row in
- // the table.
- bool GetIDAndCountOfFormElement(const FormFieldData& element,
- int64* pair_id,
- int* count);
-
- // Gets the count only given the pair_id.
- bool GetCountOfFormElement(int64 pair_id, int* count);
-
- // Updates the count entry in the row corresponding to |pair_id| to |count|.
- bool SetCountOfFormElement(int64 pair_id, int count);
-
- // Adds a new row to the autofill table with name and value given in
- // |element|. Sets *pair_id to the pair_id of the new row.
- bool InsertFormElement(const FormFieldData& element,
- int64* pair_id);
-
- // Adds a new row to the autofill_dates table.
- bool InsertPairIDAndDate(int64 pair_id, const base::Time& date_created);
-
- // Deletes last access to the Autofill data from the autofill_dates table.
- bool DeleteLastAccess(int64 pair_id);
-
- // Removes row from the autofill tables given |pair_id|.
- bool RemoveFormElementForID(int64 pair_id);
-
- // Removes row from the autofill tables for the given |name| |value| pair.
- virtual bool RemoveFormElement(const base::string16& name,
- const base::string16& value);
-
- // Retrieves all of the entries in the autofill table.
- virtual bool GetAllAutofillEntries(std::vector<AutofillEntry>* entries);
-
- // Retrieves a single entry from the autofill table.
- virtual bool GetAutofillTimestamps(const base::string16& name,
- const base::string16& value,
- std::vector<base::Time>* timestamps);
-
- // Replaces existing autofill entries with the entries supplied in
- // the argument. If the entry does not already exist, it will be
- // added.
- virtual bool UpdateAutofillEntries(const std::vector<AutofillEntry>& entries);
-
- // Records a single Autofill profile in the autofill_profiles table.
- virtual bool AddAutofillProfile(const AutofillProfile& profile);
-
- // Updates the database values for the specified profile. Mulit-value aware.
- virtual bool UpdateAutofillProfile(const AutofillProfile& profile);
-
- // Removes a row from the autofill_profiles table. |guid| is the identifier
- // of the profile to remove.
- virtual bool RemoveAutofillProfile(const std::string& guid);
-
- // Retrieves a profile with guid |guid|. The caller owns |profile|.
- bool GetAutofillProfile(const std::string& guid, AutofillProfile** profile);
-
- // Retrieves all profiles in the database. Caller owns the returned profiles.
- virtual bool GetAutofillProfiles(std::vector<AutofillProfile*>* profiles);
-
- // Records a single credit card in the credit_cards table.
- bool AddCreditCard(const CreditCard& credit_card);
-
- // Updates the database values for the specified credit card.
- bool UpdateCreditCard(const CreditCard& credit_card);
-
- // Removes a row from the credit_cards table. |guid| is the identifer of the
- // credit card to remove.
- bool RemoveCreditCard(const std::string& guid);
-
- // Retrieves a credit card with guid |guid|. The caller owns
- // |credit_card_id|.
- bool GetCreditCard(const std::string& guid, CreditCard** credit_card);
-
- // Retrieves all credit cards in the database. Caller owns the returned
- // credit cards.
- virtual bool GetCreditCards(std::vector<CreditCard*>* credit_cards);
-
- // Removes rows from autofill_profiles and credit_cards if they were created
- // on or after |delete_begin| and strictly before |delete_end|. Returns the
- // list of deleted profile guids in |profile_guids|. Return value is true if
- // all rows were successfully removed. Returns false on database error. In
- // that case, the output vector state is undefined, and may be partially
- // filled.
- bool RemoveAutofillDataModifiedBetween(
- const base::Time& delete_begin,
- const base::Time& delete_end,
- std::vector<std::string>* profile_guids,
- std::vector<std::string>* credit_card_guids);
-
- // Removes origin URLs from the autofill_profiles and credit_cards tables if
- // they were written on or after |delete_begin| and strictly before
- // |delete_end|. Returns the list of modified profiles in |profiles|. Return
- // value is true if all rows were successfully updated. Returns false on
- // database error. In that case, the output vector state is undefined, and
- // may be partially filled.
- bool RemoveOriginURLsModifiedBetween(
- const base::Time& delete_begin,
- const base::Time& delete_end,
- ScopedVector<AutofillProfile>* profiles);
-
- // Retrieves all profiles in the database that have been deleted since last
- // "empty" of the trash.
- bool GetAutofillProfilesInTrash(std::vector<std::string>* guids);
-
- // Empties the Autofill profiles "trash can".
- bool EmptyAutofillProfilesTrash();
-
- // Removes empty values for autofill that were incorrectly stored in the DB
- // See bug http://crbug.com/6111
- bool ClearAutofillEmptyValueElements();
-
- // Retrieves all profiles in the database that have been deleted since last
- // "empty" of the trash.
- bool AddAutofillGUIDToTrash(const std::string& guid);
-
- // Clear all profiles.
- bool ClearAutofillProfiles();
-
- // Table migration functions.
- bool MigrateToVersion23AddCardNumberEncryptedColumn();
- bool MigrateToVersion24CleanupOversizedStringFields();
- bool MigrateToVersion27UpdateLegacyCreditCards();
- bool MigrateToVersion30AddDateModifed();
- bool MigrateToVersion31AddGUIDToCreditCardsAndProfiles();
- bool MigrateToVersion32UpdateProfilesAndCreditCards();
- bool MigrateToVersion33ProfilesBasedOnFirstName();
- bool MigrateToVersion34ProfilesBasedOnCountryCode();
- bool MigrateToVersion35GreatBritainCountryCodes();
- bool MigrateToVersion37MergeAndCullOlderProfiles();
- bool MigrateToVersion51AddOriginColumn();
-
- // Max data length saved in the table;
- static const size_t kMaxDataLength;
-
- private:
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, Autofill);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, Autofill_AddChanges);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, Autofill_RemoveBetweenChanges);
-
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, Autofill_UpdateDontReplace);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, Autofill_AddFormFieldValues);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, AutofillProfile);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, UpdateAutofillProfile);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, AutofillProfileTrash);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, AutofillProfileTrashInteraction);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest,
- RemoveAutofillDataModifiedBetween);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, CreditCard);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, UpdateCreditCard);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest,
- Autofill_GetAllAutofillEntries_OneResult);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest,
- Autofill_GetAllAutofillEntries_TwoDistinct);
- FRIEND_TEST_ALL_PREFIXES(AutofillTableTest,
- Autofill_GetAllAutofillEntries_TwoSame);
-
- // Methods for adding autofill entries at a specified time. For
- // testing only.
- bool AddFormFieldValuesTime(
- const std::vector<FormFieldData>& elements,
- std::vector<AutofillChange>* changes,
- base::Time time);
- bool AddFormFieldValueTime(const FormFieldData& element,
- std::vector<AutofillChange>* changes,
- base::Time time);
-
- // Insert a single AutofillEntry into the autofill/autofill_dates tables.
- bool InsertAutofillEntry(const AutofillEntry& entry);
-
- // Checks if the trash is empty.
- bool IsAutofillProfilesTrashEmpty();
-
- // Checks if the guid is in the trash.
- bool IsAutofillGUIDInTrash(const std::string& guid);
-
- bool InitMainTable();
- bool InitCreditCardsTable();
- bool InitDatesTable();
- bool InitProfilesTable();
- bool InitProfileNamesTable();
- bool InitProfileEmailsTable();
- bool InitProfilePhonesTable();
- bool InitProfileTrashTable();
-
- // The application locale. The locale is needed for the migration to version
- // 35. Since it must be read on the UI thread, it is set when the table is
- // created (on the UI thread), and cached here so that it can be used for
- // migrations (on the DB thread).
- std::string app_locale_;
-
- DISALLOW_COPY_AND_ASSIGN(AutofillTable);
-};
-
-} // namespace autofill
-
-#endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_TABLE_H_
« no previous file with comments | « components/autofill/browser/webdata/autofill_entry_unittest.cc ('k') | components/autofill/browser/webdata/autofill_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698