OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2014, Google Inc. All rights reserved. | 2 * Copyright (c) 2014, 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 resource = Resource::create(ResourceRequest(response.url()), type); | 84 resource = Resource::create(ResourceRequest(response.url()), type); |
85 break; | 85 break; |
86 case Resource::Image: | 86 case Resource::Image: |
87 resource = ImageResource::create(ResourceRequest(response.url()), nu
llptr); | 87 resource = ImageResource::create(ResourceRequest(response.url()), nu
llptr); |
88 break; | 88 break; |
89 default: | 89 default: |
90 EXPECT_TRUE(false) << "'Unreachable' code was reached"; | 90 EXPECT_TRUE(false) << "'Unreachable' code was reached"; |
91 return nullptr; | 91 return nullptr; |
92 } | 92 } |
93 resource->setResponse(response); | 93 resource->setResponse(response); |
| 94 resource->finish(); |
| 95 // Because we didn't give any real data, an image will have set its |
| 96 // status to DecodeError. Override it so the resource is cacaheable |
| 97 // for testing purposes. |
| 98 if (type == Resource::Image) |
| 99 resource->setStatus(Resource::Cached); |
94 memoryCache()->add(resource.get()); | 100 memoryCache()->add(resource.get()); |
95 | 101 |
96 return resource; | 102 return resource; |
97 } | 103 } |
98 | 104 |
99 PassRefPtrWillBeRawPtr<Resource> resourceFromResourceRequest(ResourceRequest
request, Resource::Type type = Resource::Raw) | 105 PassRefPtrWillBeRawPtr<Resource> resourceFromResourceRequest(ResourceRequest
request, Resource::Type type = Resource::Raw) |
100 { | 106 { |
101 if (request.url().isNull()) | 107 if (request.url().isNull()) |
102 request.setURL(KURL(ParsedURLString, kResourceURL)); | 108 request.setURL(KURL(ParsedURLString, kResourceURL)); |
103 RefPtrWillBeRawPtr<Resource> resource = | 109 RefPtrWillBeRawPtr<Resource> resource = |
104 Resource::create(request, type); | 110 Resource::create(request, type); |
105 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceUR
L), "text/html", 0, nullAtom, String())); | 111 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceUR
L), "text/html", 0, nullAtom, String())); |
| 112 resource->finish(); |
106 memoryCache()->add(resource.get()); | 113 memoryCache()->add(resource.get()); |
107 | 114 |
108 return resource; | 115 return resource; |
109 } | 116 } |
110 | 117 |
111 PassRefPtrWillBeRawPtr<Resource> fetch() | 118 PassRefPtrWillBeRawPtr<Resource> fetch() |
112 { | 119 { |
113 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); | 120 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); |
114 return RawResource::fetchSynchronously(fetchRequest, fetcher()); | 121 return RawResource::fetchSynchronously(fetchRequest, fetcher()); |
115 } | 122 } |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 firstResource->willFollowRedirect(redirectRequest, fresh301Response); | 392 firstResource->willFollowRedirect(redirectRequest, fresh301Response); |
386 | 393 |
387 // Add the final response to our request. | 394 // Add the final response to our request. |
388 ResourceResponse fresh200Response; | 395 ResourceResponse fresh200Response; |
389 fresh200Response.setURL(redirectTargetUrl); | 396 fresh200Response.setURL(redirectTargetUrl); |
390 fresh200Response.setHTTPStatusCode(200); | 397 fresh200Response.setHTTPStatusCode(200); |
391 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 398 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
392 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 399 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
393 | 400 |
394 firstResource->setResponse(fresh200Response); | 401 firstResource->setResponse(fresh200Response); |
| 402 firstResource->finish(); |
395 memoryCache()->add(firstResource.get()); | 403 memoryCache()->add(firstResource.get()); |
396 | 404 |
397 advanceClock(500.); | 405 advanceClock(500.); |
398 | 406 |
399 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 407 RefPtrWillBeRawPtr<Resource> fetched = fetch(); |
400 EXPECT_EQ(firstResource, fetched); | 408 EXPECT_EQ(firstResource, fetched); |
401 } | 409 } |
402 | 410 |
403 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) | 411 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) |
404 { | 412 { |
(...skipping 14 matching lines...) Expand all Loading... |
419 firstResource->willFollowRedirect(redirectRequest, stale301Response); | 427 firstResource->willFollowRedirect(redirectRequest, stale301Response); |
420 | 428 |
421 // Add the final response to our request. | 429 // Add the final response to our request. |
422 ResourceResponse fresh200Response; | 430 ResourceResponse fresh200Response; |
423 fresh200Response.setURL(redirectTargetUrl); | 431 fresh200Response.setURL(redirectTargetUrl); |
424 fresh200Response.setHTTPStatusCode(200); | 432 fresh200Response.setHTTPStatusCode(200); |
425 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 433 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
426 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 434 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
427 | 435 |
428 firstResource->setResponse(fresh200Response); | 436 firstResource->setResponse(fresh200Response); |
| 437 firstResource->finish(); |
429 memoryCache()->add(firstResource.get()); | 438 memoryCache()->add(firstResource.get()); |
430 | 439 |
431 advanceClock(500.); | 440 advanceClock(500.); |
432 | 441 |
433 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 442 RefPtrWillBeRawPtr<Resource> fetched = fetch(); |
434 EXPECT_NE(firstResource, fetched); | 443 EXPECT_NE(firstResource, fetched); |
435 } | 444 } |
436 | 445 |
437 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) | 446 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) |
438 { | 447 { |
439 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); | 448 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); |
440 request1.setHTTPMethod(HTTPNames::POST); | 449 request1.setHTTPMethod(HTTPNames::POST); |
441 RefPtrWillBeRawPtr<Resource> resource1 = Resource::create(ResourceRequest(re
quest1.url()), Resource::Raw); | 450 RefPtrWillBeRawPtr<Resource> resource1 = Resource::create(ResourceRequest(re
quest1.url()), Resource::Raw); |
442 resource1->setLoading(true); | 451 resource1->setStatus(Resource::Pending); |
443 memoryCache()->add(resource1.get()); | 452 memoryCache()->add(resource1.get()); |
444 | 453 |
445 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); | 454 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); |
446 request2.setHTTPMethod(HTTPNames::POST); | 455 request2.setHTTPMethod(HTTPNames::POST); |
447 FetchRequest fetch2(request2, FetchInitiatorInfo()); | 456 FetchRequest fetch2(request2, FetchInitiatorInfo()); |
448 RefPtrWillBeRawPtr<Resource> resource2 = RawResource::fetchSynchronously(fet
ch2, fetcher()); | 457 RefPtrWillBeRawPtr<Resource> resource2 = RawResource::fetchSynchronously(fet
ch2, fetcher()); |
449 | 458 |
450 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); | 459 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); |
451 EXPECT_NE(resource1, resource2); | 460 EXPECT_NE(resource1, resource2); |
452 } | 461 } |
(...skipping 18 matching lines...) Expand all Loading... |
471 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 480 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
472 | 481 |
473 // Add the final response to our request. | 482 // Add the final response to our request. |
474 ResourceResponse fresh200Response; | 483 ResourceResponse fresh200Response; |
475 fresh200Response.setURL(redirectTargetUrl); | 484 fresh200Response.setURL(redirectTargetUrl); |
476 fresh200Response.setHTTPStatusCode(200); | 485 fresh200Response.setHTTPStatusCode(200); |
477 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 486 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
478 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 487 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
479 | 488 |
480 firstResource->setResponse(fresh200Response); | 489 firstResource->setResponse(fresh200Response); |
| 490 firstResource->finish(); |
481 memoryCache()->add(firstResource.get()); | 491 memoryCache()->add(firstResource.get()); |
482 | 492 |
483 advanceClock(500.); | 493 advanceClock(500.); |
484 | 494 |
485 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 495 RefPtrWillBeRawPtr<Resource> fetched = fetch(); |
486 EXPECT_NE(firstResource, fetched); | 496 EXPECT_NE(firstResource, fetched); |
487 } | 497 } |
488 | 498 |
489 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) | 499 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) |
490 { | 500 { |
(...skipping 15 matching lines...) Expand all Loading... |
506 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 516 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
507 | 517 |
508 // Add the final response to our request. | 518 // Add the final response to our request. |
509 ResourceResponse fresh200Response; | 519 ResourceResponse fresh200Response; |
510 fresh200Response.setURL(redirectTargetUrl); | 520 fresh200Response.setURL(redirectTargetUrl); |
511 fresh200Response.setHTTPStatusCode(200); | 521 fresh200Response.setHTTPStatusCode(200); |
512 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 522 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
513 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 523 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
514 | 524 |
515 firstResource->setResponse(fresh200Response); | 525 firstResource->setResponse(fresh200Response); |
| 526 firstResource->finish(); |
516 memoryCache()->add(firstResource.get()); | 527 memoryCache()->add(firstResource.get()); |
517 | 528 |
518 advanceClock(500.); | 529 advanceClock(500.); |
519 | 530 |
520 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 531 RefPtrWillBeRawPtr<Resource> fetched = fetch(); |
521 EXPECT_EQ(firstResource, fetched); | 532 EXPECT_EQ(firstResource, fetched); |
522 } | 533 } |
523 | 534 |
524 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) | 535 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) |
525 { | 536 { |
(...skipping 15 matching lines...) Expand all Loading... |
541 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 552 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
542 | 553 |
543 // Add the final response to our request. | 554 // Add the final response to our request. |
544 ResourceResponse fresh200Response; | 555 ResourceResponse fresh200Response; |
545 fresh200Response.setURL(redirectTargetUrl); | 556 fresh200Response.setURL(redirectTargetUrl); |
546 fresh200Response.setHTTPStatusCode(200); | 557 fresh200Response.setHTTPStatusCode(200); |
547 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 558 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
548 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 559 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
549 | 560 |
550 firstResource->setResponse(fresh200Response); | 561 firstResource->setResponse(fresh200Response); |
| 562 firstResource->finish(); |
551 memoryCache()->add(firstResource.get()); | 563 memoryCache()->add(firstResource.get()); |
552 | 564 |
553 advanceClock(500.); | 565 advanceClock(500.); |
554 | 566 |
555 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 567 RefPtrWillBeRawPtr<Resource> fetched = fetch(); |
556 EXPECT_EQ(firstResource, fetched); | 568 EXPECT_EQ(firstResource, fetched); |
557 } | 569 } |
558 | 570 |
559 } // namespace blink | 571 } // namespace blink |
OLD | NEW |