| 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/local/local_file_sync_context.h" | 5 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 virtual void TearDown() OVERRIDE { | 75 virtual void TearDown() OVERRIDE { |
| 76 RevokeSyncableFileSystem(); | 76 RevokeSyncableFileSystem(); |
| 77 } | 77 } |
| 78 | 78 |
| 79 void StartPrepareForSync(FileSystemContext* file_system_context, | 79 void StartPrepareForSync(FileSystemContext* file_system_context, |
| 80 const FileSystemURL& url, | 80 const FileSystemURL& url, |
| 81 LocalFileSyncContext::SyncMode sync_mode, | 81 LocalFileSyncContext::SyncMode sync_mode, |
| 82 SyncFileMetadata* metadata, | 82 SyncFileMetadata* metadata, |
| 83 FileChangeList* changes, | 83 FileChangeList* changes, |
| 84 storage::ScopedFile* snapshot) { | 84 storage::ScopedFile* snapshot) { |
| 85 ASSERT_TRUE(changes != NULL); | 85 ASSERT_TRUE(changes != nullptr); |
| 86 ASSERT_FALSE(has_inflight_prepare_for_sync_); | 86 ASSERT_FALSE(has_inflight_prepare_for_sync_); |
| 87 status_ = SYNC_STATUS_UNKNOWN; | 87 status_ = SYNC_STATUS_UNKNOWN; |
| 88 has_inflight_prepare_for_sync_ = true; | 88 has_inflight_prepare_for_sync_ = true; |
| 89 sync_context_->PrepareForSync( | 89 sync_context_->PrepareForSync( |
| 90 file_system_context, | 90 file_system_context, |
| 91 url, | 91 url, |
| 92 sync_mode, | 92 sync_mode, |
| 93 base::Bind(&LocalFileSyncContextTest::DidPrepareForSync, | 93 base::Bind(&LocalFileSyncContextTest::DidPrepareForSync, |
| 94 base::Unretained(this), metadata, changes, snapshot)); | 94 base::Unretained(this), metadata, changes, snapshot)); |
| 95 } | 95 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 SyncFileType expected_file_type) { | 142 SyncFileType expected_file_type) { |
| 143 SCOPED_TRACE(testing::Message() << "ApplyChange for " << | 143 SCOPED_TRACE(testing::Message() << "ApplyChange for " << |
| 144 url.DebugString()); | 144 url.DebugString()); |
| 145 | 145 |
| 146 // First we should call PrepareForSync to disable writing. | 146 // First we should call PrepareForSync to disable writing. |
| 147 SyncFileMetadata metadata; | 147 SyncFileMetadata metadata; |
| 148 FileChangeList changes; | 148 FileChangeList changes; |
| 149 EXPECT_EQ(SYNC_STATUS_OK, | 149 EXPECT_EQ(SYNC_STATUS_OK, |
| 150 PrepareForSync(file_system_context, url, | 150 PrepareForSync(file_system_context, url, |
| 151 LocalFileSyncContext::SYNC_EXCLUSIVE, | 151 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 152 &metadata, &changes, NULL)); | 152 &metadata, &changes, nullptr)); |
| 153 EXPECT_EQ(expected_file_type, metadata.file_type); | 153 EXPECT_EQ(expected_file_type, metadata.file_type); |
| 154 | 154 |
| 155 status_ = SYNC_STATUS_UNKNOWN; | 155 status_ = SYNC_STATUS_UNKNOWN; |
| 156 sync_context_->ApplyRemoteChange( | 156 sync_context_->ApplyRemoteChange( |
| 157 file_system_context, change, local_path, url, | 157 file_system_context, change, local_path, url, |
| 158 base::Bind(&LocalFileSyncContextTest::DidApplyRemoteChange, | 158 base::Bind(&LocalFileSyncContextTest::DidApplyRemoteChange, |
| 159 base::Unretained(this), | 159 base::Unretained(this), |
| 160 make_scoped_refptr(file_system_context), url)); | 160 make_scoped_refptr(file_system_context), url)); |
| 161 base::MessageLoop::current()->Run(); | 161 base::MessageLoop::current()->Run(); |
| 162 return status_; | 162 return status_; |
| 163 } | 163 } |
| 164 | 164 |
| 165 void DidApplyRemoteChange(FileSystemContext* file_system_context, | 165 void DidApplyRemoteChange(FileSystemContext* file_system_context, |
| 166 const FileSystemURL& url, | 166 const FileSystemURL& url, |
| 167 SyncStatusCode status) { | 167 SyncStatusCode status) { |
| 168 status_ = status; | 168 status_ = status; |
| 169 sync_context_->FinalizeExclusiveSync( | 169 sync_context_->FinalizeExclusiveSync( |
| 170 file_system_context, url, | 170 file_system_context, url, |
| 171 status == SYNC_STATUS_OK /* clear_local_changes */, | 171 status == SYNC_STATUS_OK /* clear_local_changes */, |
| 172 base::MessageLoop::QuitClosure()); | 172 base::MessageLoop::QuitClosure()); |
| 173 } | 173 } |
| 174 | 174 |
| 175 void StartModifyFileOnIOThread(CannedSyncableFileSystem* file_system, | 175 void StartModifyFileOnIOThread(CannedSyncableFileSystem* file_system, |
| 176 const FileSystemURL& url) { | 176 const FileSystemURL& url) { |
| 177 ASSERT_TRUE(file_system != NULL); | 177 ASSERT_TRUE(file_system != nullptr); |
| 178 if (!io_task_runner_->RunsTasksOnCurrentThread()) { | 178 if (!io_task_runner_->RunsTasksOnCurrentThread()) { |
| 179 async_modify_finished_ = false; | 179 async_modify_finished_ = false; |
| 180 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); | 180 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); |
| 181 io_task_runner_->PostTask( | 181 io_task_runner_->PostTask( |
| 182 FROM_HERE, | 182 FROM_HERE, |
| 183 base::Bind(&LocalFileSyncContextTest::StartModifyFileOnIOThread, | 183 base::Bind(&LocalFileSyncContextTest::StartModifyFileOnIOThread, |
| 184 base::Unretained(this), file_system, url)); | 184 base::Unretained(this), file_system, url)); |
| 185 return; | 185 return; |
| 186 } | 186 } |
| 187 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 187 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 sync_context_.get())); | 242 sync_context_.get())); |
| 243 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); | 243 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 244 | 244 |
| 245 const FileSystemURL kFile(file_system.URL("file")); | 245 const FileSystemURL kFile(file_system.URL("file")); |
| 246 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); | 246 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); |
| 247 | 247 |
| 248 SyncFileMetadata metadata; | 248 SyncFileMetadata metadata; |
| 249 FileChangeList changes; | 249 FileChangeList changes; |
| 250 EXPECT_EQ(SYNC_STATUS_OK, | 250 EXPECT_EQ(SYNC_STATUS_OK, |
| 251 PrepareForSync(file_system.file_system_context(), kFile, | 251 PrepareForSync(file_system.file_system_context(), kFile, |
| 252 sync_mode, &metadata, &changes, NULL)); | 252 sync_mode, &metadata, &changes, nullptr)); |
| 253 EXPECT_EQ(1U, changes.size()); | 253 EXPECT_EQ(1U, changes.size()); |
| 254 EXPECT_TRUE(changes.list().back().IsFile()); | 254 EXPECT_TRUE(changes.list().back().IsFile()); |
| 255 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 255 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 256 | 256 |
| 257 // We should see the same set of changes. | 257 // We should see the same set of changes. |
| 258 file_system.GetChangesForURLInTracker(kFile, &changes); | 258 file_system.GetChangesForURLInTracker(kFile, &changes); |
| 259 EXPECT_EQ(1U, changes.size()); | 259 EXPECT_EQ(1U, changes.size()); |
| 260 EXPECT_TRUE(changes.list().back().IsFile()); | 260 EXPECT_TRUE(changes.list().back().IsFile()); |
| 261 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 261 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 262 | 262 |
| 263 SimulateFinishSync(file_system.file_system_context(), kFile, | 263 SimulateFinishSync(file_system.file_system_context(), kFile, |
| 264 simulate_sync_finish_status, sync_mode); | 264 simulate_sync_finish_status, sync_mode); |
| 265 | 265 |
| 266 file_system.GetChangesForURLInTracker(kFile, &changes); | 266 file_system.GetChangesForURLInTracker(kFile, &changes); |
| 267 if (simulate_sync_finish_status == SYNC_STATUS_OK) { | 267 if (simulate_sync_finish_status == SYNC_STATUS_OK) { |
| 268 // The change's cleared. | 268 // The change's cleared. |
| 269 EXPECT_TRUE(changes.empty()); | 269 EXPECT_TRUE(changes.empty()); |
| 270 } else { | 270 } else { |
| 271 EXPECT_EQ(1U, changes.size()); | 271 EXPECT_EQ(1U, changes.size()); |
| 272 EXPECT_TRUE(changes.list().back().IsFile()); | 272 EXPECT_TRUE(changes.list().back().IsFile()); |
| 273 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 273 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 274 } | 274 } |
| 275 | 275 |
| 276 sync_context_->ShutdownOnUIThread(); | 276 sync_context_->ShutdownOnUIThread(); |
| 277 sync_context_ = NULL; | 277 sync_context_ = nullptr; |
| 278 | 278 |
| 279 file_system.TearDown(); | 279 file_system.TearDown(); |
| 280 } | 280 } |
| 281 | 281 |
| 282 void PrepareForSync_WriteDuringSync( | 282 void PrepareForSync_WriteDuringSync( |
| 283 LocalFileSyncContext::SyncMode sync_mode) { | 283 LocalFileSyncContext::SyncMode sync_mode) { |
| 284 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 284 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 285 in_memory_env_.get(), | 285 in_memory_env_.get(), |
| 286 io_task_runner_.get(), | 286 io_task_runner_.get(), |
| 287 file_task_runner_.get()); | 287 file_task_runner_.get()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); | 332 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); |
| 333 | 333 |
| 334 // Sync succeeded, but the other change that was made during or | 334 // Sync succeeded, but the other change that was made during or |
| 335 // after sync is recorded. | 335 // after sync is recorded. |
| 336 file_system.GetChangesForURLInTracker(kFile, &changes); | 336 file_system.GetChangesForURLInTracker(kFile, &changes); |
| 337 EXPECT_EQ(1U, changes.size()); | 337 EXPECT_EQ(1U, changes.size()); |
| 338 EXPECT_TRUE(changes.list().back().IsFile()); | 338 EXPECT_TRUE(changes.list().back().IsFile()); |
| 339 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 339 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 340 | 340 |
| 341 sync_context_->ShutdownOnUIThread(); | 341 sync_context_->ShutdownOnUIThread(); |
| 342 sync_context_ = NULL; | 342 sync_context_ = nullptr; |
| 343 | 343 |
| 344 file_system.TearDown(); | 344 file_system.TearDown(); |
| 345 } | 345 } |
| 346 | 346 |
| 347 base::ScopedTempDir dir_; | 347 base::ScopedTempDir dir_; |
| 348 scoped_ptr<leveldb::Env> in_memory_env_; | 348 scoped_ptr<leveldb::Env> in_memory_env_; |
| 349 | 349 |
| 350 // These need to remain until the very end. | 350 // These need to remain until the very end. |
| 351 content::TestBrowserThreadBundle thread_bundle_; | 351 content::TestBrowserThreadBundle thread_bundle_; |
| 352 | 352 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 380 sync_context_ = new LocalFileSyncContext( | 380 sync_context_ = new LocalFileSyncContext( |
| 381 dir_.path(), in_memory_env_.get(), | 381 dir_.path(), in_memory_env_.get(), |
| 382 ui_task_runner_.get(), io_task_runner_.get()); | 382 ui_task_runner_.get(), io_task_runner_.get()); |
| 383 | 383 |
| 384 // Initializes file_system using |sync_context_|. | 384 // Initializes file_system using |sync_context_|. |
| 385 EXPECT_EQ(SYNC_STATUS_OK, | 385 EXPECT_EQ(SYNC_STATUS_OK, |
| 386 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 386 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 387 | 387 |
| 388 // Make sure everything's set up for file_system to be able to handle | 388 // Make sure everything's set up for file_system to be able to handle |
| 389 // syncable file system operations. | 389 // syncable file system operations. |
| 390 EXPECT_TRUE(file_system.backend()->sync_context() != NULL); | 390 EXPECT_TRUE(file_system.backend()->sync_context() != nullptr); |
| 391 EXPECT_TRUE(file_system.backend()->change_tracker() != NULL); | 391 EXPECT_TRUE(file_system.backend()->change_tracker() != nullptr); |
| 392 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); | 392 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); |
| 393 | 393 |
| 394 // Calling MaybeInitialize for the same context multiple times must be ok. | 394 // Calling MaybeInitialize for the same context multiple times must be ok. |
| 395 EXPECT_EQ(SYNC_STATUS_OK, | 395 EXPECT_EQ(SYNC_STATUS_OK, |
| 396 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 396 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 397 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); | 397 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); |
| 398 | 398 |
| 399 // Opens the file_system, perform some operation and see if the change tracker | 399 // Opens the file_system, perform some operation and see if the change tracker |
| 400 // correctly captures the change. | 400 // correctly captures the change. |
| 401 EXPECT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); | 401 EXPECT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 urls.clear(); | 468 urls.clear(); |
| 469 file_system2.GetChangedURLsInTracker(&urls); | 469 file_system2.GetChangedURLsInTracker(&urls); |
| 470 ASSERT_EQ(1U, urls.size()); | 470 ASSERT_EQ(1U, urls.size()); |
| 471 EXPECT_TRUE(ContainsKey(urls, kURL2)); | 471 EXPECT_TRUE(ContainsKey(urls, kURL2)); |
| 472 | 472 |
| 473 SyncFileMetadata metadata; | 473 SyncFileMetadata metadata; |
| 474 FileChangeList changes; | 474 FileChangeList changes; |
| 475 EXPECT_EQ(SYNC_STATUS_OK, | 475 EXPECT_EQ(SYNC_STATUS_OK, |
| 476 PrepareForSync(file_system1.file_system_context(), kURL1, | 476 PrepareForSync(file_system1.file_system_context(), kURL1, |
| 477 LocalFileSyncContext::SYNC_EXCLUSIVE, | 477 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 478 &metadata, &changes, NULL)); | 478 &metadata, &changes, nullptr)); |
| 479 EXPECT_EQ(1U, changes.size()); | 479 EXPECT_EQ(1U, changes.size()); |
| 480 EXPECT_TRUE(changes.list().back().IsFile()); | 480 EXPECT_TRUE(changes.list().back().IsFile()); |
| 481 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 481 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 482 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); | 482 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); |
| 483 EXPECT_EQ(0, metadata.size); | 483 EXPECT_EQ(0, metadata.size); |
| 484 | 484 |
| 485 changes.clear(); | 485 changes.clear(); |
| 486 EXPECT_EQ(SYNC_STATUS_OK, | 486 EXPECT_EQ(SYNC_STATUS_OK, |
| 487 PrepareForSync(file_system2.file_system_context(), kURL2, | 487 PrepareForSync(file_system2.file_system_context(), kURL2, |
| 488 LocalFileSyncContext::SYNC_EXCLUSIVE, | 488 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 489 &metadata, &changes, NULL)); | 489 &metadata, &changes, nullptr)); |
| 490 EXPECT_EQ(1U, changes.size()); | 490 EXPECT_EQ(1U, changes.size()); |
| 491 EXPECT_FALSE(changes.list().back().IsFile()); | 491 EXPECT_FALSE(changes.list().back().IsFile()); |
| 492 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 492 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 493 EXPECT_EQ(SYNC_FILE_TYPE_DIRECTORY, metadata.file_type); | 493 EXPECT_EQ(SYNC_FILE_TYPE_DIRECTORY, metadata.file_type); |
| 494 EXPECT_EQ(0, metadata.size); | 494 EXPECT_EQ(0, metadata.size); |
| 495 | 495 |
| 496 sync_context_->ShutdownOnUIThread(); | 496 sync_context_->ShutdownOnUIThread(); |
| 497 sync_context_ = NULL; | 497 sync_context_ = nullptr; |
| 498 | 498 |
| 499 file_system1.TearDown(); | 499 file_system1.TearDown(); |
| 500 file_system2.TearDown(); | 500 file_system2.TearDown(); |
| 501 } | 501 } |
| 502 | 502 |
| 503 TEST_F(LocalFileSyncContextTest, PrepareSync_SyncSuccess_Exclusive) { | 503 TEST_F(LocalFileSyncContextTest, PrepareSync_SyncSuccess_Exclusive) { |
| 504 PrepareForSync_Basic(LocalFileSyncContext::SYNC_EXCLUSIVE, | 504 PrepareForSync_Basic(LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 505 SYNC_STATUS_OK); | 505 SYNC_STATUS_OK); |
| 506 } | 506 } |
| 507 | 507 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 // Kick file write on IO thread. | 554 // Kick file write on IO thread. |
| 555 StartModifyFileOnIOThread(&file_system, kURL1); | 555 StartModifyFileOnIOThread(&file_system, kURL1); |
| 556 | 556 |
| 557 // Until the operation finishes PrepareForSync should return BUSY error. | 557 // Until the operation finishes PrepareForSync should return BUSY error. |
| 558 SyncFileMetadata metadata; | 558 SyncFileMetadata metadata; |
| 559 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; | 559 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; |
| 560 FileChangeList changes; | 560 FileChangeList changes; |
| 561 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, | 561 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, |
| 562 PrepareForSync(file_system.file_system_context(), kURL1, | 562 PrepareForSync(file_system.file_system_context(), kURL1, |
| 563 LocalFileSyncContext::SYNC_EXCLUSIVE, | 563 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 564 &metadata, &changes, NULL)); | 564 &metadata, &changes, nullptr)); |
| 565 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); | 565 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); |
| 566 | 566 |
| 567 // Register PrepareForSync method to be invoked when kURL1 becomes | 567 // Register PrepareForSync method to be invoked when kURL1 becomes |
| 568 // syncable. (Actually this may be done after all operations are done | 568 // syncable. (Actually this may be done after all operations are done |
| 569 // on IO thread in this test.) | 569 // on IO thread in this test.) |
| 570 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; | 570 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; |
| 571 changes.clear(); | 571 changes.clear(); |
| 572 sync_context_->RegisterURLForWaitingSync( | 572 sync_context_->RegisterURLForWaitingSync( |
| 573 kURL1, GetPrepareForSyncClosure(file_system.file_system_context(), kURL1, | 573 kURL1, GetPrepareForSyncClosure(file_system.file_system_context(), kURL1, |
| 574 LocalFileSyncContext::SYNC_EXCLUSIVE, | 574 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 575 &metadata, &changes, NULL)); | 575 &metadata, &changes, nullptr)); |
| 576 | 576 |
| 577 // Wait for the completion. | 577 // Wait for the completion. |
| 578 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); | 578 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); |
| 579 | 579 |
| 580 // The PrepareForSync must have been started; wait until DidPrepareForSync | 580 // The PrepareForSync must have been started; wait until DidPrepareForSync |
| 581 // is done. | 581 // is done. |
| 582 base::MessageLoop::current()->Run(); | 582 base::MessageLoop::current()->Run(); |
| 583 ASSERT_FALSE(has_inflight_prepare_for_sync_); | 583 ASSERT_FALSE(has_inflight_prepare_for_sync_); |
| 584 | 584 |
| 585 // Now PrepareForSync should have run and returned OK. | 585 // Now PrepareForSync should have run and returned OK. |
| 586 EXPECT_EQ(SYNC_STATUS_OK, status_); | 586 EXPECT_EQ(SYNC_STATUS_OK, status_); |
| 587 EXPECT_EQ(1U, changes.size()); | 587 EXPECT_EQ(1U, changes.size()); |
| 588 EXPECT_TRUE(changes.list().back().IsFile()); | 588 EXPECT_TRUE(changes.list().back().IsFile()); |
| 589 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 589 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 590 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); | 590 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); |
| 591 EXPECT_EQ(1, metadata.size); | 591 EXPECT_EQ(1, metadata.size); |
| 592 | 592 |
| 593 sync_context_->ShutdownOnUIThread(); | 593 sync_context_->ShutdownOnUIThread(); |
| 594 sync_context_ = NULL; | 594 sync_context_ = nullptr; |
| 595 file_system.TearDown(); | 595 file_system.TearDown(); |
| 596 } | 596 } |
| 597 | 597 |
| 598 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion) { | 598 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion) { |
| 599 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 599 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 600 in_memory_env_.get(), | 600 in_memory_env_.get(), |
| 601 io_task_runner_.get(), | 601 io_task_runner_.get(), |
| 602 file_task_runner_.get()); | 602 file_task_runner_.get()); |
| 603 file_system.SetUp(CannedSyncableFileSystem::QUOTA_ENABLED); | 603 file_system.SetUp(CannedSyncableFileSystem::QUOTA_ENABLED); |
| 604 | 604 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 672 urls.clear(); | 672 urls.clear(); |
| 673 file_system.GetChangedURLsInTracker(&urls); | 673 file_system.GetChangedURLsInTracker(&urls); |
| 674 EXPECT_TRUE(urls.empty()); | 674 EXPECT_TRUE(urls.empty()); |
| 675 | 675 |
| 676 // The quota usage data must have reflected the deletion. | 676 // The quota usage data must have reflected the deletion. |
| 677 EXPECT_EQ(storage::kQuotaStatusOk, | 677 EXPECT_EQ(storage::kQuotaStatusOk, |
| 678 file_system.GetUsageAndQuota(&new_usage, "a)); | 678 file_system.GetUsageAndQuota(&new_usage, "a)); |
| 679 EXPECT_EQ(new_usage, initial_usage); | 679 EXPECT_EQ(new_usage, initial_usage); |
| 680 | 680 |
| 681 sync_context_->ShutdownOnUIThread(); | 681 sync_context_->ShutdownOnUIThread(); |
| 682 sync_context_ = NULL; | 682 sync_context_ = nullptr; |
| 683 file_system.TearDown(); | 683 file_system.TearDown(); |
| 684 } | 684 } |
| 685 | 685 |
| 686 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion_ForRoot) { | 686 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion_ForRoot) { |
| 687 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 687 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 688 in_memory_env_.get(), | 688 in_memory_env_.get(), |
| 689 io_task_runner_.get(), | 689 io_task_runner_.get(), |
| 690 file_task_runner_.get()); | 690 file_task_runner_.get()); |
| 691 file_system.SetUp(CannedSyncableFileSystem::QUOTA_ENABLED); | 691 file_system.SetUp(CannedSyncableFileSystem::QUOTA_ENABLED); |
| 692 | 692 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 739 FileSystemURLSet urls; | 739 FileSystemURLSet urls; |
| 740 file_system.GetChangedURLsInTracker(&urls); | 740 file_system.GetChangedURLsInTracker(&urls); |
| 741 EXPECT_TRUE(urls.empty()); | 741 EXPECT_TRUE(urls.empty()); |
| 742 | 742 |
| 743 // The quota usage data must have reflected the deletion. | 743 // The quota usage data must have reflected the deletion. |
| 744 EXPECT_EQ(storage::kQuotaStatusOk, | 744 EXPECT_EQ(storage::kQuotaStatusOk, |
| 745 file_system.GetUsageAndQuota(&new_usage, "a)); | 745 file_system.GetUsageAndQuota(&new_usage, "a)); |
| 746 EXPECT_EQ(new_usage, initial_usage); | 746 EXPECT_EQ(new_usage, initial_usage); |
| 747 | 747 |
| 748 sync_context_->ShutdownOnUIThread(); | 748 sync_context_->ShutdownOnUIThread(); |
| 749 sync_context_ = NULL; | 749 sync_context_ = nullptr; |
| 750 file_system.TearDown(); | 750 file_system.TearDown(); |
| 751 } | 751 } |
| 752 | 752 |
| 753 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForAddOrUpdate) { | 753 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForAddOrUpdate) { |
| 754 base::ScopedTempDir temp_dir; | 754 base::ScopedTempDir temp_dir; |
| 755 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 755 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 756 | 756 |
| 757 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 757 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 758 in_memory_env_.get(), | 758 in_memory_env_.get(), |
| 759 io_task_runner_.get(), | 759 io_task_runner_.get(), |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 | 950 |
| 951 // Make sure kDir and kFile are created by ApplyRemoteChange. | 951 // Make sure kDir and kFile are created by ApplyRemoteChange. |
| 952 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kFile)); | 952 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kFile)); |
| 953 EXPECT_EQ(base::File::FILE_OK, file_system.DirectoryExists(kDir)); | 953 EXPECT_EQ(base::File::FILE_OK, file_system.DirectoryExists(kDir)); |
| 954 | 954 |
| 955 sync_context_->ShutdownOnUIThread(); | 955 sync_context_->ShutdownOnUIThread(); |
| 956 file_system.TearDown(); | 956 file_system.TearDown(); |
| 957 } | 957 } |
| 958 | 958 |
| 959 } // namespace sync_file_system | 959 } // namespace sync_file_system |
| OLD | NEW |