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 |