summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authormaniscalco@chromium.org <maniscalco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-16 05:25:52 +0000
committermaniscalco@chromium.org <maniscalco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-16 05:25:52 +0000
commitb2e803e0bdd3a4b00d736282863960c1aaaad0a1 (patch)
treeaf7dc7b2b13decaaee215266db195b09f3e8d245 /sync
parent91d2128aa3070960c36c83c8b1c57ba458033e4c (diff)
downloadchromium_src-b2e803e0bdd3a4b00d736282863960c1aaaad0a1.zip
chromium_src-b2e803e0bdd3a4b00d736282863960c1aaaad0a1.tar.gz
chromium_src-b2e803e0bdd3a4b00d736282863960c1aaaad0a1.tar.bz2
Add server_attachment_metadata field to EntryKernel and sync database.
The server_attachment_metadata field is where attachment metadata received from the sync server is stored during the "process updates" part of the sync cycle. A subsequent CL will make use of this new field. BUG=394023 Review URL: https://codereview.chromium.org/395913003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283355 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r--sync/syncable/directory_backing_store.cc20
-rw-r--r--sync/syncable/directory_backing_store.h1
-rw-r--r--sync/syncable/directory_backing_store_unittest.cc157
-rw-r--r--sync/syncable/entry.h5
-rw-r--r--sync/syncable/entry_kernel.h1
-rw-r--r--sync/syncable/syncable_columns.h3
-rw-r--r--sync/syncable/syncable_enum_conversions.cc3
-rw-r--r--sync/test/test_directory_backing_store.h1
8 files changed, 184 insertions, 7 deletions
diff --git a/sync/syncable/directory_backing_store.cc b/sync/syncable/directory_backing_store.cc
index 55a01e6..6d08b75 100644
--- a/sync/syncable/directory_backing_store.cc
+++ b/sync/syncable/directory_backing_store.cc
@@ -35,7 +35,7 @@ namespace syncable {
static const string::size_type kUpdateStatementBufferSize = 2048;
// Increment this version whenever updating DB tables.
-const int32 kCurrentDBVersion = 88;
+const int32 kCurrentDBVersion = 89;
// Iterate over the fields of |entry| and bind each to |statement| for
// updating. Returns the number of args bound.
@@ -443,6 +443,12 @@ bool DirectoryBackingStore::InitializeTables() {
version_on_disk = 88;
}
+ // Version 89 migration adds server attachment metadata to the metas table.
+ if (version_on_disk == 88) {
+ if (MigrateVersion88To89())
+ version_on_disk = 89;
+ }
+
// 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.
@@ -1326,6 +1332,18 @@ bool DirectoryBackingStore::MigrateVersion87To88() {
return true;
}
+bool DirectoryBackingStore::MigrateVersion88To89() {
+ // Version 89 adds server_attachment_metadata.
+ if (!db_->Execute(
+ "ALTER TABLE metas ADD COLUMN "
+ "server_attachment_metadata BLOB")) {
+ return false;
+ }
+ SetVersion(89);
+ needs_column_refresh_ = true;
+ return true;
+}
+
bool DirectoryBackingStore::CreateTables() {
DVLOG(1) << "First run, creating tables";
// Create two little tables share_version and share_info
diff --git a/sync/syncable/directory_backing_store.h b/sync/syncable/directory_backing_store.h
index dfacebe..254fff4 100644
--- a/sync/syncable/directory_backing_store.h
+++ b/sync/syncable/directory_backing_store.h
@@ -173,6 +173,7 @@ class SYNC_EXPORT_PRIVATE DirectoryBackingStore : public base::NonThreadSafe {
bool MigrateVersion85To86();
bool MigrateVersion86To87();
bool MigrateVersion87To88();
+ bool MigrateVersion88To89();
scoped_ptr<sql::Connection> db_;
sql::Statement save_meta_statment_;
diff --git a/sync/syncable/directory_backing_store_unittest.cc b/sync/syncable/directory_backing_store_unittest.cc
index 88e49cf..aad9523 100644
--- a/sync/syncable/directory_backing_store_unittest.cc
+++ b/sync/syncable/directory_backing_store_unittest.cc
@@ -76,9 +76,10 @@ class MigrationTest : public testing::TestWithParam<int> {
void SetUpVersion86Database(sql::Connection* connection);
void SetUpVersion87Database(sql::Connection* connection);
void SetUpVersion88Database(sql::Connection* connection);
+ void SetUpVersion89Database(sql::Connection* connection);
void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) {
- SetUpVersion88Database(connection); // Prepopulates data.
+ SetUpVersion89Database(connection); // Prepopulates data.
scoped_ptr<TestDirectoryBackingStore> dbs(
new TestDirectoryBackingStore(GetUsername(), connection));
ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion());
@@ -2766,6 +2767,121 @@ void MigrationTest::SetUpVersion88Database(sql::Connection* connection) {
ASSERT_TRUE(connection->CommitTransaction());
}
+
+void MigrationTest::SetUpVersion89Database(sql::Connection* connection) {
+ ASSERT_TRUE(connection->is_open());
+ ASSERT_TRUE(connection->BeginTransaction());
+ ASSERT_TRUE(connection->Execute(
+ "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
+ "INSERT INTO 'share_version' VALUES('nick@chromium.org',89);"
+ "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr"
+ "ansaction_version BIGINT default 0, context BLOB);"
+ "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);"
+ "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
+ "_version bigint default -1,server_version bigint default 0,local_exte"
+ "rnal_id bigint default 0,transaction_version bigint default 0,mtime b"
+ "igint default 0,server_mtime bigint default 0,ctime bigint default 0,"
+ "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v"
+ "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_"
+ "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d"
+ "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d"
+ "el bit default 0,non_unique_name varchar,server_non_unique_name varch"
+ "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo"
+ "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s"
+ "pecifics blob,server_unique_position blob,unique_position blob,attach"
+ "ment_metadata blob,server_attachment_metadata blob);"
+ "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
+ META_PROTO_TIMES_VALS(1)
+ ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'"
+ ",X'2200',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
+ META_PROTO_TIMES_VALS(6)
+ ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'"
+ ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D"
+ "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749"
+ "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543"
+ "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
+ META_PROTO_TIMES_VALS(7)
+ ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google"
+ "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
+ META_PROTO_TIMES_VALS(8)
+ ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog"
+ "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'"
+ "2200',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
+ META_PROTO_TIMES_VALS(9)
+ ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'"
+ ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'"
+ ",NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
+ META_PROTO_TIMES_VALS(10)
+ ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo"
+ "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220"
+ "0',X'2200',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
+ META_PROTO_TIMES_VALS(11)
+ ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects"
+ ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366"
+ "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576"
+ "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703"
+ "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346"
+ "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B"
+ "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644"
+ "237646A7A2B62314130346E493D',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
+ META_PROTO_TIMES_VALS(12)
+ ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo"
+ "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324"
+ "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7"
+ "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000"
+ "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL"
+ ");"
+ "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
+ META_PROTO_TIMES_VALS(13)
+ ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio"
+ "n for Assigned Names and Numbers','ICANN | Internet Corporation for A"
+ "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967"
+ "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636"
+ "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F"
+ "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF"
+ "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2"
+ "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238"
+ "4A413D',NULL,NULL);"
+ "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
+ META_PROTO_TIMES_VALS(14)
+ ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj"
+ "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457"
+ "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77"
+ "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626"
+ "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314"
+ "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000"
+ "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL"
+ ");"
+ "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
+ "IL,base_version bigint default -1,server_version bigint default 0,loc"
+ "al_external_id bigint default 0,transaction_version bigint default 0,"
+ "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
+ "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
+ "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
+ "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
+ "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
+ "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
+ "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
+ "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
+ "erver_specifics blob,server_unique_position blob,unique_position blob"
+ ",attachment_metadata blob,server_attachment_metadata blob);"
+ "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
+ "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau"
+ "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);"
+ "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
+ "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'"
+ "9010788312004066376x-6609234393368420856x',NULL,NULL);"));
+ ASSERT_TRUE(connection->CommitTransaction());
+}
+
+
TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) {
sql::Connection connection;
ASSERT_TRUE(connection.OpenInMemory());
@@ -3256,6 +3372,22 @@ TEST_F(DirectoryBackingStoreTest, MigrateVersion87To88) {
ASSERT_TRUE(connection.DoesColumnExist("models", "context"));
}
+TEST_F(DirectoryBackingStoreTest, MigrateVersion88To89) {
+ sql::Connection connection;
+ ASSERT_TRUE(connection.OpenInMemory());
+ SetUpVersion88Database(&connection);
+ ASSERT_FALSE(
+ connection.DoesColumnExist("metas", "server_attachment_metadata"));
+
+ scoped_ptr<TestDirectoryBackingStore> dbs(
+ new TestDirectoryBackingStore(GetUsername(), &connection));
+ ASSERT_TRUE(dbs->MigrateVersion88To89());
+ ASSERT_EQ(89, dbs->GetVersion());
+ EXPECT_TRUE(
+ connection.DoesColumnExist("metas", "server_attachment_metadata"));
+ EXPECT_TRUE(dbs->needs_column_refresh_);
+}
+
// The purpose of this test case is to make it easier to get a dump of the
// database so you can implement a SetUpVersionYDatabase method. Here's what
// you should do:
@@ -3277,13 +3409,13 @@ TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) {
{
sql::Connection connection;
ASSERT_TRUE(connection.Open(GetDatabasePath()));
- SetUpVersion87Database(&connection); // Update this.
+ SetUpVersion88Database(&connection); // Update this.
scoped_ptr<TestDirectoryBackingStore> dbs(
new TestDirectoryBackingStore(GetUsername(), &connection));
- ASSERT_TRUE(dbs->MigrateVersion87To88()); // Update this.
+ ASSERT_TRUE(dbs->MigrateVersion88To89()); // Update this.
ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
- EXPECT_EQ(88, dbs->GetVersion()); // Update this.
+ EXPECT_EQ(89, dbs->GetVersion()); // Update this.
ASSERT_FALSE(dbs->needs_column_refresh_);
}
// Set breakpoint here.
@@ -3385,6 +3517,9 @@ TEST_P(MigrationTest, ToCurrentVersion) {
case 88:
SetUpVersion88Database(&connection);
break;
+ case 89:
+ SetUpVersion89Database(&connection);
+ break;
default:
// If you see this error, it may mean that you've increased the
// database version number but you haven't finished adding unit tests
@@ -3477,6 +3612,10 @@ TEST_P(MigrationTest, ToCurrentVersion) {
// Column added in version 88.
ASSERT_TRUE(connection.DoesColumnExist("models", "context"));
+ // Column added in version 89.
+ ASSERT_TRUE(
+ connection.DoesColumnExist("metas", "server_attachment_metadata"));
+
// Check download_progress state (v75 migration)
ASSERT_EQ(694,
dir_info.kernel_info.download_progress[BOOKMARKS]
@@ -3513,6 +3652,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
// Items 2, 4, and 5 were deleted.
it = handles_map.find(2);
@@ -3535,6 +3675,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_EQ(UniquePosition::kSuffixLength,
it->second->ref(UNIQUE_BOOKMARK_TAG).length());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(7);
ASSERT_EQ(7, it->second->ref(META_HANDLE));
@@ -3546,6 +3687,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(8);
ASSERT_EQ(8, it->second->ref(META_HANDLE));
@@ -3558,6 +3700,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(9);
ASSERT_EQ(9, it->second->ref(META_HANDLE));
@@ -3569,6 +3712,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(10);
ASSERT_EQ(10, it->second->ref(META_HANDLE));
@@ -3584,11 +3728,13 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME));
ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10");
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
// Make sure we didn't assign positions to server-created folders, either.
EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(11);
ASSERT_EQ(11, it->second->ref(META_HANDLE));
@@ -3629,6 +3775,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_EQ(UniquePosition::kSuffixLength,
it->second->ref(UNIQUE_BOOKMARK_TAG).length());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(13);
ASSERT_EQ(13, it->second->ref(META_HANDLE));
@@ -3637,6 +3784,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_EQ(UniquePosition::kSuffixLength,
it->second->ref(UNIQUE_BOOKMARK_TAG).length());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
it = handles_map.find(14);
ASSERT_EQ(14, it->second->ref(META_HANDLE));
@@ -3645,6 +3793,7 @@ TEST_P(MigrationTest, ToCurrentVersion) {
EXPECT_EQ(UniquePosition::kSuffixLength,
it->second->ref(UNIQUE_BOOKMARK_TAG).length());
EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
+ EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
ASSERT_EQ(static_cast<size_t>(10), handles_map.size());
diff --git a/sync/syncable/entry.h b/sync/syncable/entry.h
index 5faa6e8..184377a 100644
--- a/sync/syncable/entry.h
+++ b/sync/syncable/entry.h
@@ -210,6 +210,11 @@ class SYNC_EXPORT Entry {
return kernel_->ref(ATTACHMENT_METADATA);
}
+ const sync_pb::AttachmentMetadata& GetServerAttachmentMetadata() const {
+ DCHECK(kernel_);
+ return kernel_->ref(SERVER_ATTACHMENT_METADATA);
+ }
+
bool GetSyncing() const {
DCHECK(kernel_);
return kernel_->ref(SYNCING);
diff --git a/sync/syncable/entry_kernel.h b/sync/syncable/entry_kernel.h
index d270c4b..0c2f471 100644
--- a/sync/syncable/entry_kernel.h
+++ b/sync/syncable/entry_kernel.h
@@ -164,6 +164,7 @@ enum {
enum AttachmentMetadataField {
ATTACHMENT_METADATA = ATTACHMENT_METADATA_FIELDS_BEGIN,
+ SERVER_ATTACHMENT_METADATA,
ATTACHMENT_METADATA_FIELDS_END
};
diff --git a/sync/syncable/syncable_columns.h b/sync/syncable/syncable_columns.h
index f923bc4..7d3a967 100644
--- a/sync/syncable/syncable_columns.h
+++ b/sync/syncable/syncable_columns.h
@@ -67,7 +67,8 @@ static const ColumnSpec g_metas_columns[] = {
// proto. We store a single proto per entry (as opposed to one for each
// attachment) because it simplifies the database schema and implementation of
// DirectoryBackingStore.
- {"attachment_metadata", "blob"}
+ {"attachment_metadata", "blob"},
+ {"server_attachment_metadata", "blob"}
};
// At least enforce that there are equal number of column names and fields.
diff --git a/sync/syncable/syncable_enum_conversions.cc b/sync/syncable/syncable_enum_conversions.cc
index 0fc2147..7e0a8c9 100644
--- a/sync/syncable/syncable_enum_conversions.cc
+++ b/sync/syncable/syncable_enum_conversions.cc
@@ -163,11 +163,12 @@ const char* GetUniquePositionFieldString(UniquePositionField position_field) {
const char* GetAttachmentMetadataFieldString(
AttachmentMetadataField attachment_metadata_field) {
ASSERT_ENUM_BOUNDS(ATTACHMENT_METADATA,
- ATTACHMENT_METADATA,
+ SERVER_ATTACHMENT_METADATA,
ATTACHMENT_METADATA_FIELDS_BEGIN,
ATTACHMENT_METADATA_FIELDS_END - 1);
switch(attachment_metadata_field) {
ENUM_CASE(ATTACHMENT_METADATA);
+ ENUM_CASE(SERVER_ATTACHMENT_METADATA);
case ATTACHMENT_METADATA_FIELDS_END: break;
}
NOTREACHED();
diff --git a/sync/test/test_directory_backing_store.h b/sync/test/test_directory_backing_store.h
index 6e9d481..a1064aa 100644
--- a/sync/test/test_directory_backing_store.h
+++ b/sync/test/test_directory_backing_store.h
@@ -51,6 +51,7 @@ class TestDirectoryBackingStore : public DirectoryBackingStore {
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, MigrateVersion85To86);
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, MigrateVersion86To87);
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, MigrateVersion87To88);
+ FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, MigrateVersion88To89);
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, DetectInvalidPosition);
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, ModelTypeIds);
FRIEND_TEST_ALL_PREFIXES(DirectoryBackingStoreTest, Corruption);