Index: webkit/fileapi/syncable/syncable_file_system_unittest.cc |
diff --git a/webkit/fileapi/syncable/syncable_file_system_unittest.cc b/webkit/fileapi/syncable/syncable_file_system_unittest.cc |
deleted file mode 100644 |
index 35cb29ff717f4cb13f110f95b6d8719403d6a5d6..0000000000000000000000000000000000000000 |
--- a/webkit/fileapi/syncable/syncable_file_system_unittest.cc |
+++ /dev/null |
@@ -1,284 +0,0 @@ |
-// Copyright (c) 2012 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/stl_util.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "webkit/browser/fileapi/file_system_context.h" |
-#include "webkit/browser/fileapi/file_system_file_util.h" |
-#include "webkit/browser/fileapi/file_system_operation_context.h" |
-#include "webkit/browser/fileapi/file_system_task_runners.h" |
-#include "webkit/browser/fileapi/isolated_context.h" |
-#include "webkit/browser/fileapi/local_file_system_operation.h" |
-#include "webkit/browser/fileapi/sandbox_file_system_test_helper.h" |
-#include "webkit/common/fileapi/file_system_types.h" |
-#include "webkit/fileapi/syncable/canned_syncable_file_system.h" |
-#include "webkit/fileapi/syncable/local_file_change_tracker.h" |
-#include "webkit/fileapi/syncable/local_file_sync_context.h" |
-#include "webkit/fileapi/syncable/syncable_file_system_util.h" |
-#include "webkit/quota/quota_manager.h" |
-#include "webkit/quota/quota_types.h" |
- |
-using base::PlatformFileError; |
-using fileapi::FileSystemContext; |
-using fileapi::FileSystemOperationContext; |
-using fileapi::FileSystemURL; |
-using fileapi::FileSystemURLSet; |
-using fileapi::SandboxFileSystemTestHelper; |
-using quota::QuotaManager; |
-using quota::QuotaStatusCode; |
- |
-namespace sync_file_system { |
- |
-class SyncableFileSystemTest : public testing::Test { |
- public: |
- SyncableFileSystemTest() |
- : file_system_(GURL("http://example.com/"), "test", |
- base::MessageLoopProxy::current(), |
- base::MessageLoopProxy::current()), |
- weak_factory_(this) {} |
- |
- virtual void SetUp() { |
- file_system_.SetUp(); |
- |
- sync_context_ = new LocalFileSyncContext(base::MessageLoopProxy::current(), |
- base::MessageLoopProxy::current()); |
- ASSERT_EQ(sync_file_system::SYNC_STATUS_OK, |
- file_system_.MaybeInitializeFileSystemContext(sync_context_)); |
- } |
- |
- virtual void TearDown() { |
- if (sync_context_) |
- sync_context_->ShutdownOnUIThread(); |
- sync_context_ = NULL; |
- |
- file_system_.TearDown(); |
- |
- // Make sure we don't leave the external filesystem. |
- // (CannedSyncableFileSystem::TearDown does not do this as there may be |
- // multiple syncable file systems registered for the name) |
- RevokeSyncableFileSystem("test"); |
- } |
- |
- protected: |
- void VerifyAndClearChange(const FileSystemURL& url, |
- const FileChange& expected_change) { |
- SCOPED_TRACE(testing::Message() << url.DebugString() << |
- " expecting:" << expected_change.DebugString()); |
- // Get the changes for URL and verify. |
- FileChangeList changes; |
- change_tracker()->GetChangesForURL(url, &changes); |
- ASSERT_EQ(1U, changes.size()); |
- SCOPED_TRACE(testing::Message() << url.DebugString() << |
- " actual:" << changes.DebugString()); |
- EXPECT_EQ(expected_change, changes.front()); |
- |
- // Clear the URL from the change tracker. |
- change_tracker()->ClearChangesForURL(url); |
- } |
- |
- FileSystemURL URL(const std::string& path) { |
- return file_system_.URL(path); |
- } |
- |
- FileSystemContext* file_system_context() { |
- return file_system_.file_system_context(); |
- } |
- |
- LocalFileChangeTracker* change_tracker() { |
- return file_system_context()->change_tracker(); |
- } |
- |
- base::ScopedTempDir data_dir_; |
- base::MessageLoop message_loop_; |
- |
- CannedSyncableFileSystem file_system_; |
- scoped_refptr<LocalFileSyncContext> sync_context_; |
- |
- base::WeakPtrFactory<SyncableFileSystemTest> weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SyncableFileSystemTest); |
-}; |
- |
-// Brief combined testing. Just see if all the sandbox feature works. |
-TEST_F(SyncableFileSystemTest, SyncableLocalSandboxCombined) { |
- // Opens a syncable file system. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.OpenFileSystem()); |
- |
- // Do some operations. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateDirectory(URL("dir"))); |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateFile(URL("dir/foo"))); |
- |
- const int64 kOriginalQuota = QuotaManager::kSyncableStorageDefaultHostQuota; |
- |
- const int64 kQuota = 12345 * 1024; |
- QuotaManager::kSyncableStorageDefaultHostQuota = kQuota; |
- int64 usage, quota; |
- EXPECT_EQ(quota::kQuotaStatusOk, |
- file_system_.GetUsageAndQuota(&usage, "a)); |
- |
- // Returned quota must be what we overrode. Usage must be greater than 0 |
- // as creating a file or directory consumes some space. |
- EXPECT_EQ(kQuota, quota); |
- EXPECT_GT(usage, 0); |
- |
- // Truncate to extend an existing file and see if the usage reflects it. |
- const int64 kFileSizeToExtend = 333; |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateFile(URL("dir/foo"))); |
- |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend)); |
- |
- int64 new_usage; |
- EXPECT_EQ(quota::kQuotaStatusOk, |
- file_system_.GetUsageAndQuota(&new_usage, "a)); |
- EXPECT_EQ(kFileSizeToExtend, new_usage - usage); |
- |
- // Shrink the quota to the current usage, try to extend the file further |
- // and see if it fails. |
- QuotaManager::kSyncableStorageDefaultHostQuota = new_usage; |
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, |
- file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend + 1)); |
- |
- usage = new_usage; |
- EXPECT_EQ(quota::kQuotaStatusOk, |
- file_system_.GetUsageAndQuota(&new_usage, "a)); |
- EXPECT_EQ(usage, new_usage); |
- |
- // Deletes the file system. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.DeleteFileSystem()); |
- |
- // Now the usage must be zero. |
- EXPECT_EQ(quota::kQuotaStatusOk, |
- file_system_.GetUsageAndQuota(&usage, "a)); |
- EXPECT_EQ(0, usage); |
- |
- // Restore the system default quota. |
- QuotaManager::kSyncableStorageDefaultHostQuota = kOriginalQuota; |
-} |
- |
-// Combined testing with LocalFileChangeTracker. |
-TEST_F(SyncableFileSystemTest, ChangeTrackerSimple) { |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.OpenFileSystem()); |
- |
- const char kPath0[] = "dir a"; |
- const char kPath1[] = "dir a/dir"; // child of kPath0 |
- const char kPath2[] = "dir a/file"; // child of kPath0 |
- const char kPath3[] = "dir b"; |
- |
- // Do some operations. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateDirectory(URL(kPath0))); // Creates a dir. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateDirectory(URL(kPath1))); // Creates another. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateFile(URL(kPath2))); // Creates a file. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.TruncateFile(URL(kPath2), 1)); // Modifies the file. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.TruncateFile(URL(kPath2), 2)); // Modifies it again. |
- |
- FileSystemURLSet urls; |
- file_system_.GetChangedURLsInTracker(&urls); |
- |
- EXPECT_EQ(3U, urls.size()); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath0))); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath1))); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath2))); |
- |
- VerifyAndClearChange(URL(kPath0), |
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); |
- VerifyAndClearChange(URL(kPath1), |
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); |
- VerifyAndClearChange(URL(kPath2), |
- FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, |
- sync_file_system::SYNC_FILE_TYPE_FILE)); |
- |
- // Creates and removes a same directory. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.CreateDirectory(URL(kPath3))); |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.Remove(URL(kPath3), false /* recursive */)); |
- |
- // The changes will be offset. |
- urls.clear(); |
- file_system_.GetChangedURLsInTracker(&urls); |
- EXPECT_TRUE(urls.empty()); |
- |
- // Recursively removes the kPath0 directory. |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.Remove(URL(kPath0), true /* recursive */)); |
- |
- urls.clear(); |
- file_system_.GetChangedURLsInTracker(&urls); |
- |
- // kPath0 and its all chidren (kPath1 and kPath2) must have been deleted. |
- EXPECT_EQ(3U, urls.size()); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath0))); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath1))); |
- EXPECT_TRUE(ContainsKey(urls, URL(kPath2))); |
- |
- VerifyAndClearChange(URL(kPath0), |
- FileChange(FileChange::FILE_CHANGE_DELETE, |
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); |
- VerifyAndClearChange(URL(kPath1), |
- FileChange(FileChange::FILE_CHANGE_DELETE, |
- sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); |
- VerifyAndClearChange(URL(kPath2), |
- FileChange(FileChange::FILE_CHANGE_DELETE, |
- sync_file_system::SYNC_FILE_TYPE_FILE)); |
-} |
- |
-// Make sure directory operation is disabled (when it's configured so). |
-TEST_F(SyncableFileSystemTest, DisableDirectoryOperations) { |
- SetEnableSyncFSDirectoryOperation(false); |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- file_system_.OpenFileSystem()); |
- |
- // Try some directory operations (which should fail). |
- EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, |
- file_system_.CreateDirectory(URL("dir"))); |
- |
- // Set up another (non-syncable) local file system. |
- SandboxFileSystemTestHelper other_file_system_( |
- GURL("http://foo.com/"), fileapi::kFileSystemTypeTemporary); |
- other_file_system_.SetUp(file_system_.file_system_context()); |
- |
- // Create directory '/a' and file '/a/b' in the other file system. |
- const FileSystemURL kSrcDir = other_file_system_.CreateURLFromUTF8("/a"); |
- const FileSystemURL kSrcChild = other_file_system_.CreateURLFromUTF8("/a/b"); |
- |
- bool created = false; |
- scoped_ptr<FileSystemOperationContext> operation_context; |
- |
- operation_context.reset(other_file_system_.NewOperationContext()); |
- operation_context->set_allowed_bytes_growth(1024); |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- other_file_system_.file_util()->CreateDirectory( |
- operation_context.get(), |
- kSrcDir, false /* exclusive */, false /* recursive */)); |
- |
- operation_context.reset(other_file_system_.NewOperationContext()); |
- operation_context->set_allowed_bytes_growth(1024); |
- EXPECT_EQ(base::PLATFORM_FILE_OK, |
- other_file_system_.file_util()->EnsureFileExists( |
- operation_context.get(), kSrcChild, &created)); |
- EXPECT_TRUE(created); |
- |
- // Now try copying the directory into the syncable file system, which should |
- // fail if directory operation is disabled. (http://crbug.com/161442) |
- EXPECT_NE(base::PLATFORM_FILE_OK, |
- file_system_.Copy(kSrcDir, URL("dest"))); |
- |
- other_file_system_.TearDown(); |
-} |
- |
-} // namespace sync_file_system |