| 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_backend/sync_engine.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h" |
| 6 | 6 |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "chrome/browser/drive/drive_uploader.h" | 10 #include "chrome/browser/drive/drive_uploader.h" |
| 11 #include "chrome/browser/drive/fake_drive_service.h" | 11 #include "chrome/browser/drive/fake_drive_service.h" |
| 12 #include "chrome/browser/extensions/test_extension_service.h" | 12 #include "chrome/browser/extensions/test_extension_service.h" |
| 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" | 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
| 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" | 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" |
| 15 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" | 15 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" |
| 16 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" | 16 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" |
| 17 #include "chrome/browser/sync_file_system/drive_backend/sync_worker.h" |
| 17 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h" | 18 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h" |
| 18 #include "content/public/test/test_browser_thread_bundle.h" | 19 #include "content/public/test/test_browser_thread_bundle.h" |
| 19 #include "extensions/common/extension.h" | 20 #include "extensions/common/extension.h" |
| 20 #include "extensions/common/extension_builder.h" | 21 #include "extensions/common/extension_builder.h" |
| 21 #include "extensions/common/extension_set.h" | 22 #include "extensions/common/extension_set.h" |
| 22 #include "extensions/common/value_builder.h" | 23 #include "extensions/common/value_builder.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| 24 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" | 25 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" |
| 25 #include "third_party/leveldatabase/src/include/leveldb/env.h" | 26 #include "third_party/leveldatabase/src/include/leveldb/env.h" |
| 26 | 27 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 virtual void TearDown() OVERRIDE { | 130 virtual void TearDown() OVERRIDE { |
| 130 sync_engine_.reset(); | 131 sync_engine_.reset(); |
| 131 extension_service_.reset(); | 132 extension_service_.reset(); |
| 132 base::RunLoop().RunUntilIdle(); | 133 base::RunLoop().RunUntilIdle(); |
| 133 } | 134 } |
| 134 | 135 |
| 135 MockExtensionService* extension_service() { return extension_service_.get(); } | 136 MockExtensionService* extension_service() { return extension_service_.get(); } |
| 136 SyncEngine* sync_engine() { return sync_engine_.get(); } | 137 SyncEngine* sync_engine() { return sync_engine_.get(); } |
| 137 | 138 |
| 138 void UpdateRegisteredApps() { | 139 void UpdateRegisteredApps() { |
| 139 sync_engine_->UpdateRegisteredApps(); | 140 sync_engine_->UpdateRegisteredAppsForTesting(); |
| 140 } | 141 } |
| 141 | 142 |
| 142 SyncTaskManager* GetSyncEngineTaskManager() { | 143 SyncTaskManager* GetSyncEngineTaskManager() { |
| 143 return sync_engine_->GetSyncTaskManagerForTesting(); | 144 return sync_engine_->sync_worker_->GetSyncTaskManager(); |
| 144 } | 145 } |
| 145 | 146 |
| 146 void CheckServiceState(SyncStatusCode expected_sync_status, | 147 void CheckServiceState(SyncStatusCode expected_sync_status, |
| 147 RemoteServiceState expected_service_status, | 148 RemoteServiceState expected_service_status, |
| 148 SyncStatusCode sync_status) { | 149 SyncStatusCode sync_status) { |
| 149 EXPECT_EQ(expected_sync_status, sync_status); | 150 EXPECT_EQ(expected_sync_status, sync_status); |
| 150 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState()); | 151 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState()); |
| 151 } | 152 } |
| 152 | 153 |
| 154 MetadataDatabase* metadata_database() { |
| 155 return sync_engine()->sync_worker_->GetMetadataDatabase(); |
| 156 } |
| 157 |
| 153 private: | 158 private: |
| 154 content::TestBrowserThreadBundle browser_threads_; | 159 content::TestBrowserThreadBundle browser_threads_; |
| 155 base::ScopedTempDir profile_dir_; | 160 base::ScopedTempDir profile_dir_; |
| 156 scoped_ptr<leveldb::Env> in_memory_env_; | 161 scoped_ptr<leveldb::Env> in_memory_env_; |
| 157 | 162 |
| 158 scoped_ptr<MockExtensionService> extension_service_; | 163 scoped_ptr<MockExtensionService> extension_service_; |
| 159 scoped_ptr<drive_backend::SyncEngine> sync_engine_; | 164 scoped_ptr<drive_backend::SyncEngine> sync_engine_; |
| 160 | 165 |
| 161 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); | 166 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); |
| 162 }; | 167 }; |
| 163 | 168 |
| 164 TEST_F(SyncEngineTest, EnableOrigin) { | 169 TEST_F(SyncEngineTest, EnableOrigin) { |
| 165 FileTracker tracker; | 170 FileTracker tracker; |
| 166 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; | 171 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; |
| 167 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase(); | |
| 168 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); | 172 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); |
| 169 | 173 |
| 170 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); | 174 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); |
| 171 base::RunLoop().RunUntilIdle(); | 175 base::RunLoop().RunUntilIdle(); |
| 172 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 176 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 173 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); | 177 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); |
| 174 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 178 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 175 | 179 |
| 176 sync_engine()->DisableOrigin(origin, CreateResultReceiver(&sync_status)); | 180 sync_engine()->DisableOrigin(origin, CreateResultReceiver(&sync_status)); |
| 177 base::RunLoop().RunUntilIdle(); | 181 base::RunLoop().RunUntilIdle(); |
| 178 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 182 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 179 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); | 183 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); |
| 180 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); | 184 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); |
| 181 | 185 |
| 182 sync_engine()->EnableOrigin(origin, CreateResultReceiver(&sync_status)); | 186 sync_engine()->EnableOrigin(origin, CreateResultReceiver(&sync_status)); |
| 183 base::RunLoop().RunUntilIdle(); | 187 base::RunLoop().RunUntilIdle(); |
| 184 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 188 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 185 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); | 189 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); |
| 186 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 190 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 187 | 191 |
| 188 sync_engine()->UninstallOrigin( | 192 sync_engine()->UninstallOrigin( |
| 189 origin, | 193 origin, |
| 190 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, | 194 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, |
| 191 CreateResultReceiver(&sync_status)); | 195 CreateResultReceiver(&sync_status)); |
| 192 base::RunLoop().RunUntilIdle(); | 196 base::RunLoop().RunUntilIdle(); |
| 193 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 197 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 194 ASSERT_FALSE(metadata_database->FindAppRootTracker(kAppID, &tracker)); | 198 ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); |
| 195 } | 199 } |
| 196 | 200 |
| 197 TEST_F(SyncEngineTest, UpdateRegisteredApps) { | 201 TEST_F(SyncEngineTest, UpdateRegisteredApps) { |
| 198 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; | 202 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; |
| 199 for (int i = 0; i < 3; i++) { | 203 for (int i = 0; i < 3; i++) { |
| 200 scoped_refptr<const extensions::Extension> extension = | 204 scoped_refptr<const extensions::Extension> extension = |
| 201 extensions::ExtensionBuilder() | 205 extensions::ExtensionBuilder() |
| 202 .SetManifest(extensions::DictionaryBuilder() | 206 .SetManifest(extensions::DictionaryBuilder() |
| 203 .Set("name", "foo") | 207 .Set("name", "foo") |
| 204 .Set("version", "1.0") | 208 .Set("version", "1.0") |
| 205 .Set("manifest_version", 2)) | 209 .Set("manifest_version", 2)) |
| 206 .SetID(base::StringPrintf("app_%d", i)) | 210 .SetID(base::StringPrintf("app_%d", i)) |
| 207 .Build(); | 211 .Build(); |
| 208 extension_service()->AddExtension(extension.get()); | 212 extension_service()->AddExtension(extension.get()); |
| 209 GURL origin = extensions::Extension::GetBaseURLFromExtensionId( | 213 GURL origin = extensions::Extension::GetBaseURLFromExtensionId( |
| 210 extension->id()); | 214 extension->id()); |
| 211 sync_status = SYNC_STATUS_UNKNOWN; | 215 sync_status = SYNC_STATUS_UNKNOWN; |
| 212 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); | 216 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); |
| 213 base::RunLoop().RunUntilIdle(); | 217 base::RunLoop().RunUntilIdle(); |
| 214 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 218 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 215 } | 219 } |
| 216 | 220 |
| 217 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase(); | |
| 218 FileTracker tracker; | 221 FileTracker tracker; |
| 219 | 222 |
| 220 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker)); | 223 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker)); |
| 221 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 224 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 222 | 225 |
| 223 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker)); | 226 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker)); |
| 224 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 227 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 225 | 228 |
| 226 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_2", &tracker)); | 229 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_2", &tracker)); |
| 227 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 230 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 228 | 231 |
| 229 extension_service()->DisableExtension("app_1"); | 232 extension_service()->DisableExtension("app_1"); |
| 230 extension_service()->UninstallExtension("app_2"); | 233 extension_service()->UninstallExtension("app_2"); |
| 231 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2")); | 234 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2")); |
| 232 UpdateRegisteredApps(); | 235 UpdateRegisteredApps(); |
| 233 base::RunLoop().RunUntilIdle(); | 236 base::RunLoop().RunUntilIdle(); |
| 234 | 237 |
| 235 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker)); | 238 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker)); |
| 236 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | 239 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); |
| 237 | 240 |
| 238 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker)); | 241 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker)); |
| 239 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); | 242 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); |
| 240 | 243 |
| 241 ASSERT_FALSE(metadata_database->FindAppRootTracker("app_2", &tracker)); | 244 ASSERT_FALSE(metadata_database()->FindAppRootTracker("app_2", &tracker)); |
| 242 } | 245 } |
| 243 | 246 |
| 244 TEST_F(SyncEngineTest, GetOriginStatusMap) { | 247 TEST_F(SyncEngineTest, GetOriginStatusMap) { |
| 245 FileTracker tracker; | 248 FileTracker tracker; |
| 246 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; | 249 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; |
| 247 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); | 250 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); |
| 248 | 251 |
| 249 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"), | 252 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"), |
| 250 CreateResultReceiver(&sync_status)); | 253 CreateResultReceiver(&sync_status)); |
| 251 base::RunLoop().RunUntilIdle(); | 254 base::RunLoop().RunUntilIdle(); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 base::Bind(&SyncEngineTest::CheckServiceState, | 378 base::Bind(&SyncEngineTest::CheckServiceState, |
| 376 AsWeakPtr(), | 379 AsWeakPtr(), |
| 377 SYNC_STATUS_OK, | 380 SYNC_STATUS_OK, |
| 378 REMOTE_SERVICE_OK)); | 381 REMOTE_SERVICE_OK)); |
| 379 | 382 |
| 380 base::RunLoop().RunUntilIdle(); | 383 base::RunLoop().RunUntilIdle(); |
| 381 } | 384 } |
| 382 | 385 |
| 383 } // namespace drive_backend | 386 } // namespace drive_backend |
| 384 } // namespace sync_file_system | 387 } // namespace sync_file_system |
| OLD | NEW |