| 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" |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 | 129 |
| 130 virtual void TearDown() OVERRIDE { | 130 virtual void TearDown() OVERRIDE { |
| 131 sync_engine_.reset(); | 131 sync_engine_.reset(); |
| 132 extension_service_.reset(); | 132 extension_service_.reset(); |
| 133 base::RunLoop().RunUntilIdle(); | 133 base::RunLoop().RunUntilIdle(); |
| 134 } | 134 } |
| 135 | 135 |
| 136 MockExtensionService* extension_service() { return extension_service_.get(); } | 136 MockExtensionService* extension_service() { return extension_service_.get(); } |
| 137 SyncEngine* sync_engine() { return sync_engine_.get(); } | 137 SyncEngine* sync_engine() { return sync_engine_.get(); } |
| 138 | 138 |
| 139 void UpdateRegisteredApps() { | 139 SyncTaskManager* GetSyncTaskManager() { |
| 140 sync_engine_->UpdateRegisteredAppsForTesting(); | |
| 141 } | |
| 142 | |
| 143 SyncTaskManager* GetSyncEngineTaskManager() { | |
| 144 return sync_engine_->sync_worker_->GetSyncTaskManager(); | 140 return sync_engine_->sync_worker_->GetSyncTaskManager(); |
| 145 } | 141 } |
| 146 | 142 |
| 147 void CheckServiceState(SyncStatusCode expected_sync_status, | 143 void CheckServiceState(SyncStatusCode expected_sync_status, |
| 148 RemoteServiceState expected_service_status, | 144 RemoteServiceState expected_service_status, |
| 149 SyncStatusCode sync_status) { | 145 SyncStatusCode sync_status) { |
| 150 EXPECT_EQ(expected_sync_status, sync_status); | 146 EXPECT_EQ(expected_sync_status, sync_status); |
| 151 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState()); | 147 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState()); |
| 152 } | 148 } |
| 153 | 149 |
| 154 MetadataDatabase* metadata_database() { | 150 MetadataDatabase* metadata_database() { |
| 155 return sync_engine_->sync_worker_->GetMetadataDatabase(); | 151 return sync_engine_->sync_worker_->GetMetadataDatabase(); |
| 156 } | 152 } |
| 157 | 153 |
| 158 void SetHasRefreshToken(bool has_refresh_token) { | |
| 159 sync_engine_->sync_worker_->has_refresh_token_ = has_refresh_token; | |
| 160 } | |
| 161 | |
| 162 private: | 154 private: |
| 163 content::TestBrowserThreadBundle browser_threads_; | 155 content::TestBrowserThreadBundle browser_threads_; |
| 164 base::ScopedTempDir profile_dir_; | 156 base::ScopedTempDir profile_dir_; |
| 165 scoped_ptr<leveldb::Env> in_memory_env_; | 157 scoped_ptr<leveldb::Env> in_memory_env_; |
| 166 | 158 |
| 167 scoped_ptr<MockExtensionService> extension_service_; | 159 scoped_ptr<MockExtensionService> extension_service_; |
| 168 scoped_ptr<drive_backend::SyncEngine> sync_engine_; | 160 scoped_ptr<drive_backend::SyncEngine> sync_engine_; |
| 169 | 161 |
| 170 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); | 162 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); |
| 171 }; | 163 }; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 195 | 187 |
| 196 sync_engine()->UninstallOrigin( | 188 sync_engine()->UninstallOrigin( |
| 197 origin, | 189 origin, |
| 198 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, | 190 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, |
| 199 CreateResultReceiver(&sync_status)); | 191 CreateResultReceiver(&sync_status)); |
| 200 base::RunLoop().RunUntilIdle(); | 192 base::RunLoop().RunUntilIdle(); |
| 201 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 193 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 202 ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); | 194 ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); |
| 203 } | 195 } |
| 204 | 196 |
| 205 TEST_F(SyncEngineTest, UpdateRegisteredApps) { | |
| 206 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; | |
| 207 for (int i = 0; i < 3; i++) { | |
| 208 scoped_refptr<const extensions::Extension> extension = | |
| 209 extensions::ExtensionBuilder() | |
| 210 .SetManifest(extensions::DictionaryBuilder() | |
| 211 .Set("name", "foo") | |
| 212 .Set("version", "1.0") | |
| 213 .Set("manifest_version", 2)) | |
| 214 .SetID(base::StringPrintf("app_%d", i)) | |
| 215 .Build(); | |
| 216 extension_service()->AddExtension(extension.get()); | |
| 217 GURL origin = extensions::Extension::GetBaseURLFromExtensionId( | |
| 218 extension->id()); | |
| 219 sync_status = SYNC_STATUS_UNKNOWN; | |
| 220 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); | |
| 221 base::RunLoop().RunUntilIdle(); | |
| 222 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | |
| 223 } | |
| 224 | |
| 225 FileTracker tracker; | |
| 226 | |
| 227 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker)); | |
| 228 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | |
| 229 | |
| 230 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker)); | |
| 231 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | |
| 232 | |
| 233 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_2", &tracker)); | |
| 234 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | |
| 235 | |
| 236 extension_service()->DisableExtension("app_1"); | |
| 237 extension_service()->UninstallExtension("app_2"); | |
| 238 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2")); | |
| 239 UpdateRegisteredApps(); | |
| 240 base::RunLoop().RunUntilIdle(); | |
| 241 | |
| 242 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker)); | |
| 243 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); | |
| 244 | |
| 245 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker)); | |
| 246 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); | |
| 247 | |
| 248 ASSERT_FALSE(metadata_database()->FindAppRootTracker("app_2", &tracker)); | |
| 249 } | |
| 250 | |
| 251 TEST_F(SyncEngineTest, GetOriginStatusMap) { | 197 TEST_F(SyncEngineTest, GetOriginStatusMap) { |
| 252 FileTracker tracker; | 198 FileTracker tracker; |
| 253 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; | 199 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; |
| 254 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); | 200 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); |
| 255 | 201 |
| 256 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"), | 202 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"), |
| 257 CreateResultReceiver(&sync_status)); | 203 CreateResultReceiver(&sync_status)); |
| 258 base::RunLoop().RunUntilIdle(); | 204 base::RunLoop().RunUntilIdle(); |
| 259 EXPECT_EQ(SYNC_STATUS_OK, sync_status); | 205 EXPECT_EQ(SYNC_STATUS_OK, sync_status); |
| 260 | 206 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 278 sync_engine()->GetOriginStatusMap(CreateResultReceiver(&status_map)); | 224 sync_engine()->GetOriginStatusMap(CreateResultReceiver(&status_map)); |
| 279 base::RunLoop().RunUntilIdle(); | 225 base::RunLoop().RunUntilIdle(); |
| 280 ASSERT_EQ(2u, status_map->size()); | 226 ASSERT_EQ(2u, status_map->size()); |
| 281 EXPECT_EQ("Enabled", (*status_map)[GURL("chrome-extension://app_0")]); | 227 EXPECT_EQ("Enabled", (*status_map)[GURL("chrome-extension://app_0")]); |
| 282 EXPECT_EQ("Disabled", (*status_map)[GURL("chrome-extension://app_1")]); | 228 EXPECT_EQ("Disabled", (*status_map)[GURL("chrome-extension://app_1")]); |
| 283 } | 229 } |
| 284 | 230 |
| 285 TEST_F(SyncEngineTest, UpdateServiceState) { | 231 TEST_F(SyncEngineTest, UpdateServiceState) { |
| 286 EXPECT_EQ(REMOTE_SERVICE_OK, sync_engine()->GetCurrentState()); | 232 EXPECT_EQ(REMOTE_SERVICE_OK, sync_engine()->GetCurrentState()); |
| 287 | 233 |
| 288 SetHasRefreshToken(true); | 234 // Assume an user is in login state. |
| 235 sync_engine()->OnReadyToSendRequests(); |
| 289 | 236 |
| 290 GetSyncEngineTaskManager()->ScheduleTask( | 237 GetSyncTaskManager()->ScheduleTask( |
| 291 FROM_HERE, | 238 FROM_HERE, |
| 292 base::Bind(&EmptyTask, SYNC_STATUS_AUTHENTICATION_FAILED), | 239 base::Bind(&EmptyTask, SYNC_STATUS_AUTHENTICATION_FAILED), |
| 293 SyncTaskManager::PRIORITY_MED, | 240 SyncTaskManager::PRIORITY_MED, |
| 294 base::Bind(&SyncEngineTest::CheckServiceState, | 241 base::Bind(&SyncEngineTest::CheckServiceState, |
| 295 AsWeakPtr(), | 242 AsWeakPtr(), |
| 296 SYNC_STATUS_AUTHENTICATION_FAILED, | 243 SYNC_STATUS_AUTHENTICATION_FAILED, |
| 297 REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); | 244 REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); |
| 298 | 245 |
| 299 GetSyncEngineTaskManager()->ScheduleTask( | 246 GetSyncTaskManager()->ScheduleTask( |
| 300 FROM_HERE, | 247 FROM_HERE, |
| 301 base::Bind(&EmptyTask, SYNC_STATUS_ACCESS_FORBIDDEN), | 248 base::Bind(&EmptyTask, SYNC_STATUS_ACCESS_FORBIDDEN), |
| 302 SyncTaskManager::PRIORITY_MED, | 249 SyncTaskManager::PRIORITY_MED, |
| 303 base::Bind(&SyncEngineTest::CheckServiceState, | 250 base::Bind(&SyncEngineTest::CheckServiceState, |
| 304 AsWeakPtr(), | 251 AsWeakPtr(), |
| 305 SYNC_STATUS_ACCESS_FORBIDDEN, | 252 SYNC_STATUS_ACCESS_FORBIDDEN, |
| 306 REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); | 253 REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); |
| 307 | 254 |
| 308 GetSyncEngineTaskManager()->ScheduleTask( | 255 GetSyncTaskManager()->ScheduleTask( |
| 309 FROM_HERE, | 256 FROM_HERE, |
| 310 base::Bind(&EmptyTask, SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE), | 257 base::Bind(&EmptyTask, SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE), |
| 311 SyncTaskManager::PRIORITY_MED, | 258 SyncTaskManager::PRIORITY_MED, |
| 312 base::Bind(&SyncEngineTest::CheckServiceState, | 259 base::Bind(&SyncEngineTest::CheckServiceState, |
| 313 AsWeakPtr(), | 260 AsWeakPtr(), |
| 314 SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE, | 261 SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE, |
| 315 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); | 262 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); |
| 316 | 263 |
| 317 GetSyncEngineTaskManager()->ScheduleTask( | 264 GetSyncTaskManager()->ScheduleTask( |
| 318 FROM_HERE, | 265 FROM_HERE, |
| 319 base::Bind(&EmptyTask, SYNC_STATUS_NETWORK_ERROR), | 266 base::Bind(&EmptyTask, SYNC_STATUS_NETWORK_ERROR), |
| 320 SyncTaskManager::PRIORITY_MED, | 267 SyncTaskManager::PRIORITY_MED, |
| 321 base::Bind(&SyncEngineTest::CheckServiceState, | 268 base::Bind(&SyncEngineTest::CheckServiceState, |
| 322 AsWeakPtr(), | 269 AsWeakPtr(), |
| 323 SYNC_STATUS_NETWORK_ERROR, | 270 SYNC_STATUS_NETWORK_ERROR, |
| 324 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); | 271 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); |
| 325 | 272 |
| 326 GetSyncEngineTaskManager()->ScheduleTask( | 273 GetSyncTaskManager()->ScheduleTask( |
| 327 FROM_HERE, | 274 FROM_HERE, |
| 328 base::Bind(&EmptyTask, SYNC_STATUS_ABORT), | 275 base::Bind(&EmptyTask, SYNC_STATUS_ABORT), |
| 329 SyncTaskManager::PRIORITY_MED, | 276 SyncTaskManager::PRIORITY_MED, |
| 330 base::Bind(&SyncEngineTest::CheckServiceState, | 277 base::Bind(&SyncEngineTest::CheckServiceState, |
| 331 AsWeakPtr(), | 278 AsWeakPtr(), |
| 332 SYNC_STATUS_ABORT, | 279 SYNC_STATUS_ABORT, |
| 333 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); | 280 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); |
| 334 | 281 |
| 335 GetSyncEngineTaskManager()->ScheduleTask( | 282 GetSyncTaskManager()->ScheduleTask( |
| 336 FROM_HERE, | 283 FROM_HERE, |
| 337 base::Bind(&EmptyTask, SYNC_STATUS_FAILED), | 284 base::Bind(&EmptyTask, SYNC_STATUS_FAILED), |
| 338 SyncTaskManager::PRIORITY_MED, | 285 SyncTaskManager::PRIORITY_MED, |
| 339 base::Bind(&SyncEngineTest::CheckServiceState, | 286 base::Bind(&SyncEngineTest::CheckServiceState, |
| 340 AsWeakPtr(), | 287 AsWeakPtr(), |
| 341 SYNC_STATUS_FAILED, | 288 SYNC_STATUS_FAILED, |
| 342 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); | 289 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); |
| 343 | 290 |
| 344 GetSyncEngineTaskManager()->ScheduleTask( | 291 GetSyncTaskManager()->ScheduleTask( |
| 345 FROM_HERE, | 292 FROM_HERE, |
| 346 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_CORRUPTION), | 293 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_CORRUPTION), |
| 347 SyncTaskManager::PRIORITY_MED, | 294 SyncTaskManager::PRIORITY_MED, |
| 348 base::Bind(&SyncEngineTest::CheckServiceState, | 295 base::Bind(&SyncEngineTest::CheckServiceState, |
| 349 AsWeakPtr(), | 296 AsWeakPtr(), |
| 350 SYNC_DATABASE_ERROR_CORRUPTION, | 297 SYNC_DATABASE_ERROR_CORRUPTION, |
| 351 REMOTE_SERVICE_DISABLED)); | 298 REMOTE_SERVICE_DISABLED)); |
| 352 | 299 |
| 353 GetSyncEngineTaskManager()->ScheduleTask( | 300 GetSyncTaskManager()->ScheduleTask( |
| 354 FROM_HERE, | 301 FROM_HERE, |
| 355 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_IO_ERROR), | 302 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_IO_ERROR), |
| 356 SyncTaskManager::PRIORITY_MED, | 303 SyncTaskManager::PRIORITY_MED, |
| 357 base::Bind(&SyncEngineTest::CheckServiceState, | 304 base::Bind(&SyncEngineTest::CheckServiceState, |
| 358 AsWeakPtr(), | 305 AsWeakPtr(), |
| 359 SYNC_DATABASE_ERROR_IO_ERROR, | 306 SYNC_DATABASE_ERROR_IO_ERROR, |
| 360 REMOTE_SERVICE_DISABLED)); | 307 REMOTE_SERVICE_DISABLED)); |
| 361 | 308 |
| 362 GetSyncEngineTaskManager()->ScheduleTask( | 309 GetSyncTaskManager()->ScheduleTask( |
| 363 FROM_HERE, | 310 FROM_HERE, |
| 364 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_FAILED), | 311 base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_FAILED), |
| 365 SyncTaskManager::PRIORITY_MED, | 312 SyncTaskManager::PRIORITY_MED, |
| 366 base::Bind(&SyncEngineTest::CheckServiceState, | 313 base::Bind(&SyncEngineTest::CheckServiceState, |
| 367 AsWeakPtr(), | 314 AsWeakPtr(), |
| 368 SYNC_DATABASE_ERROR_FAILED, | 315 SYNC_DATABASE_ERROR_FAILED, |
| 369 REMOTE_SERVICE_DISABLED)); | 316 REMOTE_SERVICE_DISABLED)); |
| 370 | 317 |
| 371 GetSyncEngineTaskManager()->ScheduleSyncTask( | 318 GetSyncTaskManager()->ScheduleSyncTask( |
| 372 FROM_HERE, | 319 FROM_HERE, |
| 373 scoped_ptr<SyncTask>(new MockSyncTask(false)), | 320 scoped_ptr<SyncTask>(new MockSyncTask(false)), |
| 374 SyncTaskManager::PRIORITY_MED, | 321 SyncTaskManager::PRIORITY_MED, |
| 375 base::Bind(&SyncEngineTest::CheckServiceState, | 322 base::Bind(&SyncEngineTest::CheckServiceState, |
| 376 AsWeakPtr(), | 323 AsWeakPtr(), |
| 377 SYNC_STATUS_OK, | 324 SYNC_STATUS_OK, |
| 378 REMOTE_SERVICE_DISABLED)); | 325 REMOTE_SERVICE_DISABLED)); |
| 379 | 326 |
| 380 GetSyncEngineTaskManager()->ScheduleSyncTask( | 327 GetSyncTaskManager()->ScheduleSyncTask( |
| 381 FROM_HERE, | 328 FROM_HERE, |
| 382 scoped_ptr<SyncTask>(new MockSyncTask(true)), | 329 scoped_ptr<SyncTask>(new MockSyncTask(true)), |
| 383 SyncTaskManager::PRIORITY_MED, | 330 SyncTaskManager::PRIORITY_MED, |
| 384 base::Bind(&SyncEngineTest::CheckServiceState, | 331 base::Bind(&SyncEngineTest::CheckServiceState, |
| 385 AsWeakPtr(), | 332 AsWeakPtr(), |
| 386 SYNC_STATUS_OK, | 333 SYNC_STATUS_OK, |
| 387 REMOTE_SERVICE_OK)); | 334 REMOTE_SERVICE_OK)); |
| 388 | 335 |
| 389 base::RunLoop().RunUntilIdle(); | 336 base::RunLoop().RunUntilIdle(); |
| 390 } | 337 } |
| 391 | 338 |
| 392 } // namespace drive_backend | 339 } // namespace drive_backend |
| 393 } // namespace sync_file_system | 340 } // namespace sync_file_system |
| OLD | NEW |