Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4281)

Unified Diff: chrome/browser/browsing_data_file_system_helper_unittest.cc

Issue 7065056: Dropping BrowsingDataFileSystemHelper browser_test in favor of a unit_test. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebasing. Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/browsing_data_file_system_helper_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index 06cdca619c29910440e6c99f5556be17ddf1a083..cdea1095aa36174307a8a1061c14babd0e8bb7e9 100644
--- a/chrome/browser/browsing_data_file_system_helper_unittest.cc
+++ b/chrome/browser/browsing_data_file_system_helper_unittest.cc
@@ -8,24 +8,246 @@
#include "chrome/browser/browsing_data_file_system_helper.h"
#include "chrome/test/testing_browser_process_test.h"
#include "chrome/test/testing_profile.h"
+#include "content/browser/browser_thread.h"
+#include "webkit/fileapi/file_system_context.h"
+#include "webkit/fileapi/file_system_path_manager.h"
+#include "webkit/fileapi/file_system_types.h"
+#include "webkit/fileapi/file_system_usage_cache.h"
+#include "webkit/fileapi/sandbox_mount_point_provider.h"
namespace {
-typedef TestingBrowserProcessTest CannedBrowsingDataFileSystemHelperTest;
+const fileapi::FileSystemType kTemporary = fileapi::kFileSystemTypeTemporary;
+const fileapi::FileSystemType kPersistent = fileapi::kFileSystemTypePersistent;
-TEST_F(CannedBrowsingDataFileSystemHelperTest, Empty) {
- TestingProfile profile;
+const char kTestOrigin1[] = "http://host1:1/";
+const char kTestOrigin2[] = "http://host2:1/";
+const char kTestOrigin3[] = "http://host3:1/";
- const GURL origin("http://host1:1/");
+const GURL kOrigin1(kTestOrigin1);
+const GURL kOrigin2(kTestOrigin2);
+const GURL kOrigin3(kTestOrigin3);
- scoped_refptr<CannedBrowsingDataFileSystemHelper> helper(
- new CannedBrowsingDataFileSystemHelper(&profile));
+const int kEmptyFileSystemSize = fileapi::FileSystemUsageCache::kUsageFileSize;
- ASSERT_TRUE(helper->empty());
- helper->AddFileSystem(origin, fileapi::kFileSystemTypeTemporary, 0);
- ASSERT_FALSE(helper->empty());
- helper->Reset();
- ASSERT_TRUE(helper->empty());
+typedef std::vector<BrowsingDataFileSystemHelper::FileSystemInfo>
+ FileSystemInfoVector;
+typedef scoped_ptr<FileSystemInfoVector> ScopedFileSystemInfoVector;
+
+class BrowsingDataFileSystemHelperTest : public testing::Test {
+ public:
+ BrowsingDataFileSystemHelperTest()
+ : helper_(BrowsingDataFileSystemHelper::Create(&profile_)),
+ canned_helper_(new CannedBrowsingDataFileSystemHelper(&profile_)),
+ ui_thread_(BrowserThread::UI, &message_loop_),
+ file_thread_(BrowserThread::FILE, &message_loop_),
+ io_thread_(BrowserThread::IO, &message_loop_) {
+ }
+ virtual ~BrowsingDataFileSystemHelperTest() {}
+
+ TestingProfile* GetProfile() {
+ return &profile_;
+ }
+
+ void FindFileSystemPathCallback(bool success,
+ const FilePath& path,
+ const std::string& name) {
+ found_file_system_ = success;
+ Notify();
+ }
+
+ bool FileSystemContainsOriginAndType(const GURL& origin,
+ fileapi::FileSystemType type) {
+ sandbox_->ValidateFileSystemRootAndGetURL(
+ origin, type, false, NewCallback(this,
+ &BrowsingDataFileSystemHelperTest::FindFileSystemPathCallback));
+ BlockUntilNotified();
+ return found_file_system_;
+ }
+
+ void CallbackStartFetching(
+ const std::vector<BrowsingDataFileSystemHelper::FileSystemInfo>&
+ file_system_info_list) {
+ file_system_info_list_.reset(
+ new std::vector<BrowsingDataFileSystemHelper::FileSystemInfo>(
+ file_system_info_list));
+ Notify();
+ }
+
+ void FetchFileSystems() {
+ helper_->StartFetching(NewCallback(this,
+ &BrowsingDataFileSystemHelperTest::CallbackStartFetching));
+ BlockUntilNotified();
+ }
+
+ void FetchCannedFileSystems() {
+ canned_helper_->StartFetching(NewCallback(this,
+ &BrowsingDataFileSystemHelperTest::CallbackStartFetching));
+ BlockUntilNotified();
+ }
+
+ virtual void PopulateTestFileSystemData() {
+ // Set up kOrigin1 with a temporary file system, kOrigin2 with a persistent
+ // file system, and kOrigin3 with both.
+ sandbox_ = profile_.GetFileSystemContext()->path_manager()->
+ 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));
+ }
+
+ void CreateDirectoryForOriginAndType(const GURL& origin,
+ fileapi::FileSystemType type) {
+ FilePath target = sandbox_->ValidateFileSystemRootAndGetPathOnFileThread(
+ origin, type, FilePath(), true);
+ EXPECT_TRUE(file_util::DirectoryExists(target));
+ }
+
+ FileSystemInfoVector* GetFileSystems() {
+ return file_system_info_list_.get();
+ }
+
+ void BlockUntilNotified() {
+ MessageLoop::current()->Run();
+ }
+
+ void Notify() {
+ MessageLoop::current()->Quit();
+ }
+
+ // Temporary storage to pass information back from callbacks.
+ bool found_file_system_;
+ ScopedFileSystemInfoVector 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. Oh how I love C++.
+ MessageLoopForUI message_loop_;
+ BrowserThread ui_thread_;
+ BrowserThread file_thread_;
+ BrowserThread io_thread_;
+ TestingProfile profile_;
+
+ // We don't own this pointer: don't delete it.
+ fileapi::SandboxMountPointProvider* sandbox_;
+
+ DISALLOW_COPY_AND_ASSIGN(BrowsingDataFileSystemHelperTest);
+};
+
+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 (size_t i = 0; i < file_system_info_list_->size(); i++) {
+ BrowsingDataFileSystemHelper::FileSystemInfo info =
+ file_system_info_list_->at(i);
+ if (info.origin == kOrigin1) {
+ 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) {
+ 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) {
+ 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]);
+ }
+}
+
+TEST_F(BrowsingDataFileSystemHelperTest, DeleteData) {
+ PopulateTestFileSystemData();
+
+ helper_->DeleteFileSystemOrigin(kOrigin1);
+ helper_->DeleteFileSystemOrigin(kOrigin2);
+
+ FetchFileSystems();
+
+ EXPECT_EQ(3UL, file_system_info_list_->size());
+ for (size_t i = 0; i < file_system_info_list_->size(); ++i) {
+ BrowsingDataFileSystemHelper::FileSystemInfo info =
+ file_system_info_list_->at(0);
+ if (info.origin == kOrigin3) {
+ EXPECT_TRUE(info.has_persistent);
+ EXPECT_TRUE(info.has_temporary);
+ EXPECT_EQ(kEmptyFileSystemSize, info.usage_persistent);
+ EXPECT_EQ(kEmptyFileSystemSize, info.usage_temporary);
+ } else {
+ EXPECT_FALSE(info.has_persistent);
+ EXPECT_FALSE(info.has_temporary);
+ }
+ }
+}
+
+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());
+}
+
+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());
+ EXPECT_EQ(kOrigin1, file_system_info_list_->at(0).origin);
+ EXPECT_TRUE(file_system_info_list_->at(0).has_persistent);
+ EXPECT_FALSE(file_system_info_list_->at(0).has_temporary);
+ EXPECT_EQ(200, file_system_info_list_->at(0).usage_persistent);
+ EXPECT_EQ(0, file_system_info_list_->at(0).usage_temporary);
+ EXPECT_EQ(kOrigin2, file_system_info_list_->at(1).origin);
+ EXPECT_FALSE(file_system_info_list_->at(1).has_persistent);
+ EXPECT_TRUE(file_system_info_list_->at(1).has_temporary);
+ EXPECT_EQ(0, file_system_info_list_->at(1).usage_persistent);
+ EXPECT_EQ(100, file_system_info_list_->at(1).usage_temporary);
+}
+
+TEST_F(BrowsingDataFileSystemHelperTest, CannedUnique) {
+ canned_helper_->AddFileSystem(kOrigin3, kPersistent, 200);
+ canned_helper_->AddFileSystem(kOrigin3, kTemporary, 100);
+
+ FetchCannedFileSystems();
+
+ EXPECT_EQ(1U, file_system_info_list_->size());
+ EXPECT_EQ(kOrigin3, file_system_info_list_->at(0).origin);
+ EXPECT_TRUE(file_system_info_list_->at(0).has_persistent);
+ EXPECT_TRUE(file_system_info_list_->at(0).has_temporary);
+ EXPECT_EQ(200, file_system_info_list_->at(0).usage_persistent);
+ EXPECT_EQ(100, file_system_info_list_->at(0).usage_temporary);
}
} // namespace
« no previous file with comments | « chrome/browser/browsing_data_file_system_helper_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698