| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 5 #ifndef CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 
| 6 #define CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 6 #define CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 
| 7 | 7 | 
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" | 
| 9 #include "base/gtest_prod_util.h" | 9 #include "base/gtest_prod_util.h" | 
| 10 #include "base/string16.h" | 10 #include "base/string16.h" | 
| 11 #include "chrome/browser/webdata/web_database_table.h" | 11 #include "chrome/browser/webdata/web_database_table.h" | 
| 12 | 12 | 
| 13 #include <vector> | 13 #include <vector> | 
| 14 | 14 | 
| 15 class AutofillChange; | 15 class AutofillChange; | 
| 16 class AutofillEntry; | 16 class AutofillEntry; | 
| 17 class AutofillProfile; | 17 class AutofillProfile; | 
| 18 class AutofillTableTest; | 18 class AutofillTableTest; | 
| 19 class CreditCard; | 19 class CreditCard; | 
| 20 | 20 | 
|  | 21 struct FormFieldData; | 
|  | 22 | 
| 21 namespace base { | 23 namespace base { | 
| 22 class Time; | 24 class Time; | 
| 23 } | 25 } | 
| 24 | 26 | 
| 25 namespace webkit { |  | 
| 26 namespace forms { |  | 
| 27 struct FormField; |  | 
| 28 } |  | 
| 29 } |  | 
| 30 |  | 
| 31 // This class manages the various autofill tables within the SQLite database | 27 // This class manages the various autofill tables within the SQLite database | 
| 32 // passed to the constructor. It expects the following schemas: | 28 // passed to the constructor. It expects the following schemas: | 
| 33 // | 29 // | 
| 34 // Note: The database stores time in seconds, UTC. | 30 // Note: The database stores time in seconds, UTC. | 
| 35 // | 31 // | 
| 36 // autofill | 32 // autofill | 
| 37 //   name                The name of the input as specified in the html. | 33 //   name                The name of the input as specified in the html. | 
| 38 //   value               The literal contents of the text field. | 34 //   value               The literal contents of the text field. | 
| 39 //   value_lower         The contents of the text field made lower_case. | 35 //   value_lower         The contents of the text field made lower_case. | 
| 40 //   pair_id             An ID number unique to the row in the table. | 36 //   pair_id             An ID number unique to the row in the table. | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 119 class AutofillTable : public WebDatabaseTable { | 115 class AutofillTable : public WebDatabaseTable { | 
| 120  public: | 116  public: | 
| 121   AutofillTable(sql::Connection* db, sql::MetaTable* meta_table); | 117   AutofillTable(sql::Connection* db, sql::MetaTable* meta_table); | 
| 122   virtual ~AutofillTable(); | 118   virtual ~AutofillTable(); | 
| 123   virtual bool Init() OVERRIDE; | 119   virtual bool Init() OVERRIDE; | 
| 124   virtual bool IsSyncable() OVERRIDE; | 120   virtual bool IsSyncable() OVERRIDE; | 
| 125 | 121 | 
| 126   // Records the form elements in |elements| in the database in the | 122   // Records the form elements in |elements| in the database in the | 
| 127   // autofill table.  A list of all added and updated autofill entries | 123   // autofill table.  A list of all added and updated autofill entries | 
| 128   // is returned in the changes out parameter. | 124   // is returned in the changes out parameter. | 
| 129   bool AddFormFieldValues(const std::vector<webkit::forms::FormField>& elements, | 125   bool AddFormFieldValues(const std::vector<FormFieldData>& elements, | 
| 130                           std::vector<AutofillChange>* changes); | 126                           std::vector<AutofillChange>* changes); | 
| 131 | 127 | 
| 132   // Records a single form element in the database in the autofill table. A list | 128   // Records a single form element in the database in the autofill table. A list | 
| 133   // of all added and updated autofill entries is returned in the changes out | 129   // of all added and updated autofill entries is returned in the changes out | 
| 134   // parameter. | 130   // parameter. | 
| 135   bool AddFormFieldValue(const webkit::forms::FormField& element, | 131   bool AddFormFieldValue(const FormFieldData& element, | 
| 136                          std::vector<AutofillChange>* changes); | 132                          std::vector<AutofillChange>* changes); | 
| 137 | 133 | 
| 138   // Retrieves a vector of all values which have been recorded in the autofill | 134   // Retrieves a vector of all values which have been recorded in the autofill | 
| 139   // table as the value in a form element with name |name| and which start with | 135   // table as the value in a form element with name |name| and which start with | 
| 140   // |prefix|.  The comparison of the prefix is case insensitive. | 136   // |prefix|.  The comparison of the prefix is case insensitive. | 
| 141   bool GetFormValuesForElementName(const string16& name, | 137   bool GetFormValuesForElementName(const string16& name, | 
| 142                                    const string16& prefix, | 138                                    const string16& prefix, | 
| 143                                    std::vector<string16>* values, | 139                                    std::vector<string16>* values, | 
| 144                                    int limit); | 140                                    int limit); | 
| 145 | 141 | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 170   bool AddToCountOfFormElement(int64 pair_id, int delta); | 166   bool AddToCountOfFormElement(int64 pair_id, int delta); | 
| 171 | 167 | 
| 172   // Counts how many timestamp data rows are in the |autofill_dates| table for | 168   // Counts how many timestamp data rows are in the |autofill_dates| table for | 
| 173   // a given |pair_id|. GetCountOfFormElement() on the other hand gives the | 169   // a given |pair_id|. GetCountOfFormElement() on the other hand gives the | 
| 174   // |count| property for a given id. | 170   // |count| property for a given id. | 
| 175   int CountTimestampsData(int64 pair_id); | 171   int CountTimestampsData(int64 pair_id); | 
| 176 | 172 | 
| 177   // Gets the pair_id and count entries from name and value specified in | 173   // Gets the pair_id and count entries from name and value specified in | 
| 178   // |element|.  Sets *pair_id and *count to 0 if there is no such row in | 174   // |element|.  Sets *pair_id and *count to 0 if there is no such row in | 
| 179   // the table. | 175   // the table. | 
| 180   bool GetIDAndCountOfFormElement(const webkit::forms::FormField& element, | 176   bool GetIDAndCountOfFormElement(const FormFieldData& element, | 
| 181                                   int64* pair_id, | 177                                   int64* pair_id, | 
| 182                                   int* count); | 178                                   int* count); | 
| 183 | 179 | 
| 184   // Gets the count only given the pair_id. | 180   // Gets the count only given the pair_id. | 
| 185   bool GetCountOfFormElement(int64 pair_id, int* count); | 181   bool GetCountOfFormElement(int64 pair_id, int* count); | 
| 186 | 182 | 
| 187   // Updates the count entry in the row corresponding to |pair_id| to |count|. | 183   // Updates the count entry in the row corresponding to |pair_id| to |count|. | 
| 188   bool SetCountOfFormElement(int64 pair_id, int count); | 184   bool SetCountOfFormElement(int64 pair_id, int count); | 
| 189 | 185 | 
| 190   // Adds a new row to the autofill table with name and value given in | 186   // Adds a new row to the autofill table with name and value given in | 
| 191   // |element|.  Sets *pair_id to the pair_id of the new row. | 187   // |element|.  Sets *pair_id to the pair_id of the new row. | 
| 192   bool InsertFormElement(const webkit::forms::FormField& element, | 188   bool InsertFormElement(const FormFieldData& element, | 
| 193                          int64* pair_id); | 189                          int64* pair_id); | 
| 194 | 190 | 
| 195   // Adds a new row to the autofill_dates table. | 191   // Adds a new row to the autofill_dates table. | 
| 196   bool InsertPairIDAndDate(int64 pair_id, const base::Time& date_created); | 192   bool InsertPairIDAndDate(int64 pair_id, const base::Time& date_created); | 
| 197 | 193 | 
| 198   // Deletes last access to the Autofill data from the autofill_dates table. | 194   // Deletes last access to the Autofill data from the autofill_dates table. | 
| 199   bool DeleteLastAccess(int64 pair_id); | 195   bool DeleteLastAccess(int64 pair_id); | 
| 200 | 196 | 
| 201   // Removes row from the autofill tables given |pair_id|. | 197   // Removes row from the autofill tables given |pair_id|. | 
| 202   bool RemoveFormElementForID(int64 pair_id); | 198   bool RemoveFormElementForID(int64 pair_id); | 
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 318   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 314   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 
| 319                            Autofill_GetAllAutofillEntries_OneResult); | 315                            Autofill_GetAllAutofillEntries_OneResult); | 
| 320   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 316   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 
| 321                            Autofill_GetAllAutofillEntries_TwoDistinct); | 317                            Autofill_GetAllAutofillEntries_TwoDistinct); | 
| 322   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 318   FRIEND_TEST_ALL_PREFIXES(AutofillTableTest, | 
| 323                            Autofill_GetAllAutofillEntries_TwoSame); | 319                            Autofill_GetAllAutofillEntries_TwoSame); | 
| 324 | 320 | 
| 325   // Methods for adding autofill entries at a specified time.  For | 321   // Methods for adding autofill entries at a specified time.  For | 
| 326   // testing only. | 322   // testing only. | 
| 327   bool AddFormFieldValuesTime( | 323   bool AddFormFieldValuesTime( | 
| 328       const std::vector<webkit::forms::FormField>& elements, | 324       const std::vector<FormFieldData>& elements, | 
| 329       std::vector<AutofillChange>* changes, | 325       std::vector<AutofillChange>* changes, | 
| 330       base::Time time); | 326       base::Time time); | 
| 331   bool AddFormFieldValueTime(const webkit::forms::FormField& element, | 327   bool AddFormFieldValueTime(const FormFieldData& element, | 
| 332                              std::vector<AutofillChange>* changes, | 328                              std::vector<AutofillChange>* changes, | 
| 333                              base::Time time); | 329                              base::Time time); | 
| 334 | 330 | 
| 335   // Insert a single AutofillEntry into the autofill/autofill_dates tables. | 331   // Insert a single AutofillEntry into the autofill/autofill_dates tables. | 
| 336   bool InsertAutofillEntry(const AutofillEntry& entry); | 332   bool InsertAutofillEntry(const AutofillEntry& entry); | 
| 337 | 333 | 
| 338   // Checks if the trash is empty. | 334   // Checks if the trash is empty. | 
| 339   bool IsAutofillProfilesTrashEmpty(); | 335   bool IsAutofillProfilesTrashEmpty(); | 
| 340 | 336 | 
| 341   // Checks if the guid is in the trash. | 337   // Checks if the guid is in the trash. | 
| 342   bool IsAutofillGUIDInTrash(const std::string& guid); | 338   bool IsAutofillGUIDInTrash(const std::string& guid); | 
| 343 | 339 | 
| 344   bool InitMainTable(); | 340   bool InitMainTable(); | 
| 345   bool InitCreditCardsTable(); | 341   bool InitCreditCardsTable(); | 
| 346   bool InitDatesTable(); | 342   bool InitDatesTable(); | 
| 347   bool InitProfilesTable(); | 343   bool InitProfilesTable(); | 
| 348   bool InitProfileNamesTable(); | 344   bool InitProfileNamesTable(); | 
| 349   bool InitProfileEmailsTable(); | 345   bool InitProfileEmailsTable(); | 
| 350   bool InitProfilePhonesTable(); | 346   bool InitProfilePhonesTable(); | 
| 351   bool InitProfileTrashTable(); | 347   bool InitProfileTrashTable(); | 
| 352 | 348 | 
| 353   DISALLOW_COPY_AND_ASSIGN(AutofillTable); | 349   DISALLOW_COPY_AND_ASSIGN(AutofillTable); | 
| 354 }; | 350 }; | 
| 355 | 351 | 
| 356 #endif  // CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 352 #endif  // CHROME_BROWSER_WEBDATA_AUTOFILL_TABLE_H_ | 
| OLD | NEW | 
|---|