| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 protected: | 76 protected: |
| 77 static void advanceClock(double seconds) { s_timeElapsed += seconds; } | 77 static void advanceClock(double seconds) { s_timeElapsed += seconds; } |
| 78 | 78 |
| 79 Resource* resourceFromResourceResponse(ResourceResponse response, | 79 Resource* resourceFromResourceResponse(ResourceResponse response, |
| 80 Resource::Type type = Resource::Raw) { | 80 Resource::Type type = Resource::Raw) { |
| 81 if (response.url().isNull()) | 81 if (response.url().isNull()) |
| 82 response.setURL(KURL(ParsedURLString, kResourceURL)); | 82 response.setURL(KURL(ParsedURLString, kResourceURL)); |
| 83 Resource* resource = nullptr; | 83 Resource* resource = nullptr; |
| 84 switch (type) { | 84 switch (type) { |
| 85 case Resource::Raw: | 85 case Resource::Raw: |
| 86 resource = Resource::create(ResourceRequest(response.url()), type); | 86 resource = RawResource::create(ResourceRequest(response.url()), type); |
| 87 break; | 87 break; |
| 88 case Resource::Image: | 88 case Resource::Image: |
| 89 resource = ImageResource::create(ResourceRequest(response.url())); | 89 resource = ImageResource::create(ResourceRequest(response.url())); |
| 90 break; | 90 break; |
| 91 default: | 91 default: |
| 92 EXPECT_TRUE(false) << "'Unreachable' code was reached"; | 92 EXPECT_TRUE(false) << "'Unreachable' code was reached"; |
| 93 return nullptr; | 93 return nullptr; |
| 94 } | 94 } |
| 95 resource->setResponse(response); | 95 resource->setResponse(response); |
| 96 resource->finish(); | 96 resource->finish(); |
| 97 // Because we didn't give any real data, an image will have set its status | 97 // Because we didn't give any real data, an image will have set its status |
| 98 // to DecodeError. Override it so the resource is cacaheable for testing | 98 // to DecodeError. Override it so the resource is cacaheable for testing |
| 99 // purposes. | 99 // purposes. |
| 100 if (type == Resource::Image) | 100 if (type == Resource::Image) |
| 101 resource->setStatus(Resource::Cached); | 101 resource->setStatus(Resource::Cached); |
| 102 memoryCache()->add(resource); | 102 memoryCache()->add(resource); |
| 103 | 103 |
| 104 return resource; | 104 return resource; |
| 105 } | 105 } |
| 106 | 106 |
| 107 Resource* resourceFromResourceRequest(ResourceRequest request, | 107 Resource* resourceFromResourceRequest(ResourceRequest request) { |
| 108 Resource::Type type = Resource::Raw) { | |
| 109 if (request.url().isNull()) | 108 if (request.url().isNull()) |
| 110 request.setURL(KURL(ParsedURLString, kResourceURL)); | 109 request.setURL(KURL(ParsedURLString, kResourceURL)); |
| 111 Resource* resource = Resource::create(request, type); | 110 Resource* resource = RawResource::create(request, Resource::Raw); |
| 112 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceURL), | 111 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceURL), |
| 113 "text/html", 0, nullAtom, String())); | 112 "text/html", 0, nullAtom, String())); |
| 114 resource->finish(); | 113 resource->finish(); |
| 115 memoryCache()->add(resource); | 114 memoryCache()->add(resource); |
| 116 | 115 |
| 117 return resource; | 116 return resource; |
| 118 } | 117 } |
| 119 | 118 |
| 120 Resource* fetch() { | 119 Resource* fetch() { |
| 121 ResourceRequest resourceRequest(KURL(ParsedURLString, kResourceURL)); | 120 ResourceRequest resourceRequest(KURL(ParsedURLString, kResourceURL)); |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 Resource* fetched = fetch(); | 388 Resource* fetched = fetch(); |
| 390 EXPECT_NE(fresh200MustRevalidate, fetched); | 389 EXPECT_NE(fresh200MustRevalidate, fetched); |
| 391 } | 390 } |
| 392 | 391 |
| 393 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) { | 392 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) { |
| 394 KURL redirectUrl(ParsedURLString, kResourceURL); | 393 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 395 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 394 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 396 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 395 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 397 | 396 |
| 398 Resource* firstResource = | 397 Resource* firstResource = |
| 399 Resource::create(ResourceRequest(redirectUrl), Resource::Raw); | 398 RawResource::create(ResourceRequest(redirectUrl), Resource::Raw); |
| 400 | 399 |
| 401 ResourceResponse fresh301Response; | 400 ResourceResponse fresh301Response; |
| 402 fresh301Response.setURL(redirectUrl); | 401 fresh301Response.setURL(redirectUrl); |
| 403 fresh301Response.setHTTPStatusCode(301); | 402 fresh301Response.setHTTPStatusCode(301); |
| 404 fresh301Response.setHTTPHeaderField(HTTPNames::Date, | 403 fresh301Response.setHTTPHeaderField(HTTPNames::Date, |
| 405 kOriginalRequestDateAsString); | 404 kOriginalRequestDateAsString); |
| 406 fresh301Response.setHTTPHeaderField(HTTPNames::Location, | 405 fresh301Response.setHTTPHeaderField(HTTPNames::Location, |
| 407 redirectTargetUrlString); | 406 redirectTargetUrlString); |
| 408 fresh301Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600"); | 407 fresh301Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600"); |
| 409 | 408 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 429 Resource* fetched = fetch(); | 428 Resource* fetched = fetch(); |
| 430 EXPECT_EQ(firstResource, fetched); | 429 EXPECT_EQ(firstResource, fetched); |
| 431 } | 430 } |
| 432 | 431 |
| 433 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) { | 432 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) { |
| 434 KURL redirectUrl(ParsedURLString, kResourceURL); | 433 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 435 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 434 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 436 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 435 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 437 | 436 |
| 438 Resource* firstResource = | 437 Resource* firstResource = |
| 439 Resource::create(ResourceRequest(redirectUrl), Resource::Raw); | 438 RawResource::create(ResourceRequest(redirectUrl), Resource::Raw); |
| 440 | 439 |
| 441 ResourceResponse stale301Response; | 440 ResourceResponse stale301Response; |
| 442 stale301Response.setURL(redirectUrl); | 441 stale301Response.setURL(redirectUrl); |
| 443 stale301Response.setHTTPStatusCode(301); | 442 stale301Response.setHTTPStatusCode(301); |
| 444 stale301Response.setHTTPHeaderField(HTTPNames::Date, | 443 stale301Response.setHTTPHeaderField(HTTPNames::Date, |
| 445 kOriginalRequestDateAsString); | 444 kOriginalRequestDateAsString); |
| 446 stale301Response.setHTTPHeaderField(HTTPNames::Location, | 445 stale301Response.setHTTPHeaderField(HTTPNames::Location, |
| 447 redirectTargetUrlString); | 446 redirectTargetUrlString); |
| 448 | 447 |
| 449 // Add the redirect to our request. | 448 // Add the redirect to our request. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 466 advanceClock(500.); | 465 advanceClock(500.); |
| 467 | 466 |
| 468 Resource* fetched = fetch(); | 467 Resource* fetched = fetch(); |
| 469 EXPECT_NE(firstResource, fetched); | 468 EXPECT_NE(firstResource, fetched); |
| 470 } | 469 } |
| 471 | 470 |
| 472 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) { | 471 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) { |
| 473 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); | 472 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); |
| 474 request1.setHTTPMethod(HTTPNames::POST); | 473 request1.setHTTPMethod(HTTPNames::POST); |
| 475 Resource* resource1 = | 474 Resource* resource1 = |
| 476 Resource::create(ResourceRequest(request1.url()), Resource::Raw); | 475 RawResource::create(ResourceRequest(request1.url()), Resource::Raw); |
| 477 resource1->setStatus(Resource::Pending); | 476 resource1->setStatus(Resource::Pending); |
| 478 memoryCache()->add(resource1); | 477 memoryCache()->add(resource1); |
| 479 | 478 |
| 480 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); | 479 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); |
| 481 request2.setHTTPMethod(HTTPNames::POST); | 480 request2.setHTTPMethod(HTTPNames::POST); |
| 482 FetchRequest fetch2(request2, FetchInitiatorInfo()); | 481 FetchRequest fetch2(request2, FetchInitiatorInfo()); |
| 483 Resource* resource2 = RawResource::fetchSynchronously(fetch2, fetcher()); | 482 Resource* resource2 = RawResource::fetchSynchronously(fetch2, fetcher()); |
| 484 | 483 |
| 485 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); | 484 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); |
| 486 EXPECT_NE(resource1, resource2); | 485 EXPECT_NE(resource1, resource2); |
| 487 } | 486 } |
| 488 | 487 |
| 489 TEST_F(CachingCorrectnessTest, 302RedirectNotImplicitlyFresh) { | 488 TEST_F(CachingCorrectnessTest, 302RedirectNotImplicitlyFresh) { |
| 490 KURL redirectUrl(ParsedURLString, kResourceURL); | 489 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 491 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 490 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 492 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 491 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 493 | 492 |
| 494 Resource* firstResource = | 493 Resource* firstResource = |
| 495 Resource::create(ResourceRequest(redirectUrl), Resource::Raw); | 494 RawResource::create(ResourceRequest(redirectUrl), Resource::Raw); |
| 496 | 495 |
| 497 ResourceResponse fresh302Response; | 496 ResourceResponse fresh302Response; |
| 498 fresh302Response.setURL(redirectUrl); | 497 fresh302Response.setURL(redirectUrl); |
| 499 fresh302Response.setHTTPStatusCode(302); | 498 fresh302Response.setHTTPStatusCode(302); |
| 500 fresh302Response.setHTTPHeaderField(HTTPNames::Date, | 499 fresh302Response.setHTTPHeaderField(HTTPNames::Date, |
| 501 kOriginalRequestDateAsString); | 500 kOriginalRequestDateAsString); |
| 502 fresh302Response.setHTTPHeaderField(HTTPNames::Last_Modified, | 501 fresh302Response.setHTTPHeaderField(HTTPNames::Last_Modified, |
| 503 kOneDayBeforeOriginalRequest); | 502 kOneDayBeforeOriginalRequest); |
| 504 fresh302Response.setHTTPHeaderField(HTTPNames::Location, | 503 fresh302Response.setHTTPHeaderField(HTTPNames::Location, |
| 505 redirectTargetUrlString); | 504 redirectTargetUrlString); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 526 Resource* fetched = fetch(); | 525 Resource* fetched = fetch(); |
| 527 EXPECT_NE(firstResource, fetched); | 526 EXPECT_NE(firstResource, fetched); |
| 528 } | 527 } |
| 529 | 528 |
| 530 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) { | 529 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) { |
| 531 KURL redirectUrl(ParsedURLString, kResourceURL); | 530 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 532 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 531 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 533 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 532 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 534 | 533 |
| 535 Resource* firstResource = | 534 Resource* firstResource = |
| 536 Resource::create(ResourceRequest(redirectUrl), Resource::Raw); | 535 RawResource::create(ResourceRequest(redirectUrl), Resource::Raw); |
| 537 | 536 |
| 538 ResourceResponse fresh302Response; | 537 ResourceResponse fresh302Response; |
| 539 fresh302Response.setURL(redirectUrl); | 538 fresh302Response.setURL(redirectUrl); |
| 540 fresh302Response.setHTTPStatusCode(302); | 539 fresh302Response.setHTTPStatusCode(302); |
| 541 fresh302Response.setHTTPHeaderField(HTTPNames::Date, | 540 fresh302Response.setHTTPHeaderField(HTTPNames::Date, |
| 542 kOriginalRequestDateAsString); | 541 kOriginalRequestDateAsString); |
| 543 fresh302Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600"); | 542 fresh302Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600"); |
| 544 fresh302Response.setHTTPHeaderField(HTTPNames::Location, | 543 fresh302Response.setHTTPHeaderField(HTTPNames::Location, |
| 545 redirectTargetUrlString); | 544 redirectTargetUrlString); |
| 546 | 545 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 566 Resource* fetched = fetch(); | 565 Resource* fetched = fetch(); |
| 567 EXPECT_EQ(firstResource, fetched); | 566 EXPECT_EQ(firstResource, fetched); |
| 568 } | 567 } |
| 569 | 568 |
| 570 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) { | 569 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) { |
| 571 KURL redirectUrl(ParsedURLString, kResourceURL); | 570 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 572 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 571 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 573 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 572 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 574 | 573 |
| 575 Resource* firstResource = | 574 Resource* firstResource = |
| 576 Resource::create(ResourceRequest(redirectUrl), Resource::Raw); | 575 RawResource::create(ResourceRequest(redirectUrl), Resource::Raw); |
| 577 | 576 |
| 578 ResourceResponse fresh302Response; | 577 ResourceResponse fresh302Response; |
| 579 fresh302Response.setURL(redirectUrl); | 578 fresh302Response.setURL(redirectUrl); |
| 580 fresh302Response.setHTTPStatusCode(302); | 579 fresh302Response.setHTTPStatusCode(302); |
| 581 fresh302Response.setHTTPHeaderField(HTTPNames::Date, | 580 fresh302Response.setHTTPHeaderField(HTTPNames::Date, |
| 582 kOriginalRequestDateAsString); | 581 kOriginalRequestDateAsString); |
| 583 fresh302Response.setHTTPHeaderField(HTTPNames::Expires, | 582 fresh302Response.setHTTPHeaderField(HTTPNames::Expires, |
| 584 kOneDayAfterOriginalRequest); | 583 kOneDayAfterOriginalRequest); |
| 585 fresh302Response.setHTTPHeaderField(HTTPNames::Location, | 584 fresh302Response.setHTTPHeaderField(HTTPNames::Location, |
| 586 redirectTargetUrlString); | 585 redirectTargetUrlString); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 602 firstResource->finish(); | 601 firstResource->finish(); |
| 603 memoryCache()->add(firstResource); | 602 memoryCache()->add(firstResource); |
| 604 | 603 |
| 605 advanceClock(500.); | 604 advanceClock(500.); |
| 606 | 605 |
| 607 Resource* fetched = fetch(); | 606 Resource* fetched = fetch(); |
| 608 EXPECT_EQ(firstResource, fetched); | 607 EXPECT_EQ(firstResource, fetched); |
| 609 } | 608 } |
| 610 | 609 |
| 611 } // namespace blink | 610 } // namespace blink |
| OLD | NEW |