| Index: chrome/browser/browsing_data_file_system_helper_unittest.cc
|
| diff --git a/chrome/browser/browsing_data_file_system_helper_unittest.cc b/chrome/browser/browsing_data_file_system_helper_unittest.cc
|
| deleted file mode 100644
|
| index 3ffcb3b7a92b362bcbcb9784ab88c9d71e0ab7bb..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/browsing_data_file_system_helper_unittest.cc
|
| +++ /dev/null
|
| @@ -1,318 +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 "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/file_util.h"
|
| -#include "base/platform_file.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/browsing_data_file_system_helper.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/public/test/test_browser_thread.h"
|
| -#include "webkit/fileapi/file_system_context.h"
|
| -#include "webkit/fileapi/file_system_types.h"
|
| -#include "webkit/fileapi/file_system_usage_cache.h"
|
| -#include "webkit/fileapi/sandbox_mount_point_provider.h"
|
| -
|
| -using content::BrowserContext;
|
| -using content::BrowserThread;
|
| -
|
| -namespace {
|
| -
|
| -// Shorter names for fileapi::* constants.
|
| -const fileapi::FileSystemType kTemporary = fileapi::kFileSystemTypeTemporary;
|
| -const fileapi::FileSystemType kPersistent = fileapi::kFileSystemTypePersistent;
|
| -
|
| -// We'll use these three distinct origins for testing, both as strings and as
|
| -// GURLs in appropriate contexts.
|
| -const char kTestOrigin1[] = "http://host1:1/";
|
| -const char kTestOrigin2[] = "http://host2:2/";
|
| -const char kTestOrigin3[] = "http://host3:3/";
|
| -
|
| -// Extensions and Devtools should be ignored.
|
| -const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
|
| -const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/";
|
| -
|
| -const GURL kOrigin1(kTestOrigin1);
|
| -const GURL kOrigin2(kTestOrigin2);
|
| -const GURL kOrigin3(kTestOrigin3);
|
| -const GURL kOriginExt(kTestOriginExt);
|
| -const GURL kOriginDevTools(kTestOriginDevTools);
|
| -
|
| -// TODO(mkwst): Update this size once the discussion in http://crbug.com/86114
|
| -// is concluded.
|
| -const int kEmptyFileSystemSize = 0;
|
| -
|
| -typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo>
|
| - FileSystemInfoList;
|
| -typedef scoped_ptr<FileSystemInfoList> ScopedFileSystemInfoList;
|
| -
|
| -// The FileSystem APIs are all asynchronous; this testing class wraps up the
|
| -// boilerplate code necessary to deal with waiting for responses. In a nutshell,
|
| -// any async call whose response we want to test ought to be followed by a call
|
| -// to BlockUntilNotified(), which will (shockingly!) block until Notify() is
|
| -// called. For this to work, you'll need to ensure that each async call is
|
| -// implemented as a class method that that calls Notify() at an appropriate
|
| -// point.
|
| -class BrowsingDataFileSystemHelperTest : public testing::Test {
|
| - public:
|
| - BrowsingDataFileSystemHelperTest()
|
| - : ui_thread_(BrowserThread::UI, &message_loop_),
|
| - db_thread_(BrowserThread::DB, &message_loop_),
|
| - webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &message_loop_),
|
| - file_thread_(BrowserThread::FILE, &message_loop_),
|
| - file_user_blocking_thread_(
|
| - BrowserThread::FILE_USER_BLOCKING, &message_loop_),
|
| - io_thread_(BrowserThread::IO, &message_loop_) {
|
| - profile_.reset(new TestingProfile());
|
| - helper_ = BrowsingDataFileSystemHelper::Create(profile_.get());
|
| - message_loop_.RunAllPending();
|
| - canned_helper_ = new CannedBrowsingDataFileSystemHelper(profile_.get());
|
| - }
|
| - virtual ~BrowsingDataFileSystemHelperTest() {
|
| - // Avoid memory leaks.
|
| - profile_.reset();
|
| - message_loop_.RunAllPending();
|
| - }
|
| -
|
| - TestingProfile* GetProfile() {
|
| - return profile_.get();
|
| - }
|
| -
|
| - // Blocks on the current MessageLoop until Notify() is called.
|
| - void BlockUntilNotified() {
|
| - MessageLoop::current()->Run();
|
| - }
|
| -
|
| - // Unblocks the current MessageLoop. Should be called in response to some sort
|
| - // of async activity in a callback method.
|
| - void Notify() {
|
| - MessageLoop::current()->Quit();
|
| - }
|
| -
|
| - // Callback that should be executed in response to
|
| - // fileapi::SandboxMountPointProvider::ValidateFileSystemRoot
|
| - void ValidateFileSystemCallback(base::PlatformFileError error) {
|
| - validate_file_system_result_ = error;
|
| - Notify();
|
| - }
|
| -
|
| - // Calls fileapi::SandboxMountPointProvider::ValidateFileSystemRootAndGetURL
|
| - // to verify the existence of a file system for a specified type and origin,
|
| - // blocks until a response is available, then returns the result
|
| - // synchronously to it's caller.
|
| - bool FileSystemContainsOriginAndType(const GURL& origin,
|
| - fileapi::FileSystemType type) {
|
| - sandbox_->ValidateFileSystemRoot(
|
| - origin, type, false,
|
| - base::Bind(
|
| - &BrowsingDataFileSystemHelperTest::ValidateFileSystemCallback,
|
| - base::Unretained(this)));
|
| - BlockUntilNotified();
|
| - return validate_file_system_result_ == base::PLATFORM_FILE_OK;
|
| - }
|
| -
|
| - // Callback that should be executed in response to StartFetching(), and stores
|
| - // found file systems locally so that they are available via GetFileSystems().
|
| - void CallbackStartFetching(
|
| - const std::list<BrowsingDataFileSystemHelper::FileSystemInfo>&
|
| - file_system_info_list) {
|
| - file_system_info_list_.reset(
|
| - new std::list<BrowsingDataFileSystemHelper::FileSystemInfo>(
|
| - file_system_info_list));
|
| - Notify();
|
| - }
|
| -
|
| - // Calls StartFetching() on the test's BrowsingDataFileSystemHelper
|
| - // object, then blocks until the callback is executed.
|
| - void FetchFileSystems() {
|
| - helper_->StartFetching(
|
| - base::Bind(&BrowsingDataFileSystemHelperTest::CallbackStartFetching,
|
| - base::Unretained(this)));
|
| - BlockUntilNotified();
|
| - }
|
| -
|
| - // Calls StartFetching() on the test's CannedBrowsingDataFileSystemHelper
|
| - // object, then blocks until the callback is executed.
|
| - void FetchCannedFileSystems() {
|
| - canned_helper_->StartFetching(
|
| - base::Bind(&BrowsingDataFileSystemHelperTest::CallbackStartFetching,
|
| - base::Unretained(this)));
|
| - BlockUntilNotified();
|
| - }
|
| -
|
| - // Sets up kOrigin1 with a temporary file system, kOrigin2 with a persistent
|
| - // file system, and kOrigin3 with both.
|
| - virtual void PopulateTestFileSystemData() {
|
| - sandbox_ = BrowserContext::GetFileSystemContext(profile_.get())->
|
| - sandbox_provider();
|
| -
|
| - CreateDirectoryForOriginAndType(kOrigin1, kTemporary);
|
| - CreateDirectoryForOriginAndType(kOrigin2, kPersistent);
|
| - CreateDirectoryForOriginAndType(kOrigin3, kTemporary);
|
| - CreateDirectoryForOriginAndType(kOrigin3, kPersistent);
|
| -
|
| - EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin1, kPersistent));
|
| - EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin1, kTemporary));
|
| - EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin2, kPersistent));
|
| - EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin2, kTemporary));
|
| - EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, kPersistent));
|
| - EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3, kTemporary));
|
| - }
|
| -
|
| - // Uses the fileapi methods to create a filesystem of a given type for a
|
| - // specified origin.
|
| - void CreateDirectoryForOriginAndType(const GURL& origin,
|
| - fileapi::FileSystemType type) {
|
| - FilePath target = sandbox_->GetFileSystemRootPathOnFileThread(
|
| - origin, type, FilePath(), true);
|
| - EXPECT_TRUE(file_util::DirectoryExists(target));
|
| - }
|
| -
|
| - // Returns a list of the FileSystemInfo objects gathered in the most recent
|
| - // call to StartFetching().
|
| - FileSystemInfoList* GetFileSystems() {
|
| - return file_system_info_list_.get();
|
| - }
|
| -
|
| -
|
| - // Temporary storage to pass information back from callbacks.
|
| - base::PlatformFileError validate_file_system_result_;
|
| - ScopedFileSystemInfoList file_system_info_list_;
|
| -
|
| - scoped_refptr<BrowsingDataFileSystemHelper> helper_;
|
| - scoped_refptr<CannedBrowsingDataFileSystemHelper> canned_helper_;
|
| -
|
| - private:
|
| - // message_loop_, as well as all the threads associated with it must be
|
| - // defined before profile_ to prevent explosions. The threads also must be
|
| - // defined in the order they're listed here. Oh how I love C++.
|
| - MessageLoopForUI message_loop_;
|
| - content::TestBrowserThread ui_thread_;
|
| - content::TestBrowserThread db_thread_;
|
| - content::TestBrowserThread webkit_thread_;
|
| - content::TestBrowserThread file_thread_;
|
| - content::TestBrowserThread file_user_blocking_thread_;
|
| - content::TestBrowserThread io_thread_;
|
| - scoped_ptr<TestingProfile> profile_;
|
| -
|
| - // We don't own this pointer: don't delete it.
|
| - fileapi::SandboxMountPointProvider* sandbox_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BrowsingDataFileSystemHelperTest);
|
| -};
|
| -
|
| -// Verifies that the BrowsingDataFileSystemHelper correctly finds the test file
|
| -// system data, and that each file system returned contains the expected data.
|
| -TEST_F(BrowsingDataFileSystemHelperTest, FetchData) {
|
| - PopulateTestFileSystemData();
|
| -
|
| - FetchFileSystems();
|
| -
|
| - EXPECT_EQ(3UL, file_system_info_list_->size());
|
| -
|
| - // Order is arbitrary, verify all three origins.
|
| - bool test_hosts_found[3] = {false, false, false};
|
| - for (std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator info =
|
| - file_system_info_list_->begin(); info != file_system_info_list_->end();
|
| - ++info) {
|
| - if (info->origin == kOrigin1) {
|
| - EXPECT_FALSE(test_hosts_found[0]);
|
| - test_hosts_found[0] = true;
|
| - EXPECT_FALSE(info->has_persistent);
|
| - EXPECT_TRUE(info->has_temporary);
|
| - EXPECT_EQ(0, info->usage_persistent);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info->usage_temporary);
|
| - } else if (info->origin == kOrigin2) {
|
| - EXPECT_FALSE(test_hosts_found[1]);
|
| - test_hosts_found[1] = true;
|
| - EXPECT_TRUE(info->has_persistent);
|
| - EXPECT_FALSE(info->has_temporary);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info->usage_persistent);
|
| - EXPECT_EQ(0, info->usage_temporary);
|
| - } else if (info->origin == kOrigin3) {
|
| - EXPECT_FALSE(test_hosts_found[2]);
|
| - test_hosts_found[2] = true;
|
| - EXPECT_TRUE(info->has_persistent);
|
| - EXPECT_TRUE(info->has_temporary);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info->usage_persistent);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info->usage_temporary);
|
| - } else {
|
| - ADD_FAILURE() << info->origin.spec() << " isn't an origin we added.";
|
| - }
|
| - }
|
| - for (size_t i = 0; i < arraysize(test_hosts_found); i++) {
|
| - EXPECT_TRUE(test_hosts_found[i]);
|
| - }
|
| -}
|
| -
|
| -// Verifies that the BrowsingDataFileSystemHelper correctly deletes file
|
| -// systems via DeleteFileSystemOrigin().
|
| -TEST_F(BrowsingDataFileSystemHelperTest, DeleteData) {
|
| - PopulateTestFileSystemData();
|
| -
|
| - helper_->DeleteFileSystemOrigin(kOrigin1);
|
| - helper_->DeleteFileSystemOrigin(kOrigin2);
|
| -
|
| - FetchFileSystems();
|
| -
|
| - EXPECT_EQ(1UL, file_system_info_list_->size());
|
| - BrowsingDataFileSystemHelper::FileSystemInfo info =
|
| - *(file_system_info_list_->begin());
|
| - EXPECT_EQ(kOrigin3, info.origin);
|
| - EXPECT_TRUE(info.has_persistent);
|
| - EXPECT_TRUE(info.has_temporary);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info.usage_persistent);
|
| - EXPECT_EQ(kEmptyFileSystemSize, info.usage_temporary);
|
| -}
|
| -
|
| -// Verifies that the CannedBrowsingDataFileSystemHelper correctly reports
|
| -// whether or not it currently contains file systems.
|
| -TEST_F(BrowsingDataFileSystemHelperTest, Empty) {
|
| - ASSERT_TRUE(canned_helper_->empty());
|
| - canned_helper_->AddFileSystem(kOrigin1, kTemporary, 0);
|
| - ASSERT_FALSE(canned_helper_->empty());
|
| - canned_helper_->Reset();
|
| - ASSERT_TRUE(canned_helper_->empty());
|
| -}
|
| -
|
| -// Verifies that AddFileSystem correctly adds file systems, and that both
|
| -// the type and usage metadata are reported as provided.
|
| -TEST_F(BrowsingDataFileSystemHelperTest, CannedAddFileSystem) {
|
| - canned_helper_->AddFileSystem(kOrigin1, kPersistent, 200);
|
| - canned_helper_->AddFileSystem(kOrigin2, kTemporary, 100);
|
| -
|
| - FetchCannedFileSystems();
|
| -
|
| - EXPECT_EQ(2U, file_system_info_list_->size());
|
| - std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator info =
|
| - file_system_info_list_->begin();
|
| - EXPECT_EQ(kOrigin1, info->origin);
|
| - EXPECT_TRUE(info->has_persistent);
|
| - EXPECT_FALSE(info->has_temporary);
|
| - EXPECT_EQ(200, info->usage_persistent);
|
| - EXPECT_EQ(0, info->usage_temporary);
|
| -
|
| - info++;
|
| - EXPECT_EQ(kOrigin2, info->origin);
|
| - EXPECT_FALSE(info->has_persistent);
|
| - EXPECT_TRUE(info->has_temporary);
|
| - EXPECT_EQ(0, info->usage_persistent);
|
| - EXPECT_EQ(100, info->usage_temporary);
|
| -}
|
| -
|
| -// Verifies that the CannedBrowsingDataFileSystemHelper correctly ignores
|
| -// extension and devtools schemes.
|
| -TEST_F(BrowsingDataFileSystemHelperTest, IgnoreExtensionsAndDevTools) {
|
| - ASSERT_TRUE(canned_helper_->empty());
|
| - canned_helper_->AddFileSystem(kOriginExt, kTemporary, 0);
|
| - ASSERT_TRUE(canned_helper_->empty());
|
| - canned_helper_->AddFileSystem(kOriginDevTools, kTemporary, 0);
|
| - ASSERT_TRUE(canned_helper_->empty());
|
| -}
|
| -
|
| -} // namespace
|
|
|