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

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

Issue 1616713003: Oilpan: LinkLoaderClient must be a GC mixin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
« no previous file with comments | « third_party/WebKit/Source/core/loader/LinkLoaderClient.h ('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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/loader/LinkLoader.h" 5 #include "core/loader/LinkLoader.h"
6 6
7 #include "core/fetch/ResourceFetcher.h" 7 #include "core/fetch/ResourceFetcher.h"
8 #include "core/frame/Settings.h" 8 #include "core/frame/Settings.h"
9 #include "core/html/LinkRelAttribute.h" 9 #include "core/html/LinkRelAttribute.h"
10 #include "core/loader/DocumentLoader.h" 10 #include "core/loader/DocumentLoader.h"
11 #include "core/loader/LinkLoaderClient.h" 11 #include "core/loader/LinkLoaderClient.h"
12 #include "core/loader/NetworkHintsInterface.h" 12 #include "core/loader/NetworkHintsInterface.h"
13 #include "core/testing/DummyPageHolder.h" 13 #include "core/testing/DummyPageHolder.h"
14 #include "platform/network/ResourceLoadPriority.h" 14 #include "platform/network/ResourceLoadPriority.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include <base/macros.h> 16 #include <base/macros.h>
17 17
18 namespace blink { 18 namespace blink {
19 19
20 class MockLinkLoaderClient : public LinkLoaderClient { 20 class MockLinkLoaderClient final : public NoBaseWillBeGarbageCollectedFinalized< MockLinkLoaderClient>, public LinkLoaderClient {
21 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient);
21 public: 22 public:
22 MockLinkLoaderClient(bool shouldLoad) 23 static PassOwnPtrWillBeRawPtr<MockLinkLoaderClient> create(bool shouldLoad)
23 : m_shouldLoad(shouldLoad)
24 { 24 {
25 return adoptPtrWillBeNoop(new MockLinkLoaderClient(shouldLoad));
25 } 26 }
26 27
28 DEFINE_INLINE_VIRTUAL_TRACE() { LinkLoaderClient::trace(visitor); }
29
27 bool shouldLoadLink() override 30 bool shouldLoadLink() override
28 { 31 {
29 return m_shouldLoad; 32 return m_shouldLoad;
30 } 33 }
31 34
32 void linkLoaded() override {} 35 void linkLoaded() override {}
33 void linkLoadingErrored() override {} 36 void linkLoadingErrored() override {}
34 void didStartLinkPrerender() override {} 37 void didStartLinkPrerender() override {}
35 void didStopLinkPrerender() override {} 38 void didStopLinkPrerender() override {}
36 void didSendLoadForLinkPrerender() override {} 39 void didSendLoadForLinkPrerender() override {}
37 void didSendDOMContentLoadedForLinkPrerender() override {} 40 void didSendDOMContentLoadedForLinkPrerender() override {}
38 41
39 private: 42 private:
43 explicit MockLinkLoaderClient(bool shouldLoad)
44 : m_shouldLoad(shouldLoad)
45 {
46 }
47
40 bool m_shouldLoad; 48 bool m_shouldLoad;
41 }; 49 };
42 50
43 class NetworkHintsMock : public NetworkHintsInterface { 51 class NetworkHintsMock : public NetworkHintsInterface {
44 public: 52 public:
45 NetworkHintsMock() 53 NetworkHintsMock()
46 : m_didDnsPrefetch(false) 54 : m_didDnsPrefetch(false)
47 , m_didPreconnect(false) 55 , m_didPreconnect(false)
48 { 56 {
49 } 57 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 // TODO(yoav): subresource should be *very* low priority (rather than lo w). 102 // TODO(yoav): subresource should be *very* low priority (rather than lo w).
95 {"data://example.test/cat.empty", "", ResourceLoadPriorityLow, WebURLReq uest::RequestContextSubresource, true, ""}, 103 {"data://example.test/cat.empty", "", ResourceLoadPriorityLow, WebURLReq uest::RequestContextSubresource, true, ""},
96 {"data://example.test/cat.blob", "blabla", ResourceLoadPriorityLow, WebU RLRequest::RequestContextSubresource, true, ""}, 104 {"data://example.test/cat.blob", "blabla", ResourceLoadPriorityLow, WebU RLRequest::RequestContextSubresource, true, ""},
97 {"bla://example.test/cat.gif", "image", ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage, false, ""}, 105 {"bla://example.test/cat.gif", "image", ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage, false, ""},
98 }; 106 };
99 107
100 // Test the cases with a single header 108 // Test the cases with a single header
101 for (const auto& testCase : cases) { 109 for (const auto& testCase : cases) {
102 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500)); 110 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500));
103 dummyPageHolder->frame().settings()->setScriptEnabled(true); 111 dummyPageHolder->frame().settings()->setScriptEnabled(true);
104 MockLinkLoaderClient loaderClient(testCase.shouldLoad); 112 OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoad erClient::create(testCase.shouldLoad);
105 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(&loaderClient ); 113 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient. get());
106 KURL hrefURL = KURL(KURL(), testCase.href); 114 KURL hrefURL = KURL(KURL(), testCase.href);
107 loader->loadLink(LinkRelAttribute("preload"), 115 loader->loadLink(LinkRelAttribute("preload"),
108 CrossOriginAttributeNotSet, 116 CrossOriginAttributeNotSet,
109 String(), 117 String(),
110 testCase.as, 118 testCase.as,
111 hrefURL, 119 hrefURL,
112 dummyPageHolder->document(), 120 dummyPageHolder->document(),
113 NetworkHintsMock()); 121 NetworkHintsMock());
114 ASSERT(dummyPageHolder->document().fetcher()); 122 ASSERT(dummyPageHolder->document().fetcher());
115 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag eHolder->document().fetcher()->preloads(); 123 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag eHolder->document().fetcher()->preloads();
(...skipping 25 matching lines...) Expand all
141 {"https://example.com/", true}, 149 {"https://example.com/", true},
142 {"//example.com/", true}, 150 {"//example.com/", true},
143 }; 151 };
144 152
145 // TODO(yoav): Test (and fix) shouldLoad = false 153 // TODO(yoav): Test (and fix) shouldLoad = false
146 154
147 // Test the cases with a single header 155 // Test the cases with a single header
148 for (const auto& testCase : cases) { 156 for (const auto& testCase : cases) {
149 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500)); 157 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500));
150 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true); 158 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true);
151 MockLinkLoaderClient loaderClient(testCase.shouldLoad); 159 OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoad erClient::create(testCase.shouldLoad);
152 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(&loaderClient ); 160 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient. get());
153 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co m")), testCase.href); 161 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co m")), testCase.href);
154 NetworkHintsMock networkHints; 162 NetworkHintsMock networkHints;
155 loader->loadLink(LinkRelAttribute("dns-prefetch"), 163 loader->loadLink(LinkRelAttribute("dns-prefetch"),
156 CrossOriginAttributeNotSet, 164 CrossOriginAttributeNotSet,
157 String(), 165 String(),
158 String(), 166 String(),
159 hrefURL, 167 hrefURL,
160 dummyPageHolder->document(), 168 dummyPageHolder->document(),
161 networkHints); 169 networkHints);
162 ASSERT_FALSE(networkHints.didPreconnect()); 170 ASSERT_FALSE(networkHints.didPreconnect());
(...skipping 12 matching lines...) Expand all
175 } cases[] = { 183 } cases[] = {
176 {"http://example.com/", CrossOriginAttributeNotSet, true, false, false}, 184 {"http://example.com/", CrossOriginAttributeNotSet, true, false, false},
177 {"https://example.com/", CrossOriginAttributeNotSet, true, true, false}, 185 {"https://example.com/", CrossOriginAttributeNotSet, true, true, false},
178 {"http://example.com/", CrossOriginAttributeAnonymous, true, false, true }, 186 {"http://example.com/", CrossOriginAttributeAnonymous, true, false, true },
179 {"//example.com/", CrossOriginAttributeNotSet, true, false, false}, 187 {"//example.com/", CrossOriginAttributeNotSet, true, false, false},
180 }; 188 };
181 189
182 // Test the cases with a single header 190 // Test the cases with a single header
183 for (const auto& testCase : cases) { 191 for (const auto& testCase : cases) {
184 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500)); 192 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz e(500, 500));
185 MockLinkLoaderClient loaderClient(testCase.shouldLoad); 193 OwnPtrWillBePersistent<MockLinkLoaderClient> loaderClient = MockLinkLoad erClient::create(testCase.shouldLoad);
186 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(&loaderClient ); 194 OwnPtrWillBeRawPtr<LinkLoader> loader = LinkLoader::create(loaderClient. get());
187 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co m")), testCase.href); 195 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co m")), testCase.href);
188 NetworkHintsMock networkHints; 196 NetworkHintsMock networkHints;
189 loader->loadLink(LinkRelAttribute("preconnect"), 197 loader->loadLink(LinkRelAttribute("preconnect"),
190 testCase.crossOrigin, 198 testCase.crossOrigin,
191 String(), 199 String(),
192 String(), 200 String(),
193 hrefURL, 201 hrefURL,
194 dummyPageHolder->document(), 202 dummyPageHolder->document(),
195 networkHints); 203 networkHints);
196 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); 204 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect());
197 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); 205 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS());
198 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); 206 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin());
199 } 207 }
200 } 208 }
201 209
202 } // namespace blink 210 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/LinkLoaderClient.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698