diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 06:43:08 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 06:43:08 +0000 |
commit | d77ecbf6706e046a4639151373a026fbe8476933 (patch) | |
tree | 74e1586088759f144010b6ef3db8a532348bf2ec /content/browser/fileapi/transient_file_util_unittest.cc | |
parent | e87bdbbbe4be0a1459300cace2d2232d34c8d7bd (diff) | |
download | chromium_src-d77ecbf6706e046a4639151373a026fbe8476933.zip chromium_src-d77ecbf6706e046a4639151373a026fbe8476933.tar.gz chromium_src-d77ecbf6706e046a4639151373a026fbe8476933.tar.bz2 |
Move FileAPI test code from webkit to content
(Namespace fix will come later)
BUG=265769
TEST=build
Review URL: https://codereview.chromium.org/23440033
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@226399 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/fileapi/transient_file_util_unittest.cc')
-rw-r--r-- | content/browser/fileapi/transient_file_util_unittest.cc | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/content/browser/fileapi/transient_file_util_unittest.cc b/content/browser/fileapi/transient_file_util_unittest.cc new file mode 100644 index 0000000..b12a99e --- /dev/null +++ b/content/browser/fileapi/transient_file_util_unittest.cc @@ -0,0 +1,122 @@ +// Copyright 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/basictypes.h" +#include "base/file_util.h" +#include "base/files/file_path.h" +#include "base/files/scoped_temp_dir.h" +#include "base/memory/scoped_ptr.h" +#include "base/platform_file.h" +#include "base/run_loop.h" +#include "content/public/test/test_file_system_context.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "webkit/browser/fileapi/file_system_context.h" +#include "webkit/browser/fileapi/file_system_operation_context.h" +#include "webkit/browser/fileapi/isolated_context.h" +#include "webkit/browser/fileapi/transient_file_util.h" +#include "webkit/common/blob/scoped_file.h" + +namespace fileapi { + +class TransientFileUtilTest : public testing::Test { + public: + TransientFileUtilTest() {} + virtual ~TransientFileUtilTest() {} + + virtual void SetUp() OVERRIDE { + file_system_context_ = CreateFileSystemContextForTesting( + NULL, base::FilePath(FILE_PATH_LITERAL("dummy"))); + transient_file_util_.reset(new TransientFileUtil); + + ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); + } + + virtual void TearDown() OVERRIDE { + file_system_context_ = NULL; + base::RunLoop().RunUntilIdle(); + } + + void CreateAndRegisterTemporaryFile( + FileSystemURL* file_url, + base::FilePath* file_path) { + EXPECT_TRUE( + file_util::CreateTemporaryFileInDir(data_dir_.path(), file_path)); + IsolatedContext* isolated_context = IsolatedContext::GetInstance(); + std::string name = "tmp"; + std::string fsid = isolated_context->RegisterFileSystemForPath( + kFileSystemTypeForTransientFile, + *file_path, + &name); + ASSERT_TRUE(!fsid.empty()); + base::FilePath virtual_path = isolated_context->CreateVirtualRootPath( + fsid).AppendASCII(name); + *file_url = file_system_context_->CreateCrackedFileSystemURL( + GURL("http://foo"), + kFileSystemTypeIsolated, + virtual_path); + } + + scoped_ptr<FileSystemOperationContext> NewOperationContext() { + return make_scoped_ptr( + new FileSystemOperationContext(file_system_context_.get())); + } + + FileSystemFileUtil* file_util() { return transient_file_util_.get(); } + + private: + base::MessageLoop message_loop_; + base::ScopedTempDir data_dir_; + scoped_refptr<FileSystemContext> file_system_context_; + scoped_ptr<TransientFileUtil> transient_file_util_; + + DISALLOW_COPY_AND_ASSIGN(TransientFileUtilTest); +}; + +TEST_F(TransientFileUtilTest, TransientFile) { + FileSystemURL temp_url; + base::FilePath temp_path; + + CreateAndRegisterTemporaryFile(&temp_url, &temp_path); + + base::PlatformFileError error; + base::PlatformFileInfo file_info; + base::FilePath path; + + // Make sure the file is there. + ASSERT_TRUE(temp_url.is_valid()); + ASSERT_TRUE(base::PathExists(temp_path)); + ASSERT_FALSE(base::DirectoryExists(temp_path)); + + // Create a snapshot file. + { + webkit_blob::ScopedFile scoped_file = + file_util()->CreateSnapshotFile(NewOperationContext().get(), + temp_url, + &error, + &file_info, + &path); + ASSERT_EQ(base::PLATFORM_FILE_OK, error); + ASSERT_EQ(temp_path, path); + ASSERT_FALSE(file_info.is_directory); + + // The file should be still there. + ASSERT_TRUE(base::PathExists(temp_path)); + ASSERT_EQ(base::PLATFORM_FILE_OK, + file_util()->GetFileInfo(NewOperationContext().get(), + temp_url, &file_info, &path)); + ASSERT_EQ(temp_path, path); + ASSERT_FALSE(file_info.is_directory); + } + + // The file's now scoped out. + base::RunLoop().RunUntilIdle(); + + // Now the temporary file and the transient filesystem must be gone too. + ASSERT_FALSE(base::PathExists(temp_path)); + ASSERT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, + file_util()->GetFileInfo(NewOperationContext().get(), + temp_url, &file_info, &path)); +} + +} // namespace fileapi |