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 = |