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

Unified Diff: third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp

Issue 2845513002: [WIP] Add Resource::IsShareable
Patch Set: fix Created 3 years, 7 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: third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp
diff --git a/third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp b/third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp
index 6478c904628ff7f151a69abaecd7ef410ba3191d..ad66379db39d4ba6fddfccc3283eb771bbb07edf 100644
--- a/third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp
+++ b/third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp
@@ -195,230 +195,6 @@ class AddingClient final : public GarbageCollectedFinalized<AddingClient>,
Member<Resource> resource_;
};
-TEST_F(RawResourceTest, RevalidationSucceeded) {
- Resource* resource =
- RawResource::Create(ResourceRequest("data:text/html,"), Resource::kRaw);
- ResourceResponse response;
- response.SetHTTPStatusCode(200);
- resource->ResponseReceived(response, nullptr);
- const char kData[5] = "abcd";
- resource->AppendData(kData, 4);
- resource->Finish();
- GetMemoryCache()->Add(resource);
-
- // Simulate a successful revalidation.
- resource->SetRevalidatingRequest(ResourceRequest("data:text/html,"));
-
- Persistent<DummyClient> client = new DummyClient;
- resource->AddClient(client);
-
- ResourceResponse revalidating_response;
- revalidating_response.SetHTTPStatusCode(304);
- resource->ResponseReceived(revalidating_response, nullptr);
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ(200, resource->GetResponse().HttpStatusCode());
- EXPECT_EQ(4u, resource->ResourceBuffer()->size());
- EXPECT_EQ(resource, GetMemoryCache()->ResourceForURL(
- KURL(kParsedURLString, "data:text/html,")));
- GetMemoryCache()->Remove(resource);
-
- resource->RemoveClient(client);
- EXPECT_FALSE(resource->IsAlive());
- EXPECT_FALSE(client->Called());
- EXPECT_EQ("abcd", String(client->Data().data(), client->Data().size()));
-}
-
-TEST_F(RawResourceTest, RevalidationSucceededForResourceWithoutBody) {
- Resource* resource =
- RawResource::Create(ResourceRequest("data:text/html,"), Resource::kRaw);
- ResourceResponse response;
- response.SetHTTPStatusCode(200);
- resource->ResponseReceived(response, nullptr);
- resource->Finish();
- GetMemoryCache()->Add(resource);
-
- // Simulate a successful revalidation.
- resource->SetRevalidatingRequest(ResourceRequest("data:text/html,"));
-
- Persistent<DummyClient> client = new DummyClient;
- resource->AddClient(client);
-
- ResourceResponse revalidating_response;
- revalidating_response.SetHTTPStatusCode(304);
- resource->ResponseReceived(revalidating_response, nullptr);
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ(200, resource->GetResponse().HttpStatusCode());
- EXPECT_FALSE(resource->ResourceBuffer());
- EXPECT_EQ(resource, GetMemoryCache()->ResourceForURL(
- KURL(kParsedURLString, "data:text/html,")));
- GetMemoryCache()->Remove(resource);
-
- resource->RemoveClient(client);
- EXPECT_FALSE(resource->IsAlive());
- EXPECT_FALSE(client->Called());
- EXPECT_EQ(0u, client->Data().size());
-}
-
-TEST_F(RawResourceTest, RevalidationSucceededUpdateHeaders) {
- Resource* resource =
- RawResource::Create(ResourceRequest("data:text/html,"), Resource::kRaw);
- ResourceResponse response;
- response.SetHTTPStatusCode(200);
- response.AddHTTPHeaderField("keep-alive", "keep-alive value");
- response.AddHTTPHeaderField("expires", "expires value");
- response.AddHTTPHeaderField("last-modified", "last-modified value");
- response.AddHTTPHeaderField("proxy-authenticate", "proxy-authenticate value");
- response.AddHTTPHeaderField("proxy-connection", "proxy-connection value");
- response.AddHTTPHeaderField("x-custom", "custom value");
- resource->ResponseReceived(response, nullptr);
- resource->Finish();
- GetMemoryCache()->Add(resource);
-
- // Simulate a successful revalidation.
- resource->SetRevalidatingRequest(ResourceRequest("data:text/html,"));
-
- // Validate that these headers pre-update.
- EXPECT_EQ("keep-alive value",
- resource->GetResponse().HttpHeaderField("keep-alive"));
- EXPECT_EQ("expires value",
- resource->GetResponse().HttpHeaderField("expires"));
- EXPECT_EQ("last-modified value",
- resource->GetResponse().HttpHeaderField("last-modified"));
- EXPECT_EQ("proxy-authenticate value",
- resource->GetResponse().HttpHeaderField("proxy-authenticate"));
- EXPECT_EQ("proxy-authenticate value",
- resource->GetResponse().HttpHeaderField("proxy-authenticate"));
- EXPECT_EQ("proxy-connection value",
- resource->GetResponse().HttpHeaderField("proxy-connection"));
- EXPECT_EQ("custom value",
- resource->GetResponse().HttpHeaderField("x-custom"));
-
- Persistent<DummyClient> client = new DummyClient;
- resource->AddClient(client.Get());
-
- // Perform a revalidation step.
- ResourceResponse revalidating_response;
- revalidating_response.SetHTTPStatusCode(304);
- // Headers that aren't copied with an 304 code.
- revalidating_response.AddHTTPHeaderField("keep-alive", "garbage");
- revalidating_response.AddHTTPHeaderField("expires", "garbage");
- revalidating_response.AddHTTPHeaderField("last-modified", "garbage");
- revalidating_response.AddHTTPHeaderField("proxy-authenticate", "garbage");
- revalidating_response.AddHTTPHeaderField("proxy-connection", "garbage");
- // Header that is updated with 304 code.
- revalidating_response.AddHTTPHeaderField("x-custom", "updated");
- resource->ResponseReceived(revalidating_response, nullptr);
-
- // Validate the original response.
- EXPECT_EQ(200, resource->GetResponse().HttpStatusCode());
-
- // Validate that these headers are not updated.
- EXPECT_EQ("keep-alive value",
- resource->GetResponse().HttpHeaderField("keep-alive"));
- EXPECT_EQ("expires value",
- resource->GetResponse().HttpHeaderField("expires"));
- EXPECT_EQ("last-modified value",
- resource->GetResponse().HttpHeaderField("last-modified"));
- EXPECT_EQ("proxy-authenticate value",
- resource->GetResponse().HttpHeaderField("proxy-authenticate"));
- EXPECT_EQ("proxy-authenticate value",
- resource->GetResponse().HttpHeaderField("proxy-authenticate"));
- EXPECT_EQ("proxy-connection value",
- resource->GetResponse().HttpHeaderField("proxy-connection"));
- EXPECT_EQ("updated", resource->GetResponse().HttpHeaderField("x-custom"));
-
- GetMemoryCache()->Remove(resource);
-
- resource->RemoveClient(client);
- EXPECT_FALSE(resource->IsAlive());
- EXPECT_FALSE(client->Called());
- EXPECT_EQ(0u, client->Data().size());
-}
-
-TEST_F(RawResourceTest, RedirectDuringRevalidation) {
- Resource* resource = RawResource::Create(
- ResourceRequest("https://example.com/1"), Resource::kRaw);
- ResourceResponse response;
- response.SetURL(KURL(kParsedURLString, "https://example.com/1"));
- response.SetHTTPStatusCode(200);
- resource->ResponseReceived(response, nullptr);
- const char kData[5] = "abcd";
- resource->AppendData(kData, 4);
- resource->Finish();
- GetMemoryCache()->Add(resource);
-
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ("https://example.com/1",
- resource->GetResourceRequest().Url().GetString());
- EXPECT_EQ("https://example.com/1",
- resource->LastResourceRequest().Url().GetString());
-
- // Simulate a revalidation.
- resource->SetRevalidatingRequest(ResourceRequest("https://example.com/1"));
- EXPECT_TRUE(resource->IsCacheValidator());
- EXPECT_EQ("https://example.com/1",
- resource->GetResourceRequest().Url().GetString());
- EXPECT_EQ("https://example.com/1",
- resource->LastResourceRequest().Url().GetString());
-
- Persistent<DummyClient> client = new DummyClient;
- resource->AddClient(client);
-
- // The revalidating request is redirected.
- ResourceResponse redirect_response;
- redirect_response.SetURL(KURL(kParsedURLString, "https://example.com/1"));
- redirect_response.SetHTTPHeaderField("location", "https://example.com/2");
- redirect_response.SetHTTPStatusCode(308);
- ResourceRequest redirected_revalidating_request("https://example.com/2");
- resource->WillFollowRedirect(redirected_revalidating_request,
- redirect_response);
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ("https://example.com/1",
- resource->GetResourceRequest().Url().GetString());
- EXPECT_EQ("https://example.com/2",
- resource->LastResourceRequest().Url().GetString());
-
- // The final response is received.
- ResourceResponse revalidating_response;
- revalidating_response.SetURL(KURL(kParsedURLString, "https://example.com/2"));
- revalidating_response.SetHTTPStatusCode(200);
- resource->ResponseReceived(revalidating_response, nullptr);
- const char kData2[4] = "xyz";
- resource->AppendData(kData2, 3);
- resource->Finish();
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ("https://example.com/1",
- resource->GetResourceRequest().Url().GetString());
- EXPECT_EQ("https://example.com/2",
- resource->LastResourceRequest().Url().GetString());
- EXPECT_FALSE(resource->IsCacheValidator());
- EXPECT_EQ(200, resource->GetResponse().HttpStatusCode());
- EXPECT_EQ(3u, resource->ResourceBuffer()->size());
- EXPECT_EQ(resource, GetMemoryCache()->ResourceForURL(
- KURL(kParsedURLString, "https://example.com/1")));
-
- EXPECT_TRUE(client->Called());
- EXPECT_EQ(1, client->NumberOfRedirectsReceived());
- EXPECT_EQ("xyz", String(client->Data().data(), client->Data().size()));
-
- // Test the case where a client is added after revalidation is completed.
- Persistent<DummyClient> client2 = new DummyClient;
- resource->AddClient(client2);
-
- // Because RawResourceClient is added asynchronously,
- // |runUntilIdle()| is called to make |client2| to be notified.
- platform_->RunUntilIdle();
-
- EXPECT_TRUE(client2->Called());
- EXPECT_EQ(1, client2->NumberOfRedirectsReceived());
- EXPECT_EQ("xyz", String(client2->Data().data(), client2->Data().size()));
-
- GetMemoryCache()->Remove(resource);
-
- resource->RemoveClient(client);
- resource->RemoveClient(client2);
- EXPECT_FALSE(resource->IsAlive());
-}
TEST_F(RawResourceTest, AddClientDuringCallback) {
Resource* raw =

Powered by Google App Engine
This is Rietveld 408576698