OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 ResourceResponse revalidatingResponse; | 153 ResourceResponse revalidatingResponse; |
154 revalidatingResponse.setHTTPStatusCode(304); | 154 revalidatingResponse.setHTTPStatusCode(304); |
155 resource->responseReceived(revalidatingResponse, nullptr); | 155 resource->responseReceived(revalidatingResponse, nullptr); |
156 EXPECT_FALSE(resource->isCacheValidator()); | 156 EXPECT_FALSE(resource->isCacheValidator()); |
157 EXPECT_EQ(200, resource->response().httpStatusCode()); | 157 EXPECT_EQ(200, resource->response().httpStatusCode()); |
158 EXPECT_EQ(4u, resource->resourceBuffer()->size()); | 158 EXPECT_EQ(4u, resource->resourceBuffer()->size()); |
159 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm
l,")), resource); | 159 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm
l,")), resource); |
160 memoryCache()->remove(resource); | 160 memoryCache()->remove(resource); |
161 | 161 |
162 resource->removeClient(client); | 162 resource->removeClient(client); |
163 EXPECT_FALSE(resource->hasClientsOrObservers()); | 163 EXPECT_FALSE(resource->isAlive()); |
164 EXPECT_FALSE(client->called()); | 164 EXPECT_FALSE(client->called()); |
165 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); | 165 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); |
166 } | 166 } |
167 | 167 |
168 TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody) | 168 TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody) |
169 { | 169 { |
170 Resource* resource = RawResource::create(ResourceRequest("data:text/html,"),
Resource::Raw); | 170 Resource* resource = RawResource::create(ResourceRequest("data:text/html,"),
Resource::Raw); |
171 ResourceResponse response; | 171 ResourceResponse response; |
172 response.setHTTPStatusCode(200); | 172 response.setHTTPStatusCode(200); |
173 resource->responseReceived(response, nullptr); | 173 resource->responseReceived(response, nullptr); |
174 resource->finish(); | 174 resource->finish(); |
175 memoryCache()->add(resource); | 175 memoryCache()->add(resource); |
176 | 176 |
177 // Simulate a successful revalidation. | 177 // Simulate a successful revalidation. |
178 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); | 178 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); |
179 | 179 |
180 Persistent<DummyClient> client = new DummyClient; | 180 Persistent<DummyClient> client = new DummyClient; |
181 resource->addClient(client); | 181 resource->addClient(client); |
182 | 182 |
183 ResourceResponse revalidatingResponse; | 183 ResourceResponse revalidatingResponse; |
184 revalidatingResponse.setHTTPStatusCode(304); | 184 revalidatingResponse.setHTTPStatusCode(304); |
185 resource->responseReceived(revalidatingResponse, nullptr); | 185 resource->responseReceived(revalidatingResponse, nullptr); |
186 EXPECT_FALSE(resource->isCacheValidator()); | 186 EXPECT_FALSE(resource->isCacheValidator()); |
187 EXPECT_EQ(200, resource->response().httpStatusCode()); | 187 EXPECT_EQ(200, resource->response().httpStatusCode()); |
188 EXPECT_EQ(nullptr, resource->resourceBuffer()); | 188 EXPECT_EQ(nullptr, resource->resourceBuffer()); |
189 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm
l,")), resource); | 189 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm
l,")), resource); |
190 memoryCache()->remove(resource); | 190 memoryCache()->remove(resource); |
191 | 191 |
192 resource->removeClient(client); | 192 resource->removeClient(client); |
193 EXPECT_FALSE(resource->hasClientsOrObservers()); | 193 EXPECT_FALSE(resource->isAlive()); |
194 EXPECT_FALSE(client->called()); | 194 EXPECT_FALSE(client->called()); |
195 EXPECT_EQ(0u, client->data().size()); | 195 EXPECT_EQ(0u, client->data().size()); |
196 } | 196 } |
197 | 197 |
198 TEST(RawResourceTest, RevalidationSucceededUpdateHeaders) | 198 TEST(RawResourceTest, RevalidationSucceededUpdateHeaders) |
199 { | 199 { |
200 Resource* resource = RawResource::create(ResourceRequest("data:text/html,"),
Resource::Raw); | 200 Resource* resource = RawResource::create(ResourceRequest("data:text/html,"),
Resource::Raw); |
201 ResourceResponse response; | 201 ResourceResponse response; |
202 response.setHTTPStatusCode(200); | 202 response.setHTTPStatusCode(200); |
203 response.addHTTPHeaderField("keep-alive", "keep-alive value"); | 203 response.addHTTPHeaderField("keep-alive", "keep-alive value"); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 EXPECT_EQ("expires value", resource->response().httpHeaderField("expires")); | 246 EXPECT_EQ("expires value", resource->response().httpHeaderField("expires")); |
247 EXPECT_EQ("last-modified value", resource->response().httpHeaderField("last-
modified")); | 247 EXPECT_EQ("last-modified value", resource->response().httpHeaderField("last-
modified")); |
248 EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("
proxy-authenticate")); | 248 EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("
proxy-authenticate")); |
249 EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("
proxy-authenticate")); | 249 EXPECT_EQ("proxy-authenticate value", resource->response().httpHeaderField("
proxy-authenticate")); |
250 EXPECT_EQ("proxy-connection value", resource->response().httpHeaderField("pr
oxy-connection")); | 250 EXPECT_EQ("proxy-connection value", resource->response().httpHeaderField("pr
oxy-connection")); |
251 EXPECT_EQ("updated", resource->response().httpHeaderField("x-custom")); | 251 EXPECT_EQ("updated", resource->response().httpHeaderField("x-custom")); |
252 | 252 |
253 memoryCache()->remove(resource); | 253 memoryCache()->remove(resource); |
254 | 254 |
255 resource->removeClient(client); | 255 resource->removeClient(client); |
256 EXPECT_FALSE(resource->hasClientsOrObservers()); | 256 EXPECT_FALSE(resource->isAlive()); |
257 EXPECT_FALSE(client->called()); | 257 EXPECT_FALSE(client->called()); |
258 EXPECT_EQ(0u, client->data().size()); | 258 EXPECT_EQ(0u, client->data().size()); |
259 } | 259 } |
260 | 260 |
261 TEST(RawResourceTest, RedirectDuringRevalidation) | 261 TEST(RawResourceTest, RedirectDuringRevalidation) |
262 { | 262 { |
263 Resource* resource = RawResource::create(ResourceRequest("https://example.co
m/1"), Resource::Raw); | 263 Resource* resource = RawResource::create(ResourceRequest("https://example.co
m/1"), Resource::Raw); |
264 ResourceResponse response; | 264 ResourceResponse response; |
265 response.setURL(KURL(ParsedURLString, "https://example.com/1")); | 265 response.setURL(KURL(ParsedURLString, "https://example.com/1")); |
266 response.setHTTPStatusCode(200); | 266 response.setHTTPStatusCode(200); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 testing::runPendingTasks(); | 323 testing::runPendingTasks(); |
324 | 324 |
325 EXPECT_TRUE(client2->called()); | 325 EXPECT_TRUE(client2->called()); |
326 EXPECT_EQ(1, client2->numberOfRedirectsReceived()); | 326 EXPECT_EQ(1, client2->numberOfRedirectsReceived()); |
327 EXPECT_EQ("xyz", String(client2->data().data(), client2->data().size())); | 327 EXPECT_EQ("xyz", String(client2->data().data(), client2->data().size())); |
328 | 328 |
329 memoryCache()->remove(resource); | 329 memoryCache()->remove(resource); |
330 | 330 |
331 resource->removeClient(client); | 331 resource->removeClient(client); |
332 resource->removeClient(client2); | 332 resource->removeClient(client2); |
333 EXPECT_FALSE(resource->hasClientsOrObservers()); | 333 EXPECT_FALSE(resource->isAlive()); |
334 } | 334 } |
335 | 335 |
336 TEST(RawResourceTest, AddClientDuringCallback) | 336 TEST(RawResourceTest, AddClientDuringCallback) |
337 { | 337 { |
338 Resource* raw = RawResource::create(ResourceRequest("data:text/html,"), Reso
urce::Raw); | 338 Resource* raw = RawResource::create(ResourceRequest("data:text/html,"), Reso
urce::Raw); |
339 | 339 |
340 // Create a non-null response. | 340 // Create a non-null response. |
341 ResourceResponse response = raw->response(); | 341 ResourceResponse response = raw->response(); |
342 response.setURL(KURL(ParsedURLString, "http://600.613/")); | 342 response.setURL(KURL(ParsedURLString, "http://600.613/")); |
343 raw->setResponse(response); | 343 raw->setResponse(response); |
344 raw->finish(); | 344 raw->finish(); |
345 EXPECT_FALSE(raw->response().isNull()); | 345 EXPECT_FALSE(raw->response().isNull()); |
346 | 346 |
347 Persistent<DummyClient> dummyClient = new DummyClient(); | 347 Persistent<DummyClient> dummyClient = new DummyClient(); |
348 Persistent<AddingClient> addingClient = new AddingClient(dummyClient.get(),
raw); | 348 Persistent<AddingClient> addingClient = new AddingClient(dummyClient.get(),
raw); |
349 raw->addClient(addingClient); | 349 raw->addClient(addingClient); |
350 testing::runPendingTasks(); | 350 testing::runPendingTasks(); |
351 raw->removeClient(addingClient); | 351 raw->removeClient(addingClient); |
352 EXPECT_FALSE(dummyClient->called()); | 352 EXPECT_FALSE(dummyClient->called()); |
353 EXPECT_FALSE(raw->hasClientsOrObservers()); | 353 EXPECT_FALSE(raw->isAlive()); |
354 } | 354 } |
355 | 355 |
356 // This client removes another client when notified. | 356 // This client removes another client when notified. |
357 class RemovingClient : public GarbageCollectedFinalized<RemovingClient>, public
RawResourceClient { | 357 class RemovingClient : public GarbageCollectedFinalized<RemovingClient>, public
RawResourceClient { |
358 USING_GARBAGE_COLLECTED_MIXIN(RemovingClient); | 358 USING_GARBAGE_COLLECTED_MIXIN(RemovingClient); |
359 public: | 359 public: |
360 RemovingClient(DummyClient* client) | 360 RemovingClient(DummyClient* client) |
361 : m_dummyClient(client) {} | 361 : m_dummyClient(client) {} |
362 | 362 |
363 ~RemovingClient() override {} | 363 ~RemovingClient() override {} |
(...skipping 24 matching lines...) Expand all Loading... |
388 response.setURL(KURL(ParsedURLString, "http://600.613/")); | 388 response.setURL(KURL(ParsedURLString, "http://600.613/")); |
389 raw->setResponse(response); | 389 raw->setResponse(response); |
390 raw->finish(); | 390 raw->finish(); |
391 EXPECT_FALSE(raw->response().isNull()); | 391 EXPECT_FALSE(raw->response().isNull()); |
392 | 392 |
393 Persistent<DummyClient> dummyClient = new DummyClient(); | 393 Persistent<DummyClient> dummyClient = new DummyClient(); |
394 Persistent<RemovingClient> removingClient = new RemovingClient(dummyClient.g
et()); | 394 Persistent<RemovingClient> removingClient = new RemovingClient(dummyClient.g
et()); |
395 raw->addClient(dummyClient); | 395 raw->addClient(dummyClient); |
396 raw->addClient(removingClient); | 396 raw->addClient(removingClient); |
397 testing::runPendingTasks(); | 397 testing::runPendingTasks(); |
398 EXPECT_FALSE(raw->hasClientsOrObservers()); | 398 EXPECT_FALSE(raw->isAlive()); |
399 } | 399 } |
400 | 400 |
401 TEST(RawResourceTest, CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) | 401 TEST(RawResourceTest, CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) |
402 { | 402 { |
403 ResourceRequest request("data:text/html,"); | 403 ResourceRequest request("data:text/html,"); |
404 request.setHTTPHeaderField(HTTPNames::X_DevTools_Emulate_Network_Conditions_
Client_Id, "Foo"); | 404 request.setHTTPHeaderField(HTTPNames::X_DevTools_Emulate_Network_Conditions_
Client_Id, "Foo"); |
405 Resource* raw = RawResource::create(request, Resource::Raw); | 405 Resource* raw = RawResource::create(request, Resource::Raw); |
406 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,"))); | 406 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,"))); |
407 } | 407 } |
408 | 408 |
409 } // namespace blink | 409 } // namespace blink |
OLD | NEW |