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