Index: content/browser/cache_storage/cache_storage_cache_unittest.cc |
diff --git a/content/browser/cache_storage/cache_storage_cache_unittest.cc b/content/browser/cache_storage/cache_storage_cache_unittest.cc |
index b440758990e0a887262b52d8ce24ca4807d613d3..09af8c1575ad10ddffebe13d002acc71740552d2 100644 |
--- a/content/browser/cache_storage/cache_storage_cache_unittest.cc |
+++ b/content/browser/cache_storage/cache_storage_cache_unittest.cc |
@@ -23,6 +23,7 @@ |
#include "content/common/service_worker/service_worker_types.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/common/referrer.h" |
+#include "content/public/test/mock_special_storage_policy.h" |
#include "content/public/test/test_browser_context.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "net/base/test_completion_callback.h" |
@@ -41,6 +42,7 @@ namespace content { |
namespace { |
const char kTestData[] = "Hello World"; |
+const char kOrigin[] = "http://example.com"; |
// Returns a BlobProtocolHandler that uses |blob_storage_context|. Caller owns |
// the memory. |
@@ -264,8 +266,18 @@ class CacheStorageCacheTest : public testing::Test { |
base::RunLoop().RunUntilIdle(); |
blob_storage_context_ = blob_storage_context->context(); |
+ if (!MemoryOnly()) |
+ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
+ base::FilePath path = MemoryOnly() ? base::FilePath() : temp_dir_.path(); |
+ |
+ quota_policy_ = new MockSpecialStoragePolicy; |
+ mock_quota_manager_ = new MockQuotaManager( |
+ MemoryOnly() /* is incognito */, path, |
+ base::ThreadTaskRunnerHandle::Get().get(), |
+ base::ThreadTaskRunnerHandle::Get().get(), quota_policy_.get()); |
+ |
quota_manager_proxy_ = new MockQuotaManagerProxy( |
- nullptr, base::ThreadTaskRunnerHandle::Get().get()); |
+ mock_quota_manager_.get(), base::ThreadTaskRunnerHandle::Get().get()); |
url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); |
url_request_job_factory_->SetProtocolHandler( |
@@ -278,12 +290,8 @@ class CacheStorageCacheTest : public testing::Test { |
CreateRequests(blob_storage_context); |
- if (!MemoryOnly()) |
- ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
- base::FilePath path = MemoryOnly() ? base::FilePath() : temp_dir_.path(); |
- |
cache_ = make_scoped_refptr(new TestCacheStorageCache( |
- GURL("http://example.com"), path, browser_context_.GetRequestContext(), |
+ GURL(kOrigin), path, browser_context_.GetRequestContext(), |
quota_manager_proxy_, blob_storage_context->context()->AsWeakPtr())); |
} |
@@ -514,6 +522,8 @@ class CacheStorageCacheTest : public testing::Test { |
TestBrowserContext browser_context_; |
TestBrowserThreadBundle browser_thread_bundle_; |
scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_; |
+ scoped_refptr<MockSpecialStoragePolicy> quota_policy_; |
+ scoped_refptr<MockQuotaManager> mock_quota_manager_; |
scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; |
storage::BlobStorageContext* blob_storage_context_; |
@@ -936,6 +946,13 @@ TEST_P(CacheStorageCacheTestP, QuotaManagerModified) { |
EXPECT_EQ(0, sum_delta); |
} |
+TEST_P(CacheStorageCacheTestP, PutObeysQuotaLimits) { |
+ mock_quota_manager_->SetQuota(GURL(kOrigin), storage::kStorageTypeTemporary, |
+ 0); |
+ EXPECT_FALSE(Put(no_body_request_, no_body_response_)); |
+ EXPECT_EQ(CACHE_STORAGE_ERROR_QUOTA_EXCEEDED, callback_error_); |
+} |
+ |
TEST_F(CacheStorageCacheMemoryOnlyTest, MemoryBackedSize) { |
EXPECT_EQ(0, cache_->MemoryBackedSize()); |
EXPECT_TRUE(Put(no_body_request_, no_body_response_)); |