Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: third_party/WebKit/Source/platform/loader/fetch/MemoryCacheCorrectnessTest.cpp

Issue 2845513002: [WIP] Add Resource::IsShareable
Patch Set: fix Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 14 matching lines...) Expand all
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "platform/loader/fetch/MemoryCache.h" 31 #include "platform/loader/fetch/MemoryCache.h"
32 32
33 #include "platform/loader/fetch/FetchContext.h" 33 #include "platform/loader/fetch/FetchContext.h"
34 #include "platform/loader/fetch/FetchParameters.h" 34 #include "platform/loader/fetch/FetchParameters.h"
35 #include "platform/loader/fetch/RawResource.h"
36 #include "platform/loader/fetch/Resource.h" 35 #include "platform/loader/fetch/Resource.h"
37 #include "platform/loader/fetch/ResourceFetcher.h" 36 #include "platform/loader/fetch/ResourceFetcher.h"
38 #include "platform/loader/fetch/ResourceRequest.h" 37 #include "platform/loader/fetch/ResourceRequest.h"
39 #include "platform/loader/testing/MockFetchContext.h" 38 #include "platform/loader/testing/MockFetchContext.h"
40 #include "platform/loader/testing/MockResource.h" 39 #include "platform/loader/testing/MockResource.h"
41 #include "platform/testing/TestingPlatformSupport.h" 40 #include "platform/testing/TestingPlatformSupport.h"
42 #include "testing/gtest/include/gtest/gtest.h" 41 #include "testing/gtest/include/gtest/gtest.h"
43 42
44 namespace blink { 43 namespace blink {
45 44
(...skipping 26 matching lines...) Expand all
72 if (request.Url().IsNull()) 71 if (request.Url().IsNull())
73 request.SetURL(KURL(kParsedURLString, kResourceURL)); 72 request.SetURL(KURL(kParsedURLString, kResourceURL));
74 MockResource* resource = MockResource::Create(request); 73 MockResource* resource = MockResource::Create(request);
75 resource->SetResponse(ResourceResponse(KURL(kParsedURLString, kResourceURL), 74 resource->SetResponse(ResourceResponse(KURL(kParsedURLString, kResourceURL),
76 "text/html", 0, g_null_atom)); 75 "text/html", 0, g_null_atom));
77 resource->Finish(); 76 resource->Finish();
78 GetMemoryCache()->Add(resource); 77 GetMemoryCache()->Add(resource);
79 78
80 return resource; 79 return resource;
81 } 80 }
82 // TODO(toyoshim): Consider to use MockResource for all tests instead of
83 // RawResource.
84 RawResource* FetchRawResource() {
85 ResourceRequest resource_request(KURL(kParsedURLString, kResourceURL));
86 resource_request.SetRequestContext(WebURLRequest::kRequestContextInternal);
87 FetchParameters fetch_params(resource_request, FetchInitiatorInfo());
88 return RawResource::Fetch(fetch_params, Fetcher());
89 }
90 MockResource* FetchMockResource() { 81 MockResource* FetchMockResource() {
91 FetchParameters fetch_params( 82 FetchParameters fetch_params(
92 ResourceRequest(KURL(kParsedURLString, kResourceURL)), 83 ResourceRequest(KURL(kParsedURLString, kResourceURL)),
93 FetchInitiatorInfo()); 84 FetchInitiatorInfo());
94 return MockResource::Fetch(fetch_params, Fetcher()); 85 return MockResource::Fetch(fetch_params, Fetcher());
95 } 86 }
96 ResourceFetcher* Fetcher() const { return fetcher_.Get(); } 87 ResourceFetcher* Fetcher() const { return fetcher_.Get(); }
97 void AdvanceClock(double seconds) { platform_->AdvanceClockSeconds(seconds); } 88 void AdvanceClock(double seconds) { platform_->AdvanceClockSeconds(seconds); }
98 89
99 private: 90 private:
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 first_resource->SetResponse(fresh200_response); 409 first_resource->SetResponse(fresh200_response);
419 first_resource->Finish(); 410 first_resource->Finish();
420 GetMemoryCache()->Add(first_resource); 411 GetMemoryCache()->Add(first_resource);
421 412
422 AdvanceClock(500.); 413 AdvanceClock(500.);
423 414
424 MockResource* fetched = FetchMockResource(); 415 MockResource* fetched = FetchMockResource();
425 EXPECT_NE(first_resource, fetched); 416 EXPECT_NE(first_resource, fetched);
426 } 417 }
427 418
428 TEST_F(MemoryCacheCorrectnessTest, PostToSameURLTwice) {
429 ResourceRequest request1(KURL(kParsedURLString, kResourceURL));
430 request1.SetHTTPMethod(HTTPNames::POST);
431 RawResource* resource1 =
432 RawResource::Create(ResourceRequest(request1.Url()), Resource::kRaw);
433 resource1->SetStatus(ResourceStatus::kPending);
434 GetMemoryCache()->Add(resource1);
435
436 ResourceRequest request2(KURL(kParsedURLString, kResourceURL));
437 request2.SetHTTPMethod(HTTPNames::POST);
438 FetchParameters fetch2(request2, FetchInitiatorInfo());
439 RawResource* resource2 = RawResource::FetchSynchronously(fetch2, Fetcher());
440
441 EXPECT_EQ(resource2, GetMemoryCache()->ResourceForURL(request2.Url()));
442 EXPECT_NE(resource1, resource2);
443 }
444
445 TEST_F(MemoryCacheCorrectnessTest, 302RedirectNotImplicitlyFresh) { 419 TEST_F(MemoryCacheCorrectnessTest, 302RedirectNotImplicitlyFresh) {
446 KURL redirect_url(kParsedURLString, kResourceURL); 420 KURL redirect_url(kParsedURLString, kResourceURL);
447 const char kRedirectTargetUrlString[] = "http://redirect-target.com"; 421 const char kRedirectTargetUrlString[] = "http://redirect-target.com";
448 KURL redirect_target_url(kParsedURLString, kRedirectTargetUrlString); 422 KURL redirect_target_url(kParsedURLString, kRedirectTargetUrlString);
449 423
450 RawResource* first_resource = 424 MockResource* first_resource =
451 RawResource::Create(ResourceRequest(redirect_url), Resource::kRaw); 425 MockResource::Create(ResourceRequest(redirect_url));
452 426
453 ResourceResponse fresh302_response; 427 ResourceResponse fresh302_response;
454 fresh302_response.SetURL(redirect_url); 428 fresh302_response.SetURL(redirect_url);
455 fresh302_response.SetHTTPStatusCode(302); 429 fresh302_response.SetHTTPStatusCode(302);
456 fresh302_response.SetHTTPHeaderField(HTTPNames::Date, 430 fresh302_response.SetHTTPHeaderField(HTTPNames::Date,
457 kOriginalRequestDateAsString); 431 kOriginalRequestDateAsString);
458 fresh302_response.SetHTTPHeaderField(HTTPNames::Last_Modified, 432 fresh302_response.SetHTTPHeaderField(HTTPNames::Last_Modified,
459 kOneDayBeforeOriginalRequest); 433 kOneDayBeforeOriginalRequest);
460 fresh302_response.SetHTTPHeaderField(HTTPNames::Location, 434 fresh302_response.SetHTTPHeaderField(HTTPNames::Location,
461 kRedirectTargetUrlString); 435 kRedirectTargetUrlString);
(...skipping 10 matching lines...) Expand all
472 kOriginalRequestDateAsString); 446 kOriginalRequestDateAsString);
473 fresh200_response.SetHTTPHeaderField(HTTPNames::Expires, 447 fresh200_response.SetHTTPHeaderField(HTTPNames::Expires,
474 kOneDayAfterOriginalRequest); 448 kOneDayAfterOriginalRequest);
475 449
476 first_resource->SetResponse(fresh200_response); 450 first_resource->SetResponse(fresh200_response);
477 first_resource->Finish(); 451 first_resource->Finish();
478 GetMemoryCache()->Add(first_resource); 452 GetMemoryCache()->Add(first_resource);
479 453
480 AdvanceClock(500.); 454 AdvanceClock(500.);
481 455
482 RawResource* fetched = FetchRawResource(); 456 MockResource* fetched = FetchMockResource();
483 EXPECT_NE(first_resource, fetched); 457 EXPECT_NE(first_resource, fetched);
484 } 458 }
485 459
486 TEST_F(MemoryCacheCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) { 460 TEST_F(MemoryCacheCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) {
487 KURL redirect_url(kParsedURLString, kResourceURL); 461 KURL redirect_url(kParsedURLString, kResourceURL);
488 const char kRedirectTargetUrlString[] = "http://redirect-target.com"; 462 const char kRedirectTargetUrlString[] = "http://redirect-target.com";
489 KURL redirect_target_url(kParsedURLString, kRedirectTargetUrlString); 463 KURL redirect_target_url(kParsedURLString, kRedirectTargetUrlString);
490 464
491 MockResource* first_resource = 465 MockResource* first_resource =
492 MockResource::Create(ResourceRequest(redirect_url)); 466 MockResource::Create(ResourceRequest(redirect_url));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 first_resource->Finish(); 532 first_resource->Finish();
559 GetMemoryCache()->Add(first_resource); 533 GetMemoryCache()->Add(first_resource);
560 534
561 AdvanceClock(500.); 535 AdvanceClock(500.);
562 536
563 MockResource* fetched = FetchMockResource(); 537 MockResource* fetched = FetchMockResource();
564 EXPECT_EQ(first_resource, fetched); 538 EXPECT_EQ(first_resource, fetched);
565 } 539 }
566 540
567 } // namespace blink 541 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698