| 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 <stddef.h> |
| 6 #include <stdint.h> |
| 7 |
| 5 #include <map> | 8 #include <map> |
| 6 #include <queue> | 9 #include <queue> |
| 7 | 10 |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/bind.h" | 11 #include "base/bind.h" |
| 10 #include "base/files/file_util.h" | 12 #include "base/files/file_util.h" |
| 11 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/location.h" | 14 #include "base/location.h" |
| 15 #include "base/macros.h" |
| 13 #include "base/run_loop.h" | 16 #include "base/run_loop.h" |
| 14 #include "base/single_thread_task_runner.h" | 17 #include "base/single_thread_task_runner.h" |
| 15 #include "base/stl_util.h" | 18 #include "base/stl_util.h" |
| 16 #include "base/thread_task_runner_handle.h" | 19 #include "base/thread_task_runner_handle.h" |
| 17 #include "content/browser/quota/mock_quota_manager.h" | 20 #include "content/browser/quota/mock_quota_manager.h" |
| 18 #include "content/browser/quota/mock_quota_manager_proxy.h" | 21 #include "content/browser/quota/mock_quota_manager_proxy.h" |
| 19 #include "content/public/test/async_file_test_helper.h" | 22 #include "content/public/test/async_file_test_helper.h" |
| 20 #include "content/public/test/test_file_system_backend.h" | 23 #include "content/public/test/test_file_system_backend.h" |
| 21 #include "content/public/test/test_file_system_context.h" | 24 #include "content/public/test/test_file_system_context.h" |
| 22 #include "content/test/fileapi_test_file_set.h" | 25 #include "content/test/fileapi_test_file_set.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 | 108 |
| 106 DISALLOW_COPY_AND_ASSIGN(TestValidator); | 109 DISALLOW_COPY_AND_ASSIGN(TestValidator); |
| 107 }; | 110 }; |
| 108 }; | 111 }; |
| 109 | 112 |
| 110 // Records CopyProgressCallback invocations. | 113 // Records CopyProgressCallback invocations. |
| 111 struct ProgressRecord { | 114 struct ProgressRecord { |
| 112 storage::FileSystemOperation::CopyProgressType type; | 115 storage::FileSystemOperation::CopyProgressType type; |
| 113 FileSystemURL source_url; | 116 FileSystemURL source_url; |
| 114 FileSystemURL dest_url; | 117 FileSystemURL dest_url; |
| 115 int64 size; | 118 int64_t size; |
| 116 }; | 119 }; |
| 117 | 120 |
| 118 void RecordProgressCallback(std::vector<ProgressRecord>* records, | 121 void RecordProgressCallback(std::vector<ProgressRecord>* records, |
| 119 storage::FileSystemOperation::CopyProgressType type, | 122 storage::FileSystemOperation::CopyProgressType type, |
| 120 const FileSystemURL& source_url, | 123 const FileSystemURL& source_url, |
| 121 const FileSystemURL& dest_url, | 124 const FileSystemURL& dest_url, |
| 122 int64 size) { | 125 int64_t size) { |
| 123 ProgressRecord record; | 126 ProgressRecord record; |
| 124 record.type = type; | 127 record.type = type; |
| 125 record.source_url = source_url; | 128 record.source_url = source_url; |
| 126 record.dest_url = dest_url; | 129 record.dest_url = dest_url; |
| 127 record.size = size; | 130 record.size = size; |
| 128 records->push_back(record); | 131 records->push_back(record); |
| 129 } | 132 } |
| 130 | 133 |
| 131 void RecordFileProgressCallback(std::vector<int64>* records, | 134 void RecordFileProgressCallback(std::vector<int64_t>* records, |
| 132 int64 progress) { | 135 int64_t progress) { |
| 133 records->push_back(progress); | 136 records->push_back(progress); |
| 134 } | 137 } |
| 135 | 138 |
| 136 void AssignAndQuit(base::RunLoop* run_loop, | 139 void AssignAndQuit(base::RunLoop* run_loop, |
| 137 base::File::Error* result_out, | 140 base::File::Error* result_out, |
| 138 base::File::Error result) { | 141 base::File::Error result) { |
| 139 *result_out = result; | 142 *result_out = result; |
| 140 run_loop->Quit(); | 143 run_loop->Quit(); |
| 141 } | 144 } |
| 142 | 145 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 quota_manager_->SetQuota( | 233 quota_manager_->SetQuota( |
| 231 origin_, | 234 origin_, |
| 232 storage::FileSystemTypeToQuotaStorageType(src_type_), | 235 storage::FileSystemTypeToQuotaStorageType(src_type_), |
| 233 1024 * 1024); | 236 1024 * 1024); |
| 234 quota_manager_->SetQuota( | 237 quota_manager_->SetQuota( |
| 235 origin_, | 238 origin_, |
| 236 storage::FileSystemTypeToQuotaStorageType(dest_type_), | 239 storage::FileSystemTypeToQuotaStorageType(dest_type_), |
| 237 1024 * 1024); | 240 1024 * 1024); |
| 238 } | 241 } |
| 239 | 242 |
| 240 int64 GetSourceUsage() { | 243 int64_t GetSourceUsage() { |
| 241 int64 usage = 0; | 244 int64_t usage = 0; |
| 242 GetUsageAndQuota(src_type_, &usage, NULL); | 245 GetUsageAndQuota(src_type_, &usage, NULL); |
| 243 return usage; | 246 return usage; |
| 244 } | 247 } |
| 245 | 248 |
| 246 int64 GetDestUsage() { | 249 int64_t GetDestUsage() { |
| 247 int64 usage = 0; | 250 int64_t usage = 0; |
| 248 GetUsageAndQuota(dest_type_, &usage, NULL); | 251 GetUsageAndQuota(dest_type_, &usage, NULL); |
| 249 return usage; | 252 return usage; |
| 250 } | 253 } |
| 251 | 254 |
| 252 FileSystemURL SourceURL(const std::string& path) { | 255 FileSystemURL SourceURL(const std::string& path) { |
| 253 return file_system_context_->CreateCrackedFileSystemURL( | 256 return file_system_context_->CreateCrackedFileSystemURL( |
| 254 origin_, src_type_, base::FilePath::FromUTF8Unsafe(path)); | 257 origin_, src_type_, base::FilePath::FromUTF8Unsafe(path)); |
| 255 } | 258 } |
| 256 | 259 |
| 257 FileSystemURL DestURL(const std::string& path) { | 260 FileSystemURL DestURL(const std::string& path) { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 | 360 |
| 358 base::File::Error CreateFile(const FileSystemURL& url, size_t size) { | 361 base::File::Error CreateFile(const FileSystemURL& url, size_t size) { |
| 359 base::File::Error result = | 362 base::File::Error result = |
| 360 AsyncFileTestHelper::CreateFile(file_system_context_.get(), url); | 363 AsyncFileTestHelper::CreateFile(file_system_context_.get(), url); |
| 361 if (result != base::File::FILE_OK) | 364 if (result != base::File::FILE_OK) |
| 362 return result; | 365 return result; |
| 363 return AsyncFileTestHelper::TruncateFile( | 366 return AsyncFileTestHelper::TruncateFile( |
| 364 file_system_context_.get(), url, size); | 367 file_system_context_.get(), url, size); |
| 365 } | 368 } |
| 366 | 369 |
| 367 bool FileExists(const FileSystemURL& url, int64 expected_size) { | 370 bool FileExists(const FileSystemURL& url, int64_t expected_size) { |
| 368 return AsyncFileTestHelper::FileExists( | 371 return AsyncFileTestHelper::FileExists( |
| 369 file_system_context_.get(), url, expected_size); | 372 file_system_context_.get(), url, expected_size); |
| 370 } | 373 } |
| 371 | 374 |
| 372 bool DirectoryExists(const FileSystemURL& url) { | 375 bool DirectoryExists(const FileSystemURL& url) { |
| 373 return AsyncFileTestHelper::DirectoryExists(file_system_context_.get(), | 376 return AsyncFileTestHelper::DirectoryExists(file_system_context_.get(), |
| 374 url); | 377 url); |
| 375 } | 378 } |
| 376 | 379 |
| 377 private: | 380 private: |
| 378 void GetUsageAndQuota(storage::FileSystemType type, | 381 void GetUsageAndQuota(storage::FileSystemType type, |
| 379 int64* usage, | 382 int64_t* usage, |
| 380 int64* quota) { | 383 int64_t* quota) { |
| 381 storage::QuotaStatusCode status = AsyncFileTestHelper::GetUsageAndQuota( | 384 storage::QuotaStatusCode status = AsyncFileTestHelper::GetUsageAndQuota( |
| 382 quota_manager_.get(), origin_, type, usage, quota); | 385 quota_manager_.get(), origin_, type, usage, quota); |
| 383 ASSERT_EQ(storage::kQuotaStatusOk, status); | 386 ASSERT_EQ(storage::kQuotaStatusOk, status); |
| 384 } | 387 } |
| 385 | 388 |
| 386 private: | 389 private: |
| 387 base::ScopedTempDir base_; | 390 base::ScopedTempDir base_; |
| 388 | 391 |
| 389 const GURL origin_; | 392 const GURL origin_; |
| 390 const storage::FileSystemType src_type_; | 393 const storage::FileSystemType src_type_; |
| 391 const storage::FileSystemType dest_type_; | 394 const storage::FileSystemType dest_type_; |
| 392 | 395 |
| 393 base::MessageLoopForIO message_loop_; | 396 base::MessageLoopForIO message_loop_; |
| 394 scoped_refptr<storage::FileSystemContext> file_system_context_; | 397 scoped_refptr<storage::FileSystemContext> file_system_context_; |
| 395 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; | 398 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; |
| 396 scoped_refptr<MockQuotaManager> quota_manager_; | 399 scoped_refptr<MockQuotaManager> quota_manager_; |
| 397 | 400 |
| 398 DISALLOW_COPY_AND_ASSIGN(CopyOrMoveOperationTestHelper); | 401 DISALLOW_COPY_AND_ASSIGN(CopyOrMoveOperationTestHelper); |
| 399 }; | 402 }; |
| 400 | 403 |
| 401 TEST(LocalFileSystemCopyOrMoveOperationTest, CopySingleFile) { | 404 TEST(LocalFileSystemCopyOrMoveOperationTest, CopySingleFile) { |
| 402 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 405 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 403 storage::kFileSystemTypeTemporary, | 406 storage::kFileSystemTypeTemporary, |
| 404 storage::kFileSystemTypePersistent); | 407 storage::kFileSystemTypePersistent); |
| 405 helper.SetUp(); | 408 helper.SetUp(); |
| 406 | 409 |
| 407 FileSystemURL src = helper.SourceURL("a"); | 410 FileSystemURL src = helper.SourceURL("a"); |
| 408 FileSystemURL dest = helper.DestURL("b"); | 411 FileSystemURL dest = helper.DestURL("b"); |
| 409 int64 src_initial_usage = helper.GetSourceUsage(); | 412 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 410 int64 dest_initial_usage = helper.GetDestUsage(); | 413 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 411 | 414 |
| 412 // Set up a source file. | 415 // Set up a source file. |
| 413 ASSERT_EQ(base::File::FILE_OK, helper.CreateFile(src, 10)); | 416 ASSERT_EQ(base::File::FILE_OK, helper.CreateFile(src, 10)); |
| 414 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 417 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 415 | 418 |
| 416 // Copy it. | 419 // Copy it. |
| 417 ASSERT_EQ(base::File::FILE_OK, helper.Copy(src, dest)); | 420 ASSERT_EQ(base::File::FILE_OK, helper.Copy(src, dest)); |
| 418 | 421 |
| 419 // Verify. | 422 // Verify. |
| 420 ASSERT_TRUE(helper.FileExists(src, 10)); | 423 ASSERT_TRUE(helper.FileExists(src, 10)); |
| 421 ASSERT_TRUE(helper.FileExists(dest, 10)); | 424 ASSERT_TRUE(helper.FileExists(dest, 10)); |
| 422 | 425 |
| 423 int64 src_new_usage = helper.GetSourceUsage(); | 426 int64_t src_new_usage = helper.GetSourceUsage(); |
| 424 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); | 427 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); |
| 425 | 428 |
| 426 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 429 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 427 ASSERT_EQ(src_increase, dest_increase); | 430 ASSERT_EQ(src_increase, dest_increase); |
| 428 } | 431 } |
| 429 | 432 |
| 430 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveSingleFile) { | 433 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveSingleFile) { |
| 431 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 434 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 432 storage::kFileSystemTypeTemporary, | 435 storage::kFileSystemTypeTemporary, |
| 433 storage::kFileSystemTypePersistent); | 436 storage::kFileSystemTypePersistent); |
| 434 helper.SetUp(); | 437 helper.SetUp(); |
| 435 | 438 |
| 436 FileSystemURL src = helper.SourceURL("a"); | 439 FileSystemURL src = helper.SourceURL("a"); |
| 437 FileSystemURL dest = helper.DestURL("b"); | 440 FileSystemURL dest = helper.DestURL("b"); |
| 438 int64 src_initial_usage = helper.GetSourceUsage(); | 441 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 439 int64 dest_initial_usage = helper.GetDestUsage(); | 442 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 440 | 443 |
| 441 // Set up a source file. | 444 // Set up a source file. |
| 442 ASSERT_EQ(base::File::FILE_OK, helper.CreateFile(src, 10)); | 445 ASSERT_EQ(base::File::FILE_OK, helper.CreateFile(src, 10)); |
| 443 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 446 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 444 | 447 |
| 445 // Move it. | 448 // Move it. |
| 446 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); | 449 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); |
| 447 | 450 |
| 448 // Verify. | 451 // Verify. |
| 449 ASSERT_FALSE(helper.FileExists(src, AsyncFileTestHelper::kDontCheckSize)); | 452 ASSERT_FALSE(helper.FileExists(src, AsyncFileTestHelper::kDontCheckSize)); |
| 450 ASSERT_TRUE(helper.FileExists(dest, 10)); | 453 ASSERT_TRUE(helper.FileExists(dest, 10)); |
| 451 | 454 |
| 452 int64 src_new_usage = helper.GetSourceUsage(); | 455 int64_t src_new_usage = helper.GetSourceUsage(); |
| 453 ASSERT_EQ(src_initial_usage, src_new_usage); | 456 ASSERT_EQ(src_initial_usage, src_new_usage); |
| 454 | 457 |
| 455 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 458 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 456 ASSERT_EQ(src_increase, dest_increase); | 459 ASSERT_EQ(src_increase, dest_increase); |
| 457 } | 460 } |
| 458 | 461 |
| 459 TEST(LocalFileSystemCopyOrMoveOperationTest, CopySingleDirectory) { | 462 TEST(LocalFileSystemCopyOrMoveOperationTest, CopySingleDirectory) { |
| 460 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 463 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 461 storage::kFileSystemTypeTemporary, | 464 storage::kFileSystemTypeTemporary, |
| 462 storage::kFileSystemTypePersistent); | 465 storage::kFileSystemTypePersistent); |
| 463 helper.SetUp(); | 466 helper.SetUp(); |
| 464 | 467 |
| 465 FileSystemURL src = helper.SourceURL("a"); | 468 FileSystemURL src = helper.SourceURL("a"); |
| 466 FileSystemURL dest = helper.DestURL("b"); | 469 FileSystemURL dest = helper.DestURL("b"); |
| 467 int64 src_initial_usage = helper.GetSourceUsage(); | 470 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 468 int64 dest_initial_usage = helper.GetDestUsage(); | 471 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 469 | 472 |
| 470 // Set up a source directory. | 473 // Set up a source directory. |
| 471 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); | 474 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); |
| 472 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 475 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 473 | 476 |
| 474 // Copy it. | 477 // Copy it. |
| 475 ASSERT_EQ(base::File::FILE_OK, helper.Copy(src, dest)); | 478 ASSERT_EQ(base::File::FILE_OK, helper.Copy(src, dest)); |
| 476 | 479 |
| 477 // Verify. | 480 // Verify. |
| 478 ASSERT_TRUE(helper.DirectoryExists(src)); | 481 ASSERT_TRUE(helper.DirectoryExists(src)); |
| 479 ASSERT_TRUE(helper.DirectoryExists(dest)); | 482 ASSERT_TRUE(helper.DirectoryExists(dest)); |
| 480 | 483 |
| 481 int64 src_new_usage = helper.GetSourceUsage(); | 484 int64_t src_new_usage = helper.GetSourceUsage(); |
| 482 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); | 485 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); |
| 483 | 486 |
| 484 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 487 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 485 ASSERT_EQ(src_increase, dest_increase); | 488 ASSERT_EQ(src_increase, dest_increase); |
| 486 } | 489 } |
| 487 | 490 |
| 488 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveSingleDirectory) { | 491 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveSingleDirectory) { |
| 489 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 492 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 490 storage::kFileSystemTypeTemporary, | 493 storage::kFileSystemTypeTemporary, |
| 491 storage::kFileSystemTypePersistent); | 494 storage::kFileSystemTypePersistent); |
| 492 helper.SetUp(); | 495 helper.SetUp(); |
| 493 | 496 |
| 494 FileSystemURL src = helper.SourceURL("a"); | 497 FileSystemURL src = helper.SourceURL("a"); |
| 495 FileSystemURL dest = helper.DestURL("b"); | 498 FileSystemURL dest = helper.DestURL("b"); |
| 496 int64 src_initial_usage = helper.GetSourceUsage(); | 499 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 497 int64 dest_initial_usage = helper.GetDestUsage(); | 500 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 498 | 501 |
| 499 // Set up a source directory. | 502 // Set up a source directory. |
| 500 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); | 503 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); |
| 501 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 504 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 502 | 505 |
| 503 // Move it. | 506 // Move it. |
| 504 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); | 507 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); |
| 505 | 508 |
| 506 // Verify. | 509 // Verify. |
| 507 ASSERT_FALSE(helper.DirectoryExists(src)); | 510 ASSERT_FALSE(helper.DirectoryExists(src)); |
| 508 ASSERT_TRUE(helper.DirectoryExists(dest)); | 511 ASSERT_TRUE(helper.DirectoryExists(dest)); |
| 509 | 512 |
| 510 int64 src_new_usage = helper.GetSourceUsage(); | 513 int64_t src_new_usage = helper.GetSourceUsage(); |
| 511 ASSERT_EQ(src_initial_usage, src_new_usage); | 514 ASSERT_EQ(src_initial_usage, src_new_usage); |
| 512 | 515 |
| 513 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 516 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 514 ASSERT_EQ(src_increase, dest_increase); | 517 ASSERT_EQ(src_increase, dest_increase); |
| 515 } | 518 } |
| 516 | 519 |
| 517 TEST(LocalFileSystemCopyOrMoveOperationTest, CopyDirectory) { | 520 TEST(LocalFileSystemCopyOrMoveOperationTest, CopyDirectory) { |
| 518 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 521 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 519 storage::kFileSystemTypeTemporary, | 522 storage::kFileSystemTypeTemporary, |
| 520 storage::kFileSystemTypePersistent); | 523 storage::kFileSystemTypePersistent); |
| 521 helper.SetUp(); | 524 helper.SetUp(); |
| 522 | 525 |
| 523 FileSystemURL src = helper.SourceURL("a"); | 526 FileSystemURL src = helper.SourceURL("a"); |
| 524 FileSystemURL dest = helper.DestURL("b"); | 527 FileSystemURL dest = helper.DestURL("b"); |
| 525 int64 src_initial_usage = helper.GetSourceUsage(); | 528 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 526 int64 dest_initial_usage = helper.GetDestUsage(); | 529 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 527 | 530 |
| 528 // Set up a source directory. | 531 // Set up a source directory. |
| 529 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); | 532 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); |
| 530 ASSERT_EQ(base::File::FILE_OK, | 533 ASSERT_EQ(base::File::FILE_OK, |
| 531 helper.SetUpTestCaseFiles(src, | 534 helper.SetUpTestCaseFiles(src, |
| 532 kRegularFileSystemTestCases, | 535 kRegularFileSystemTestCases, |
| 533 kRegularFileSystemTestCaseSize)); | 536 kRegularFileSystemTestCaseSize)); |
| 534 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 537 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 535 | 538 |
| 536 // Copy it. | 539 // Copy it. |
| 537 ASSERT_EQ(base::File::FILE_OK, | 540 ASSERT_EQ(base::File::FILE_OK, |
| 538 helper.CopyWithProgress( | 541 helper.CopyWithProgress( |
| 539 src, dest, | 542 src, dest, |
| 540 AsyncFileTestHelper::CopyProgressCallback())); | 543 AsyncFileTestHelper::CopyProgressCallback())); |
| 541 | 544 |
| 542 // Verify. | 545 // Verify. |
| 543 ASSERT_TRUE(helper.DirectoryExists(src)); | 546 ASSERT_TRUE(helper.DirectoryExists(src)); |
| 544 ASSERT_TRUE(helper.DirectoryExists(dest)); | 547 ASSERT_TRUE(helper.DirectoryExists(dest)); |
| 545 | 548 |
| 546 helper.VerifyTestCaseFiles(dest, | 549 helper.VerifyTestCaseFiles(dest, |
| 547 kRegularFileSystemTestCases, | 550 kRegularFileSystemTestCases, |
| 548 kRegularFileSystemTestCaseSize); | 551 kRegularFileSystemTestCaseSize); |
| 549 | 552 |
| 550 int64 src_new_usage = helper.GetSourceUsage(); | 553 int64_t src_new_usage = helper.GetSourceUsage(); |
| 551 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); | 554 ASSERT_EQ(src_initial_usage + src_increase, src_new_usage); |
| 552 | 555 |
| 553 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 556 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 554 ASSERT_EQ(src_increase, dest_increase); | 557 ASSERT_EQ(src_increase, dest_increase); |
| 555 } | 558 } |
| 556 | 559 |
| 557 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveDirectory) { | 560 TEST(LocalFileSystemCopyOrMoveOperationTest, MoveDirectory) { |
| 558 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 561 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 559 storage::kFileSystemTypeTemporary, | 562 storage::kFileSystemTypeTemporary, |
| 560 storage::kFileSystemTypePersistent); | 563 storage::kFileSystemTypePersistent); |
| 561 helper.SetUp(); | 564 helper.SetUp(); |
| 562 | 565 |
| 563 FileSystemURL src = helper.SourceURL("a"); | 566 FileSystemURL src = helper.SourceURL("a"); |
| 564 FileSystemURL dest = helper.DestURL("b"); | 567 FileSystemURL dest = helper.DestURL("b"); |
| 565 int64 src_initial_usage = helper.GetSourceUsage(); | 568 int64_t src_initial_usage = helper.GetSourceUsage(); |
| 566 int64 dest_initial_usage = helper.GetDestUsage(); | 569 int64_t dest_initial_usage = helper.GetDestUsage(); |
| 567 | 570 |
| 568 // Set up a source directory. | 571 // Set up a source directory. |
| 569 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); | 572 ASSERT_EQ(base::File::FILE_OK, helper.CreateDirectory(src)); |
| 570 ASSERT_EQ(base::File::FILE_OK, | 573 ASSERT_EQ(base::File::FILE_OK, |
| 571 helper.SetUpTestCaseFiles(src, | 574 helper.SetUpTestCaseFiles(src, |
| 572 kRegularFileSystemTestCases, | 575 kRegularFileSystemTestCases, |
| 573 kRegularFileSystemTestCaseSize)); | 576 kRegularFileSystemTestCaseSize)); |
| 574 int64 src_increase = helper.GetSourceUsage() - src_initial_usage; | 577 int64_t src_increase = helper.GetSourceUsage() - src_initial_usage; |
| 575 | 578 |
| 576 // Move it. | 579 // Move it. |
| 577 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); | 580 ASSERT_EQ(base::File::FILE_OK, helper.Move(src, dest)); |
| 578 | 581 |
| 579 // Verify. | 582 // Verify. |
| 580 ASSERT_FALSE(helper.DirectoryExists(src)); | 583 ASSERT_FALSE(helper.DirectoryExists(src)); |
| 581 ASSERT_TRUE(helper.DirectoryExists(dest)); | 584 ASSERT_TRUE(helper.DirectoryExists(dest)); |
| 582 | 585 |
| 583 helper.VerifyTestCaseFiles(dest, | 586 helper.VerifyTestCaseFiles(dest, |
| 584 kRegularFileSystemTestCases, | 587 kRegularFileSystemTestCases, |
| 585 kRegularFileSystemTestCaseSize); | 588 kRegularFileSystemTestCaseSize); |
| 586 | 589 |
| 587 int64 src_new_usage = helper.GetSourceUsage(); | 590 int64_t src_new_usage = helper.GetSourceUsage(); |
| 588 ASSERT_EQ(src_initial_usage, src_new_usage); | 591 ASSERT_EQ(src_initial_usage, src_new_usage); |
| 589 | 592 |
| 590 int64 dest_increase = helper.GetDestUsage() - dest_initial_usage; | 593 int64_t dest_increase = helper.GetDestUsage() - dest_initial_usage; |
| 591 ASSERT_EQ(src_increase, dest_increase); | 594 ASSERT_EQ(src_increase, dest_increase); |
| 592 } | 595 } |
| 593 | 596 |
| 594 TEST(LocalFileSystemCopyOrMoveOperationTest, | 597 TEST(LocalFileSystemCopyOrMoveOperationTest, |
| 595 MoveDirectoryFailPostWriteValidation) { | 598 MoveDirectoryFailPostWriteValidation) { |
| 596 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), | 599 CopyOrMoveOperationTestHelper helper(GURL("http://foo"), |
| 597 storage::kFileSystemTypeTemporary, | 600 storage::kFileSystemTypeTemporary, |
| 598 storage::kFileSystemTypeTest); | 601 storage::kFileSystemTypeTest); |
| 599 helper.SetUp(); | 602 helper.SetUp(); |
| 600 | 603 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 records[begin_index].type); | 697 records[begin_index].type); |
| 695 EXPECT_FALSE(records[begin_index].dest_url.is_valid()); | 698 EXPECT_FALSE(records[begin_index].dest_url.is_valid()); |
| 696 EXPECT_EQ(FileSystemOperation::END_COPY_ENTRY, records[end_index].type); | 699 EXPECT_EQ(FileSystemOperation::END_COPY_ENTRY, records[end_index].type); |
| 697 EXPECT_EQ(dest_url, records[end_index].dest_url); | 700 EXPECT_EQ(dest_url, records[end_index].dest_url); |
| 698 | 701 |
| 699 if (test_case.is_directory) { | 702 if (test_case.is_directory) { |
| 700 // For directory copy, the progress shouldn't be interlaced. | 703 // For directory copy, the progress shouldn't be interlaced. |
| 701 EXPECT_EQ(begin_index + 1, end_index); | 704 EXPECT_EQ(begin_index + 1, end_index); |
| 702 } else { | 705 } else { |
| 703 // PROGRESS event's size should be assending order. | 706 // PROGRESS event's size should be assending order. |
| 704 int64 current_size = 0; | 707 int64_t current_size = 0; |
| 705 for (size_t j = begin_index + 1; j < end_index; ++j) { | 708 for (size_t j = begin_index + 1; j < end_index; ++j) { |
| 706 if (records[j].source_url == src_url) { | 709 if (records[j].source_url == src_url) { |
| 707 EXPECT_EQ(FileSystemOperation::PROGRESS, records[j].type); | 710 EXPECT_EQ(FileSystemOperation::PROGRESS, records[j].type); |
| 708 EXPECT_FALSE(records[j].dest_url.is_valid()); | 711 EXPECT_FALSE(records[j].dest_url.is_valid()); |
| 709 EXPECT_GE(records[j].size, current_size); | 712 EXPECT_GE(records[j].size, current_size); |
| 710 current_size = records[j].size; | 713 current_size = records[j].size; |
| 711 } | 714 } |
| 712 } | 715 } |
| 713 } | 716 } |
| 714 } | 717 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 732 scoped_refptr<base::SingleThreadTaskRunner> task_runner = | 735 scoped_refptr<base::SingleThreadTaskRunner> task_runner = |
| 733 file_thread.task_runner(); | 736 file_thread.task_runner(); |
| 734 | 737 |
| 735 scoped_ptr<storage::FileStreamReader> reader( | 738 scoped_ptr<storage::FileStreamReader> reader( |
| 736 storage::FileStreamReader::CreateForLocalFile( | 739 storage::FileStreamReader::CreateForLocalFile( |
| 737 task_runner.get(), source_path, 0, base::Time())); | 740 task_runner.get(), source_path, 0, base::Time())); |
| 738 | 741 |
| 739 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( | 742 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( |
| 740 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); | 743 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); |
| 741 | 744 |
| 742 std::vector<int64> progress; | 745 std::vector<int64_t> progress; |
| 743 CopyOrMoveOperationDelegate::StreamCopyHelper helper( | 746 CopyOrMoveOperationDelegate::StreamCopyHelper helper( |
| 744 reader.Pass(), writer.Pass(), | 747 reader.Pass(), writer.Pass(), |
| 745 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, | 748 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, |
| 746 10, // buffer size | 749 10, // buffer size |
| 747 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), | 750 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), |
| 748 base::TimeDelta()); // For testing, we need all the progress. | 751 base::TimeDelta()); // For testing, we need all the progress. |
| 749 | 752 |
| 750 base::File::Error error = base::File::FILE_ERROR_FAILED; | 753 base::File::Error error = base::File::FILE_ERROR_FAILED; |
| 751 base::RunLoop run_loop; | 754 base::RunLoop run_loop; |
| 752 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); | 755 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 scoped_refptr<base::SingleThreadTaskRunner> task_runner = | 791 scoped_refptr<base::SingleThreadTaskRunner> task_runner = |
| 789 file_thread.task_runner(); | 792 file_thread.task_runner(); |
| 790 | 793 |
| 791 scoped_ptr<storage::FileStreamReader> reader( | 794 scoped_ptr<storage::FileStreamReader> reader( |
| 792 storage::FileStreamReader::CreateForLocalFile( | 795 storage::FileStreamReader::CreateForLocalFile( |
| 793 task_runner.get(), source_path, 0, base::Time())); | 796 task_runner.get(), source_path, 0, base::Time())); |
| 794 | 797 |
| 795 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( | 798 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( |
| 796 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); | 799 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); |
| 797 | 800 |
| 798 std::vector<int64> progress; | 801 std::vector<int64_t> progress; |
| 799 CopyOrMoveOperationDelegate::StreamCopyHelper helper( | 802 CopyOrMoveOperationDelegate::StreamCopyHelper helper( |
| 800 reader.Pass(), writer.Pass(), | 803 reader.Pass(), writer.Pass(), |
| 801 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, | 804 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, |
| 802 10, // buffer size | 805 10, // buffer size |
| 803 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), | 806 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), |
| 804 base::TimeDelta()); // For testing, we need all the progress. | 807 base::TimeDelta()); // For testing, we need all the progress. |
| 805 | 808 |
| 806 base::File::Error error = base::File::FILE_ERROR_FAILED; | 809 base::File::Error error = base::File::FILE_ERROR_FAILED; |
| 807 base::RunLoop run_loop; | 810 base::RunLoop run_loop; |
| 808 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); | 811 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 839 scoped_refptr<base::SingleThreadTaskRunner> task_runner = | 842 scoped_refptr<base::SingleThreadTaskRunner> task_runner = |
| 840 file_thread.task_runner(); | 843 file_thread.task_runner(); |
| 841 | 844 |
| 842 scoped_ptr<storage::FileStreamReader> reader( | 845 scoped_ptr<storage::FileStreamReader> reader( |
| 843 storage::FileStreamReader::CreateForLocalFile( | 846 storage::FileStreamReader::CreateForLocalFile( |
| 844 task_runner.get(), source_path, 0, base::Time())); | 847 task_runner.get(), source_path, 0, base::Time())); |
| 845 | 848 |
| 846 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( | 849 scoped_ptr<FileStreamWriter> writer(FileStreamWriter::CreateForLocalFile( |
| 847 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); | 850 task_runner.get(), dest_path, 0, FileStreamWriter::CREATE_NEW_FILE)); |
| 848 | 851 |
| 849 std::vector<int64> progress; | 852 std::vector<int64_t> progress; |
| 850 CopyOrMoveOperationDelegate::StreamCopyHelper helper( | 853 CopyOrMoveOperationDelegate::StreamCopyHelper helper( |
| 851 reader.Pass(), writer.Pass(), | 854 reader.Pass(), writer.Pass(), |
| 852 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, | 855 storage::FlushPolicy::NO_FLUSH_ON_COMPLETION, |
| 853 10, // buffer size | 856 10, // buffer size |
| 854 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), | 857 base::Bind(&RecordFileProgressCallback, base::Unretained(&progress)), |
| 855 base::TimeDelta()); // For testing, we need all the progress. | 858 base::TimeDelta()); // For testing, we need all the progress. |
| 856 | 859 |
| 857 // Call Cancel() later. | 860 // Call Cancel() later. |
| 858 base::ThreadTaskRunnerHandle::Get()->PostTask( | 861 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 859 FROM_HERE, | 862 FROM_HERE, |
| 860 base::Bind(&CopyOrMoveOperationDelegate::StreamCopyHelper::Cancel, | 863 base::Bind(&CopyOrMoveOperationDelegate::StreamCopyHelper::Cancel, |
| 861 base::Unretained(&helper))); | 864 base::Unretained(&helper))); |
| 862 | 865 |
| 863 base::File::Error error = base::File::FILE_ERROR_FAILED; | 866 base::File::Error error = base::File::FILE_ERROR_FAILED; |
| 864 base::RunLoop run_loop; | 867 base::RunLoop run_loop; |
| 865 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); | 868 helper.Run(base::Bind(&AssignAndQuit, &run_loop, &error)); |
| 866 run_loop.Run(); | 869 run_loop.Run(); |
| 867 | 870 |
| 868 EXPECT_EQ(base::File::FILE_ERROR_ABORT, error); | 871 EXPECT_EQ(base::File::FILE_ERROR_ABORT, error); |
| 869 } | 872 } |
| 870 | 873 |
| 871 } // namespace content | 874 } // namespace content |
| OLD | NEW |