diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-28 02:08:07 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-28 02:08:07 +0000 |
commit | c6f9203a46211bb08b84f73b4e1df303f1ab8c42 (patch) | |
tree | b8774c1e80f5e37c7f31a889023962fb3eb1bb7e /webkit/browser/fileapi/async_file_test_helper.cc | |
parent | ba7e19a2704f1c4772d1f1f3a45a2b2b78c0bbd7 (diff) | |
download | chromium_src-c6f9203a46211bb08b84f73b4e1df303f1ab8c42.zip chromium_src-c6f9203a46211bb08b84f73b4e1df303f1ab8c42.tar.gz chromium_src-c6f9203a46211bb08b84f73b4e1df303f1ab8c42.tar.bz2 |
Move browser-specific FileAPI code from webkit/fileapi to webkit/browser/fileapi
Moving following files:
- file_system_context*
- file_system_operation*
- file_system_url*
- and all others but not in syncable/ ones
BUG=239710
TBR=avi@chromium.org, tzik@chromium.org
Review URL: https://codereview.chromium.org/15859007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202482 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/browser/fileapi/async_file_test_helper.cc')
-rw-r--r-- | webkit/browser/fileapi/async_file_test_helper.cc | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/webkit/browser/fileapi/async_file_test_helper.cc b/webkit/browser/fileapi/async_file_test_helper.cc new file mode 100644 index 0000000..b71e9e5 --- /dev/null +++ b/webkit/browser/fileapi/async_file_test_helper.cc @@ -0,0 +1,235 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/bind.h" +#include "base/run_loop.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "webkit/browser/fileapi/async_file_test_helper.h" +#include "webkit/browser/fileapi/file_system_context.h" +#include "webkit/browser/fileapi/file_system_mount_point_provider.h" +#include "webkit/browser/fileapi/file_system_url.h" +#include "webkit/fileapi/file_system_util.h" +#include "webkit/quota/quota_manager.h" + +namespace fileapi { + +namespace { + +typedef FileSystemOperation::FileEntryList FileEntryList; + +void AssignAndQuit(base::RunLoop* run_loop, + base::PlatformFileError* result_out, + base::PlatformFileError result) { + *result_out = result; + run_loop->Quit(); +} + +base::Callback<void(base::PlatformFileError)> +AssignAndQuitCallback(base::RunLoop* run_loop, + base::PlatformFileError* result) { + return base::Bind(&AssignAndQuit, run_loop, base::Unretained(result)); +} + +void GetMetadataCallback(base::RunLoop* run_loop, + base::PlatformFileError* result_out, + base::PlatformFileInfo* file_info_out, + base::FilePath* platform_path_out, + base::PlatformFileError result, + const base::PlatformFileInfo& file_info, + const base::FilePath& platform_path) { + *result_out = result; + if (file_info_out) + *file_info_out = file_info; + if (platform_path_out) + *platform_path_out = platform_path; + run_loop->Quit(); +} + +void ReadDirectoryCallback(base::RunLoop* run_loop, + base::PlatformFileError* result_out, + FileEntryList* entries_out, + base::PlatformFileError result, + const FileEntryList& entries, + bool has_more) { + *result_out = result; + *entries_out = entries; + if (result != base::PLATFORM_FILE_OK || !has_more) + run_loop->Quit(); +} + +void DidGetUsageAndQuota(quota::QuotaStatusCode* status_out, + int64* usage_out, + int64* quota_out, + quota::QuotaStatusCode status, + int64 usage, + int64 quota) { + if (status_out) + *status_out = status; + if (usage_out) + *usage_out = usage; + if (quota_out) + *quota_out = quota; +} + +} // namespace + +const int64 AsyncFileTestHelper::kDontCheckSize = -1; + +base::PlatformFileError AsyncFileTestHelper::Copy( + FileSystemContext* context, + const FileSystemURL& src, + const FileSystemURL& dest) { + DCHECK(context); + FileSystemOperation* operation = + context->CreateFileSystemOperation(dest, NULL); + EXPECT_TRUE(operation != NULL); + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + base::RunLoop run_loop; + operation->Copy(src, dest, AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::Move( + FileSystemContext* context, + const FileSystemURL& src, + const FileSystemURL& dest) { + FileSystemOperation* operation = + context->CreateFileSystemOperation(dest, NULL); + EXPECT_TRUE(operation != NULL); + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + base::RunLoop run_loop; + operation->Move(src, dest, AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::Remove( + FileSystemContext* context, + const FileSystemURL& url, + bool recursive) { + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + base::RunLoop run_loop; + operation->Remove(url, recursive, AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::ReadDirectory( + FileSystemContext* context, + const FileSystemURL& url, + FileEntryList* entries) { + DCHECK(entries); + entries->clear(); + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + base::RunLoop run_loop; + operation->ReadDirectory( + url, base::Bind(&ReadDirectoryCallback, &run_loop, &result, entries)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::CreateDirectory( + FileSystemContext* context, + const FileSystemURL& url) { + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + base::RunLoop run_loop; + operation->CreateDirectory(url, + false /* exclusive */, + false /* recursive */, + AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::CreateFile( + FileSystemContext* context, + const FileSystemURL& url) { + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + base::RunLoop run_loop; + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + operation->CreateFile(url, false /* exclusive */, + AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::TruncateFile( + FileSystemContext* context, + const FileSystemURL& url, + size_t size) { + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + base::RunLoop run_loop; + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + operation->Truncate(url, size, + AssignAndQuitCallback(&run_loop, &result)); + run_loop.Run(); + return result; +} + +base::PlatformFileError AsyncFileTestHelper::GetMetadata( + FileSystemContext* context, + const FileSystemURL& url, + base::PlatformFileInfo* file_info, + base::FilePath* platform_path) { + base::PlatformFileError result = base::PLATFORM_FILE_ERROR_FAILED; + base::RunLoop run_loop; + FileSystemOperation* operation = + context->CreateFileSystemOperation(url, NULL); + EXPECT_TRUE(operation != NULL); + operation->GetMetadata(url, base::Bind(&GetMetadataCallback, + &run_loop, &result, + file_info, platform_path)); + run_loop.Run(); + return result; +} + +bool AsyncFileTestHelper::FileExists( + FileSystemContext* context, + const FileSystemURL& url, + int64 expected_size) { + base::PlatformFileInfo file_info; + base::PlatformFileError result = GetMetadata(context, url, &file_info, NULL); + if (result != base::PLATFORM_FILE_OK || file_info.is_directory) + return false; + return expected_size == kDontCheckSize || file_info.size == expected_size; +} + +bool AsyncFileTestHelper::DirectoryExists( + FileSystemContext* context, + const FileSystemURL& url) { + base::PlatformFileInfo file_info; + base::PlatformFileError result = GetMetadata(context, url, &file_info, NULL); + return (result == base::PLATFORM_FILE_OK) && file_info.is_directory; +} + +quota::QuotaStatusCode AsyncFileTestHelper::GetUsageAndQuota( + quota::QuotaManager* quota_manager, + const GURL& origin, + FileSystemType type, + int64* usage, + int64* quota) { + quota::QuotaStatusCode status = quota::kQuotaStatusUnknown; + quota_manager->GetUsageAndQuota( + origin, + FileSystemTypeToQuotaStorageType(type), + base::Bind(&DidGetUsageAndQuota, &status, usage, quota)); + base::MessageLoop::current()->RunUntilIdle(); + return status; +} + +} // namespace fileapi |