| 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 const char kOrigin2[] = "http://chromium.org"; | 48 const char kOrigin2[] = "http://chromium.org"; |
| 49 } | 49 } |
| 50 | 50 |
| 51 class LocalFileSyncContextTest : public testing::Test { | 51 class LocalFileSyncContextTest : public testing::Test { |
| 52 protected: | 52 protected: |
| 53 LocalFileSyncContextTest() | 53 LocalFileSyncContextTest() |
| 54 : thread_bundle_( | 54 : thread_bundle_( |
| 55 content::TestBrowserThreadBundle::REAL_FILE_THREAD | | 55 content::TestBrowserThreadBundle::REAL_FILE_THREAD | |
| 56 content::TestBrowserThreadBundle::REAL_IO_THREAD), | 56 content::TestBrowserThreadBundle::REAL_IO_THREAD), |
| 57 status_(SYNC_FILE_ERROR_FAILED), | 57 status_(SYNC_FILE_ERROR_FAILED), |
| 58 file_error_(base::PLATFORM_FILE_ERROR_FAILED), | 58 file_error_(base::File::FILE_ERROR_FAILED), |
| 59 async_modify_finished_(false), | 59 async_modify_finished_(false), |
| 60 has_inflight_prepare_for_sync_(false) {} | 60 has_inflight_prepare_for_sync_(false) {} |
| 61 | 61 |
| 62 virtual void SetUp() OVERRIDE { | 62 virtual void SetUp() OVERRIDE { |
| 63 RegisterSyncableFileSystem(); | 63 RegisterSyncableFileSystem(); |
| 64 ASSERT_TRUE(dir_.CreateUniqueTempDir()); | 64 ASSERT_TRUE(dir_.CreateUniqueTempDir()); |
| 65 | 65 |
| 66 ui_task_runner_ = base::MessageLoop::current()->message_loop_proxy(); | 66 ui_task_runner_ = base::MessageLoop::current()->message_loop_proxy(); |
| 67 io_task_runner_ = BrowserThread::GetMessageLoopProxyForThread( | 67 io_task_runner_ = BrowserThread::GetMessageLoopProxyForThread( |
| 68 BrowserThread::IO); | 68 BrowserThread::IO); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 if (!io_task_runner_->RunsTasksOnCurrentThread()) { | 176 if (!io_task_runner_->RunsTasksOnCurrentThread()) { |
| 177 async_modify_finished_ = false; | 177 async_modify_finished_ = false; |
| 178 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); | 178 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); |
| 179 io_task_runner_->PostTask( | 179 io_task_runner_->PostTask( |
| 180 FROM_HERE, | 180 FROM_HERE, |
| 181 base::Bind(&LocalFileSyncContextTest::StartModifyFileOnIOThread, | 181 base::Bind(&LocalFileSyncContextTest::StartModifyFileOnIOThread, |
| 182 base::Unretained(this), file_system, url)); | 182 base::Unretained(this), file_system, url)); |
| 183 return; | 183 return; |
| 184 } | 184 } |
| 185 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 185 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
| 186 file_error_ = base::PLATFORM_FILE_ERROR_FAILED; | 186 file_error_ = base::File::FILE_ERROR_FAILED; |
| 187 file_system->operation_runner()->Truncate( | 187 file_system->operation_runner()->Truncate( |
| 188 url, 1, base::Bind(&LocalFileSyncContextTest::DidModifyFile, | 188 url, 1, base::Bind(&LocalFileSyncContextTest::DidModifyFile, |
| 189 base::Unretained(this))); | 189 base::Unretained(this))); |
| 190 } | 190 } |
| 191 | 191 |
| 192 base::PlatformFileError WaitUntilModifyFileIsDone() { | 192 base::File::Error WaitUntilModifyFileIsDone() { |
| 193 while (!async_modify_finished_) | 193 while (!async_modify_finished_) |
| 194 base::MessageLoop::current()->RunUntilIdle(); | 194 base::MessageLoop::current()->RunUntilIdle(); |
| 195 return file_error_; | 195 return file_error_; |
| 196 } | 196 } |
| 197 | 197 |
| 198 void DidModifyFile(base::PlatformFileError error) { | 198 void DidModifyFile(base::File::Error error) { |
| 199 if (!ui_task_runner_->RunsTasksOnCurrentThread()) { | 199 if (!ui_task_runner_->RunsTasksOnCurrentThread()) { |
| 200 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 200 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
| 201 ui_task_runner_->PostTask( | 201 ui_task_runner_->PostTask( |
| 202 FROM_HERE, | 202 FROM_HERE, |
| 203 base::Bind(&LocalFileSyncContextTest::DidModifyFile, | 203 base::Bind(&LocalFileSyncContextTest::DidModifyFile, |
| 204 base::Unretained(this), error)); | 204 base::Unretained(this), error)); |
| 205 return; | 205 return; |
| 206 } | 206 } |
| 207 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); | 207 ASSERT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); |
| 208 file_error_ = error; | 208 file_error_ = error; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 229 SyncStatusCode simulate_sync_finish_status) { | 229 SyncStatusCode simulate_sync_finish_status) { |
| 230 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 230 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 231 io_task_runner_.get(), | 231 io_task_runner_.get(), |
| 232 file_task_runner_.get()); | 232 file_task_runner_.get()); |
| 233 file_system.SetUp(); | 233 file_system.SetUp(); |
| 234 sync_context_ = new LocalFileSyncContext( | 234 sync_context_ = new LocalFileSyncContext( |
| 235 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 235 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 236 ASSERT_EQ(SYNC_STATUS_OK, | 236 ASSERT_EQ(SYNC_STATUS_OK, |
| 237 file_system.MaybeInitializeFileSystemContext( | 237 file_system.MaybeInitializeFileSystemContext( |
| 238 sync_context_.get())); | 238 sync_context_.get())); |
| 239 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 239 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 240 | 240 |
| 241 const FileSystemURL kFile(file_system.URL("file")); | 241 const FileSystemURL kFile(file_system.URL("file")); |
| 242 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kFile)); | 242 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); |
| 243 | 243 |
| 244 SyncFileMetadata metadata; | 244 SyncFileMetadata metadata; |
| 245 FileChangeList changes; | 245 FileChangeList changes; |
| 246 EXPECT_EQ(SYNC_STATUS_OK, | 246 EXPECT_EQ(SYNC_STATUS_OK, |
| 247 PrepareForSync(file_system.file_system_context(), kFile, | 247 PrepareForSync(file_system.file_system_context(), kFile, |
| 248 sync_mode, &metadata, &changes, NULL)); | 248 sync_mode, &metadata, &changes, NULL)); |
| 249 EXPECT_EQ(1U, changes.size()); | 249 EXPECT_EQ(1U, changes.size()); |
| 250 EXPECT_TRUE(changes.list().back().IsFile()); | 250 EXPECT_TRUE(changes.list().back().IsFile()); |
| 251 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 251 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 252 | 252 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 279 LocalFileSyncContext::SyncMode sync_mode) { | 279 LocalFileSyncContext::SyncMode sync_mode) { |
| 280 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 280 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 281 io_task_runner_.get(), | 281 io_task_runner_.get(), |
| 282 file_task_runner_.get()); | 282 file_task_runner_.get()); |
| 283 file_system.SetUp(); | 283 file_system.SetUp(); |
| 284 sync_context_ = new LocalFileSyncContext( | 284 sync_context_ = new LocalFileSyncContext( |
| 285 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 285 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 286 ASSERT_EQ(SYNC_STATUS_OK, | 286 ASSERT_EQ(SYNC_STATUS_OK, |
| 287 file_system.MaybeInitializeFileSystemContext( | 287 file_system.MaybeInitializeFileSystemContext( |
| 288 sync_context_.get())); | 288 sync_context_.get())); |
| 289 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 289 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 290 | 290 |
| 291 const FileSystemURL kFile(file_system.URL("file")); | 291 const FileSystemURL kFile(file_system.URL("file")); |
| 292 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kFile)); | 292 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); |
| 293 | 293 |
| 294 SyncFileMetadata metadata; | 294 SyncFileMetadata metadata; |
| 295 FileChangeList changes; | 295 FileChangeList changes; |
| 296 webkit_blob::ScopedFile snapshot; | 296 webkit_blob::ScopedFile snapshot; |
| 297 EXPECT_EQ(SYNC_STATUS_OK, | 297 EXPECT_EQ(SYNC_STATUS_OK, |
| 298 PrepareForSync(file_system.file_system_context(), kFile, | 298 PrepareForSync(file_system.file_system_context(), kFile, |
| 299 sync_mode, &metadata, &changes, &snapshot)); | 299 sync_mode, &metadata, &changes, &snapshot)); |
| 300 EXPECT_EQ(1U, changes.size()); | 300 EXPECT_EQ(1U, changes.size()); |
| 301 EXPECT_TRUE(changes.list().back().IsFile()); | 301 EXPECT_TRUE(changes.list().back().IsFile()); |
| 302 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 302 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 303 | 303 |
| 304 EXPECT_EQ(sync_mode == LocalFileSyncContext::SYNC_SNAPSHOT, | 304 EXPECT_EQ(sync_mode == LocalFileSyncContext::SYNC_SNAPSHOT, |
| 305 !snapshot.path().empty()); | 305 !snapshot.path().empty()); |
| 306 | 306 |
| 307 // Tracker keeps same set of changes. | 307 // Tracker keeps same set of changes. |
| 308 file_system.GetChangesForURLInTracker(kFile, &changes); | 308 file_system.GetChangesForURLInTracker(kFile, &changes); |
| 309 EXPECT_EQ(1U, changes.size()); | 309 EXPECT_EQ(1U, changes.size()); |
| 310 EXPECT_TRUE(changes.list().back().IsFile()); | 310 EXPECT_TRUE(changes.list().back().IsFile()); |
| 311 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 311 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 312 | 312 |
| 313 StartModifyFileOnIOThread(&file_system, kFile); | 313 StartModifyFileOnIOThread(&file_system, kFile); |
| 314 | 314 |
| 315 if (sync_mode == LocalFileSyncContext::SYNC_SNAPSHOT) { | 315 if (sync_mode == LocalFileSyncContext::SYNC_SNAPSHOT) { |
| 316 // Write should succeed. | 316 // Write should succeed. |
| 317 EXPECT_EQ(base::PLATFORM_FILE_OK, WaitUntilModifyFileIsDone()); | 317 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); |
| 318 } else { | 318 } else { |
| 319 base::MessageLoop::current()->RunUntilIdle(); | 319 base::MessageLoop::current()->RunUntilIdle(); |
| 320 EXPECT_FALSE(async_modify_finished_); | 320 EXPECT_FALSE(async_modify_finished_); |
| 321 } | 321 } |
| 322 | 322 |
| 323 SimulateFinishSync(file_system.file_system_context(), kFile, | 323 SimulateFinishSync(file_system.file_system_context(), kFile, |
| 324 SYNC_STATUS_OK, sync_mode); | 324 SYNC_STATUS_OK, sync_mode); |
| 325 | 325 |
| 326 EXPECT_EQ(base::PLATFORM_FILE_OK, WaitUntilModifyFileIsDone()); | 326 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); |
| 327 | 327 |
| 328 // Sync succeeded, but the other change that was made during or | 328 // Sync succeeded, but the other change that was made during or |
| 329 // after sync is recorded. | 329 // after sync is recorded. |
| 330 file_system.GetChangesForURLInTracker(kFile, &changes); | 330 file_system.GetChangesForURLInTracker(kFile, &changes); |
| 331 EXPECT_EQ(1U, changes.size()); | 331 EXPECT_EQ(1U, changes.size()); |
| 332 EXPECT_TRUE(changes.list().back().IsFile()); | 332 EXPECT_TRUE(changes.list().back().IsFile()); |
| 333 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 333 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 334 | 334 |
| 335 sync_context_->ShutdownOnUIThread(); | 335 sync_context_->ShutdownOnUIThread(); |
| 336 sync_context_ = NULL; | 336 sync_context_ = NULL; |
| 337 | 337 |
| 338 file_system.TearDown(); | 338 file_system.TearDown(); |
| 339 } | 339 } |
| 340 | 340 |
| 341 ScopedEnableSyncFSDirectoryOperation enable_directory_operation_; | 341 ScopedEnableSyncFSDirectoryOperation enable_directory_operation_; |
| 342 | 342 |
| 343 base::ScopedTempDir dir_; | 343 base::ScopedTempDir dir_; |
| 344 | 344 |
| 345 // These need to remain until the very end. | 345 // These need to remain until the very end. |
| 346 content::TestBrowserThreadBundle thread_bundle_; | 346 content::TestBrowserThreadBundle thread_bundle_; |
| 347 | 347 |
| 348 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; | 348 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; |
| 349 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; | 349 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; |
| 350 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; | 350 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; |
| 351 | 351 |
| 352 scoped_refptr<LocalFileSyncContext> sync_context_; | 352 scoped_refptr<LocalFileSyncContext> sync_context_; |
| 353 | 353 |
| 354 SyncStatusCode status_; | 354 SyncStatusCode status_; |
| 355 base::PlatformFileError file_error_; | 355 base::File::Error file_error_; |
| 356 bool async_modify_finished_; | 356 bool async_modify_finished_; |
| 357 bool has_inflight_prepare_for_sync_; | 357 bool has_inflight_prepare_for_sync_; |
| 358 }; | 358 }; |
| 359 | 359 |
| 360 TEST_F(LocalFileSyncContextTest, ConstructAndDestruct) { | 360 TEST_F(LocalFileSyncContextTest, ConstructAndDestruct) { |
| 361 sync_context_ = | 361 sync_context_ = |
| 362 new LocalFileSyncContext( | 362 new LocalFileSyncContext( |
| 363 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 363 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 364 sync_context_->ShutdownOnUIThread(); | 364 sync_context_->ShutdownOnUIThread(); |
| 365 } | 365 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 383 EXPECT_TRUE(file_system.backend()->change_tracker() != NULL); | 383 EXPECT_TRUE(file_system.backend()->change_tracker() != NULL); |
| 384 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); | 384 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); |
| 385 | 385 |
| 386 // Calling MaybeInitialize for the same context multiple times must be ok. | 386 // Calling MaybeInitialize for the same context multiple times must be ok. |
| 387 EXPECT_EQ(SYNC_STATUS_OK, | 387 EXPECT_EQ(SYNC_STATUS_OK, |
| 388 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 388 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 389 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); | 389 EXPECT_EQ(sync_context_.get(), file_system.backend()->sync_context()); |
| 390 | 390 |
| 391 // Opens the file_system, perform some operation and see if the change tracker | 391 // Opens the file_system, perform some operation and see if the change tracker |
| 392 // correctly captures the change. | 392 // correctly captures the change. |
| 393 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 393 EXPECT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 394 | 394 |
| 395 const FileSystemURL kURL(file_system.URL("foo")); | 395 const FileSystemURL kURL(file_system.URL("foo")); |
| 396 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kURL)); | 396 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kURL)); |
| 397 | 397 |
| 398 FileSystemURLSet urls; | 398 FileSystemURLSet urls; |
| 399 file_system.GetChangedURLsInTracker(&urls); | 399 file_system.GetChangedURLsInTracker(&urls); |
| 400 ASSERT_EQ(1U, urls.size()); | 400 ASSERT_EQ(1U, urls.size()); |
| 401 EXPECT_TRUE(ContainsKey(urls, kURL)); | 401 EXPECT_TRUE(ContainsKey(urls, kURL)); |
| 402 | 402 |
| 403 // Finishing the test. | 403 // Finishing the test. |
| 404 sync_context_->ShutdownOnUIThread(); | 404 sync_context_->ShutdownOnUIThread(); |
| 405 file_system.TearDown(); | 405 file_system.TearDown(); |
| 406 } | 406 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 417 | 417 |
| 418 sync_context_ = new LocalFileSyncContext( | 418 sync_context_ = new LocalFileSyncContext( |
| 419 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 419 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 420 | 420 |
| 421 // Initializes file_system1 and file_system2. | 421 // Initializes file_system1 and file_system2. |
| 422 EXPECT_EQ(SYNC_STATUS_OK, | 422 EXPECT_EQ(SYNC_STATUS_OK, |
| 423 file_system1.MaybeInitializeFileSystemContext(sync_context_.get())); | 423 file_system1.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 424 EXPECT_EQ(SYNC_STATUS_OK, | 424 EXPECT_EQ(SYNC_STATUS_OK, |
| 425 file_system2.MaybeInitializeFileSystemContext(sync_context_.get())); | 425 file_system2.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 426 | 426 |
| 427 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system1.OpenFileSystem()); | 427 EXPECT_EQ(base::File::FILE_OK, file_system1.OpenFileSystem()); |
| 428 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system2.OpenFileSystem()); | 428 EXPECT_EQ(base::File::FILE_OK, file_system2.OpenFileSystem()); |
| 429 | 429 |
| 430 const FileSystemURL kURL1(file_system1.URL("foo")); | 430 const FileSystemURL kURL1(file_system1.URL("foo")); |
| 431 const FileSystemURL kURL2(file_system2.URL("bar")); | 431 const FileSystemURL kURL2(file_system2.URL("bar")); |
| 432 | 432 |
| 433 // Creates a file in file_system1. | 433 // Creates a file in file_system1. |
| 434 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system1.CreateFile(kURL1)); | 434 EXPECT_EQ(base::File::FILE_OK, file_system1.CreateFile(kURL1)); |
| 435 | 435 |
| 436 // file_system1's tracker must have recorded the change. | 436 // file_system1's tracker must have recorded the change. |
| 437 FileSystemURLSet urls; | 437 FileSystemURLSet urls; |
| 438 file_system1.GetChangedURLsInTracker(&urls); | 438 file_system1.GetChangedURLsInTracker(&urls); |
| 439 ASSERT_EQ(1U, urls.size()); | 439 ASSERT_EQ(1U, urls.size()); |
| 440 EXPECT_TRUE(ContainsKey(urls, kURL1)); | 440 EXPECT_TRUE(ContainsKey(urls, kURL1)); |
| 441 | 441 |
| 442 // file_system1's tracker must have no change. | 442 // file_system1's tracker must have no change. |
| 443 urls.clear(); | 443 urls.clear(); |
| 444 file_system2.GetChangedURLsInTracker(&urls); | 444 file_system2.GetChangedURLsInTracker(&urls); |
| 445 ASSERT_TRUE(urls.empty()); | 445 ASSERT_TRUE(urls.empty()); |
| 446 | 446 |
| 447 // Creates a directory in file_system2. | 447 // Creates a directory in file_system2. |
| 448 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system2.CreateDirectory(kURL2)); | 448 EXPECT_EQ(base::File::FILE_OK, file_system2.CreateDirectory(kURL2)); |
| 449 | 449 |
| 450 // file_system1's tracker must have the change for kURL1 as before. | 450 // file_system1's tracker must have the change for kURL1 as before. |
| 451 urls.clear(); | 451 urls.clear(); |
| 452 file_system1.GetChangedURLsInTracker(&urls); | 452 file_system1.GetChangedURLsInTracker(&urls); |
| 453 ASSERT_EQ(1U, urls.size()); | 453 ASSERT_EQ(1U, urls.size()); |
| 454 EXPECT_TRUE(ContainsKey(urls, kURL1)); | 454 EXPECT_TRUE(ContainsKey(urls, kURL1)); |
| 455 | 455 |
| 456 // file_system2's tracker now must have the change for kURL2. | 456 // file_system2's tracker now must have the change for kURL2. |
| 457 urls.clear(); | 457 urls.clear(); |
| 458 file_system2.GetChangedURLsInTracker(&urls); | 458 file_system2.GetChangedURLsInTracker(&urls); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 524 TEST_F(LocalFileSyncContextTest, DISABLED_PrepareSyncWhileWriting) { | 524 TEST_F(LocalFileSyncContextTest, DISABLED_PrepareSyncWhileWriting) { |
| 525 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 525 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 526 io_task_runner_.get(), | 526 io_task_runner_.get(), |
| 527 file_task_runner_.get()); | 527 file_task_runner_.get()); |
| 528 file_system.SetUp(); | 528 file_system.SetUp(); |
| 529 sync_context_ = new LocalFileSyncContext( | 529 sync_context_ = new LocalFileSyncContext( |
| 530 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 530 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 531 EXPECT_EQ(SYNC_STATUS_OK, | 531 EXPECT_EQ(SYNC_STATUS_OK, |
| 532 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 532 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 533 | 533 |
| 534 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 534 EXPECT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 535 | 535 |
| 536 const FileSystemURL kURL1(file_system.URL("foo")); | 536 const FileSystemURL kURL1(file_system.URL("foo")); |
| 537 | 537 |
| 538 // Creates a file in file_system. | 538 // Creates a file in file_system. |
| 539 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kURL1)); | 539 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kURL1)); |
| 540 | 540 |
| 541 // Kick file write on IO thread. | 541 // Kick file write on IO thread. |
| 542 StartModifyFileOnIOThread(&file_system, kURL1); | 542 StartModifyFileOnIOThread(&file_system, kURL1); |
| 543 | 543 |
| 544 // Until the operation finishes PrepareForSync should return BUSY error. | 544 // Until the operation finishes PrepareForSync should return BUSY error. |
| 545 SyncFileMetadata metadata; | 545 SyncFileMetadata metadata; |
| 546 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; | 546 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; |
| 547 FileChangeList changes; | 547 FileChangeList changes; |
| 548 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, | 548 EXPECT_EQ(SYNC_STATUS_FILE_BUSY, |
| 549 PrepareForSync(file_system.file_system_context(), kURL1, | 549 PrepareForSync(file_system.file_system_context(), kURL1, |
| 550 LocalFileSyncContext::SYNC_EXCLUSIVE, | 550 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 551 &metadata, &changes, NULL)); | 551 &metadata, &changes, NULL)); |
| 552 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); | 552 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); |
| 553 | 553 |
| 554 // Register PrepareForSync method to be invoked when kURL1 becomes | 554 // Register PrepareForSync method to be invoked when kURL1 becomes |
| 555 // syncable. (Actually this may be done after all operations are done | 555 // syncable. (Actually this may be done after all operations are done |
| 556 // on IO thread in this test.) | 556 // on IO thread in this test.) |
| 557 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; | 557 metadata.file_type = SYNC_FILE_TYPE_UNKNOWN; |
| 558 changes.clear(); | 558 changes.clear(); |
| 559 sync_context_->RegisterURLForWaitingSync( | 559 sync_context_->RegisterURLForWaitingSync( |
| 560 kURL1, GetPrepareForSyncClosure(file_system.file_system_context(), kURL1, | 560 kURL1, GetPrepareForSyncClosure(file_system.file_system_context(), kURL1, |
| 561 LocalFileSyncContext::SYNC_EXCLUSIVE, | 561 LocalFileSyncContext::SYNC_EXCLUSIVE, |
| 562 &metadata, &changes, NULL)); | 562 &metadata, &changes, NULL)); |
| 563 | 563 |
| 564 // Wait for the completion. | 564 // Wait for the completion. |
| 565 EXPECT_EQ(base::PLATFORM_FILE_OK, WaitUntilModifyFileIsDone()); | 565 EXPECT_EQ(base::File::FILE_OK, WaitUntilModifyFileIsDone()); |
| 566 | 566 |
| 567 // The PrepareForSync must have been started; wait until DidPrepareForSync | 567 // The PrepareForSync must have been started; wait until DidPrepareForSync |
| 568 // is done. | 568 // is done. |
| 569 base::MessageLoop::current()->Run(); | 569 base::MessageLoop::current()->Run(); |
| 570 ASSERT_FALSE(has_inflight_prepare_for_sync_); | 570 ASSERT_FALSE(has_inflight_prepare_for_sync_); |
| 571 | 571 |
| 572 // Now PrepareForSync should have run and returned OK. | 572 // Now PrepareForSync should have run and returned OK. |
| 573 EXPECT_EQ(SYNC_STATUS_OK, status_); | 573 EXPECT_EQ(SYNC_STATUS_OK, status_); |
| 574 EXPECT_EQ(1U, changes.size()); | 574 EXPECT_EQ(1U, changes.size()); |
| 575 EXPECT_TRUE(changes.list().back().IsFile()); | 575 EXPECT_TRUE(changes.list().back().IsFile()); |
| 576 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); | 576 EXPECT_TRUE(changes.list().back().IsAddOrUpdate()); |
| 577 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); | 577 EXPECT_EQ(SYNC_FILE_TYPE_FILE, metadata.file_type); |
| 578 EXPECT_EQ(1, metadata.size); | 578 EXPECT_EQ(1, metadata.size); |
| 579 | 579 |
| 580 sync_context_->ShutdownOnUIThread(); | 580 sync_context_->ShutdownOnUIThread(); |
| 581 sync_context_ = NULL; | 581 sync_context_ = NULL; |
| 582 file_system.TearDown(); | 582 file_system.TearDown(); |
| 583 } | 583 } |
| 584 | 584 |
| 585 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion) { | 585 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion) { |
| 586 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 586 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 587 io_task_runner_.get(), | 587 io_task_runner_.get(), |
| 588 file_task_runner_.get()); | 588 file_task_runner_.get()); |
| 589 file_system.SetUp(); | 589 file_system.SetUp(); |
| 590 | 590 |
| 591 sync_context_ = new LocalFileSyncContext( | 591 sync_context_ = new LocalFileSyncContext( |
| 592 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 592 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 593 ASSERT_EQ(SYNC_STATUS_OK, | 593 ASSERT_EQ(SYNC_STATUS_OK, |
| 594 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 594 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 595 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 595 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 596 | 596 |
| 597 // Record the initial usage (likely 0). | 597 // Record the initial usage (likely 0). |
| 598 int64 initial_usage = -1; | 598 int64 initial_usage = -1; |
| 599 int64 quota = -1; | 599 int64 quota = -1; |
| 600 EXPECT_EQ(quota::kQuotaStatusOk, | 600 EXPECT_EQ(quota::kQuotaStatusOk, |
| 601 file_system.GetUsageAndQuota(&initial_usage, "a)); | 601 file_system.GetUsageAndQuota(&initial_usage, "a)); |
| 602 | 602 |
| 603 // Create a file and directory in the file_system. | 603 // Create a file and directory in the file_system. |
| 604 const FileSystemURL kFile(file_system.URL("file")); | 604 const FileSystemURL kFile(file_system.URL("file")); |
| 605 const FileSystemURL kDir(file_system.URL("dir")); | 605 const FileSystemURL kDir(file_system.URL("dir")); |
| 606 const FileSystemURL kChild(file_system.URL("dir/child")); | 606 const FileSystemURL kChild(file_system.URL("dir/child")); |
| 607 | 607 |
| 608 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kFile)); | 608 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); |
| 609 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateDirectory(kDir)); | 609 EXPECT_EQ(base::File::FILE_OK, file_system.CreateDirectory(kDir)); |
| 610 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kChild)); | 610 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kChild)); |
| 611 | 611 |
| 612 // file_system's change tracker must have recorded the creation. | 612 // file_system's change tracker must have recorded the creation. |
| 613 FileSystemURLSet urls; | 613 FileSystemURLSet urls; |
| 614 file_system.GetChangedURLsInTracker(&urls); | 614 file_system.GetChangedURLsInTracker(&urls); |
| 615 ASSERT_EQ(3U, urls.size()); | 615 ASSERT_EQ(3U, urls.size()); |
| 616 ASSERT_TRUE(ContainsKey(urls, kFile)); | 616 ASSERT_TRUE(ContainsKey(urls, kFile)); |
| 617 ASSERT_TRUE(ContainsKey(urls, kDir)); | 617 ASSERT_TRUE(ContainsKey(urls, kDir)); |
| 618 ASSERT_TRUE(ContainsKey(urls, kChild)); | 618 ASSERT_TRUE(ContainsKey(urls, kChild)); |
| 619 for (FileSystemURLSet::iterator iter = urls.begin(); | 619 for (FileSystemURLSet::iterator iter = urls.begin(); |
| 620 iter != urls.end(); ++iter) { | 620 iter != urls.end(); ++iter) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 638 // The implementation doesn't check file type for deletion, and it must be ok | 638 // The implementation doesn't check file type for deletion, and it must be ok |
| 639 // even if we don't know if the deletion change was for a file or a directory. | 639 // even if we don't know if the deletion change was for a file or a directory. |
| 640 change = FileChange(FileChange::FILE_CHANGE_DELETE, | 640 change = FileChange(FileChange::FILE_CHANGE_DELETE, |
| 641 SYNC_FILE_TYPE_UNKNOWN); | 641 SYNC_FILE_TYPE_UNKNOWN); |
| 642 EXPECT_EQ(SYNC_STATUS_OK, | 642 EXPECT_EQ(SYNC_STATUS_OK, |
| 643 ApplyRemoteChange(file_system.file_system_context(), | 643 ApplyRemoteChange(file_system.file_system_context(), |
| 644 change, base::FilePath(), kDir, | 644 change, base::FilePath(), kDir, |
| 645 SYNC_FILE_TYPE_DIRECTORY)); | 645 SYNC_FILE_TYPE_DIRECTORY)); |
| 646 | 646 |
| 647 // Check the directory/files are deleted successfully. | 647 // Check the directory/files are deleted successfully. |
| 648 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 648 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 649 file_system.FileExists(kFile)); | 649 file_system.FileExists(kFile)); |
| 650 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 650 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 651 file_system.DirectoryExists(kDir)); | 651 file_system.DirectoryExists(kDir)); |
| 652 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 652 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 653 file_system.FileExists(kChild)); | 653 file_system.FileExists(kChild)); |
| 654 | 654 |
| 655 // The changes applied by ApplyRemoteChange should not be recorded in | 655 // The changes applied by ApplyRemoteChange should not be recorded in |
| 656 // the change tracker. | 656 // the change tracker. |
| 657 urls.clear(); | 657 urls.clear(); |
| 658 file_system.GetChangedURLsInTracker(&urls); | 658 file_system.GetChangedURLsInTracker(&urls); |
| 659 EXPECT_TRUE(urls.empty()); | 659 EXPECT_TRUE(urls.empty()); |
| 660 | 660 |
| 661 // The quota usage data must have reflected the deletion. | 661 // The quota usage data must have reflected the deletion. |
| 662 EXPECT_EQ(quota::kQuotaStatusOk, | 662 EXPECT_EQ(quota::kQuotaStatusOk, |
| 663 file_system.GetUsageAndQuota(&new_usage, "a)); | 663 file_system.GetUsageAndQuota(&new_usage, "a)); |
| 664 EXPECT_EQ(new_usage, initial_usage); | 664 EXPECT_EQ(new_usage, initial_usage); |
| 665 | 665 |
| 666 sync_context_->ShutdownOnUIThread(); | 666 sync_context_->ShutdownOnUIThread(); |
| 667 sync_context_ = NULL; | 667 sync_context_ = NULL; |
| 668 file_system.TearDown(); | 668 file_system.TearDown(); |
| 669 } | 669 } |
| 670 | 670 |
| 671 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion_ForRoot) { | 671 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForDeletion_ForRoot) { |
| 672 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 672 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 673 io_task_runner_.get(), | 673 io_task_runner_.get(), |
| 674 file_task_runner_.get()); | 674 file_task_runner_.get()); |
| 675 file_system.SetUp(); | 675 file_system.SetUp(); |
| 676 | 676 |
| 677 sync_context_ = new LocalFileSyncContext( | 677 sync_context_ = new LocalFileSyncContext( |
| 678 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 678 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 679 ASSERT_EQ(SYNC_STATUS_OK, | 679 ASSERT_EQ(SYNC_STATUS_OK, |
| 680 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 680 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 681 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 681 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 682 | 682 |
| 683 // Record the initial usage (likely 0). | 683 // Record the initial usage (likely 0). |
| 684 int64 initial_usage = -1; | 684 int64 initial_usage = -1; |
| 685 int64 quota = -1; | 685 int64 quota = -1; |
| 686 EXPECT_EQ(quota::kQuotaStatusOk, | 686 EXPECT_EQ(quota::kQuotaStatusOk, |
| 687 file_system.GetUsageAndQuota(&initial_usage, "a)); | 687 file_system.GetUsageAndQuota(&initial_usage, "a)); |
| 688 | 688 |
| 689 // Create a file and directory in the file_system. | 689 // Create a file and directory in the file_system. |
| 690 const FileSystemURL kFile(file_system.URL("file")); | 690 const FileSystemURL kFile(file_system.URL("file")); |
| 691 const FileSystemURL kDir(file_system.URL("dir")); | 691 const FileSystemURL kDir(file_system.URL("dir")); |
| 692 const FileSystemURL kChild(file_system.URL("dir/child")); | 692 const FileSystemURL kChild(file_system.URL("dir/child")); |
| 693 | 693 |
| 694 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kFile)); | 694 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile)); |
| 695 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateDirectory(kDir)); | 695 EXPECT_EQ(base::File::FILE_OK, file_system.CreateDirectory(kDir)); |
| 696 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kChild)); | 696 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kChild)); |
| 697 | 697 |
| 698 // At this point the usage must be greater than the initial usage. | 698 // At this point the usage must be greater than the initial usage. |
| 699 int64 new_usage = -1; | 699 int64 new_usage = -1; |
| 700 EXPECT_EQ(quota::kQuotaStatusOk, | 700 EXPECT_EQ(quota::kQuotaStatusOk, |
| 701 file_system.GetUsageAndQuota(&new_usage, "a)); | 701 file_system.GetUsageAndQuota(&new_usage, "a)); |
| 702 EXPECT_GT(new_usage, initial_usage); | 702 EXPECT_GT(new_usage, initial_usage); |
| 703 | 703 |
| 704 const FileSystemURL kRoot(file_system.URL("")); | 704 const FileSystemURL kRoot(file_system.URL("")); |
| 705 | 705 |
| 706 // Now let's apply remote deletion changes for the root. | 706 // Now let's apply remote deletion changes for the root. |
| 707 FileChange change(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_DIRECTORY); | 707 FileChange change(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_DIRECTORY); |
| 708 EXPECT_EQ(SYNC_STATUS_OK, | 708 EXPECT_EQ(SYNC_STATUS_OK, |
| 709 ApplyRemoteChange(file_system.file_system_context(), | 709 ApplyRemoteChange(file_system.file_system_context(), |
| 710 change, base::FilePath(), kRoot, | 710 change, base::FilePath(), kRoot, |
| 711 SYNC_FILE_TYPE_DIRECTORY)); | 711 SYNC_FILE_TYPE_DIRECTORY)); |
| 712 | 712 |
| 713 // Check the directory/files are deleted successfully. | 713 // Check the directory/files are deleted successfully. |
| 714 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 714 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 715 file_system.FileExists(kFile)); | 715 file_system.FileExists(kFile)); |
| 716 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 716 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 717 file_system.DirectoryExists(kDir)); | 717 file_system.DirectoryExists(kDir)); |
| 718 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 718 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 719 file_system.FileExists(kChild)); | 719 file_system.FileExists(kChild)); |
| 720 | 720 |
| 721 // All changes made for the previous creation must have been also reset. | 721 // All changes made for the previous creation must have been also reset. |
| 722 FileSystemURLSet urls; | 722 FileSystemURLSet urls; |
| 723 file_system.GetChangedURLsInTracker(&urls); | 723 file_system.GetChangedURLsInTracker(&urls); |
| 724 EXPECT_TRUE(urls.empty()); | 724 EXPECT_TRUE(urls.empty()); |
| 725 | 725 |
| 726 // The quota usage data must have reflected the deletion. | 726 // The quota usage data must have reflected the deletion. |
| 727 EXPECT_EQ(quota::kQuotaStatusOk, | 727 EXPECT_EQ(quota::kQuotaStatusOk, |
| 728 file_system.GetUsageAndQuota(&new_usage, "a)); | 728 file_system.GetUsageAndQuota(&new_usage, "a)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 739 | 739 |
| 740 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 740 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 741 io_task_runner_.get(), | 741 io_task_runner_.get(), |
| 742 file_task_runner_.get()); | 742 file_task_runner_.get()); |
| 743 file_system.SetUp(); | 743 file_system.SetUp(); |
| 744 | 744 |
| 745 sync_context_ = new LocalFileSyncContext( | 745 sync_context_ = new LocalFileSyncContext( |
| 746 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 746 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 747 ASSERT_EQ(SYNC_STATUS_OK, | 747 ASSERT_EQ(SYNC_STATUS_OK, |
| 748 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 748 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 749 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 749 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 750 | 750 |
| 751 const FileSystemURL kFile1(file_system.URL("file1")); | 751 const FileSystemURL kFile1(file_system.URL("file1")); |
| 752 const FileSystemURL kFile2(file_system.URL("file2")); | 752 const FileSystemURL kFile2(file_system.URL("file2")); |
| 753 const FileSystemURL kDir(file_system.URL("dir")); | 753 const FileSystemURL kDir(file_system.URL("dir")); |
| 754 | 754 |
| 755 const char kTestFileData0[] = "0123456789"; | 755 const char kTestFileData0[] = "0123456789"; |
| 756 const char kTestFileData1[] = "Lorem ipsum!"; | 756 const char kTestFileData1[] = "Lorem ipsum!"; |
| 757 const char kTestFileData2[] = "This is sample test data."; | 757 const char kTestFileData2[] = "This is sample test data."; |
| 758 | 758 |
| 759 // Create kFile1 and populate it with kTestFileData0. | 759 // Create kFile1 and populate it with kTestFileData0. |
| 760 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.CreateFile(kFile1)); | 760 EXPECT_EQ(base::File::FILE_OK, file_system.CreateFile(kFile1)); |
| 761 EXPECT_EQ(static_cast<int64>(arraysize(kTestFileData0) - 1), | 761 EXPECT_EQ(static_cast<int64>(arraysize(kTestFileData0) - 1), |
| 762 file_system.WriteString(kFile1, kTestFileData0)); | 762 file_system.WriteString(kFile1, kTestFileData0)); |
| 763 | 763 |
| 764 // kFile2 and kDir are not there yet. | 764 // kFile2 and kDir are not there yet. |
| 765 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 765 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 766 file_system.FileExists(kFile2)); | 766 file_system.FileExists(kFile2)); |
| 767 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 767 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, |
| 768 file_system.DirectoryExists(kDir)); | 768 file_system.DirectoryExists(kDir)); |
| 769 | 769 |
| 770 // file_system's change tracker must have recorded the creation. | 770 // file_system's change tracker must have recorded the creation. |
| 771 FileSystemURLSet urls; | 771 FileSystemURLSet urls; |
| 772 file_system.GetChangedURLsInTracker(&urls); | 772 file_system.GetChangedURLsInTracker(&urls); |
| 773 ASSERT_EQ(1U, urls.size()); | 773 ASSERT_EQ(1U, urls.size()); |
| 774 EXPECT_TRUE(ContainsKey(urls, kFile1)); | 774 EXPECT_TRUE(ContainsKey(urls, kFile1)); |
| 775 file_system.ClearChangeForURLInTracker(*urls.begin()); | 775 file_system.ClearChangeForURLInTracker(*urls.begin()); |
| 776 | 776 |
| 777 // Prepare temporary files which represent the remote file data. | 777 // Prepare temporary files which represent the remote file data. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 // Calling ApplyRemoteChange with different file type should be handled as | 841 // Calling ApplyRemoteChange with different file type should be handled as |
| 842 // overwrite. | 842 // overwrite. |
| 843 change = | 843 change = |
| 844 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, SYNC_FILE_TYPE_FILE); | 844 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, SYNC_FILE_TYPE_FILE); |
| 845 EXPECT_EQ(SYNC_STATUS_OK, | 845 EXPECT_EQ(SYNC_STATUS_OK, |
| 846 ApplyRemoteChange(file_system.file_system_context(), | 846 ApplyRemoteChange(file_system.file_system_context(), |
| 847 change, | 847 change, |
| 848 kFilePath1, | 848 kFilePath1, |
| 849 kDir, | 849 kDir, |
| 850 SYNC_FILE_TYPE_DIRECTORY)); | 850 SYNC_FILE_TYPE_DIRECTORY)); |
| 851 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.FileExists(kDir)); | 851 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kDir)); |
| 852 | 852 |
| 853 change = FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 853 change = FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| 854 SYNC_FILE_TYPE_DIRECTORY); | 854 SYNC_FILE_TYPE_DIRECTORY); |
| 855 EXPECT_EQ(SYNC_STATUS_OK, | 855 EXPECT_EQ(SYNC_STATUS_OK, |
| 856 ApplyRemoteChange(file_system.file_system_context(), | 856 ApplyRemoteChange(file_system.file_system_context(), |
| 857 change, | 857 change, |
| 858 kFilePath1, | 858 kFilePath1, |
| 859 kDir, | 859 kDir, |
| 860 SYNC_FILE_TYPE_FILE)); | 860 SYNC_FILE_TYPE_FILE)); |
| 861 | 861 |
| 862 // Creating a file/directory must have increased the usage more than | 862 // Creating a file/directory must have increased the usage more than |
| 863 // the size of kTestFileData2. | 863 // the size of kTestFileData2. |
| 864 new_usage = usage; | 864 new_usage = usage; |
| 865 EXPECT_EQ(quota::kQuotaStatusOk, | 865 EXPECT_EQ(quota::kQuotaStatusOk, |
| 866 file_system.GetUsageAndQuota(&new_usage, "a)); | 866 file_system.GetUsageAndQuota(&new_usage, "a)); |
| 867 EXPECT_GT(new_usage, | 867 EXPECT_GT(new_usage, |
| 868 static_cast<int64>(usage + arraysize(kTestFileData2) - 1)); | 868 static_cast<int64>(usage + arraysize(kTestFileData2) - 1)); |
| 869 | 869 |
| 870 // The changes applied by ApplyRemoteChange should not be recorded in | 870 // The changes applied by ApplyRemoteChange should not be recorded in |
| 871 // the change tracker. | 871 // the change tracker. |
| 872 urls.clear(); | 872 urls.clear(); |
| 873 file_system.GetChangedURLsInTracker(&urls); | 873 file_system.GetChangedURLsInTracker(&urls); |
| 874 EXPECT_TRUE(urls.empty()); | 874 EXPECT_TRUE(urls.empty()); |
| 875 | 875 |
| 876 // Make sure all three files/directory exist. | 876 // Make sure all three files/directory exist. |
| 877 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.FileExists(kFile1)); | 877 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kFile1)); |
| 878 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.FileExists(kFile2)); | 878 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kFile2)); |
| 879 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.DirectoryExists(kDir)); | 879 EXPECT_EQ(base::File::FILE_OK, file_system.DirectoryExists(kDir)); |
| 880 | 880 |
| 881 sync_context_->ShutdownOnUIThread(); | 881 sync_context_->ShutdownOnUIThread(); |
| 882 file_system.TearDown(); | 882 file_system.TearDown(); |
| 883 } | 883 } |
| 884 | 884 |
| 885 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForAddOrUpdate_NoParent) { | 885 TEST_F(LocalFileSyncContextTest, ApplyRemoteChangeForAddOrUpdate_NoParent) { |
| 886 base::ScopedTempDir temp_dir; | 886 base::ScopedTempDir temp_dir; |
| 887 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 887 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 888 | 888 |
| 889 CannedSyncableFileSystem file_system(GURL(kOrigin1), | 889 CannedSyncableFileSystem file_system(GURL(kOrigin1), |
| 890 io_task_runner_.get(), | 890 io_task_runner_.get(), |
| 891 file_task_runner_.get()); | 891 file_task_runner_.get()); |
| 892 file_system.SetUp(); | 892 file_system.SetUp(); |
| 893 | 893 |
| 894 sync_context_ = new LocalFileSyncContext( | 894 sync_context_ = new LocalFileSyncContext( |
| 895 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); | 895 dir_.path(), ui_task_runner_.get(), io_task_runner_.get()); |
| 896 ASSERT_EQ(SYNC_STATUS_OK, | 896 ASSERT_EQ(SYNC_STATUS_OK, |
| 897 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); | 897 file_system.MaybeInitializeFileSystemContext(sync_context_.get())); |
| 898 ASSERT_EQ(base::PLATFORM_FILE_OK, file_system.OpenFileSystem()); | 898 ASSERT_EQ(base::File::FILE_OK, file_system.OpenFileSystem()); |
| 899 | 899 |
| 900 const char kTestFileData[] = "Lorem ipsum!"; | 900 const char kTestFileData[] = "Lorem ipsum!"; |
| 901 const FileSystemURL kDir(file_system.URL("dir")); | 901 const FileSystemURL kDir(file_system.URL("dir")); |
| 902 const FileSystemURL kFile(file_system.URL("dir/file")); | 902 const FileSystemURL kFile(file_system.URL("dir/file")); |
| 903 | 903 |
| 904 // Either kDir or kFile not exist yet. | 904 // Either kDir or kFile not exist yet. |
| 905 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, file_system.FileExists(kDir)); | 905 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, file_system.FileExists(kDir)); |
| 906 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, file_system.FileExists(kFile)); | 906 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, file_system.FileExists(kFile)); |
| 907 | 907 |
| 908 // Prepare a temporary file which represents remote file data. | 908 // Prepare a temporary file which represents remote file data. |
| 909 const base::FilePath kFilePath(temp_dir.path().Append(FPL("file"))); | 909 const base::FilePath kFilePath(temp_dir.path().Append(FPL("file"))); |
| 910 ASSERT_EQ(static_cast<int>(arraysize(kTestFileData) - 1), | 910 ASSERT_EQ(static_cast<int>(arraysize(kTestFileData) - 1), |
| 911 file_util::WriteFile(kFilePath, kTestFileData, | 911 file_util::WriteFile(kFilePath, kTestFileData, |
| 912 arraysize(kTestFileData) - 1)); | 912 arraysize(kTestFileData) - 1)); |
| 913 | 913 |
| 914 // Calling ApplyChange's with kFilePath should create | 914 // Calling ApplyChange's with kFilePath should create |
| 915 // kFile along with kDir. | 915 // kFile along with kDir. |
| 916 FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, | 916 FileChange change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
| 917 SYNC_FILE_TYPE_FILE); | 917 SYNC_FILE_TYPE_FILE); |
| 918 EXPECT_EQ(SYNC_STATUS_OK, | 918 EXPECT_EQ(SYNC_STATUS_OK, |
| 919 ApplyRemoteChange(file_system.file_system_context(), | 919 ApplyRemoteChange(file_system.file_system_context(), |
| 920 change, kFilePath, kFile, | 920 change, kFilePath, kFile, |
| 921 SYNC_FILE_TYPE_UNKNOWN)); | 921 SYNC_FILE_TYPE_UNKNOWN)); |
| 922 | 922 |
| 923 // The changes applied by ApplyRemoteChange should not be recorded in | 923 // The changes applied by ApplyRemoteChange should not be recorded in |
| 924 // the change tracker. | 924 // the change tracker. |
| 925 FileSystemURLSet urls; | 925 FileSystemURLSet urls; |
| 926 urls.clear(); | 926 urls.clear(); |
| 927 file_system.GetChangedURLsInTracker(&urls); | 927 file_system.GetChangedURLsInTracker(&urls); |
| 928 EXPECT_TRUE(urls.empty()); | 928 EXPECT_TRUE(urls.empty()); |
| 929 | 929 |
| 930 // Make sure kDir and kFile are created by ApplyRemoteChange. | 930 // Make sure kDir and kFile are created by ApplyRemoteChange. |
| 931 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.FileExists(kFile)); | 931 EXPECT_EQ(base::File::FILE_OK, file_system.FileExists(kFile)); |
| 932 EXPECT_EQ(base::PLATFORM_FILE_OK, file_system.DirectoryExists(kDir)); | 932 EXPECT_EQ(base::File::FILE_OK, file_system.DirectoryExists(kDir)); |
| 933 | 933 |
| 934 sync_context_->ShutdownOnUIThread(); | 934 sync_context_->ShutdownOnUIThread(); |
| 935 file_system.TearDown(); | 935 file_system.TearDown(); |
| 936 } | 936 } |
| 937 | 937 |
| 938 } // namespace sync_file_system | 938 } // namespace sync_file_system |
| OLD | NEW |