summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browsing_data_remover_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/browsing_data_remover_unittest.cc')
-rw-r--r--chrome/browser/browsing_data_remover_unittest.cc330
1 files changed, 209 insertions, 121 deletions
diff --git a/chrome/browser/browsing_data_remover_unittest.cc b/chrome/browser/browsing_data_remover_unittest.cc
index 2e4249d..367dc5f 100644
--- a/chrome/browser/browsing_data_remover_unittest.cc
+++ b/chrome/browser/browsing_data_remover_unittest.cc
@@ -11,14 +11,15 @@
#include "chrome/browser/extensions/mock_extension_special_storage_policy.h"
#include "chrome/browser/history/history.h"
#include "chrome/test/testing_profile.h"
-#include "content/browser/appcache/chrome_appcache_service.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/appcache/appcache_test_helper.h"
#include "webkit/fileapi/file_system_context.h"
-#include "webkit/fileapi/file_system_operation_context.h"
#include "webkit/fileapi/file_system_file_util.h"
+#include "webkit/fileapi/file_system_operation_context.h"
#include "webkit/fileapi/file_system_path_manager.h"
#include "webkit/fileapi/sandbox_mount_point_provider.h"
+#include "webkit/quota/mock_quota_manager.h"
+#include "webkit/quota/quota_manager.h"
+#include "webkit/quota/quota_types.h"
namespace {
@@ -30,9 +31,6 @@ const GURL kOrigin1(kTestkOrigin1);
const GURL kOrigin2(kTestkOrigin2);
const GURL kOrigin3(kTestkOrigin3);
-const GURL kProtectedManifest("http://www.protected.com/cache.manifest");
-const GURL kNormalManifest("http://www.normal.com/cache.manifest");
-
class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer {
public:
BrowsingDataRemoverTester() {}
@@ -56,6 +54,8 @@ class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer {
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTester);
};
+// Testers -------------------------------------------------------------------
+
class RemoveHistoryTester : public BrowsingDataRemoverTester {
public:
explicit RemoveHistoryTester(TestingProfile* profile)
@@ -101,69 +101,55 @@ class RemoveHistoryTester : public BrowsingDataRemoverTester {
DISALLOW_COPY_AND_ASSIGN(RemoveHistoryTester);
};
-class RemoveFileSystemTester : public BrowsingDataRemoverTester {
+class RemoveQuotaManagedDataTester : public BrowsingDataRemoverTester {
public:
- explicit RemoveFileSystemTester() {}
-
- void FindFileSystemPathCallback(bool success,
- const FilePath& path,
- const std::string& name) {
- found_file_system_ = success;
- Notify();
+ RemoveQuotaManagedDataTester() {}
+ virtual ~RemoveQuotaManagedDataTester() {}
+
+ void PopulateTestQuotaManagedData(quota::MockQuotaManager* manager) {
+ // Set up kOrigin1 with a temporary quota, kOrigin2 with a persistent
+ // quota, and kOrigin3 with both. kOrigin1 is modified now, kOrigin2
+ // is modified at the beginning of time, and kOrigin3 is modified one day
+ // ago.
+ PopulateTestQuotaManagedPersistentData(manager);
+ PopulateTestQuotaManagedTemporaryData(manager);
}
- bool FileSystemContainsOriginAndType(const GURL& origin,
- fileapi::FileSystemType type) {
- sandbox_->ValidateFileSystemRootAndGetURL(
- origin, type, false, NewCallback(this,
- &RemoveFileSystemTester::FindFileSystemPathCallback));
- BlockUntilNotified();
- return found_file_system_;
- }
-
- virtual void PopulateTestFileSystemData(TestingProfile* profile) {
- // 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,
- fileapi::kFileSystemTypeTemporary);
- CreateDirectoryForOriginAndType(kOrigin2,
- fileapi::kFileSystemTypePersistent);
- CreateDirectoryForOriginAndType(kOrigin3,
- fileapi::kFileSystemTypeTemporary);
- CreateDirectoryForOriginAndType(kOrigin3,
- fileapi::kFileSystemTypePersistent);
-
- EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin1,
- fileapi::kFileSystemTypePersistent));
- EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin1,
- fileapi::kFileSystemTypeTemporary));
- EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin2,
- fileapi::kFileSystemTypePersistent));
- EXPECT_FALSE(FileSystemContainsOriginAndType(kOrigin2,
- fileapi::kFileSystemTypeTemporary));
- EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3,
- fileapi::kFileSystemTypePersistent));
- EXPECT_TRUE(FileSystemContainsOriginAndType(kOrigin3,
- fileapi::kFileSystemTypeTemporary));
+ void PopulateTestQuotaManagedPersistentData(
+ quota::MockQuotaManager* manager) {
+ manager->AddOrigin(kOrigin2, quota::kStorageTypePersistent,
+ base::Time());
+ manager->AddOrigin(kOrigin3, quota::kStorageTypePersistent,
+ base::Time::Now() - base::TimeDelta::FromDays(1));
+
+ EXPECT_FALSE(manager->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(manager->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(manager->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
}
- void CreateDirectoryForOriginAndType(const GURL& origin,
- fileapi::FileSystemType type) {
- FilePath target = sandbox_->ValidateFileSystemRootAndGetPathOnFileThread(
- origin, type, FilePath(), true);
- EXPECT_TRUE(file_util::DirectoryExists(target));
+ void PopulateTestQuotaManagedTemporaryData(quota::MockQuotaManager* manager) {
+ manager->AddOrigin(kOrigin1, quota::kStorageTypeTemporary,
+ base::Time::Now());
+ manager->AddOrigin(kOrigin3, quota::kStorageTypeTemporary,
+ base::Time::Now() - base::TimeDelta::FromDays(1));
+
+ EXPECT_TRUE(manager->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(manager->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_TRUE(manager->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
}
private:
- fileapi::SandboxMountPointProvider* sandbox_;
- bool found_file_system_;
-
- DISALLOW_COPY_AND_ASSIGN(RemoveFileSystemTester);
+ DISALLOW_COPY_AND_ASSIGN(RemoveQuotaManagedDataTester);
};
+// Test Class ----------------------------------------------------------------
+
class BrowsingDataRemoverTest : public testing::Test {
public:
BrowsingDataRemoverTest()
@@ -205,6 +191,18 @@ class BrowsingDataRemoverTest : public testing::Test {
return profile_.get();
}
+ quota::MockQuotaManager* GetMockManager() {
+ if (profile_->GetQuotaManager() == NULL) {
+ profile_->SetQuotaManager(new quota::MockQuotaManager(
+ profile_->IsOffTheRecord(),
+ profile_->GetPath(),
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO),
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
+ profile_->GetExtensionSpecialStoragePolicy()));
+ }
+ return (quota::MockQuotaManager*) profile_->GetQuotaManager();
+ }
+
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++.
@@ -219,6 +217,8 @@ class BrowsingDataRemoverTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTest);
};
+// Tests ---------------------------------------------------------------------
+
TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) {
scoped_ptr<RemoveHistoryTester> tester(
new RemoveHistoryTester(GetProfile()));
@@ -250,76 +250,164 @@ TEST_F(BrowsingDataRemoverTest, RemoveHistoryForLastHour) {
EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2));
}
-TEST_F(BrowsingDataRemoverTest, RemoveFileSystemsForever) {
- scoped_ptr<RemoveFileSystemTester> tester(new RemoveFileSystemTester());
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverBoth) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+
+ tester->PopulateTestQuotaManagedData(GetMockManager());
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
+}
- tester->PopulateTestFileSystemData(GetProfile());
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyTemporary) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+ tester->PopulateTestQuotaManagedTemporaryData(GetMockManager());
BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin1,
- fileapi::kFileSystemTypePersistent));
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin1,
- fileapi::kFileSystemTypeTemporary));
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2,
- fileapi::kFileSystemTypePersistent));
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin2,
- fileapi::kFileSystemTypeTemporary));
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3,
- fileapi::kFileSystemTypePersistent));
- EXPECT_FALSE(tester->FileSystemContainsOriginAndType(kOrigin3,
- fileapi::kFileSystemTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
}
-TEST_F(BrowsingDataRemoverTest, RemoveAppCacheForever) {
- // Set up ChromeAppCacheService.
- scoped_refptr<ChromeAppCacheService> appcache_service =
- new ChromeAppCacheService(NULL);
- const content::ResourceContext* resource_context = NULL;
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverOnlyPersistent) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+
+ tester->PopulateTestQuotaManagedPersistentData(GetMockManager());
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
+}
+
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverNeither) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+
+ GetMockManager(); // Creates the QuotaManager instance.
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
+}
+
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+ tester->PopulateTestQuotaManagedData(GetMockManager());
+
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
+}
+
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastWeek) {
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+ tester->PopulateTestQuotaManagedData(GetMockManager());
+
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_WEEK,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
+}
+
+TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedUnprotectedOrigins) {
+ // Protect kOrigin1.
scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy =
- new MockExtensionSpecialStoragePolicy;
- mock_policy->AddProtected(kProtectedManifest.GetOrigin());
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(appcache_service.get(),
- &ChromeAppCacheService::InitializeOnIOThread,
- FilePath(),
- resource_context,
- mock_policy));
- MessageLoop::current()->RunAllPending();
- TestingProfile* profile = GetProfile();
- profile->SetAppCacheService(appcache_service);
- profile->SetExtensionSpecialStoragePolicy(mock_policy);
-
- // Add data into the AppCacheStorage.
- appcache::AppCacheTestHelper appcache_helper;
- appcache_helper.AddGroupAndCache(appcache_service, kNormalManifest);
- appcache_helper.AddGroupAndCache(appcache_service, kProtectedManifest);
-
- // Verify that adding the data succeeded.
- std::set<GURL> origins;
- appcache_helper.GetOriginsWithCaches(appcache_service, &origins);
- EXPECT_EQ(2UL, origins.size());
- EXPECT_TRUE(origins.find(kProtectedManifest.GetOrigin()) != origins.end());
- EXPECT_TRUE(origins.find(kNormalManifest.GetOrigin()) != origins.end());
-
- // Set up the object to be tested.
- scoped_ptr<BrowsingDataRemoverTester> tester(new BrowsingDataRemoverTester());
- BrowsingDataRemover* remover = new BrowsingDataRemover(
- profile, BrowsingDataRemover::EVERYTHING, base::Time::Now());
- remover->AddObserver(tester.get());
-
- // Remove the appcaches and wait for it to complete. BrowsingDataRemover
- // deletes itself when it completes.
- remover->Remove(BrowsingDataRemover::REMOVE_COOKIES);
- tester->BlockUntilNotified();
-
- // Results: appcaches for the normal origin got deleted, appcaches for the
- // protected origin didn't.
- appcache_helper.GetOriginsWithCaches(appcache_service, &origins);
- EXPECT_EQ(1UL, origins.size());
- EXPECT_TRUE(origins.find(kProtectedManifest.GetOrigin()) != origins.end());
+ new MockExtensionSpecialStoragePolicy;
+ mock_policy->AddProtected(kOrigin1.GetOrigin());
+ GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy);
+
+ scoped_ptr<RemoveQuotaManagedDataTester> tester(
+ new RemoveQuotaManagedDataTester());
+ tester->PopulateTestQuotaManagedData(GetMockManager());
+
+ BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
+ base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
+
+ EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypeTemporary));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2,
+ quota::kStorageTypePersistent));
+ EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3,
+ quota::kStorageTypePersistent));
}
} // namespace