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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 166 |
167 // ResourceClient implementation. | 167 // ResourceClient implementation. |
168 void notifyFinished(Resource* resource) override { | 168 void notifyFinished(Resource* resource) override { |
169 // First schedule an asynchronous task to remove the client. | 169 // First schedule an asynchronous task to remove the client. |
170 // We do not expect a client to be called if the client is removed before | 170 // We do not expect a client to be called if the client is removed before |
171 // a callback invocation task queued inside addClient() is scheduled. | 171 // a callback invocation task queued inside addClient() is scheduled. |
172 Platform::current() | 172 Platform::current() |
173 ->currentThread() | 173 ->currentThread() |
174 ->scheduler() | 174 ->scheduler() |
175 ->loadingTaskRunner() | 175 ->loadingTaskRunner() |
176 ->postTask(BLINK_FROM_HERE, WTF::bind(&AddingClient::removeClient, | 176 ->postTask( |
177 wrapPersistent(this))); | 177 BLINK_FROM_HERE, |
| 178 WTF::bind(&AddingClient::removeClient, wrapPersistent(this))); |
178 resource->addClient(m_dummyClient); | 179 resource->addClient(m_dummyClient); |
179 } | 180 } |
180 String debugName() const override { return "AddingClient"; } | 181 String debugName() const override { return "AddingClient"; } |
181 | 182 |
182 void removeClient() { m_resource->removeClient(m_dummyClient); } | 183 void removeClient() { m_resource->removeClient(m_dummyClient); } |
183 | 184 |
184 DEFINE_INLINE_VIRTUAL_TRACE() { | 185 DEFINE_INLINE_VIRTUAL_TRACE() { |
185 visitor->trace(m_dummyClient); | 186 visitor->trace(m_dummyClient); |
186 visitor->trace(m_resource); | 187 visitor->trace(m_resource); |
187 RawResourceClient::trace(visitor); | 188 RawResourceClient::trace(visitor); |
(...skipping 20 matching lines...) Expand all Loading... |
208 | 209 |
209 Persistent<DummyClient> client = new DummyClient; | 210 Persistent<DummyClient> client = new DummyClient; |
210 resource->addClient(client); | 211 resource->addClient(client); |
211 | 212 |
212 ResourceResponse revalidatingResponse; | 213 ResourceResponse revalidatingResponse; |
213 revalidatingResponse.setHTTPStatusCode(304); | 214 revalidatingResponse.setHTTPStatusCode(304); |
214 resource->responseReceived(revalidatingResponse, nullptr); | 215 resource->responseReceived(revalidatingResponse, nullptr); |
215 EXPECT_FALSE(resource->isCacheValidator()); | 216 EXPECT_FALSE(resource->isCacheValidator()); |
216 EXPECT_EQ(200, resource->response().httpStatusCode()); | 217 EXPECT_EQ(200, resource->response().httpStatusCode()); |
217 EXPECT_EQ(4u, resource->resourceBuffer()->size()); | 218 EXPECT_EQ(4u, resource->resourceBuffer()->size()); |
218 EXPECT_EQ(resource, memoryCache()->resourceForURL( | 219 EXPECT_EQ( |
219 KURL(ParsedURLString, "data:text/html,"))); | 220 resource, |
| 221 memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/html,"))); |
220 memoryCache()->remove(resource); | 222 memoryCache()->remove(resource); |
221 | 223 |
222 resource->removeClient(client); | 224 resource->removeClient(client); |
223 EXPECT_FALSE(resource->isAlive()); | 225 EXPECT_FALSE(resource->isAlive()); |
224 EXPECT_FALSE(client->called()); | 226 EXPECT_FALSE(client->called()); |
225 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); | 227 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); |
226 } | 228 } |
227 | 229 |
228 TEST_F(RawResourceTest, RevalidationSucceededForResourceWithoutBody) { | 230 TEST_F(RawResourceTest, RevalidationSucceededForResourceWithoutBody) { |
229 Resource* resource = | 231 Resource* resource = |
230 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); | 232 RawResource::create(ResourceRequest("data:text/html,"), Resource::Raw); |
231 ResourceResponse response; | 233 ResourceResponse response; |
232 response.setHTTPStatusCode(200); | 234 response.setHTTPStatusCode(200); |
233 resource->responseReceived(response, nullptr); | 235 resource->responseReceived(response, nullptr); |
234 resource->finish(); | 236 resource->finish(); |
235 memoryCache()->add(resource); | 237 memoryCache()->add(resource); |
236 | 238 |
237 // Simulate a successful revalidation. | 239 // Simulate a successful revalidation. |
238 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); | 240 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); |
239 | 241 |
240 Persistent<DummyClient> client = new DummyClient; | 242 Persistent<DummyClient> client = new DummyClient; |
241 resource->addClient(client); | 243 resource->addClient(client); |
242 | 244 |
243 ResourceResponse revalidatingResponse; | 245 ResourceResponse revalidatingResponse; |
244 revalidatingResponse.setHTTPStatusCode(304); | 246 revalidatingResponse.setHTTPStatusCode(304); |
245 resource->responseReceived(revalidatingResponse, nullptr); | 247 resource->responseReceived(revalidatingResponse, nullptr); |
246 EXPECT_FALSE(resource->isCacheValidator()); | 248 EXPECT_FALSE(resource->isCacheValidator()); |
247 EXPECT_EQ(200, resource->response().httpStatusCode()); | 249 EXPECT_EQ(200, resource->response().httpStatusCode()); |
248 EXPECT_FALSE(resource->resourceBuffer()); | 250 EXPECT_FALSE(resource->resourceBuffer()); |
249 EXPECT_EQ(resource, memoryCache()->resourceForURL( | 251 EXPECT_EQ( |
250 KURL(ParsedURLString, "data:text/html,"))); | 252 resource, |
| 253 memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/html,"))); |
251 memoryCache()->remove(resource); | 254 memoryCache()->remove(resource); |
252 | 255 |
253 resource->removeClient(client); | 256 resource->removeClient(client); |
254 EXPECT_FALSE(resource->isAlive()); | 257 EXPECT_FALSE(resource->isAlive()); |
255 EXPECT_FALSE(client->called()); | 258 EXPECT_FALSE(client->called()); |
256 EXPECT_EQ(0u, client->data().size()); | 259 EXPECT_EQ(0u, client->data().size()); |
257 } | 260 } |
258 | 261 |
259 TEST_F(RawResourceTest, RevalidationSucceededUpdateHeaders) { | 262 TEST_F(RawResourceTest, RevalidationSucceededUpdateHeaders) { |
260 Resource* resource = | 263 Resource* resource = |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 resource->appendData(data2, 3); | 383 resource->appendData(data2, 3); |
381 resource->finish(); | 384 resource->finish(); |
382 EXPECT_FALSE(resource->isCacheValidator()); | 385 EXPECT_FALSE(resource->isCacheValidator()); |
383 EXPECT_EQ("https://example.com/1", | 386 EXPECT_EQ("https://example.com/1", |
384 resource->resourceRequest().url().getString()); | 387 resource->resourceRequest().url().getString()); |
385 EXPECT_EQ("https://example.com/2", | 388 EXPECT_EQ("https://example.com/2", |
386 resource->lastResourceRequest().url().getString()); | 389 resource->lastResourceRequest().url().getString()); |
387 EXPECT_FALSE(resource->isCacheValidator()); | 390 EXPECT_FALSE(resource->isCacheValidator()); |
388 EXPECT_EQ(200, resource->response().httpStatusCode()); | 391 EXPECT_EQ(200, resource->response().httpStatusCode()); |
389 EXPECT_EQ(3u, resource->resourceBuffer()->size()); | 392 EXPECT_EQ(3u, resource->resourceBuffer()->size()); |
390 EXPECT_EQ(resource, memoryCache()->resourceForURL( | 393 EXPECT_EQ(resource, |
391 KURL(ParsedURLString, "https://example.com/1"))); | 394 memoryCache()->resourceForURL( |
| 395 KURL(ParsedURLString, "https://example.com/1"))); |
392 | 396 |
393 EXPECT_TRUE(client->called()); | 397 EXPECT_TRUE(client->called()); |
394 EXPECT_EQ(1, client->numberOfRedirectsReceived()); | 398 EXPECT_EQ(1, client->numberOfRedirectsReceived()); |
395 EXPECT_EQ("xyz", String(client->data().data(), client->data().size())); | 399 EXPECT_EQ("xyz", String(client->data().data(), client->data().size())); |
396 | 400 |
397 // Test the case where a client is added after revalidation is completed. | 401 // Test the case where a client is added after revalidation is completed. |
398 Persistent<DummyClient> client2 = new DummyClient; | 402 Persistent<DummyClient> client2 = new DummyClient; |
399 resource->addClient(client2); | 403 resource->addClient(client2); |
400 | 404 |
401 // Because RawResourceClient is added asynchronously, | 405 // Because RawResourceClient is added asynchronously, |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 TEST_F(RawResourceTest, | 577 TEST_F(RawResourceTest, |
574 CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) { | 578 CanReuseDevToolsEmulateNetworkConditionsClientIdHeader) { |
575 ResourceRequest request("data:text/html,"); | 579 ResourceRequest request("data:text/html,"); |
576 request.setHTTPHeaderField( | 580 request.setHTTPHeaderField( |
577 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, "Foo"); | 581 HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id, "Foo"); |
578 Resource* raw = RawResource::create(request, Resource::Raw); | 582 Resource* raw = RawResource::create(request, Resource::Raw); |
579 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,"))); | 583 EXPECT_TRUE(raw->canReuse(ResourceRequest("data:text/html,"))); |
580 } | 584 } |
581 | 585 |
582 } // namespace blink | 586 } // namespace blink |
OLD | NEW |