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

Side by Side Diff: third_party/WebKit/Source/core/fetch/ResourceFetcherTest.cpp

Issue 2495003002: Loading: Factor out ResourceFetcherMockFetchContext (Closed)
Patch Set: enum k prefix 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/fetch/MockFetchContext.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 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, 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 18 matching lines...) Expand all
29 */ 29 */
30 30
31 #include "core/fetch/ResourceFetcher.h" 31 #include "core/fetch/ResourceFetcher.h"
32 32
33 #include "core/fetch/FetchInitiatorInfo.h" 33 #include "core/fetch/FetchInitiatorInfo.h"
34 #include "core/fetch/FetchInitiatorTypeNames.h" 34 #include "core/fetch/FetchInitiatorTypeNames.h"
35 #include "core/fetch/FetchRequest.h" 35 #include "core/fetch/FetchRequest.h"
36 #include "core/fetch/FontResource.h" 36 #include "core/fetch/FontResource.h"
37 #include "core/fetch/ImageResource.h" 37 #include "core/fetch/ImageResource.h"
38 #include "core/fetch/MemoryCache.h" 38 #include "core/fetch/MemoryCache.h"
39 #include "core/fetch/MockFetchContext.h"
39 #include "core/fetch/MockResourceClients.h" 40 #include "core/fetch/MockResourceClients.h"
40 #include "core/fetch/RawResource.h" 41 #include "core/fetch/RawResource.h"
41 #include "core/fetch/ResourceLoader.h" 42 #include "core/fetch/ResourceLoader.h"
42 #include "platform/WebTaskRunner.h" 43 #include "platform/WebTaskRunner.h"
43 #include "platform/exported/WrappedResourceResponse.h" 44 #include "platform/exported/WrappedResourceResponse.h"
44 #include "platform/heap/Handle.h" 45 #include "platform/heap/Handle.h"
45 #include "platform/heap/HeapAllocator.h" 46 #include "platform/heap/HeapAllocator.h"
46 #include "platform/heap/Member.h" 47 #include "platform/heap/Member.h"
47 #include "platform/network/ResourceRequest.h" 48 #include "platform/network/ResourceRequest.h"
48 #include "platform/network/ResourceTimingInfo.h" 49 #include "platform/network/ResourceTimingInfo.h"
(...skipping 10 matching lines...) Expand all
59 #include "wtf/Vector.h" 60 #include "wtf/Vector.h"
60 #include <memory> 61 #include <memory>
61 62
62 namespace blink { 63 namespace blink {
63 64
64 namespace { 65 namespace {
65 const char testImageFilename[] = "white-1x1.png"; 66 const char testImageFilename[] = "white-1x1.png";
66 const int testImageSize = 103; // size of web/tests/data/white-1x1.png 67 const int testImageSize = 103; // size of web/tests/data/white-1x1.png
67 } 68 }
68 69
69 class ResourceFetcherTestMockFetchContext : public FetchContext {
70 public:
71 static ResourceFetcherTestMockFetchContext* create() {
72 return new ResourceFetcherTestMockFetchContext;
73 }
74
75 virtual ~ResourceFetcherTestMockFetchContext() {}
76
77 bool allowImage(bool imagesEnabled, const KURL&) const override {
78 return true;
79 }
80 bool canRequest(Resource::Type,
81 const ResourceRequest&,
82 const KURL&,
83 const ResourceLoaderOptions&,
84 bool forPreload,
85 FetchRequest::OriginRestriction) const override {
86 return true;
87 }
88 bool shouldLoadNewResource(Resource::Type) const override { return true; }
89 WebTaskRunner* loadingTaskRunner() const override { return m_runner.get(); }
90
91 void setCachePolicy(CachePolicy policy) { m_policy = policy; }
92 CachePolicy getCachePolicy() const override { return m_policy; }
93 void setLoadComplete(bool complete) { m_complete = complete; }
94 bool isLoadComplete() const override { return m_complete; }
95
96 void addResourceTiming(
97 const ResourceTimingInfo& resourceTimingInfo) override {
98 m_transferSize = resourceTimingInfo.transferSize();
99 }
100 long long getTransferSize() const { return m_transferSize; }
101
102 private:
103 ResourceFetcherTestMockFetchContext()
104 : m_policy(CachePolicyVerify),
105 m_runner(wrapUnique(new scheduler::FakeWebTaskRunner)),
106 m_complete(false),
107 m_transferSize(-1) {}
108
109 CachePolicy m_policy;
110 std::unique_ptr<scheduler::FakeWebTaskRunner> m_runner;
111 bool m_complete;
112 long long m_transferSize;
113 };
114
115 class ResourceFetcherTest : public ::testing::Test {}; 70 class ResourceFetcherTest : public ::testing::Test {};
116 71
117 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) { 72 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) {
118 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png"); 73 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png");
119 // Try to request a url. The request should fail, and a resource in an error 74 // Try to request a url. The request should fail, and a resource in an error
120 // state should be returned, and no resource should be present in the cache. 75 // state should be returned, and no resource should be present in the cache.
121 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); 76 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr);
122 ResourceRequest resourceRequest(secureURL); 77 ResourceRequest resourceRequest(secureURL);
123 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 78 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
124 FetchRequest fetchRequest = 79 FetchRequest fetchRequest =
125 FetchRequest(resourceRequest, FetchInitiatorInfo()); 80 FetchRequest(resourceRequest, FetchInitiatorInfo());
126 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 81 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
127 ASSERT_TRUE(resource); 82 ASSERT_TRUE(resource);
128 EXPECT_TRUE(resource->errorOccurred()); 83 EXPECT_TRUE(resource->errorOccurred());
129 EXPECT_TRUE(resource->resourceError().isAccessCheck()); 84 EXPECT_TRUE(resource->resourceError().isAccessCheck());
130 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL)); 85 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL));
131 86
132 // Start by calling startLoad() directly, rather than via requestResource(). 87 // Start by calling startLoad() directly, rather than via requestResource().
133 // This shouldn't crash. 88 // This shouldn't crash.
134 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw)); 89 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw));
135 } 90 }
136 91
137 TEST_F(ResourceFetcherTest, UseExistingResource) { 92 TEST_F(ResourceFetcherTest, UseExistingResource) {
138 ResourceFetcher* fetcher = 93 ResourceFetcher* fetcher = ResourceFetcher::create(
139 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 94 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
140 95
141 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 96 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
142 ResourceResponse response; 97 ResourceResponse response;
143 response.setURL(url); 98 response.setURL(url);
144 response.setHTTPStatusCode(200); 99 response.setHTTPStatusCode(200);
145 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 100 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
146 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 101 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
147 url, testImageFilename, WebString::fromUTF8(""), 102 url, testImageFilename, WebString::fromUTF8(""),
148 WrappedResourceResponse(response)); 103 WrappedResourceResponse(response));
149 104
(...skipping 15 matching lines...) Expand all
165 memoryCache()->add(resource); 120 memoryCache()->add(resource);
166 ResourceResponse response; 121 ResourceResponse response;
167 response.setURL(url); 122 response.setURL(url);
168 response.setHTTPStatusCode(200); 123 response.setHTTPStatusCode(200);
169 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 124 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
170 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 125 response.setHTTPHeaderField(HTTPNames::Vary, "*");
171 resource->responseReceived(response, nullptr); 126 resource->responseReceived(response, nullptr);
172 resource->finish(); 127 resource->finish();
173 ASSERT_TRUE(resource->hasVaryHeader()); 128 ASSERT_TRUE(resource->hasVaryHeader());
174 129
175 ResourceFetcher* fetcher = 130 ResourceFetcher* fetcher = ResourceFetcher::create(
176 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 131 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
177 ResourceRequest resourceRequest(url); 132 ResourceRequest resourceRequest(url);
178 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 133 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
179 FetchRequest fetchRequest = 134 FetchRequest fetchRequest =
180 FetchRequest(resourceRequest, FetchInitiatorInfo()); 135 FetchRequest(resourceRequest, FetchInitiatorInfo());
181 Platform::current()->getURLLoaderMockFactory()->registerURL( 136 Platform::current()->getURLLoaderMockFactory()->registerURL(
182 url, WebURLResponse(), ""); 137 url, WebURLResponse(), "");
183 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 138 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
184 EXPECT_NE(resource, newResource); 139 EXPECT_NE(resource, newResource);
185 newResource->loader()->cancel(); 140 newResource->loader()->cancel();
186 memoryCache()->remove(newResource); 141 memoryCache()->remove(newResource);
187 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 142 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
188 143
189 memoryCache()->remove(resource); 144 memoryCache()->remove(resource);
190 } 145 }
191 146
192 TEST_F(ResourceFetcherTest, VaryOnBack) { 147 TEST_F(ResourceFetcherTest, VaryOnBack) {
193 ResourceFetcherTestMockFetchContext* context = 148 MockFetchContext* context =
194 ResourceFetcherTestMockFetchContext::create(); 149 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
195 context->setCachePolicy(CachePolicyHistoryBuffer); 150 context->setCachePolicy(CachePolicyHistoryBuffer);
196 ResourceFetcher* fetcher = ResourceFetcher::create(context); 151 ResourceFetcher* fetcher = ResourceFetcher::create(context);
197 152
198 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 153 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
199 Resource* resource = RawResource::create(url, Resource::Raw); 154 Resource* resource = RawResource::create(url, Resource::Raw);
200 memoryCache()->add(resource); 155 memoryCache()->add(resource);
201 ResourceResponse response; 156 ResourceResponse response;
202 response.setURL(url); 157 response.setURL(url);
203 response.setHTTPStatusCode(200); 158 response.setHTTPStatusCode(200);
204 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 159 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
205 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 160 response.setHTTPHeaderField(HTTPNames::Vary, "*");
206 resource->responseReceived(response, nullptr); 161 resource->responseReceived(response, nullptr);
207 resource->finish(); 162 resource->finish();
208 ASSERT_TRUE(resource->hasVaryHeader()); 163 ASSERT_TRUE(resource->hasVaryHeader());
209 164
210 ResourceRequest resourceRequest(url); 165 ResourceRequest resourceRequest(url);
211 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 166 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
212 FetchRequest fetchRequest = 167 FetchRequest fetchRequest =
213 FetchRequest(resourceRequest, FetchInitiatorInfo()); 168 FetchRequest(resourceRequest, FetchInitiatorInfo());
214 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 169 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
215 EXPECT_EQ(resource, newResource); 170 EXPECT_EQ(resource, newResource);
216 171
217 memoryCache()->remove(newResource); 172 memoryCache()->remove(newResource);
218 } 173 }
219 174
220 TEST_F(ResourceFetcherTest, VaryImage) { 175 TEST_F(ResourceFetcherTest, VaryImage) {
221 ResourceFetcher* fetcher = 176 ResourceFetcher* fetcher = ResourceFetcher::create(
222 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 177 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
223 178
224 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 179 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
225 ResourceResponse response; 180 ResourceResponse response;
226 response.setURL(url); 181 response.setURL(url);
227 response.setHTTPStatusCode(200); 182 response.setHTTPStatusCode(200);
228 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 183 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
229 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 184 response.setHTTPHeaderField(HTTPNames::Vary, "*");
230 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 185 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
231 url, testImageFilename, WebString::fromUTF8(""), 186 url, testImageFilename, WebString::fromUTF8(""),
232 WrappedResourceResponse(response)); 187 WrappedResourceResponse(response));
(...skipping 16 matching lines...) Expand all
249 : public GarbageCollectedFinalized<RequestSameResourceOnComplete>, 204 : public GarbageCollectedFinalized<RequestSameResourceOnComplete>,
250 public RawResourceClient { 205 public RawResourceClient {
251 USING_GARBAGE_COLLECTED_MIXIN(RequestSameResourceOnComplete); 206 USING_GARBAGE_COLLECTED_MIXIN(RequestSameResourceOnComplete);
252 207
253 public: 208 public:
254 explicit RequestSameResourceOnComplete(Resource* resource) 209 explicit RequestSameResourceOnComplete(Resource* resource)
255 : m_resource(resource), m_notifyFinishedCalled(false) {} 210 : m_resource(resource), m_notifyFinishedCalled(false) {}
256 211
257 void notifyFinished(Resource* resource) override { 212 void notifyFinished(Resource* resource) override {
258 EXPECT_EQ(m_resource, resource); 213 EXPECT_EQ(m_resource, resource);
259 ResourceFetcherTestMockFetchContext* context = 214 MockFetchContext* context =
260 ResourceFetcherTestMockFetchContext::create(); 215 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
261 context->setCachePolicy(CachePolicyRevalidate); 216 context->setCachePolicy(CachePolicyRevalidate);
262 ResourceFetcher* fetcher2 = ResourceFetcher::create(context); 217 ResourceFetcher* fetcher2 = ResourceFetcher::create(context);
263 FetchRequest fetchRequest2(m_resource->url(), FetchInitiatorInfo()); 218 FetchRequest fetchRequest2(m_resource->url(), FetchInitiatorInfo());
264 Resource* resource2 = ImageResource::fetch(fetchRequest2, fetcher2); 219 Resource* resource2 = ImageResource::fetch(fetchRequest2, fetcher2);
265 EXPECT_EQ(m_resource, resource2); 220 EXPECT_EQ(m_resource, resource2);
266 m_notifyFinishedCalled = true; 221 m_notifyFinishedCalled = true;
267 } 222 }
268 bool notifyFinishedCalled() const { return m_notifyFinishedCalled; } 223 bool notifyFinishedCalled() const { return m_notifyFinishedCalled; }
269 224
270 DEFINE_INLINE_TRACE() { 225 DEFINE_INLINE_TRACE() {
(...skipping 11 matching lines...) Expand all
282 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { 237 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) {
283 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 238 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
284 ResourceResponse response; 239 ResourceResponse response;
285 response.setURL(url); 240 response.setURL(url);
286 response.setHTTPStatusCode(200); 241 response.setHTTPStatusCode(200);
287 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 242 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
288 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); 243 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
289 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 244 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
290 url, testImageFilename, WebString::fromUTF8(""), 245 url, testImageFilename, WebString::fromUTF8(""),
291 WrappedResourceResponse(response)); 246 WrappedResourceResponse(response));
292 ResourceFetcher* fetcher1 = 247 ResourceFetcher* fetcher1 = ResourceFetcher::create(
293 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 248 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
294 ResourceRequest request1(url); 249 ResourceRequest request1(url);
295 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); 250 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache");
296 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); 251 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo());
297 Resource* resource1 = ImageResource::fetch(fetchRequest1, fetcher1); 252 Resource* resource1 = ImageResource::fetch(fetchRequest1, fetcher1);
298 Persistent<RequestSameResourceOnComplete> client = 253 Persistent<RequestSameResourceOnComplete> client =
299 new RequestSameResourceOnComplete(resource1); 254 new RequestSameResourceOnComplete(resource1);
300 resource1->addClient(client); 255 resource1->addClient(client);
301 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 256 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
302 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 257 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
303 EXPECT_TRUE(client->notifyFinishedCalled()); 258 EXPECT_TRUE(client->notifyFinishedCalled());
304 resource1->removeClient(client); 259 resource1->removeClient(client);
305 memoryCache()->remove(resource1); 260 memoryCache()->remove(resource1);
306 } 261 }
307 262
308 TEST_F(ResourceFetcherTest, RevalidateDeferedResourceFromTwoInitiators) { 263 TEST_F(ResourceFetcherTest, RevalidateDeferedResourceFromTwoInitiators) {
309 KURL url(ParsedURLString, "http://127.0.0.1:8000/font.woff"); 264 KURL url(ParsedURLString, "http://127.0.0.1:8000/font.woff");
310 ResourceResponse response; 265 ResourceResponse response;
311 response.setURL(url); 266 response.setURL(url);
312 response.setHTTPStatusCode(200); 267 response.setHTTPStatusCode(200);
313 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); 268 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
314 Platform::current()->getURLLoaderMockFactory()->registerURL( 269 Platform::current()->getURLLoaderMockFactory()->registerURL(
315 url, WrappedResourceResponse(response), ""); 270 url, WrappedResourceResponse(response), "");
316 271
317 ResourceFetcherTestMockFetchContext* context = 272 MockFetchContext* context =
318 ResourceFetcherTestMockFetchContext::create(); 273 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
319 ResourceFetcher* fetcher = ResourceFetcher::create(context); 274 ResourceFetcher* fetcher = ResourceFetcher::create(context);
320 275
321 // Fetch to cache a resource. 276 // Fetch to cache a resource.
322 ResourceRequest request1(url); 277 ResourceRequest request1(url);
323 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); 278 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo());
324 Resource* resource1 = FontResource::fetch(fetchRequest1, fetcher); 279 Resource* resource1 = FontResource::fetch(fetchRequest1, fetcher);
325 ASSERT_TRUE(resource1); 280 ASSERT_TRUE(resource1);
326 fetcher->startLoad(resource1); 281 fetcher->startLoad(resource1);
327 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 282 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
328 EXPECT_TRUE(resource1->isLoaded()); 283 EXPECT_TRUE(resource1->isLoaded());
(...skipping 27 matching lines...) Expand all
356 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 311 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
357 EXPECT_TRUE(resource3->isLoaded()); 312 EXPECT_TRUE(resource3->isLoaded());
358 EXPECT_FALSE(resource3->errorOccurred()); 313 EXPECT_FALSE(resource3->errorOccurred());
359 EXPECT_TRUE(resource2->isLoaded()); 314 EXPECT_TRUE(resource2->isLoaded());
360 EXPECT_FALSE(resource2->errorOccurred()); 315 EXPECT_FALSE(resource2->errorOccurred());
361 316
362 memoryCache()->remove(resource1); 317 memoryCache()->remove(resource1);
363 } 318 }
364 319
365 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) { 320 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) {
366 ResourceFetcher* fetcher = 321 ResourceFetcher* fetcher = ResourceFetcher::create(
367 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 322 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
368 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo")); 323 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo"));
369 request.setRequestContext(WebURLRequest::RequestContextVideo); 324 request.setRequestContext(WebURLRequest::RequestContextVideo);
370 ResourceLoaderOptions options; 325 ResourceLoaderOptions options;
371 options.dataBufferingPolicy = DoNotBufferData; 326 options.dataBufferingPolicy = DoNotBufferData;
372 FetchRequest fetchRequest = 327 FetchRequest fetchRequest =
373 FetchRequest(request, FetchInitiatorTypeNames::internal, options); 328 FetchRequest(request, FetchInitiatorTypeNames::internal, options);
374 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher); 329 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher);
375 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher); 330 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher);
376 EXPECT_NE(resource1, resource2); 331 EXPECT_NE(resource1, resource2);
377 memoryCache()->remove(resource2); 332 memoryCache()->remove(resource2);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 376
422 // Regression test for http://crbug.com/594072. 377 // Regression test for http://crbug.com/594072.
423 // This emulates a modal dialog triggering a nested run loop inside 378 // This emulates a modal dialog triggering a nested run loop inside
424 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its 379 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its
425 // WebURLLoader before notifying its clients, a nested run loop may send a 380 // WebURLLoader before notifying its clients, a nested run loop may send a
426 // network response, leading to an invalid state transition in ResourceLoader. 381 // network response, leading to an invalid state transition in ResourceLoader.
427 TEST_F(ResourceFetcherTest, ResponseOnCancel) { 382 TEST_F(ResourceFetcherTest, ResponseOnCancel) {
428 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 383 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
429 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); 384 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png");
430 385
431 ResourceFetcher* fetcher = 386 ResourceFetcher* fetcher = ResourceFetcher::create(
432 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 387 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
433 ResourceRequest resourceRequest(url); 388 ResourceRequest resourceRequest(url);
434 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 389 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
435 FetchRequest fetchRequest = 390 FetchRequest fetchRequest =
436 FetchRequest(resourceRequest, FetchInitiatorInfo()); 391 FetchRequest(resourceRequest, FetchInitiatorInfo());
437 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 392 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
438 Persistent<ServeRequestsOnCompleteClient> client = 393 Persistent<ServeRequestsOnCompleteClient> client =
439 new ServeRequestsOnCompleteClient(); 394 new ServeRequestsOnCompleteClient();
440 resource->addClient(client); 395 resource->addClient(client);
441 resource->loader()->cancel(); 396 resource->loader()->cancel();
442 resource->removeClient(client); 397 resource->removeClient(client);
(...skipping 20 matching lines...) Expand all
463 redirectURL, redirectResponse, ""); 418 redirectURL, redirectResponse, "");
464 } 419 }
465 420
466 void registerFinalResource(const WebString& url) { 421 void registerFinalResource(const WebString& url) {
467 KURL finalURL(ParsedURLString, url); 422 KURL finalURL(ParsedURLString, url);
468 URLTestHelpers::registerMockedURLLoad(finalURL, testImageFilename); 423 URLTestHelpers::registerMockedURLLoad(finalURL, testImageFilename);
469 } 424 }
470 425
471 void request(const WebString& url) { 426 void request(const WebString& url) {
472 DCHECK(!m_context); 427 DCHECK(!m_context);
473 m_context = ResourceFetcherTestMockFetchContext::create(); 428 m_context =
429 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
474 ResourceFetcher* fetcher = ResourceFetcher::create(m_context); 430 ResourceFetcher* fetcher = ResourceFetcher::create(m_context);
475 ResourceRequest resourceRequest(url); 431 ResourceRequest resourceRequest(url);
476 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 432 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
477 FetchRequest fetchRequest = 433 FetchRequest fetchRequest =
478 FetchRequest(resourceRequest, FetchInitiatorInfo()); 434 FetchRequest(resourceRequest, FetchInitiatorInfo());
479 RawResource::fetch(fetchRequest, fetcher); 435 RawResource::fetch(fetchRequest, fetcher);
480 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 436 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
481 } 437 }
482 438
483 void cleanUp() { 439 void cleanUp() {
484 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs(); 440 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs();
485 memoryCache()->evictResources(); 441 memoryCache()->evictResources();
486 } 442 }
487 443
488 ResourceFetcherTestMockFetchContext* context() const { return m_context; } 444 MockFetchContext* context() const { return m_context; }
489 445
490 private: 446 private:
491 Member<ResourceFetcherTestMockFetchContext> m_context; 447 Member<MockFetchContext> m_context;
492 }; 448 };
493 449
494 TEST_F(ResourceFetcherTest, SameOriginRedirect) { 450 TEST_F(ResourceFetcherTest, SameOriginRedirect) {
495 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html"; 451 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html";
496 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 452 const char finalURL[] = "http://127.0.0.1:8000/final.html";
497 ScopedMockRedirectRequester requester; 453 ScopedMockRedirectRequester requester;
498 requester.registerRedirect(redirectURL, finalURL); 454 requester.registerRedirect(redirectURL, finalURL);
499 requester.registerFinalResource(finalURL); 455 requester.registerFinalResource(finalURL);
500 requester.request(redirectURL); 456 requester.request(redirectURL);
501 457
(...skipping 24 matching lines...) Expand all
526 requester.registerFinalResource(finalURL); 482 requester.registerFinalResource(finalURL);
527 requester.request(redirectURL1); 483 requester.request(redirectURL1);
528 484
529 EXPECT_EQ(testImageSize, requester.context()->getTransferSize()); 485 EXPECT_EQ(testImageSize, requester.context()->getTransferSize());
530 } 486 }
531 487
532 TEST_F(ResourceFetcherTest, SynchronousRequest) { 488 TEST_F(ResourceFetcherTest, SynchronousRequest) {
533 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 489 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
534 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); 490 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png");
535 491
536 ResourceFetcher* fetcher = 492 ResourceFetcher* fetcher = ResourceFetcher::create(
537 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 493 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
538 ResourceRequest resourceRequest(url); 494 ResourceRequest resourceRequest(url);
539 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 495 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
540 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); 496 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo());
541 fetchRequest.makeSynchronous(); 497 fetchRequest.makeSynchronous();
542 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 498 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
543 EXPECT_TRUE(resource->isLoaded()); 499 EXPECT_TRUE(resource->isLoaded());
544 EXPECT_EQ(ResourceLoadPriorityHighest, 500 EXPECT_EQ(ResourceLoadPriorityHighest,
545 resource->resourceRequest().priority()); 501 resource->resourceRequest().priority());
546 502
547 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 503 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
548 memoryCache()->remove(resource); 504 memoryCache()->remove(resource);
549 } 505 }
550 506
551 TEST_F(ResourceFetcherTest, PreloadImageTwice) { 507 TEST_F(ResourceFetcherTest, PreloadImageTwice) {
552 ResourceFetcher* fetcher = 508 ResourceFetcher* fetcher = ResourceFetcher::create(
553 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 509 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
554 510
555 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 511 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
556 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); 512 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png");
557 513
558 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 514 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
559 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher); 515 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher);
560 ASSERT_TRUE(resource); 516 ASSERT_TRUE(resource);
561 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 517 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
562 fetcher->preloadStarted(resource); 518 fetcher->preloadStarted(resource);
563 519
564 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); 520 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
565 Resource* newResource = ImageResource::fetch(fetchRequest, fetcher); 521 Resource* newResource = ImageResource::fetch(fetchRequest, fetcher);
566 EXPECT_EQ(resource, newResource); 522 EXPECT_EQ(resource, newResource);
567 fetcher->preloadStarted(resource); 523 fetcher->preloadStarted(resource);
568 524
569 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); 525 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads);
570 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 526 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
571 EXPECT_FALSE(memoryCache()->contains(resource)); 527 EXPECT_FALSE(memoryCache()->contains(resource));
572 EXPECT_FALSE(resource->isPreloaded()); 528 EXPECT_FALSE(resource->isPreloaded());
573 } 529 }
574 530
575 TEST_F(ResourceFetcherTest, LinkPreloadImageAndUse) { 531 TEST_F(ResourceFetcherTest, LinkPreloadImageAndUse) {
576 ResourceFetcher* fetcher = 532 ResourceFetcher* fetcher = ResourceFetcher::create(
577 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 533 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
578 534
579 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 535 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
580 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); 536 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png");
581 537
582 // Link preload preload scanner 538 // Link preload preload scanner
583 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 539 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
584 fetchRequestOriginal.setLinkPreload(true); 540 fetchRequestOriginal.setLinkPreload(true);
585 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher); 541 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher);
586 ASSERT_TRUE(resource); 542 ASSERT_TRUE(resource);
587 EXPECT_TRUE(resource->isLinkPreload()); 543 EXPECT_TRUE(resource->isLinkPreload());
(...skipping 17 matching lines...) Expand all
605 EXPECT_FALSE(resource->isLinkPreload()); 561 EXPECT_FALSE(resource->isLinkPreload());
606 562
607 // DCL reached 563 // DCL reached
608 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 564 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
609 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 565 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
610 EXPECT_TRUE(memoryCache()->contains(resource)); 566 EXPECT_TRUE(memoryCache()->contains(resource));
611 EXPECT_FALSE(resource->isPreloaded()); 567 EXPECT_FALSE(resource->isPreloaded());
612 } 568 }
613 569
614 TEST_F(ResourceFetcherTest, LinkPreloadImageMultipleFetchersAndUse) { 570 TEST_F(ResourceFetcherTest, LinkPreloadImageMultipleFetchersAndUse) {
615 ResourceFetcher* fetcher = 571 ResourceFetcher* fetcher = ResourceFetcher::create(
616 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 572 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
617 ResourceFetcher* fetcher2 = 573 ResourceFetcher* fetcher2 = ResourceFetcher::create(
618 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 574 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
619 575
620 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 576 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
621 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png"); 577 URLTestHelpers::registerMockedURLLoad(url, testImageFilename, "image/png");
622 578
623 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 579 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
624 fetchRequestOriginal.setLinkPreload(true); 580 fetchRequestOriginal.setLinkPreload(true);
625 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher); 581 Resource* resource = ImageResource::fetch(fetchRequestOriginal, fetcher);
626 ASSERT_TRUE(resource); 582 ASSERT_TRUE(resource);
627 EXPECT_TRUE(resource->isLinkPreload()); 583 EXPECT_TRUE(resource->isLinkPreload());
628 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 584 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 650 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
695 Resource* resource = RawResource::create(url, Resource::Raw); 651 Resource* resource = RawResource::create(url, Resource::Raw);
696 memoryCache()->add(resource); 652 memoryCache()->add(resource);
697 ResourceResponse response; 653 ResourceResponse response;
698 response.setURL(url); 654 response.setURL(url);
699 response.setHTTPStatusCode(304); 655 response.setHTTPStatusCode(304);
700 response.setHTTPHeaderField("etag", "1234567890"); 656 response.setHTTPHeaderField("etag", "1234567890");
701 resource->responseReceived(response, nullptr); 657 resource->responseReceived(response, nullptr);
702 resource->finish(); 658 resource->finish();
703 659
704 ResourceFetcher* fetcher = 660 ResourceFetcher* fetcher = ResourceFetcher::create(
705 ResourceFetcher::create(ResourceFetcherTestMockFetchContext::create()); 661 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
706 ResourceRequest resourceRequest(url); 662 ResourceRequest resourceRequest(url);
707 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 663 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
708 FetchRequest fetchRequest = 664 FetchRequest fetchRequest =
709 FetchRequest(resourceRequest, FetchInitiatorInfo()); 665 FetchRequest(resourceRequest, FetchInitiatorInfo());
710 Platform::current()->getURLLoaderMockFactory()->registerURL( 666 Platform::current()->getURLLoaderMockFactory()->registerURL(
711 url, WebURLResponse(), ""); 667 url, WebURLResponse(), "");
712 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 668 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
713 fetcher->stopFetching(); 669 fetcher->stopFetching();
714 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 670 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
715 671
716 EXPECT_NE(resource, newResource); 672 EXPECT_NE(resource, newResource);
717 } 673 }
718 674
719 } // namespace blink 675 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/MockFetchContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698