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

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

Issue 2644083003: ResourceFetcherTest: introduce FetchTestingPlatformSupport (Closed)
Patch Set: Created 3 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
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 26 matching lines...) Expand all
37 #include "core/fetch/MockFetchContext.h" 37 #include "core/fetch/MockFetchContext.h"
38 #include "core/fetch/MockResource.h" 38 #include "core/fetch/MockResource.h"
39 #include "core/fetch/MockResourceClient.h" 39 #include "core/fetch/MockResourceClient.h"
40 #include "core/fetch/RawResource.h" 40 #include "core/fetch/RawResource.h"
41 #include "core/fetch/ResourceLoader.h" 41 #include "core/fetch/ResourceLoader.h"
42 #include "platform/WebTaskRunner.h" 42 #include "platform/WebTaskRunner.h"
43 #include "platform/exported/WrappedResourceResponse.h" 43 #include "platform/exported/WrappedResourceResponse.h"
44 #include "platform/heap/Handle.h" 44 #include "platform/heap/Handle.h"
45 #include "platform/heap/HeapAllocator.h" 45 #include "platform/heap/HeapAllocator.h"
46 #include "platform/heap/Member.h" 46 #include "platform/heap/Member.h"
47 #include "platform/network/ResourceError.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"
49 #include "platform/scheduler/test/fake_web_task_runner.h" 50 #include "platform/scheduler/test/fake_web_task_runner.h"
51 #include "platform/testing/TestingPlatformSupport.h"
50 #include "platform/testing/URLTestHelpers.h" 52 #include "platform/testing/URLTestHelpers.h"
51 #include "platform/testing/weburl_loader_mock.h" 53 #include "platform/testing/weburl_loader_mock.h"
54 #include "platform/testing/weburl_loader_mock_factory_impl.h"
52 #include "platform/weborigin/KURL.h" 55 #include "platform/weborigin/KURL.h"
53 #include "public/platform/Platform.h" 56 #include "public/platform/Platform.h"
57 #include "public/platform/WebURLLoader.h"
54 #include "public/platform/WebURLLoaderMockFactory.h" 58 #include "public/platform/WebURLLoaderMockFactory.h"
55 #include "public/platform/WebURLResponse.h" 59 #include "public/platform/WebURLResponse.h"
56 #include "testing/gtest/include/gtest/gtest.h" 60 #include "testing/gtest/include/gtest/gtest.h"
57 #include "wtf/Allocator.h" 61 #include "wtf/Allocator.h"
58 #include "wtf/PtrUtil.h" 62 #include "wtf/PtrUtil.h"
59 #include "wtf/Vector.h" 63 #include "wtf/Vector.h"
60 #include <memory> 64 #include <memory>
61 65
62 namespace blink { 66 namespace blink {
63 67
64 namespace { 68 namespace {
65 constexpr char kTestResourceFilename[] = "white-1x1.png"; 69 constexpr char kTestResourceFilename[] = "white-1x1.png";
66 constexpr char kTestResourceMimeType[] = "image/png"; 70 constexpr char kTestResourceMimeType[] = "image/png";
67 constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png 71 constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png
68 } 72 }
69 73
70 class ResourceFetcherTest : public ::testing::Test {}; 74 class FetchTestingWebURLLoaderMockFactory : public WebURLLoaderMockFactoryImpl {
75 public:
76 FetchTestingWebURLLoaderMockFactory()
77 : m_context(MockFetchContext::create(
78 MockFetchContext::kShouldLoadNewResource)) {}
79 ~FetchTestingWebURLLoaderMockFactory() override {}
80
81 MockFetchContext* context() { return m_context.get(); }
82
83 private:
84 void RunUntilIdle() override { m_context->runLoadingTaskRunnerUntilIdle(); }
85 Persistent<MockFetchContext> m_context;
86 };
87
88 class FetchTestingPlatform : public TestingPlatformSupportWithMockScheduler {
89 public:
90 FetchTestingPlatform()
91 : m_urlLoaderMockFactory(new FetchTestingWebURLLoaderMockFactory) {}
92 ~FetchTestingPlatform() override {}
93
94 // Platform:
95 WebURLError cancelledError(const WebURL& url) const override {
96 return ResourceError::ResourceError(errorDomainBlinkInternal, -1,
97 url.string(),
98 "cancelledError for testing");
99 }
100 WebURLLoaderMockFactory* getURLLoaderMockFactory() override {
101 return m_urlLoaderMockFactory.get();
102 }
103 WebURLLoader* createURLLoader() override {
104 return m_urlLoaderMockFactory->createURLLoader(
105 m_oldPlatform->createURLLoader());
106 }
107 MockFetchContext* context() { return m_urlLoaderMockFactory->context(); }
108
109 private:
110 std::unique_ptr<FetchTestingWebURLLoaderMockFactory> m_urlLoaderMockFactory;
111 };
112
113 class ResourceFetcherTest : public ::testing::Test {
114 public:
115 ResourceFetcherTest() {}
116 ~ResourceFetcherTest() override {}
117
118 protected:
119 MockFetchContext* context() { return m_platform->context(); }
120
121 ScopedTestingPlatformSupport<FetchTestingPlatform> m_platform;
122
123 private:
124 DISALLOW_COPY_AND_ASSIGN(ResourceFetcherTest);
125 };
71 126
72 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) { 127 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) {
73 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png"); 128 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png");
74 // Try to request a url. The request should fail, and a resource in an error 129 // Try to request a url. The request should fail, and a resource in an error
75 // state should be returned, and no resource should be present in the cache. 130 // state should be returned, and no resource should be present in the cache.
76 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); 131 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr);
77 ResourceRequest resourceRequest(secureURL); 132 ResourceRequest resourceRequest(secureURL);
78 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 133 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
79 FetchRequest fetchRequest = 134 FetchRequest fetchRequest =
80 FetchRequest(resourceRequest, FetchInitiatorInfo()); 135 FetchRequest(resourceRequest, FetchInitiatorInfo());
81 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 136 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
82 ASSERT_TRUE(resource); 137 ASSERT_TRUE(resource);
83 EXPECT_TRUE(resource->errorOccurred()); 138 EXPECT_TRUE(resource->errorOccurred());
84 EXPECT_TRUE(resource->resourceError().isAccessCheck()); 139 EXPECT_TRUE(resource->resourceError().isAccessCheck());
85 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL)); 140 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL));
86 141
87 // Start by calling startLoad() directly, rather than via requestResource(). 142 // Start by calling startLoad() directly, rather than via requestResource().
88 // This shouldn't crash. 143 // This shouldn't crash.
89 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw)); 144 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw));
90 } 145 }
91 146
92 TEST_F(ResourceFetcherTest, UseExistingResource) { 147 TEST_F(ResourceFetcherTest, UseExistingResource) {
93 ResourceFetcher* fetcher = ResourceFetcher::create( 148 ResourceFetcher* fetcher = ResourceFetcher::create(context());
94 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
95 149
96 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 150 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
97 ResourceResponse response; 151 ResourceResponse response;
98 response.setURL(url); 152 response.setURL(url);
99 response.setHTTPStatusCode(200); 153 response.setHTTPStatusCode(200);
100 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 154 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
101 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 155 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
102 url, kTestResourceFilename, WebString::fromUTF8(""), 156 url, kTestResourceFilename, WebString::fromUTF8(""),
103 WrappedResourceResponse(response)); 157 WrappedResourceResponse(response));
104 158
(...skipping 16 matching lines...) Expand all
121 memoryCache()->add(resource); 175 memoryCache()->add(resource);
122 ResourceResponse response; 176 ResourceResponse response;
123 response.setURL(url); 177 response.setURL(url);
124 response.setHTTPStatusCode(200); 178 response.setHTTPStatusCode(200);
125 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 179 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
126 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 180 response.setHTTPHeaderField(HTTPNames::Vary, "*");
127 resource->responseReceived(response, nullptr); 181 resource->responseReceived(response, nullptr);
128 resource->finish(); 182 resource->finish();
129 ASSERT_TRUE(resource->hasVaryHeader()); 183 ASSERT_TRUE(resource->hasVaryHeader());
130 184
131 ResourceFetcher* fetcher = ResourceFetcher::create( 185 ResourceFetcher* fetcher = ResourceFetcher::create(context());
132 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
133 ResourceRequest resourceRequest(url); 186 ResourceRequest resourceRequest(url);
134 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 187 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
135 FetchRequest fetchRequest = 188 FetchRequest fetchRequest =
136 FetchRequest(resourceRequest, FetchInitiatorInfo()); 189 FetchRequest(resourceRequest, FetchInitiatorInfo());
137 Platform::current()->getURLLoaderMockFactory()->registerURL( 190 Platform::current()->getURLLoaderMockFactory()->registerURL(
138 url, WebURLResponse(), ""); 191 url, WebURLResponse(), "");
139 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 192 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
140 EXPECT_NE(resource, newResource); 193 EXPECT_NE(resource, newResource);
141 newResource->loader()->cancel(); 194 newResource->loader()->cancel();
142 memoryCache()->remove(newResource); 195 memoryCache()->remove(newResource);
143 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 196 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
144 197
145 memoryCache()->remove(resource); 198 memoryCache()->remove(resource);
146 } 199 }
147 200
148 TEST_F(ResourceFetcherTest, NavigationTimingInfo) { 201 TEST_F(ResourceFetcherTest, NavigationTimingInfo) {
149 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 202 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
150 ResourceResponse response; 203 ResourceResponse response;
151 response.setURL(url); 204 response.setURL(url);
152 response.setHTTPStatusCode(200); 205 response.setHTTPStatusCode(200);
153 206
154 ResourceFetcher* fetcher = ResourceFetcher::create( 207 ResourceFetcher* fetcher = ResourceFetcher::create(context());
155 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
156 ResourceRequest resourceRequest(url); 208 ResourceRequest resourceRequest(url);
157 resourceRequest.setFrameType(WebURLRequest::FrameTypeNested); 209 resourceRequest.setFrameType(WebURLRequest::FrameTypeNested);
158 resourceRequest.setRequestContext(WebURLRequest::RequestContextForm); 210 resourceRequest.setRequestContext(WebURLRequest::RequestContextForm);
159 FetchRequest fetchRequest = 211 FetchRequest fetchRequest =
160 FetchRequest(resourceRequest, FetchInitiatorInfo()); 212 FetchRequest(resourceRequest, FetchInitiatorInfo());
161 Platform::current()->getURLLoaderMockFactory()->registerURL( 213 Platform::current()->getURLLoaderMockFactory()->registerURL(
162 url, WebURLResponse(), ""); 214 url, WebURLResponse(), "");
163 Resource* resource = 215 Resource* resource =
164 RawResource::fetchMainResource(fetchRequest, fetcher, SubstituteData()); 216 RawResource::fetchMainResource(fetchRequest, fetcher, SubstituteData());
165 resource->responseReceived(response, nullptr); 217 resource->responseReceived(response, nullptr);
(...skipping 13 matching lines...) Expand all
179 long long redirectEncodedDataLength = 123; 231 long long redirectEncodedDataLength = 123;
180 redirectResponse.setEncodedDataLength(redirectEncodedDataLength); 232 redirectResponse.setEncodedDataLength(redirectEncodedDataLength);
181 ResourceRequest redirectResourceRequest(url); 233 ResourceRequest redirectResourceRequest(url);
182 fetcher->recordResourceTimingOnRedirect(resource, redirectResponse, false); 234 fetcher->recordResourceTimingOnRedirect(resource, redirectResponse, false);
183 EXPECT_EQ(navigationTimingInfo->transferSize(), 235 EXPECT_EQ(navigationTimingInfo->transferSize(),
184 encodedDataLength + redirectEncodedDataLength); 236 encodedDataLength + redirectEncodedDataLength);
185 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 237 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
186 } 238 }
187 239
188 TEST_F(ResourceFetcherTest, VaryOnBack) { 240 TEST_F(ResourceFetcherTest, VaryOnBack) {
189 MockFetchContext* context = 241 context()->setCachePolicy(CachePolicyHistoryBuffer);
190 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource); 242 ResourceFetcher* fetcher = ResourceFetcher::create(context());
191 context->setCachePolicy(CachePolicyHistoryBuffer);
192 ResourceFetcher* fetcher = ResourceFetcher::create(context);
193 243
194 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 244 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
195 Resource* resource = RawResource::create(url, Resource::Raw); 245 Resource* resource = RawResource::create(url, Resource::Raw);
196 memoryCache()->add(resource); 246 memoryCache()->add(resource);
197 ResourceResponse response; 247 ResourceResponse response;
198 response.setURL(url); 248 response.setURL(url);
199 response.setHTTPStatusCode(200); 249 response.setHTTPStatusCode(200);
200 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 250 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
201 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 251 response.setHTTPHeaderField(HTTPNames::Vary, "*");
202 resource->responseReceived(response, nullptr); 252 resource->responseReceived(response, nullptr);
203 resource->finish(); 253 resource->finish();
204 ASSERT_TRUE(resource->hasVaryHeader()); 254 ASSERT_TRUE(resource->hasVaryHeader());
205 255
206 ResourceRequest resourceRequest(url); 256 ResourceRequest resourceRequest(url);
207 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 257 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
208 FetchRequest fetchRequest = 258 FetchRequest fetchRequest =
209 FetchRequest(resourceRequest, FetchInitiatorInfo()); 259 FetchRequest(resourceRequest, FetchInitiatorInfo());
210 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 260 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
211 EXPECT_EQ(resource, newResource); 261 EXPECT_EQ(resource, newResource);
212 262
213 memoryCache()->remove(newResource); 263 memoryCache()->remove(newResource);
214 } 264 }
215 265
216 TEST_F(ResourceFetcherTest, VaryResource) { 266 TEST_F(ResourceFetcherTest, VaryResource) {
217 ResourceFetcher* fetcher = ResourceFetcher::create( 267 ResourceFetcher* fetcher = ResourceFetcher::create(context());
218 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
219 268
220 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 269 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
221 ResourceResponse response; 270 ResourceResponse response;
222 response.setURL(url); 271 response.setURL(url);
223 response.setHTTPStatusCode(200); 272 response.setHTTPStatusCode(200);
224 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 273 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
225 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 274 response.setHTTPHeaderField(HTTPNames::Vary, "*");
226 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 275 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
227 url, kTestResourceFilename, WebString::fromUTF8(""), 276 url, kTestResourceFilename, WebString::fromUTF8(""),
228 WrappedResourceResponse(response)); 277 WrappedResourceResponse(response));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { 327 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) {
279 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 328 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
280 ResourceResponse response; 329 ResourceResponse response;
281 response.setURL(url); 330 response.setURL(url);
282 response.setHTTPStatusCode(200); 331 response.setHTTPStatusCode(200);
283 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 332 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
284 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); 333 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
285 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 334 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
286 url, kTestResourceFilename, WebString::fromUTF8(""), 335 url, kTestResourceFilename, WebString::fromUTF8(""),
287 WrappedResourceResponse(response)); 336 WrappedResourceResponse(response));
288 ResourceFetcher* fetcher1 = ResourceFetcher::create( 337 ResourceFetcher* fetcher1 = ResourceFetcher::create(context());
289 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
290 ResourceRequest request1(url); 338 ResourceRequest request1(url);
291 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); 339 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache");
292 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); 340 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo());
293 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1); 341 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1);
294 Persistent<RequestSameResourceOnComplete> client = 342 Persistent<RequestSameResourceOnComplete> client =
295 new RequestSameResourceOnComplete(resource1); 343 new RequestSameResourceOnComplete(resource1);
296 resource1->addClient(client); 344 resource1->addClient(client);
297 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 345 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
298 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 346 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
299 EXPECT_TRUE(client->notifyFinishedCalled()); 347 EXPECT_TRUE(client->notifyFinishedCalled());
300 resource1->removeClient(client); 348 resource1->removeClient(client);
301 memoryCache()->remove(resource1); 349 memoryCache()->remove(resource1);
302 } 350 }
303 351
304 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) { 352 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) {
305 ResourceFetcher* fetcher = ResourceFetcher::create( 353 ResourceFetcher* fetcher = ResourceFetcher::create(context());
306 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
307 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo")); 354 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo"));
308 request.setRequestContext(WebURLRequest::RequestContextVideo); 355 request.setRequestContext(WebURLRequest::RequestContextVideo);
309 ResourceLoaderOptions options; 356 ResourceLoaderOptions options;
310 options.dataBufferingPolicy = DoNotBufferData; 357 options.dataBufferingPolicy = DoNotBufferData;
311 FetchRequest fetchRequest = 358 FetchRequest fetchRequest =
312 FetchRequest(request, FetchInitiatorTypeNames::internal, options); 359 FetchRequest(request, FetchInitiatorTypeNames::internal, options);
313 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher); 360 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher);
314 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher); 361 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher);
315 EXPECT_NE(resource1, resource2); 362 EXPECT_NE(resource1, resource2);
316 memoryCache()->remove(resource2); 363 memoryCache()->remove(resource2);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 // Regression test for http://crbug.com/594072. 408 // Regression test for http://crbug.com/594072.
362 // This emulates a modal dialog triggering a nested run loop inside 409 // This emulates a modal dialog triggering a nested run loop inside
363 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its 410 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its
364 // WebURLLoader before notifying its clients, a nested run loop may send a 411 // WebURLLoader before notifying its clients, a nested run loop may send a
365 // network response, leading to an invalid state transition in ResourceLoader. 412 // network response, leading to an invalid state transition in ResourceLoader.
366 TEST_F(ResourceFetcherTest, ResponseOnCancel) { 413 TEST_F(ResourceFetcherTest, ResponseOnCancel) {
367 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 414 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
368 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 415 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
369 kTestResourceMimeType); 416 kTestResourceMimeType);
370 417
371 ResourceFetcher* fetcher = ResourceFetcher::create( 418 ResourceFetcher* fetcher = ResourceFetcher::create(context());
372 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
373 ResourceRequest resourceRequest(url); 419 ResourceRequest resourceRequest(url);
374 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 420 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
375 FetchRequest fetchRequest = 421 FetchRequest fetchRequest =
376 FetchRequest(resourceRequest, FetchInitiatorInfo()); 422 FetchRequest(resourceRequest, FetchInitiatorInfo());
377 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 423 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
378 Persistent<ServeRequestsOnCompleteClient> client = 424 Persistent<ServeRequestsOnCompleteClient> client =
379 new ServeRequestsOnCompleteClient(); 425 new ServeRequestsOnCompleteClient();
380 resource->addClient(client); 426 resource->addClient(client);
381 resource->loader()->cancel(); 427 resource->loader()->cancel();
382 resource->removeClient(client); 428 resource->removeClient(client);
383 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 429 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
384 } 430 }
385 431
386 class ScopedMockRedirectRequester { 432 class ScopedMockRedirectRequester {
387 STACK_ALLOCATED(); 433 STACK_ALLOCATED();
388 WTF_MAKE_NONCOPYABLE(ScopedMockRedirectRequester); 434 WTF_MAKE_NONCOPYABLE(ScopedMockRedirectRequester);
389 435
390 public: 436 public:
391 ScopedMockRedirectRequester() : m_context(nullptr) {} 437 ScopedMockRedirectRequester(MockFetchContext* context) : m_context(context) {}
392 438
393 ~ScopedMockRedirectRequester() { cleanUp(); } 439 ~ScopedMockRedirectRequester() { cleanUp(); }
394 440
395 void registerRedirect(const WebString& fromURL, const WebString& toURL) { 441 void registerRedirect(const WebString& fromURL, const WebString& toURL) {
396 KURL redirectURL(ParsedURLString, fromURL); 442 KURL redirectURL(ParsedURLString, fromURL);
397 WebURLResponse redirectResponse; 443 WebURLResponse redirectResponse;
398 redirectResponse.setURL(redirectURL); 444 redirectResponse.setURL(redirectURL);
399 redirectResponse.setHTTPStatusCode(301); 445 redirectResponse.setHTTPStatusCode(301);
400 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL); 446 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL);
401 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes); 447 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes);
402 Platform::current()->getURLLoaderMockFactory()->registerURL( 448 Platform::current()->getURLLoaderMockFactory()->registerURL(
403 redirectURL, redirectResponse, ""); 449 redirectURL, redirectResponse, "");
404 } 450 }
405 451
406 void registerFinalResource(const WebString& url) { 452 void registerFinalResource(const WebString& url) {
407 KURL finalURL(ParsedURLString, url); 453 KURL finalURL(ParsedURLString, url);
408 URLTestHelpers::registerMockedURLLoad(finalURL, kTestResourceFilename); 454 URLTestHelpers::registerMockedURLLoad(finalURL, kTestResourceFilename);
409 } 455 }
410 456
411 void request(const WebString& url) { 457 void request(const WebString& url) {
412 DCHECK(!m_context);
413 m_context =
414 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
415 ResourceFetcher* fetcher = ResourceFetcher::create(m_context); 458 ResourceFetcher* fetcher = ResourceFetcher::create(m_context);
416 ResourceRequest resourceRequest(url); 459 ResourceRequest resourceRequest(url);
417 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 460 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
418 FetchRequest fetchRequest = 461 FetchRequest fetchRequest =
419 FetchRequest(resourceRequest, FetchInitiatorInfo()); 462 FetchRequest(resourceRequest, FetchInitiatorInfo());
420 RawResource::fetch(fetchRequest, fetcher); 463 RawResource::fetch(fetchRequest, fetcher);
421 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 464 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
422 } 465 }
423 466
424 void cleanUp() { 467 void cleanUp() {
425 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs(); 468 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs();
426 memoryCache()->evictResources(); 469 memoryCache()->evictResources();
427 } 470 }
428 471
429 MockFetchContext* context() const { return m_context; }
430
431 private: 472 private:
432 Member<MockFetchContext> m_context; 473 Member<MockFetchContext> m_context;
433 }; 474 };
434 475
435 TEST_F(ResourceFetcherTest, SameOriginRedirect) { 476 TEST_F(ResourceFetcherTest, SameOriginRedirect) {
436 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html"; 477 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html";
437 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 478 const char finalURL[] = "http://127.0.0.1:8000/final.html";
438 ScopedMockRedirectRequester requester; 479 ScopedMockRedirectRequester requester(context());
439 requester.registerRedirect(redirectURL, finalURL); 480 requester.registerRedirect(redirectURL, finalURL);
440 requester.registerFinalResource(finalURL); 481 requester.registerFinalResource(finalURL);
441 requester.request(redirectURL); 482 requester.request(redirectURL);
442 483
443 EXPECT_EQ(kRedirectResponseOverheadBytes + kTestResourceSize, 484 EXPECT_EQ(kRedirectResponseOverheadBytes + kTestResourceSize,
444 requester.context()->getTransferSize()); 485 context()->getTransferSize());
445 } 486 }
446 487
447 TEST_F(ResourceFetcherTest, CrossOriginRedirect) { 488 TEST_F(ResourceFetcherTest, CrossOriginRedirect) {
448 const char redirectURL[] = "http://otherorigin.test/redirect.html"; 489 const char redirectURL[] = "http://otherorigin.test/redirect.html";
449 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 490 const char finalURL[] = "http://127.0.0.1:8000/final.html";
450 ScopedMockRedirectRequester requester; 491 ScopedMockRedirectRequester requester(context());
451 requester.registerRedirect(redirectURL, finalURL); 492 requester.registerRedirect(redirectURL, finalURL);
452 requester.registerFinalResource(finalURL); 493 requester.registerFinalResource(finalURL);
453 requester.request(redirectURL); 494 requester.request(redirectURL);
454 495
455 EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); 496 EXPECT_EQ(kTestResourceSize, context()->getTransferSize());
456 } 497 }
457 498
458 TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) { 499 TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) {
459 const char redirectURL1[] = "http://127.0.0.1:8000/redirect1.html"; 500 const char redirectURL1[] = "http://127.0.0.1:8000/redirect1.html";
460 const char redirectURL2[] = "http://otherorigin.test/redirect2.html"; 501 const char redirectURL2[] = "http://otherorigin.test/redirect2.html";
461 const char redirectURL3[] = "http://127.0.0.1:8000/redirect3.html"; 502 const char redirectURL3[] = "http://127.0.0.1:8000/redirect3.html";
462 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 503 const char finalURL[] = "http://127.0.0.1:8000/final.html";
463 ScopedMockRedirectRequester requester; 504 ScopedMockRedirectRequester requester(context());
464 requester.registerRedirect(redirectURL1, redirectURL2); 505 requester.registerRedirect(redirectURL1, redirectURL2);
465 requester.registerRedirect(redirectURL2, redirectURL3); 506 requester.registerRedirect(redirectURL2, redirectURL3);
466 requester.registerRedirect(redirectURL3, finalURL); 507 requester.registerRedirect(redirectURL3, finalURL);
467 requester.registerFinalResource(finalURL); 508 requester.registerFinalResource(finalURL);
468 requester.request(redirectURL1); 509 requester.request(redirectURL1);
469 510
470 EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); 511 EXPECT_EQ(kTestResourceSize, context()->getTransferSize());
471 } 512 }
472 513
473 TEST_F(ResourceFetcherTest, SynchronousRequest) { 514 TEST_F(ResourceFetcherTest, SynchronousRequest) {
474 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 515 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
475 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 516 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
476 kTestResourceMimeType); 517 kTestResourceMimeType);
477 518
478 ResourceFetcher* fetcher = ResourceFetcher::create( 519 ResourceFetcher* fetcher = ResourceFetcher::create(context());
479 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
480 ResourceRequest resourceRequest(url); 520 ResourceRequest resourceRequest(url);
481 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 521 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
482 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); 522 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo());
483 fetchRequest.makeSynchronous(); 523 fetchRequest.makeSynchronous();
484 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 524 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
485 EXPECT_TRUE(resource->isLoaded()); 525 EXPECT_TRUE(resource->isLoaded());
486 EXPECT_EQ(ResourceLoadPriorityHighest, 526 EXPECT_EQ(ResourceLoadPriorityHighest,
487 resource->resourceRequest().priority()); 527 resource->resourceRequest().priority());
488 528
489 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 529 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
490 memoryCache()->remove(resource); 530 memoryCache()->remove(resource);
491 } 531 }
492 532
493 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { 533 TEST_F(ResourceFetcherTest, PreloadResourceTwice) {
494 ResourceFetcher* fetcher = ResourceFetcher::create( 534 ResourceFetcher* fetcher = ResourceFetcher::create(context());
495 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
496 535
497 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 536 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
498 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 537 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
499 kTestResourceMimeType); 538 kTestResourceMimeType);
500 539
501 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 540 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
502 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 541 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
503 ASSERT_TRUE(resource); 542 ASSERT_TRUE(resource);
504 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 543 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
505 fetcher->preloadStarted(resource); 544 fetcher->preloadStarted(resource);
506 545
507 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); 546 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
508 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); 547 Resource* newResource = MockResource::fetch(fetchRequest, fetcher);
509 EXPECT_EQ(resource, newResource); 548 EXPECT_EQ(resource, newResource);
510 fetcher->preloadStarted(resource); 549 fetcher->preloadStarted(resource);
511 550
512 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); 551 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads);
513 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 552 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
514 EXPECT_FALSE(memoryCache()->contains(resource)); 553 EXPECT_FALSE(memoryCache()->contains(resource));
515 EXPECT_FALSE(resource->isPreloaded()); 554 EXPECT_FALSE(resource->isPreloaded());
516 } 555 }
517 556
518 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { 557 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) {
519 ResourceFetcher* fetcher = ResourceFetcher::create( 558 ResourceFetcher* fetcher = ResourceFetcher::create(context());
520 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
521 559
522 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 560 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
523 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 561 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
524 kTestResourceMimeType); 562 kTestResourceMimeType);
525 563
526 // Link preload preload scanner 564 // Link preload preload scanner
527 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 565 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
528 fetchRequestOriginal.setLinkPreload(true); 566 fetchRequestOriginal.setLinkPreload(true);
529 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 567 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
530 ASSERT_TRUE(resource); 568 ASSERT_TRUE(resource);
(...skipping 15 matching lines...) Expand all
546 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); 584 Resource* newResource = MockResource::fetch(fetchRequest, fetcher);
547 Persistent<MockResourceClient> client = new MockResourceClient(newResource); 585 Persistent<MockResourceClient> client = new MockResourceClient(newResource);
548 EXPECT_EQ(resource, newResource); 586 EXPECT_EQ(resource, newResource);
549 EXPECT_FALSE(resource->isLinkPreload()); 587 EXPECT_FALSE(resource->isLinkPreload());
550 588
551 // DCL reached 589 // DCL reached
552 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 590 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
553 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 591 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
554 EXPECT_TRUE(memoryCache()->contains(resource)); 592 EXPECT_TRUE(memoryCache()->contains(resource));
555 EXPECT_FALSE(resource->isPreloaded()); 593 EXPECT_FALSE(resource->isPreloaded());
594
595 memoryCache()->remove(resource);
556 } 596 }
557 597
558 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { 598 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) {
559 ResourceFetcher* fetcher = ResourceFetcher::create( 599 ResourceFetcher* fetcher = ResourceFetcher::create(context());
560 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); 600 ResourceFetcher* fetcher2 = ResourceFetcher::create(context());
561 ResourceFetcher* fetcher2 = ResourceFetcher::create(
562 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
563 601
564 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 602 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
565 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 603 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
566 kTestResourceMimeType); 604 kTestResourceMimeType);
567 605
568 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 606 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
569 fetchRequestOriginal.setLinkPreload(true); 607 fetchRequestOriginal.setLinkPreload(true);
570 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 608 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
571 ASSERT_TRUE(resource); 609 ASSERT_TRUE(resource);
572 EXPECT_TRUE(resource->isLinkPreload()); 610 EXPECT_TRUE(resource->isLinkPreload());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 EXPECT_TRUE(resource->isPreloaded()); 665 EXPECT_TRUE(resource->isPreloaded());
628 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 666 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
629 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 667 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
630 EXPECT_TRUE(memoryCache()->contains(resource)); 668 EXPECT_TRUE(memoryCache()->contains(resource));
631 EXPECT_TRUE(resource->isPreloaded()); 669 EXPECT_TRUE(resource->isPreloaded());
632 670
633 // DCL reached on second fetcher 671 // DCL reached on second fetcher
634 fetcher2->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 672 fetcher2->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
635 EXPECT_TRUE(memoryCache()->contains(resource)); 673 EXPECT_TRUE(memoryCache()->contains(resource));
636 EXPECT_FALSE(resource->isPreloaded()); 674 EXPECT_FALSE(resource->isPreloaded());
675
676 memoryCache()->remove(resource);
637 } 677 }
638 678
639 TEST_F(ResourceFetcherTest, Revalidate304) { 679 TEST_F(ResourceFetcherTest, Revalidate304) {
640 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 680 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
641 Resource* resource = RawResource::create(url, Resource::Raw); 681 Resource* resource = RawResource::create(url, Resource::Raw);
642 memoryCache()->add(resource); 682 memoryCache()->add(resource);
643 ResourceResponse response; 683 ResourceResponse response;
644 response.setURL(url); 684 response.setURL(url);
645 response.setHTTPStatusCode(304); 685 response.setHTTPStatusCode(304);
646 response.setHTTPHeaderField("etag", "1234567890"); 686 response.setHTTPHeaderField("etag", "1234567890");
647 resource->responseReceived(response, nullptr); 687 resource->responseReceived(response, nullptr);
648 resource->finish(); 688 resource->finish();
649 689
650 ResourceFetcher* fetcher = ResourceFetcher::create( 690 ResourceFetcher* fetcher = ResourceFetcher::create(context());
651 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
652 ResourceRequest resourceRequest(url); 691 ResourceRequest resourceRequest(url);
653 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 692 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
654 FetchRequest fetchRequest = 693 FetchRequest fetchRequest =
655 FetchRequest(resourceRequest, FetchInitiatorInfo()); 694 FetchRequest(resourceRequest, FetchInitiatorInfo());
656 Platform::current()->getURLLoaderMockFactory()->registerURL( 695 Platform::current()->getURLLoaderMockFactory()->registerURL(
657 url, WebURLResponse(), ""); 696 url, WebURLResponse(), "");
658 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 697 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
659 fetcher->stopFetching(); 698 fetcher->stopFetching();
660 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 699 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
661 700
662 EXPECT_NE(resource, newResource); 701 EXPECT_NE(resource, newResource);
663 } 702 }
664 703
665 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { 704 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) {
666 ResourceFetcher* fetcher = ResourceFetcher::create( 705 ResourceFetcher* fetcher = ResourceFetcher::create(context());
667 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); 706 ResourceFetcher* fetcher2 = ResourceFetcher::create(context());
668 ResourceFetcher* fetcher2 = ResourceFetcher::create(
669 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
670 707
671 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 708 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
672 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 709 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
673 kTestResourceMimeType); 710 kTestResourceMimeType);
674 711
675 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 712 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
676 fetchRequestOriginal.setLinkPreload(true); 713 fetchRequestOriginal.setLinkPreload(true);
677 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 714 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
678 ASSERT_TRUE(resource); 715 ASSERT_TRUE(resource);
679 EXPECT_TRUE(resource->isLinkPreload()); 716 EXPECT_TRUE(resource->isLinkPreload());
680 fetcher->preloadStarted(resource); 717 fetcher->preloadStarted(resource);
681 718
682 // Resource created by parser on the second fetcher 719 // Resource created by parser on the second fetcher
683 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo()); 720 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo());
684 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2); 721 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2);
685 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2); 722 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2);
686 EXPECT_EQ(resource, newResource2); 723 EXPECT_EQ(resource, newResource2);
687 EXPECT_FALSE(fetcher2->isFetching()); 724 EXPECT_FALSE(fetcher2->isFetching());
688 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 725 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
689 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 726 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
690 } 727 }
691 728
692 } // namespace blink 729 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698