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