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

Side by Side Diff: third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp

Issue 2494713002: Pass correct resource type to OnDidLoadResourceFromMemoryCache (Closed)
Patch Set: Add test. Created 4 years, 1 month 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
« no previous file with comments | « third_party/WebKit/Source/core/loader/FrameFetchContext.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015, Google Inc. All rights reserved. 2 * Copyright (c) 2015, 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 30 matching lines...) Expand all
41 #include "core/html/HTMLIFrameElement.h" 41 #include "core/html/HTMLIFrameElement.h"
42 #include "core/loader/DocumentLoader.h" 42 #include "core/loader/DocumentLoader.h"
43 #include "core/loader/EmptyClients.h" 43 #include "core/loader/EmptyClients.h"
44 #include "core/page/Page.h" 44 #include "core/page/Page.h"
45 #include "core/testing/DummyPageHolder.h" 45 #include "core/testing/DummyPageHolder.h"
46 #include "platform/network/ResourceRequest.h" 46 #include "platform/network/ResourceRequest.h"
47 #include "platform/weborigin/KURL.h" 47 #include "platform/weborigin/KURL.h"
48 #include "public/platform/WebAddressSpace.h" 48 #include "public/platform/WebAddressSpace.h"
49 #include "public/platform/WebCachePolicy.h" 49 #include "public/platform/WebCachePolicy.h"
50 #include "public/platform/WebInsecureRequestPolicy.h" 50 #include "public/platform/WebInsecureRequestPolicy.h"
51 #include "testing/gmock/include/gmock/gmock-generated-function-mockers.h" 51 #include "testing/gmock/include/gmock/gmock.h"
52 #include "testing/gtest/include/gtest/gtest.h" 52 #include "testing/gtest/include/gtest/gtest.h"
53 #include <memory> 53 #include <memory>
54 54
55 namespace blink { 55 namespace blink {
56 56
57 class StubFrameLoaderClientWithParent final : public EmptyFrameLoaderClient { 57 class StubFrameLoaderClientWithParent final : public EmptyFrameLoaderClient {
58 public: 58 public:
59 static StubFrameLoaderClientWithParent* create(Frame* parent) { 59 static StubFrameLoaderClientWithParent* create(Frame* parent) {
60 return new StubFrameLoaderClientWithParent(parent); 60 return new StubFrameLoaderClientWithParent(parent);
61 } 61 }
62 62
63 DEFINE_INLINE_VIRTUAL_TRACE() { 63 DEFINE_INLINE_VIRTUAL_TRACE() {
64 visitor->trace(m_parent); 64 visitor->trace(m_parent);
65 EmptyFrameLoaderClient::trace(visitor); 65 EmptyFrameLoaderClient::trace(visitor);
66 } 66 }
67 67
68 Frame* parent() const override { return m_parent.get(); } 68 Frame* parent() const override { return m_parent.get(); }
69 69
70 private: 70 private:
71 explicit StubFrameLoaderClientWithParent(Frame* parent) : m_parent(parent) {} 71 explicit StubFrameLoaderClientWithParent(Frame* parent) : m_parent(parent) {}
72 72
73 Member<Frame> m_parent; 73 Member<Frame> m_parent;
74 }; 74 };
75 75
76 class MockFrameLoaderClient : public EmptyFrameLoaderClient { 76 class MockFrameLoaderClient : public EmptyFrameLoaderClient {
77 public: 77 public:
78 MockFrameLoaderClient() : EmptyFrameLoaderClient() {} 78 MockFrameLoaderClient() : EmptyFrameLoaderClient() {}
79 MOCK_METHOD1(didDisplayContentWithCertificateErrors, void(const KURL&)); 79 MOCK_METHOD1(didDisplayContentWithCertificateErrors, void(const KURL&));
80 MOCK_METHOD2(dispatchDidLoadResourceFromMemoryCache,
81 void(const ResourceRequest&, const ResourceResponse&));
80 }; 82 };
81 83
82 class FrameFetchContextTest : public ::testing::Test { 84 class FrameFetchContextTest : public ::testing::Test {
83 protected: 85 protected:
84 void SetUp() override { 86 void SetUp() override {
85 dummyPageHolder = DummyPageHolder::create(IntSize(500, 500)); 87 dummyPageHolder = DummyPageHolder::create(IntSize(500, 500));
86 dummyPageHolder->page().setDeviceScaleFactor(1.0); 88 dummyPageHolder->page().setDeviceScaleFactor(1.0);
87 documentLoader = DocumentLoader::create( 89 documentLoader = DocumentLoader::create(
88 &dummyPageHolder->frame(), ResourceRequest("http://www.example.com"), 90 &dummyPageHolder->frame(), ResourceRequest("http://www.example.com"),
89 SubstituteData(), ClientRedirectPolicy::NotClientRedirect); 91 SubstituteData(), ClientRedirectPolicy::NotClientRedirect);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 Persistent<Document> document; 132 Persistent<Document> document;
131 Persistent<FrameFetchContext> fetchContext; 133 Persistent<FrameFetchContext> fetchContext;
132 134
133 Persistent<StubFrameLoaderClientWithParent> childClient; 135 Persistent<StubFrameLoaderClientWithParent> childClient;
134 Persistent<LocalFrame> childFrame; 136 Persistent<LocalFrame> childFrame;
135 Persistent<DocumentLoader> childDocumentLoader; 137 Persistent<DocumentLoader> childDocumentLoader;
136 Persistent<Document> childDocument; 138 Persistent<Document> childDocument;
137 Persistent<DummyFrameOwner> owner; 139 Persistent<DummyFrameOwner> owner;
138 }; 140 };
139 141
140 // This test class sets up a mock frame loader client that expects a call to 142 // This test class sets up a mock frame loader client.
141 // didDisplayContentWithCertificateErrors(). 143 class FrameFetchContextMockedFrameLoaderClientTest
142 class FrameFetchContextDisplayedCertificateErrorsTest
143 : public FrameFetchContextTest { 144 : public FrameFetchContextTest {
144 protected: 145 protected:
145 void SetUp() override { 146 void SetUp() override {
146 url = KURL(KURL(), "https://example.test/foo"); 147 url = KURL(KURL(), "https://example.test/foo");
147 mainResourceUrl = KURL(KURL(), "https://www.example.test"); 148 mainResourceUrl = KURL(KURL(), "https://www.example.test");
148 MockFrameLoaderClient* client = new MockFrameLoaderClient; 149 client = new testing::NiceMock<MockFrameLoaderClient>();
149 EXPECT_CALL(*client, didDisplayContentWithCertificateErrors(url));
150 dummyPageHolder = 150 dummyPageHolder =
151 DummyPageHolder::create(IntSize(500, 500), nullptr, client); 151 DummyPageHolder::create(IntSize(500, 500), nullptr, client);
152 dummyPageHolder->page().setDeviceScaleFactor(1.0); 152 dummyPageHolder->page().setDeviceScaleFactor(1.0);
153 documentLoader = DocumentLoader::create( 153 documentLoader = DocumentLoader::create(
154 &dummyPageHolder->frame(), ResourceRequest(mainResourceUrl), 154 &dummyPageHolder->frame(), ResourceRequest(mainResourceUrl),
155 SubstituteData(), ClientRedirectPolicy::NotClientRedirect); 155 SubstituteData(), ClientRedirectPolicy::NotClientRedirect);
156 document = &dummyPageHolder->document(); 156 document = &dummyPageHolder->document();
157 document->setURL(mainResourceUrl); 157 document->setURL(mainResourceUrl);
158 fetchContext = 158 fetchContext =
159 static_cast<FrameFetchContext*>(&documentLoader->fetcher()->context()); 159 static_cast<FrameFetchContext*>(&documentLoader->fetcher()->context());
160 owner = DummyFrameOwner::create(); 160 owner = DummyFrameOwner::create();
161 FrameFetchContext::provideDocumentToContext(*fetchContext, document.get()); 161 FrameFetchContext::provideDocumentToContext(*fetchContext, document.get());
162 } 162 }
163 163
164 KURL url; 164 KURL url;
165 KURL mainResourceUrl; 165 KURL mainResourceUrl;
166
167 Persistent<testing::NiceMock<MockFrameLoaderClient>> client;
166 }; 168 };
167 169
168 class FrameFetchContextModifyRequestTest : public FrameFetchContextTest { 170 class FrameFetchContextModifyRequestTest : public FrameFetchContextTest {
169 public: 171 public:
170 FrameFetchContextModifyRequestTest() 172 FrameFetchContextModifyRequestTest()
171 : exampleOrigin(SecurityOrigin::create( 173 : exampleOrigin(SecurityOrigin::create(
172 KURL(ParsedURLString, "https://example.test/"))), 174 KURL(ParsedURLString, "https://example.test/"))),
173 secureOrigin(SecurityOrigin::create( 175 secureOrigin(SecurityOrigin::create(
174 KURL(ParsedURLString, "https://secureorigin.test/image.png"))) {} 176 KURL(ParsedURLString, "https://secureorigin.test/image.png"))) {}
175 177
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 fetchContext->addAdditionalRequestHeaders(resourceRequest, FetchMainResource); 668 fetchContext->addAdditionalRequestHeaders(resourceRequest, FetchMainResource);
667 EXPECT_EQ("on", resourceRequest.httpHeaderField("Save-Data")); 669 EXPECT_EQ("on", resourceRequest.httpHeaderField("Save-Data"));
668 } 670 }
669 671
670 TEST_F(FrameFetchContextTest, DisabledDataSaver) { 672 TEST_F(FrameFetchContextTest, DisabledDataSaver) {
671 ResourceRequest resourceRequest("http://www.example.com"); 673 ResourceRequest resourceRequest("http://www.example.com");
672 fetchContext->addAdditionalRequestHeaders(resourceRequest, FetchMainResource); 674 fetchContext->addAdditionalRequestHeaders(resourceRequest, FetchMainResource);
673 EXPECT_EQ(String(), resourceRequest.httpHeaderField("Save-Data")); 675 EXPECT_EQ(String(), resourceRequest.httpHeaderField("Save-Data"));
674 } 676 }
675 677
678 // Tests that the embedder gets correct notification when a resource is loaded
679 // from the memory cache.
680 TEST_F(FrameFetchContextMockedFrameLoaderClientTest,
681 DispatchDidLoadResourceFromMemoryCache) {
682 ResourceRequest resourceRequest(url);
683 Resource* resource = ImageResource::create(resourceRequest);
684 EXPECT_CALL(
685 *client,
686 dispatchDidLoadResourceFromMemoryCache(
687 testing::AllOf(testing::Property(&ResourceRequest::url, url),
688 testing::Property(&ResourceRequest::frameType,
689 WebURLRequest::FrameTypeNone),
690 testing::Property(&ResourceRequest::requestContext,
691 WebURLRequest::RequestContextImage)),
692 ResourceResponse()));
693 fetchContext->dispatchDidLoadResourceFromMemoryCache(
694 createUniqueIdentifier(), resource, WebURLRequest::FrameTypeNone,
695 WebURLRequest::RequestContextImage);
696 }
697
676 // Tests that when a resource with certificate errors is loaded from the memory 698 // Tests that when a resource with certificate errors is loaded from the memory
677 // cache, the embedder is notified. 699 // cache, the embedder is notified.
678 TEST_F(FrameFetchContextDisplayedCertificateErrorsTest, 700 TEST_F(FrameFetchContextMockedFrameLoaderClientTest,
679 MemoryCacheCertificateError) { 701 MemoryCacheCertificateError) {
680 ResourceRequest resourceRequest(url); 702 ResourceRequest resourceRequest(url);
681 ResourceResponse response; 703 ResourceResponse response;
682 response.setURL(url); 704 response.setURL(url);
683 response.setHasMajorCertificateErrors(true); 705 response.setHasMajorCertificateErrors(true);
684 Resource* resource = ImageResource::create(resourceRequest); 706 Resource* resource = ImageResource::create(resourceRequest);
685 resource->setResponse(response); 707 resource->setResponse(response);
708 EXPECT_CALL(*client, didDisplayContentWithCertificateErrors(url));
686 fetchContext->dispatchDidLoadResourceFromMemoryCache( 709 fetchContext->dispatchDidLoadResourceFromMemoryCache(
687 createUniqueIdentifier(), resource, WebURLRequest::FrameTypeNone, 710 createUniqueIdentifier(), resource, WebURLRequest::FrameTypeNone,
688 WebURLRequest::RequestContextImage); 711 WebURLRequest::RequestContextImage);
689 } 712 }
690 713
691 TEST_F(FrameFetchContextTest, SetIsExternalRequestForPublicDocument) { 714 TEST_F(FrameFetchContextTest, SetIsExternalRequestForPublicDocument) {
692 EXPECT_EQ(WebAddressSpacePublic, document->addressSpace()); 715 EXPECT_EQ(WebAddressSpacePublic, document->addressSpace());
693 716
694 struct TestCase { 717 struct TestCase {
695 const char* url; 718 const char* url;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource); 829 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource);
807 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest()); 830 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest());
808 831
809 ResourceRequest subRequest(test.url); 832 ResourceRequest subRequest(test.url);
810 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource); 833 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource);
811 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest()); 834 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest());
812 } 835 }
813 } 836 }
814 837
815 } // namespace blink 838 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/FrameFetchContext.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698