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

Unified Diff: content/browser/cache_storage/cache_storage_cache_unittest.cc

Issue 2242883002: [CacheStorage] Use QueryCache everywhere (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments from PS9 Created 4 years, 4 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
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 1de9c9eeecac1116cabdd1e2ee760e190db83f89..544be9379b43412d03e69c3937ef75225af17e87 100644
--- a/content/browser/cache_storage/cache_storage_cache_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_cache_unittest.cc
@@ -63,7 +63,7 @@ std::unique_ptr<storage::BlobProtocolHandler> CreateMockBlobProtocolHandler(
class DelayableBackend : public disk_cache::Backend {
public:
DelayableBackend(std::unique_ptr<disk_cache::Backend> backend)
- : backend_(std::move(backend)), delay_open_(false) {}
+ : backend_(std::move(backend)), delay_doom_(false) {}
// disk_cache::Backend overrides
net::CacheType GetCacheType() const override {
@@ -73,15 +73,9 @@ class DelayableBackend : public disk_cache::Backend {
int OpenEntry(const std::string& key,
disk_cache::Entry** entry,
const CompletionCallback& callback) override {
- if (delay_open_) {
- open_entry_callback_ =
- base::Bind(&DelayableBackend::OpenEntryDelayedImpl,
- base::Unretained(this), key, entry, callback);
- return net::ERR_IO_PENDING;
- }
-
return backend_->OpenEntry(key, entry, callback);
}
+
int CreateEntry(const std::string& key,
disk_cache::Entry** entry,
const CompletionCallback& callback) override {
@@ -89,6 +83,12 @@ class DelayableBackend : public disk_cache::Backend {
}
int DoomEntry(const std::string& key,
const CompletionCallback& callback) override {
+ if (delay_doom_) {
+ doom_entry_callback_ = base::Bind(&DelayableBackend::DoomEntryDelayedImpl,
+ base::Unretained(this), key, callback);
+ return net::ERR_IO_PENDING;
+ }
+
return backend_->DoomEntry(key, callback);
}
int DoomAllEntries(const CompletionCallback& callback) override {
@@ -117,26 +117,25 @@ class DelayableBackend : public disk_cache::Backend {
return backend_->OnExternalCacheHit(key);
}
- // Call to continue a delayed open.
- void OpenEntryContinue() {
- EXPECT_FALSE(open_entry_callback_.is_null());
- open_entry_callback_.Run();
+ // Call to continue a delayed doom.
+ void DoomEntryContinue() {
+ EXPECT_FALSE(doom_entry_callback_.is_null());
+ doom_entry_callback_.Run();
}
- void set_delay_open(bool value) { delay_open_ = value; }
+ void set_delay_doom(bool value) { delay_doom_ = value; }
private:
- void OpenEntryDelayedImpl(const std::string& key,
- disk_cache::Entry** entry,
+ void DoomEntryDelayedImpl(const std::string& key,
const CompletionCallback& callback) {
- int rv = backend_->OpenEntry(key, entry, callback);
+ int rv = backend_->DoomEntry(key, callback);
if (rv != net::ERR_IO_PENDING)
callback.Run(rv);
}
std::unique_ptr<disk_cache::Backend> backend_;
- bool delay_open_;
- base::Closure open_entry_callback_;
+ bool delay_doom_;
+ base::Closure doom_entry_callback_;
};
void CopyBody(const storage::BlobDataHandle& blob_handle, std::string* output) {
@@ -460,11 +459,13 @@ class CacheStorageCacheTest : public testing::Test {
return error == CACHE_STORAGE_OK;
}
- bool Match(const ServiceWorkerFetchRequest& request) {
+ bool Match(const ServiceWorkerFetchRequest& request,
+ const CacheStorageCacheQueryParams& match_params =
+ CacheStorageCacheQueryParams()) {
std::unique_ptr<base::RunLoop> loop(new base::RunLoop());
cache_->Match(
- CopyFetchRequest(request),
+ CopyFetchRequest(request), match_params,
base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback,
base::Unretained(this), base::Unretained(loop.get())));
loop->Run();
@@ -927,6 +928,155 @@ TEST_P(CacheStorageCacheTestP, MatchAll_TwoResponsesThenOne) {
EXPECT_TRUE(body_handles->empty());
}
+TEST_P(CacheStorageCacheTestP, Match_IgnoreSearch) {
+ EXPECT_TRUE(Put(body_request_with_query_, body_response_with_query_));
+
+ EXPECT_FALSE(Match(body_request_));
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_search = true;
+ EXPECT_TRUE(Match(body_request_, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, Match_IgnoreMethod) {
+ EXPECT_TRUE(Put(body_request_, body_response_));
+
+ ServiceWorkerFetchRequest post_request = body_request_;
+ post_request.method = "POST";
+ EXPECT_FALSE(Match(post_request));
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_method = true;
+ EXPECT_TRUE(Match(post_request, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, Match_IgnoreVary) {
+ body_request_.headers["vary_foo"] = "foo";
+ body_response_.headers["vary"] = "vary_foo";
+ EXPECT_TRUE(Put(body_request_, body_response_));
+ EXPECT_TRUE(Match(body_request_));
+
+ body_request_.headers["vary_foo"] = "bar";
+ EXPECT_FALSE(Match(body_request_));
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_vary = true;
+ EXPECT_TRUE(Match(body_request_, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, Keys_IgnoreSearch) {
+ EXPECT_TRUE(Put(body_request_with_query_, body_response_with_query_));
+
+ EXPECT_TRUE(Keys(body_request_));
+ EXPECT_EQ(0u, callback_strings_.size());
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_search = true;
+ EXPECT_TRUE(Keys(body_request_, match_params));
+ EXPECT_EQ(1u, callback_strings_.size());
+}
+
+TEST_P(CacheStorageCacheTestP, Keys_IgnoreMethod) {
+ EXPECT_TRUE(Put(body_request_, body_response_));
+
+ ServiceWorkerFetchRequest post_request = body_request_;
+ post_request.method = "POST";
+ EXPECT_TRUE(Keys(post_request));
+ EXPECT_EQ(0u, callback_strings_.size());
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_method = true;
+ EXPECT_TRUE(Keys(post_request, match_params));
+ EXPECT_EQ(1u, callback_strings_.size());
+}
+
+TEST_P(CacheStorageCacheTestP, Keys_IgnoreVary) {
+ body_request_.headers["vary_foo"] = "foo";
+ body_response_.headers["vary"] = "vary_foo";
+ EXPECT_TRUE(Put(body_request_, body_response_));
+ EXPECT_TRUE(Keys(body_request_));
+ EXPECT_EQ(1u, callback_strings_.size());
+
+ body_request_.headers["vary_foo"] = "bar";
+ EXPECT_TRUE(Keys(body_request_));
+ EXPECT_EQ(0u, callback_strings_.size());
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_vary = true;
+ EXPECT_TRUE(Keys(body_request_, match_params));
+ EXPECT_EQ(1u, callback_strings_.size());
+}
+
+TEST_P(CacheStorageCacheTestP, Delete_IgnoreSearch) {
+ EXPECT_TRUE(Put(body_request_with_query_, body_response_with_query_));
+
+ EXPECT_FALSE(Delete(body_request_));
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_search = true;
+ EXPECT_TRUE(Delete(body_request_, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, Delete_IgnoreMethod) {
+ EXPECT_TRUE(Put(body_request_, body_response_));
+
+ ServiceWorkerFetchRequest post_request = body_request_;
+ post_request.method = "POST";
+ EXPECT_FALSE(Delete(post_request));
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_method = true;
+ EXPECT_TRUE(Delete(post_request, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, Delete_IgnoreVary) {
+ body_request_.headers["vary_foo"] = "foo";
+ body_response_.headers["vary"] = "vary_foo";
+ EXPECT_TRUE(Put(body_request_, body_response_));
+
+ body_request_.headers["vary_foo"] = "bar";
+ EXPECT_FALSE(Delete(body_request_));
+
+ CacheStorageCacheQueryParams match_params;
+ match_params.ignore_vary = true;
+ EXPECT_TRUE(Delete(body_request_, match_params));
+}
+
+TEST_P(CacheStorageCacheTestP, MatchAll_IgnoreMethod) {
+ EXPECT_TRUE(Put(body_request_, body_response_));
+
+ ServiceWorkerFetchRequest post_request = body_request_;
+ post_request.method = "POST";
+ std::unique_ptr<CacheStorageCache::Responses> responses;
+ std::unique_ptr<CacheStorageCache::BlobDataHandles> body_handles;
+ CacheStorageCacheQueryParams match_params;
+
+ EXPECT_TRUE(MatchAll(post_request, match_params, &responses, &body_handles));
+ EXPECT_EQ(0u, responses->size());
+
+ match_params.ignore_method = true;
+ EXPECT_TRUE(MatchAll(post_request, match_params, &responses, &body_handles));
+ EXPECT_EQ(1u, responses->size());
+}
+
+TEST_P(CacheStorageCacheTestP, MatchAll_IgnoreVary) {
+ body_request_.headers["vary_foo"] = "foo";
+ body_response_.headers["vary"] = "vary_foo";
+ EXPECT_TRUE(Put(body_request_, body_response_));
+ std::unique_ptr<CacheStorageCache::Responses> responses;
+ std::unique_ptr<CacheStorageCache::BlobDataHandles> body_handles;
+ CacheStorageCacheQueryParams match_params;
+
+ EXPECT_TRUE(MatchAll(body_request_, match_params, &responses, &body_handles));
+ EXPECT_EQ(1u, responses->size());
+ body_request_.headers["vary_foo"] = "bar";
+
+ EXPECT_TRUE(MatchAll(body_request_, match_params, &responses, &body_handles));
+ EXPECT_EQ(0u, responses->size());
+
+ match_params.ignore_vary = true;
+ EXPECT_TRUE(MatchAll(body_request_, match_params, &responses, &body_handles));
+ EXPECT_EQ(1u, responses->size());
+}
+
TEST_P(CacheStorageCacheTestP, MatchAll_IgnoreSearch) {
EXPECT_TRUE(Put(body_request_, body_response_));
EXPECT_TRUE(Put(body_request_with_query_, body_response_with_query_));
@@ -1404,7 +1554,7 @@ TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
// second should wait for the first.
EXPECT_TRUE(Keys()); // Opens the backend.
DelayableBackend* delayable_backend = cache_->UseDelayableBackend();
- delayable_backend->set_delay_open(true);
+ delayable_backend->set_delay_doom(true);
int sequence_out = -1;
@@ -1419,7 +1569,7 @@ TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
base::Bind(&CacheStorageCacheTest::SequenceCallback,
base::Unretained(this), 1, &sequence_out, close_loop1.get()));
- // Blocks on opening the cache entry.
+ // Blocks on creating the cache entry.
base::RunLoop().RunUntilIdle();
CacheStorageBatchOperation operation2;
@@ -1427,7 +1577,7 @@ TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
operation2.request = body_request_;
operation2.response = body_response_;
- delayable_backend->set_delay_open(false);
+ delayable_backend->set_delay_doom(false);
std::unique_ptr<base::RunLoop> close_loop2(new base::RunLoop());
cache_->BatchOperation(
std::vector<CacheStorageBatchOperation>(1, operation2),
@@ -1438,7 +1588,7 @@ TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
base::RunLoop().RunUntilIdle();
EXPECT_FALSE(callback_response_);
- delayable_backend->OpenEntryContinue();
+ delayable_backend->DoomEntryContinue();
close_loop1->Run();
EXPECT_EQ(1, sequence_out);
close_loop2->Run();
« no previous file with comments | « content/browser/cache_storage/cache_storage_cache.cc ('k') | content/browser/cache_storage/cache_storage_dispatcher_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698