| Index: components/autofill/core/browser/webdata/autofill_table.h | 
| diff --git a/components/autofill/core/browser/webdata/autofill_table.h b/components/autofill/core/browser/webdata/autofill_table.h | 
| index a8eceb0ae1b99c469fd9ba4cc3c234cc5d20b094..e223d5cfb23240259713b0497a780a380f537626 100644 | 
| --- a/components/autofill/core/browser/webdata/autofill_table.h | 
| +++ b/components/autofill/core/browser/webdata/autofill_table.h | 
| @@ -13,6 +13,8 @@ | 
| #include "base/gtest_prod_util.h" | 
| #include "base/macros.h" | 
| #include "base/strings/string16.h" | 
| +#include "components/sync/base/model_type.h" | 
| +#include "components/sync/model/metadata_batch.h" | 
| #include "components/webdata/common/web_database_table.h" | 
|  | 
| class WebDatabase; | 
| @@ -21,6 +23,11 @@ namespace base { | 
| class Time; | 
| } | 
|  | 
| +namespace sync_pb { | 
| +class EntityMetadata; | 
| +class ModelTypeState; | 
| +} | 
| + | 
| namespace autofill { | 
|  | 
| class AutofillChange; | 
| @@ -228,6 +235,18 @@ struct FormFieldData; | 
| //                      a form. | 
| //   use_date           The date this address was last used to fill a form, | 
| //                      in internal t. | 
| +// autofill_sync_metadata | 
| +//                      Sync-specific metadata for autofill records. | 
| +// | 
| +//   storage_key        A string that uniquely identifies the metadata record | 
| +//                      as well as the corresponding autofill record. | 
| +//   value              The serialized EntityMetadata record. | 
| +// | 
| +// autofill_model_type_state | 
| +//                      Single row table that contains the sync ModelTypeState | 
| +//                      for the autofill model type. | 
| +// | 
| +//   value              The serialized ModelTypeState record. | 
|  | 
| class AutofillTable : public WebDatabaseTable { | 
| public: | 
| @@ -403,6 +422,28 @@ class AutofillTable : public WebDatabaseTable { | 
| // Clear all profiles. | 
| bool ClearAutofillProfiles(); | 
|  | 
| +  // Read all the stored metadata for |model_type| and fill |metadata_batch| | 
| +  // with it. | 
| +  bool GetAllSyncMetadata(syncer::ModelType model_type, | 
| +                          syncer::MetadataBatch* metadata_batch); | 
| + | 
| +  // Update the metadata row for |model_type|, keyed by |storage_key|, to | 
| +  // contain the contents of |metadata|. | 
| +  bool UpdateSyncMetadata(syncer::ModelType model_type, | 
| +                          const std::string& storage_key, | 
| +                          const sync_pb::EntityMetadata& metadata); | 
| + | 
| +  // Remove the metadata row of type |model_type| keyed by |storage|key|. | 
| +  bool ClearSyncMetadata(syncer::ModelType model_type, | 
| +                         const std::string& storage_key); | 
| + | 
| +  // Update the stored sync state for the |model_type|. | 
| +  bool UpdateModelTypeState(syncer::ModelType model_type, | 
| +                            const sync_pb::ModelTypeState& model_type_state); | 
| + | 
| +  // Clear the stored sync state for |model_type|. | 
| +  bool ClearModelTypeState(syncer::ModelType model_type); | 
| + | 
| // Table migration functions. NB: These do not and should not rely on other | 
| // functions in this class. The implementation of a function such as | 
| // GetCreditCard may change over time, but MigrateToVersionXX should never | 
| @@ -419,6 +460,7 @@ class AutofillTable : public WebDatabaseTable { | 
| bool MigrateToVersion65AddServerMetadataTables(); | 
| bool MigrateToVersion66AddCardBillingAddress(); | 
| bool MigrateToVersion67AddMaskedCardBillingAddress(); | 
| +  bool MigrateToVersion70AddSyncMetadata(); | 
|  | 
| // Max data length saved in the table, AKA the maximum length allowed for | 
| // form data. | 
| @@ -474,6 +516,12 @@ class AutofillTable : public WebDatabaseTable { | 
| std::vector<AutofillChange>* changes, | 
| base::Time time); | 
|  | 
| +  bool GetAllSyncEntityMetadata(syncer::ModelType model_type, | 
| +                                syncer::EntityMetadataMap* metadata_records); | 
| + | 
| +  bool GetModelTypeState(syncer::ModelType model_type, | 
| +                         sync_pb::ModelTypeState* state); | 
| + | 
| // Insert a single AutofillEntry into the autofill table. | 
| bool InsertAutofillEntry(const AutofillEntry& entry); | 
|  | 
| @@ -496,6 +544,8 @@ class AutofillTable : public WebDatabaseTable { | 
| bool InitServerCardMetadataTable(); | 
| bool InitServerAddressesTable(); | 
| bool InitServerAddressMetadataTable(); | 
| +  bool InitAutofillSyncMetadataTable(); | 
| +  bool InitModelTypeStateTable(); | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(AutofillTable); | 
| }; | 
|  |