OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/sync_file_system/drive/metadata_db_migration_util.h" | 5 #include "chrome/browser/sync_file_system/drive/metadata_db_migration_util.h" |
6 | 6 |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "chrome/browser/sync_file_system/drive_metadata_store.h" | 10 #include "chrome/browser/sync_file_system/drive_metadata_store.h" |
11 #include "googleurl/src/gurl.h" | 11 #include "googleurl/src/gurl.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 13 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
14 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" | 14 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" |
15 #include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" | 15 #include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" |
16 #include "webkit/common/fileapi/file_system_util.h" | 16 #include "webkit/common/fileapi/file_system_util.h" |
17 | 17 |
18 #define FPL FILE_PATH_LITERAL | 18 #define FPL FILE_PATH_LITERAL |
19 | 19 |
20 namespace sync_file_system { | 20 namespace sync_file_system { |
21 namespace drive { | 21 namespace drive { |
22 | 22 |
| 23 namespace { |
| 24 const char kV0ServiceName[] = "drive"; |
| 25 } |
| 26 |
| 27 TEST(DriveMetadataDBMigrationUtilTest, ParseV0FormatFileSystemURL) { |
| 28 const GURL kOrigin("chrome-extension://example"); |
| 29 const base::FilePath kFile(FPL("foo bar")); |
| 30 |
| 31 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName)); |
| 32 |
| 33 fileapi::FileSystemURL url = |
| 34 CreateSyncableFileSystemURL(kOrigin, kV0ServiceName, kFile); |
| 35 |
| 36 std::string serialized_url; |
| 37 SerializeSyncableFileSystemURL(url, &serialized_url); |
| 38 |
| 39 GURL origin; |
| 40 base::FilePath path; |
| 41 EXPECT_TRUE(ParseV0FormatFileSystemURL(GURL(serialized_url), &origin, &path)); |
| 42 EXPECT_EQ(kOrigin, origin); |
| 43 EXPECT_EQ(kFile, path); |
| 44 |
| 45 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName)); |
| 46 } |
| 47 |
23 TEST(DriveMetadataDBMigrationUtilTest, AddWapiIdPrefix) { | 48 TEST(DriveMetadataDBMigrationUtilTest, AddWapiIdPrefix) { |
24 DriveMetadata_ResourceType type_file = | 49 DriveMetadata_ResourceType type_file = |
25 DriveMetadata_ResourceType_RESOURCE_TYPE_FILE; | 50 DriveMetadata_ResourceType_RESOURCE_TYPE_FILE; |
26 DriveMetadata_ResourceType type_folder = | 51 DriveMetadata_ResourceType type_folder = |
27 DriveMetadata_ResourceType_RESOURCE_TYPE_FOLDER; | 52 DriveMetadata_ResourceType_RESOURCE_TYPE_FOLDER; |
28 | 53 |
29 EXPECT_EQ("file:xxx", AddWapiFilePrefix("xxx")); | 54 EXPECT_EQ("file:xxx", AddWapiFilePrefix("xxx")); |
30 EXPECT_EQ("folder:yyy", AddWapiFolderPrefix("yyy")); | 55 EXPECT_EQ("folder:yyy", AddWapiFolderPrefix("yyy")); |
31 EXPECT_EQ("file:xxx", AddWapiIdPrefix("xxx", type_file)); | 56 EXPECT_EQ("file:xxx", AddWapiIdPrefix("xxx", type_file)); |
32 EXPECT_EQ("folder:yyy", AddWapiIdPrefix("yyy", type_folder)); | 57 EXPECT_EQ("folder:yyy", AddWapiIdPrefix("yyy", type_folder)); |
33 | 58 |
34 EXPECT_EQ("", AddWapiFilePrefix("")); | 59 EXPECT_EQ("", AddWapiFilePrefix("")); |
35 EXPECT_EQ("", AddWapiFolderPrefix("")); | 60 EXPECT_EQ("", AddWapiFolderPrefix("")); |
36 EXPECT_EQ("", AddWapiIdPrefix("", type_file)); | 61 EXPECT_EQ("", AddWapiIdPrefix("", type_file)); |
37 EXPECT_EQ("", AddWapiIdPrefix("", type_folder)); | 62 EXPECT_EQ("", AddWapiIdPrefix("", type_folder)); |
38 } | 63 } |
39 | 64 |
40 TEST(DriveMetadataDBMigrationUtilTest, RemoveWapiIdPrefix) { | 65 TEST(DriveMetadataDBMigrationUtilTest, RemoveWapiIdPrefix) { |
41 EXPECT_EQ("xxx", RemoveWapiIdPrefix("xxx")); | 66 EXPECT_EQ("xxx", RemoveWapiIdPrefix("xxx")); |
42 EXPECT_EQ("yyy", RemoveWapiIdPrefix("file:yyy")); | 67 EXPECT_EQ("yyy", RemoveWapiIdPrefix("file:yyy")); |
43 EXPECT_EQ("zzz", RemoveWapiIdPrefix("folder:zzz")); | 68 EXPECT_EQ("zzz", RemoveWapiIdPrefix("folder:zzz")); |
44 | 69 |
45 EXPECT_EQ("", RemoveWapiIdPrefix("")); | 70 EXPECT_EQ("", RemoveWapiIdPrefix("")); |
46 EXPECT_EQ("foo:xxx", RemoveWapiIdPrefix("foo:xxx")); | 71 EXPECT_EQ("foo:xxx", RemoveWapiIdPrefix("foo:xxx")); |
47 } | 72 } |
48 | 73 |
| 74 TEST(DriveMetadataDBMigrationUtilTest, MigrationFromV0) { |
| 75 const char kDatabaseVersionKey[] = "VERSION"; |
| 76 const char kChangeStampKey[] = "CHANGE_STAMP"; |
| 77 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; |
| 78 const char kDriveMetadataKeyPrefix[] = "METADATA: "; |
| 79 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: "; |
| 80 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; |
| 81 |
| 82 const GURL kOrigin1("chrome-extension://example1"); |
| 83 const GURL kOrigin2("chrome-extension://example2"); |
| 84 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 85 const std::string kResourceId1("folder:hoge"); |
| 86 const std::string kResourceId2("folder:fuga"); |
| 87 const std::string kFileResourceId("file:piyo"); |
| 88 const base::FilePath kFile(FPL("foo bar")); |
| 89 const std::string kFileMD5("file_md5"); |
| 90 |
| 91 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName)); |
| 92 |
| 93 base::ScopedTempDir base_dir; |
| 94 ASSERT_TRUE(base_dir.CreateUniqueTempDir()); |
| 95 |
| 96 leveldb::Options options; |
| 97 options.create_if_missing = true; |
| 98 leveldb::DB* db_ptr = NULL; |
| 99 std::string db_dir = fileapi::FilePathToString( |
| 100 base_dir.path().Append(DriveMetadataStore::kDatabaseName)); |
| 101 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); |
| 102 |
| 103 scoped_ptr<leveldb::DB> db(db_ptr); |
| 104 ASSERT_TRUE(status.ok()); |
| 105 |
| 106 // Setup the database with the schema version 0. |
| 107 leveldb::WriteBatch batch; |
| 108 batch.Put(kChangeStampKey, "1"); |
| 109 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId); |
| 110 |
| 111 fileapi::FileSystemURL url = |
| 112 CreateSyncableFileSystemURL(kOrigin1, kV0ServiceName, kFile); |
| 113 |
| 114 // Setup drive metadata. |
| 115 DriveMetadata drive_metadata; |
| 116 drive_metadata.set_resource_id(kFileResourceId); |
| 117 drive_metadata.set_md5_checksum(kFileMD5); |
| 118 drive_metadata.set_conflicted(false); |
| 119 drive_metadata.set_to_be_fetched(false); |
| 120 |
| 121 std::string serialized_url; |
| 122 SerializeSyncableFileSystemURL(url, &serialized_url); |
| 123 std::string metadata_string; |
| 124 drive_metadata.SerializeToString(&metadata_string); |
| 125 batch.Put(kDriveMetadataKeyPrefix + serialized_url, metadata_string); |
| 126 |
| 127 // Setup batch sync origin and incremental sync origin. |
| 128 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1); |
| 129 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(), |
| 130 kResourceId2); |
| 131 |
| 132 status = db->Write(leveldb::WriteOptions(), &batch); |
| 133 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status)); |
| 134 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName)); |
| 135 |
| 136 // Migrate the database. |
| 137 drive::MigrateDatabaseFromV0ToV1(db.get()); |
| 138 |
| 139 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions())); |
| 140 |
| 141 // Verify DB schema version. |
| 142 int64 database_version = 0; |
| 143 itr->Seek(kDatabaseVersionKey); |
| 144 EXPECT_TRUE(itr->Valid()); |
| 145 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &database_version)); |
| 146 EXPECT_EQ(1, database_version); |
| 147 |
| 148 // Verify the largest changestamp. |
| 149 int64 changestamp = 0; |
| 150 itr->Seek(kChangeStampKey); |
| 151 EXPECT_TRUE(itr->Valid()); |
| 152 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &changestamp)); |
| 153 EXPECT_EQ(1, changestamp); |
| 154 |
| 155 // Verify the sync root directory. |
| 156 itr->Seek(kSyncRootDirectoryKey); |
| 157 EXPECT_TRUE(itr->Valid()); |
| 158 EXPECT_EQ(kSyncRootResourceId, itr->value().ToString()); |
| 159 |
| 160 // Verify the metadata. |
| 161 itr->Seek(kDriveMetadataKeyPrefix); |
| 162 EXPECT_TRUE(itr->Valid()); |
| 163 DriveMetadata metadata; |
| 164 EXPECT_TRUE(metadata.ParseFromString(itr->value().ToString())); |
| 165 EXPECT_EQ(kFileResourceId, metadata.resource_id()); |
| 166 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); |
| 167 EXPECT_FALSE(metadata.conflicted()); |
| 168 EXPECT_FALSE(metadata.to_be_fetched()); |
| 169 |
| 170 // Verify the batch sync origin. |
| 171 itr->Seek(kDriveBatchSyncOriginKeyPrefix); |
| 172 EXPECT_TRUE(itr->Valid()); |
| 173 EXPECT_EQ(kResourceId1, itr->value().ToString()); |
| 174 |
| 175 // Verify the incremental sync origin. |
| 176 itr->Seek(kDriveIncrementalSyncOriginKeyPrefix); |
| 177 EXPECT_TRUE(itr->Valid()); |
| 178 EXPECT_EQ(kResourceId2, itr->value().ToString()); |
| 179 } |
| 180 |
49 TEST(DriveMetadataDBMigrationUtilTest, MigrationFromV1) { | 181 TEST(DriveMetadataDBMigrationUtilTest, MigrationFromV1) { |
50 const char kDatabaseVersionKey[] = "VERSION"; | 182 const char kDatabaseVersionKey[] = "VERSION"; |
51 const char kChangeStampKey[] = "CHANGE_STAMP"; | 183 const char kChangeStampKey[] = "CHANGE_STAMP"; |
52 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; | 184 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; |
53 const char kDriveMetadataKeyPrefix[] = "METADATA: "; | 185 const char kDriveMetadataKeyPrefix[] = "METADATA: "; |
54 const char kMetadataKeySeparator = ' '; | 186 const char kMetadataKeySeparator = ' '; |
| 187 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: "; |
55 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; | 188 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; |
56 const char kDriveDisabledOriginKeyPrefix[] = "DISABLED_ORIGIN: "; | 189 const char kDriveDisabledOriginKeyPrefix[] = "DISABLED_ORIGIN: "; |
57 | 190 |
58 const GURL kOrigin1("chrome-extension://example1"); | 191 const GURL kOrigin1("chrome-extension://example1"); |
59 const GURL kOrigin2("chrome-extension://example2"); | 192 const GURL kOrigin2("chrome-extension://example2"); |
| 193 const GURL kOrigin3("chrome-extension://example3"); |
60 | 194 |
61 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 195 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
62 const std::string kResourceId1("folder:hoge"); | 196 const std::string kResourceId1("folder:hoge"); |
63 const std::string kResourceId2("folder:fuga"); | 197 const std::string kResourceId2("folder:fuga"); |
| 198 const std::string kResourceId3("folder:hogera"); |
64 const std::string kFileResourceId("file:piyo"); | 199 const std::string kFileResourceId("file:piyo"); |
65 const base::FilePath kFile(FPL("foo bar")); | 200 const base::FilePath kFile(FPL("foo bar")); |
66 const std::string kFileMD5("file_md5"); | 201 const std::string kFileMD5("file_md5"); |
67 | 202 |
68 const char kV1ServiceName[] = "drive"; | 203 const char kV1ServiceName[] = "syncfs"; |
69 ASSERT_TRUE(RegisterSyncableFileSystem(kV1ServiceName)); | 204 ASSERT_TRUE(RegisterSyncableFileSystem(kV1ServiceName)); |
70 | 205 |
71 base::ScopedTempDir base_dir; | 206 base::ScopedTempDir base_dir; |
72 ASSERT_TRUE(base_dir.CreateUniqueTempDir()); | 207 ASSERT_TRUE(base_dir.CreateUniqueTempDir()); |
73 | 208 |
74 leveldb::Options options; | 209 leveldb::Options options; |
75 options.create_if_missing = true; | 210 options.create_if_missing = true; |
76 leveldb::DB* db_ptr = NULL; | 211 leveldb::DB* db_ptr = NULL; |
77 std::string db_dir = fileapi::FilePathToString( | 212 std::string db_dir = fileapi::FilePathToString( |
78 base_dir.path().Append(DriveMetadataStore::kDatabaseName)); | 213 base_dir.path().Append(DriveMetadataStore::kDatabaseName)); |
79 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); | 214 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); |
80 | 215 |
81 scoped_ptr<leveldb::DB> db(db_ptr); | 216 scoped_ptr<leveldb::DB> db(db_ptr); |
82 ASSERT_TRUE(status.ok()); | 217 ASSERT_TRUE(status.ok()); |
83 | 218 |
84 // Setup the database with the scheme version 1. | 219 // Setup the database with the schema version 1. |
85 leveldb::WriteBatch batch; | 220 leveldb::WriteBatch batch; |
86 batch.Put(kDatabaseVersionKey, "1"); | 221 batch.Put(kDatabaseVersionKey, "1"); |
87 batch.Put(kChangeStampKey, "1"); | 222 batch.Put(kChangeStampKey, "1"); |
88 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId); | 223 batch.Put(kSyncRootDirectoryKey, kSyncRootResourceId); |
89 | 224 |
90 fileapi::FileSystemURL url = | 225 fileapi::FileSystemURL url = |
91 CreateSyncableFileSystemURL(kOrigin1, kV1ServiceName, kFile); | 226 CreateSyncableFileSystemURL(kOrigin1, kV1ServiceName, kFile); |
92 | 227 |
93 // Setup drive metadata. | 228 // Setup drive metadata. |
94 DriveMetadata drive_metadata; | 229 DriveMetadata drive_metadata; |
95 drive_metadata.set_resource_id(kFileResourceId); | 230 drive_metadata.set_resource_id(kFileResourceId); |
96 drive_metadata.set_md5_checksum(kFileMD5); | 231 drive_metadata.set_md5_checksum(kFileMD5); |
97 drive_metadata.set_conflicted(false); | 232 drive_metadata.set_conflicted(false); |
98 drive_metadata.set_to_be_fetched(false); | 233 drive_metadata.set_to_be_fetched(false); |
99 std::string metadata_string; | 234 std::string metadata_string; |
100 drive_metadata.SerializeToString(&metadata_string); | 235 drive_metadata.SerializeToString(&metadata_string); |
101 std::string metadata_key = kDriveMetadataKeyPrefix + kOrigin1.spec() + | 236 std::string metadata_key = kDriveMetadataKeyPrefix + kOrigin1.spec() + |
102 kMetadataKeySeparator + url.path().AsUTF8Unsafe(); | 237 kMetadataKeySeparator + url.path().AsUTF8Unsafe(); |
103 batch.Put(metadata_key, metadata_string); | 238 batch.Put(metadata_key, metadata_string); |
104 | 239 |
105 // Setup incremental sync origin and disabled origin. | 240 // Setup origins. |
106 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin1.spec(), | 241 batch.Put(kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1); |
107 kResourceId1); | 242 batch.Put(kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(), |
108 batch.Put(kDriveDisabledOriginKeyPrefix + kOrigin2.spec(), | |
109 kResourceId2); | 243 kResourceId2); |
| 244 batch.Put(kDriveDisabledOriginKeyPrefix + kOrigin3.spec(), kResourceId3); |
110 | 245 |
111 status = db->Write(leveldb::WriteOptions(), &batch); | 246 status = db->Write(leveldb::WriteOptions(), &batch); |
112 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status)); | 247 EXPECT_EQ(SYNC_STATUS_OK, LevelDBStatusToSyncStatusCode(status)); |
113 EXPECT_TRUE(RevokeSyncableFileSystem(kV1ServiceName)); | 248 EXPECT_TRUE(RevokeSyncableFileSystem(kV1ServiceName)); |
114 | 249 |
115 // Migrate the database. | 250 // Migrate the database. |
116 drive::MigrateDatabaseFromV1ToV2(db.get()); | 251 drive::MigrateDatabaseFromV1ToV2(db.get()); |
117 | 252 |
118 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions())); | 253 scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions())); |
119 | 254 |
120 // Verify DB scheme version. | 255 // Verify DB schema version. |
121 int64 database_version = 0; | 256 int64 database_version = 0; |
122 itr->Seek(kDatabaseVersionKey); | 257 itr->Seek(kDatabaseVersionKey); |
123 EXPECT_TRUE(itr->Valid()); | 258 EXPECT_TRUE(itr->Valid()); |
124 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &database_version)); | 259 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &database_version)); |
125 EXPECT_EQ(2, database_version); | 260 EXPECT_EQ(2, database_version); |
126 | 261 |
| 262 // Verify the largest changestamp. |
| 263 int64 changestamp = 0; |
| 264 itr->Seek(kChangeStampKey); |
| 265 EXPECT_TRUE(itr->Valid()); |
| 266 EXPECT_TRUE(base::StringToInt64(itr->value().ToString(), &changestamp)); |
| 267 EXPECT_EQ(1, changestamp); |
| 268 |
127 // Verify the sync root directory. | 269 // Verify the sync root directory. |
128 itr->Seek(kSyncRootDirectoryKey); | 270 itr->Seek(kSyncRootDirectoryKey); |
129 EXPECT_TRUE(itr->Valid()); | 271 EXPECT_TRUE(itr->Valid()); |
130 EXPECT_EQ(RemoveWapiIdPrefix(kSyncRootResourceId), itr->value().ToString()); | 272 EXPECT_EQ(RemoveWapiIdPrefix(kSyncRootResourceId), itr->value().ToString()); |
131 | 273 |
132 // Verify the metadata. | 274 // Verify the metadata. |
133 itr->Seek(kDriveMetadataKeyPrefix); | 275 itr->Seek(kDriveMetadataKeyPrefix); |
134 EXPECT_TRUE(itr->Valid()); | 276 EXPECT_TRUE(itr->Valid()); |
135 DriveMetadata metadata; | 277 DriveMetadata metadata; |
136 EXPECT_TRUE(metadata.ParseFromString(itr->value().ToString())); | 278 EXPECT_TRUE(metadata.ParseFromString(itr->value().ToString())); |
137 EXPECT_EQ(RemoveWapiIdPrefix(kFileResourceId), metadata.resource_id()); | 279 EXPECT_EQ(RemoveWapiIdPrefix(kFileResourceId), metadata.resource_id()); |
138 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); | 280 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); |
139 EXPECT_FALSE(metadata.conflicted()); | 281 EXPECT_FALSE(metadata.conflicted()); |
140 EXPECT_FALSE(metadata.to_be_fetched()); | 282 EXPECT_FALSE(metadata.to_be_fetched()); |
141 | 283 |
| 284 // Verify the batch sync origin. |
| 285 itr->Seek(kDriveBatchSyncOriginKeyPrefix); |
| 286 EXPECT_FALSE(StartsWithASCII(kDriveBatchSyncOriginKeyPrefix, |
| 287 itr->key().ToString(), true)); |
| 288 |
142 // Verify the incremental sync origin. | 289 // Verify the incremental sync origin. |
143 itr->Seek(kDriveIncrementalSyncOriginKeyPrefix); | 290 itr->Seek(kDriveIncrementalSyncOriginKeyPrefix); |
144 EXPECT_TRUE(itr->Valid()); | 291 EXPECT_TRUE(itr->Valid()); |
145 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId1), itr->value().ToString()); | 292 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId2), itr->value().ToString()); |
146 | 293 |
147 // Verify the disabled origin. | 294 // Verify the disabled origin. |
148 itr->Seek(kDriveDisabledOriginKeyPrefix); | 295 itr->Seek(kDriveDisabledOriginKeyPrefix); |
149 EXPECT_TRUE(itr->Valid()); | 296 EXPECT_TRUE(itr->Valid()); |
150 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId2), itr->value().ToString()); | 297 EXPECT_EQ(RemoveWapiIdPrefix(kResourceId3), itr->value().ToString()); |
151 } | 298 } |
152 | 299 |
153 } // namespace drive | 300 } // namespace drive |
154 } // namespace sync_file_system | 301 } // namespace sync_file_system |
OLD | NEW |