Chromium Code Reviews| Index: chrome/browser/sync/syncable/directory_backing_store.cc |
| diff --git a/chrome/browser/sync/syncable/directory_backing_store.cc b/chrome/browser/sync/syncable/directory_backing_store.cc |
| index c0036d3081c7a086235cb275c4e0a97187878ff0..68adc202aae317864be253f24f72628d24e02169 100644 |
| --- a/chrome/browser/sync/syncable/directory_backing_store.cc |
| +++ b/chrome/browser/sync/syncable/directory_backing_store.cc |
| @@ -44,7 +44,7 @@ static const string::size_type kUpdateStatementBufferSize = 2048; |
| // Increment this version whenever updating DB tables. |
| extern const int32 kCurrentDBVersion; // Global visibility for our unittest. |
| -const int32 kCurrentDBVersion = 73; |
| +const int32 kCurrentDBVersion = 74; |
| namespace { |
| @@ -379,11 +379,28 @@ bool DirectoryBackingStore::SaveChanges( |
| update.prepare(dbhandle, "UPDATE share_info " |
| "SET store_birthday = ?, " |
| "next_id = ?, " |
| - "notification_state = ?"); |
| + "notification_state = ?, " |
| + "autofill_migration_state = ?, " |
| + "bookmarks_added_during_autofill_migration = ?, " |
| + "autofill_migration_time = ?, " |
| + "autofill_entries_added_during_migration = ?, " |
| + "autofill_profiles_added_during_migration = ? "); |
| + |
| + syncable::AutofillMigrationDebugInfo& debug_info = |
| + info.autofill_migration_debug_info; |
|
tim (not reviewing)
2010/12/13 19:24:33
indent 4 spaces
lipalani
2010/12/14 21:05:57
Done.
|
| update.bind_string(0, info.store_birthday); |
| update.bind_int64(1, info.next_id); |
| update.bind_blob(2, info.notification_state.data(), |
| info.notification_state.size()); |
| + update.bind_int(3, info.autofill_migration_state); |
| + update.bind_int(4, |
| + debug_info.bookmarks_added_during_migration); |
| + update.bind_int64(5, |
| + debug_info.autofill_migration_time); |
| + update.bind_int(6, |
| + debug_info.autofill_entries_added_during_migration); |
| + update.bind_int(7, |
| + debug_info.autofill_profile_added_during_migration); |
| if (!(SQLITE_DONE == update.step() && |
| SQLITE_OK == update.reset() && |
| @@ -456,6 +473,11 @@ DirOpenResult DirectoryBackingStore::InitializeTables() { |
| version_on_disk = 73; |
| } |
| + if (version_on_disk == 73) { |
| + if (MigrateVersion73To74()) |
| + version_on_disk = 74; |
| + } |
| + |
| // If one of the migrations requested it, drop columns that aren't current. |
| // It's only safe to do this after migrating all the way to the current |
| // version. |
| @@ -556,13 +578,30 @@ bool DirectoryBackingStore::LoadInfo(Directory::KernelLoadInfo* info) { |
| SQLStatement query; |
| query.prepare(load_dbhandle_, |
| "SELECT store_birthday, next_id, cache_guid, " |
| - "notification_state FROM share_info"); |
| + "notification_state, autofill_migration_state, " |
| + "bookmarks_added_during_autofill_migration, " |
| + "autofill_migration_time, " |
| + "autofill_entries_added_during_migration, " |
| + "autofill_profiles_added_during_migration " |
| + "FROM share_info"); |
| if (SQLITE_ROW != query.step()) |
| return false; |
| info->kernel_info.store_birthday = query.column_string(0); |
| info->kernel_info.next_id = query.column_int64(1); |
| info->cache_guid = query.column_string(2); |
| query.column_blob_as_string(3, &info->kernel_info.notification_state); |
| + info->kernel_info.autofill_migration_state = |
| + static_cast<AutofillMigrationState> (query.column_int(4)); |
|
tim (not reviewing)
2010/12/13 19:24:33
indent 4 spaces. would be nice to have dchecks on
lipalani
2010/12/15 09:08:33
Not sure how dchecks can be added. fixed the inden
|
| + syncable::AutofillMigrationDebugInfo& debug_info = |
| + info->kernel_info.autofill_migration_debug_info; |
| + debug_info.bookmarks_added_during_migration = |
| + query.column_int(5); |
| + debug_info.autofill_migration_time = |
| + query.column_int64(6); |
| + debug_info.autofill_entries_added_during_migration = |
| + query.column_int(7); |
| + debug_info.autofill_profile_added_during_migration = |
| + query.column_int(8); |
| } |
| { |
| SQLStatement query; |
| @@ -926,6 +965,54 @@ bool DirectoryBackingStore::MigrateVersion72To73() { |
| return true; |
| } |
| +bool DirectoryBackingStore::MigrateVersion73To74() { |
| + int result = |
| + ExecQuery(load_dbhandle_, |
| + "ALTER TABLE share_info ADD COLUMN autofill_migration_state " |
| + "INT default 0"); |
| + if (result != SQLITE_DONE) |
| + return false; |
| + |
| + result = |
| + ExecQuery(load_dbhandle_, |
|
tim (not reviewing)
2010/12/13 19:24:33
prev line
lipalani
2010/12/14 21:05:57
Done.
|
| + "ALTER TABLE share_info ADD COLUMN " |
| + "bookmarks_added_during_autofill_migration " |
| + "INT default 0"); |
| + |
| + if (result != SQLITE_DONE) |
| + return false; |
| + |
| + result = |
| + ExecQuery(load_dbhandle_, |
|
tim (not reviewing)
2010/12/13 19:24:33
prev line
lipalani
2010/12/14 21:05:57
Done.
|
| + "ALTER TABLE share_info ADD COLUMN autofill_migration_time " |
| + "INT default 0"); |
| + |
| + if (result != SQLITE_DONE) |
| + return false; |
| + |
| + result = |
| + ExecQuery(load_dbhandle_, |
|
tim (not reviewing)
2010/12/13 19:24:33
prev line
lipalani
2010/12/14 21:05:57
Done.
|
| + "ALTER TABLE share_info ADD COLUMN " |
| + "autofill_entries_added_during_migration " |
| + "INT default 0"); |
| + |
| + if (result != SQLITE_DONE) |
| + return false; |
| + |
| + result = |
| + ExecQuery(load_dbhandle_, |
|
tim (not reviewing)
2010/12/13 19:24:33
prev line
lipalani
2010/12/14 21:05:57
Done.
|
| + "ALTER TABLE share_info ADD COLUMN " |
| + "autofill_profiles_added_during_migration " |
| + "INT default 0"); |
| + |
| + if (result != SQLITE_DONE) |
| + return false; |
| + |
| + SetVersion(74); |
| + return true; |
| +} |
| + |
| + |
| int DirectoryBackingStore::CreateTables() { |
| VLOG(1) << "First run, creating tables"; |
| // Create two little tables share_version and share_info |
| @@ -960,6 +1047,14 @@ int DirectoryBackingStore::CreateTables() { |
| "?, " // db_create_time |
| "-2, " // next_id |
| "?, " // cache_guid |
| + "?, " // autofill_migration_state |
| + "?, " // bookmarks_added |
| + // _during_autofill_migration |
| + "?, " // autofill_migration_time |
| + "?, " // autofill_entries |
| + // _added_during_migration |
| + "?, " // autofill_profiles_added |
| + // _during_migration |
| "?);"); // notification_state |
| statement.bind_string(0, dir_name_); // id |
| statement.bind_string(1, dir_name_); // name |
| @@ -967,7 +1062,12 @@ int DirectoryBackingStore::CreateTables() { |
| statement.bind_string(3, SYNC_ENGINE_VERSION_STRING); // db_create_version |
| statement.bind_int(4, static_cast<int32>(time(0))); // db_create_time |
| statement.bind_string(5, GenerateCacheGUID()); // cache_guid |
| - statement.bind_blob(6, NULL, 0); // notification_state |
| + statement.bind_int(6, 0); // autofill_migration_state |
| + statement.bind_int(7, 0); // autofill_migration_time |
| + statement.bind_int(8, 0); // bookmarks_added_during_autofill_migration |
| + statement.bind_int(9, 0); // autofill_entries_added_during_migration |
| + statement.bind_int(10, 0); // autofill_profiles_added_during_migration |
| + statement.bind_blob(11, NULL, 0); // notification_state |
| result = statement.step(); |
| } |
| if (result != SQLITE_DONE) |
| @@ -1040,7 +1140,12 @@ int DirectoryBackingStore::CreateShareInfoTable( |
| "db_create_version TEXT, " |
| "db_create_time INT, " |
| "next_id INT default -2, " |
| - "cache_guid TEXT"); |
| + "cache_guid TEXT, " |
| + "autofill_migration_state INT default 0, " |
| + "bookmarks_added_during_autofill_migration INT default 0, " |
| + "autofill_migration_time INT default 0, " |
| + "autofill_entries_added_during_migration INT default 0, " |
| + "autofill_profiles_added_during_migration INT default 0 "); |
| if (with_notification_state) { |
| query.append(", notification_state BLOB"); |
| } |