| Index: third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp b/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
|
| index 1b7aab251e979a7a368314ac6826f7913e681b52..1ec3f7a2349c67c7ab046e1b9ff160b27aab5c3b 100644
|
| --- a/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
|
| +++ b/third_party/WebKit/Source/core/fetch/RawResourceTest.cpp
|
| @@ -171,6 +171,69 @@ TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody)
|
| EXPECT_EQ(0u, client->data().size());
|
| }
|
|
|
| +TEST(RawResourceTest, RevalidationSucceededUpdateHeaders)
|
| +{
|
| + RefPtrWillBeRawPtr<Resource> resource = RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
|
| + 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();
|
| + memoryCache()->add(resource.get());
|
| +
|
| + // Simulate a successful revalidation.
|
| + resource->setRevalidatingRequest(ResourceRequest("data:text/html,"));
|
| +
|
| + // Validate that these headers pre-update.
|
| + EXPECT_EQ("keep-alive value", resource->response().httpHeaderField("keep-alive"));
|
| + EXPECT_EQ("expires value", resource->response().httpHeaderField("expires"));
|
| + EXPECT_EQ("last-modified value", resource->response().httpHeaderField("last-modified"));
|
| + EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("proxy-authenticate"));
|
| + EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("proxy-authenticate"));
|
| + EXPECT_EQ("proxy-connection value", resource->response().httpHeaderField("proxy-connection"));
|
| + EXPECT_EQ("custom value", resource->response().httpHeaderField("x-custom"));
|
| +
|
| + OwnPtr<DummyClient> client = adoptPtr(new DummyClient);
|
| + resource->addClient(client.get());
|
| +
|
| + // Perform a revalidation step.
|
| + ResourceResponse revalidatingResponse;
|
| + revalidatingResponse.setHTTPStatusCode(304);
|
| + // Headers that aren't copied with an 304 code.
|
| + revalidatingResponse.addHTTPHeaderField("keep-alive", "garbage");
|
| + revalidatingResponse.addHTTPHeaderField("expires", "garbage");
|
| + revalidatingResponse.addHTTPHeaderField("last-modified", "garbage");
|
| + revalidatingResponse.addHTTPHeaderField("proxy-authenticate", "garbage");
|
| + revalidatingResponse.addHTTPHeaderField("proxy-connection", "garbage");
|
| + // Header that is updated with 304 code.
|
| + revalidatingResponse.addHTTPHeaderField("x-custom", "updated");
|
| + resource->responseReceived(revalidatingResponse, nullptr);
|
| +
|
| + // Validate the original response.
|
| + EXPECT_EQ(200, resource->response().httpStatusCode());
|
| +
|
| + // Validate that these headers are not updated.
|
| + EXPECT_EQ("keep-alive value", resource->response().httpHeaderField("keep-alive"));
|
| + EXPECT_EQ("expires value", resource->response().httpHeaderField("expires"));
|
| + EXPECT_EQ("last-modified value", resource->response().httpHeaderField("last-modified"));
|
| + EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("proxy-authenticate"));
|
| + EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("proxy-authenticate"));
|
| + EXPECT_EQ("proxy-connection value", resource->response().httpHeaderField("proxy-connection"));
|
| + EXPECT_EQ("updated", resource->response().httpHeaderField("x-custom"));
|
| +
|
| + memoryCache()->remove(resource.get());
|
| +
|
| + resource->removeClient(client.get());
|
| + EXPECT_FALSE(resource->hasClientsOrObservers());
|
| + EXPECT_FALSE(client->called());
|
| + EXPECT_EQ(0u, client->data().size());
|
| +}
|
| +
|
| TEST(RawResourceTest, AddClientDuringCallback)
|
| {
|
| RefPtrWillBeRawPtr<Resource> raw = RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw);
|
|
|