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

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

Issue 2644083003: ResourceFetcherTest: introduce FetchTestingPlatformSupport (Closed)
Patch Set: style nits that could not be detected by cl format 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 15 matching lines...) Expand all
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "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/FetchTestingPlatformSupport.h"
36 #include "core/fetch/MemoryCache.h" 37 #include "core/fetch/MemoryCache.h"
37 #include "core/fetch/MockFetchContext.h" 38 #include "core/fetch/MockFetchContext.h"
38 #include "core/fetch/MockResource.h" 39 #include "core/fetch/MockResource.h"
39 #include "core/fetch/MockResourceClient.h" 40 #include "core/fetch/MockResourceClient.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"
48 #include "platform/network/ResourceError.h"
47 #include "platform/network/ResourceRequest.h" 49 #include "platform/network/ResourceRequest.h"
48 #include "platform/network/ResourceTimingInfo.h" 50 #include "platform/network/ResourceTimingInfo.h"
49 #include "platform/scheduler/test/fake_web_task_runner.h" 51 #include "platform/scheduler/test/fake_web_task_runner.h"
52 #include "platform/testing/TestingPlatformSupport.h"
50 #include "platform/testing/URLTestHelpers.h" 53 #include "platform/testing/URLTestHelpers.h"
51 #include "platform/testing/weburl_loader_mock.h" 54 #include "platform/testing/weburl_loader_mock.h"
55 #include "platform/testing/weburl_loader_mock_factory_impl.h"
52 #include "platform/weborigin/KURL.h" 56 #include "platform/weborigin/KURL.h"
53 #include "public/platform/Platform.h" 57 #include "public/platform/Platform.h"
58 #include "public/platform/WebURLLoader.h"
54 #include "public/platform/WebURLLoaderMockFactory.h" 59 #include "public/platform/WebURLLoaderMockFactory.h"
55 #include "public/platform/WebURLResponse.h" 60 #include "public/platform/WebURLResponse.h"
56 #include "testing/gtest/include/gtest/gtest.h" 61 #include "testing/gtest/include/gtest/gtest.h"
57 #include "wtf/Allocator.h" 62 #include "wtf/Allocator.h"
58 #include "wtf/PtrUtil.h" 63 #include "wtf/PtrUtil.h"
59 #include "wtf/Vector.h" 64 #include "wtf/Vector.h"
60 #include <memory> 65 #include <memory>
61 66
62 namespace blink { 67 namespace blink {
63 68
64 namespace { 69 namespace {
65 constexpr char kTestResourceFilename[] = "white-1x1.png"; 70 constexpr char kTestResourceFilename[] = "white-1x1.png";
66 constexpr char kTestResourceMimeType[] = "image/png"; 71 constexpr char kTestResourceMimeType[] = "image/png";
67 constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png 72 constexpr int kTestResourceSize = 103; // size of web/tests/data/white-1x1.png
68 } 73 }
69 74
70 class ResourceFetcherTest : public ::testing::Test {}; 75 class ResourceFetcherTest : public ::testing::Test {
76 public:
77 ResourceFetcherTest() = default;
78 ~ResourceFetcherTest() override = default;
79
80 protected:
81 MockFetchContext* context() { return m_platform->context(); }
82
83 ScopedTestingPlatformSupport<FetchTestingPlatformSupport> m_platform;
84
85 private:
86 DISALLOW_COPY_AND_ASSIGN(ResourceFetcherTest);
87 };
71 88
72 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) { 89 TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) {
73 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png"); 90 KURL secureURL(ParsedURLString, "https://secureorigin.test/image.png");
74 // Try to request a url. The request should fail, and a resource in an error 91 // 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. 92 // state should be returned, and no resource should be present in the cache.
76 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); 93 ResourceFetcher* fetcher = ResourceFetcher::create(nullptr);
77 ResourceRequest resourceRequest(secureURL); 94 ResourceRequest resourceRequest(secureURL);
78 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 95 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
79 FetchRequest fetchRequest = 96 FetchRequest fetchRequest =
80 FetchRequest(resourceRequest, FetchInitiatorInfo()); 97 FetchRequest(resourceRequest, FetchInitiatorInfo());
81 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 98 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
82 ASSERT_TRUE(resource); 99 ASSERT_TRUE(resource);
83 EXPECT_TRUE(resource->errorOccurred()); 100 EXPECT_TRUE(resource->errorOccurred());
84 EXPECT_TRUE(resource->resourceError().isAccessCheck()); 101 EXPECT_TRUE(resource->resourceError().isAccessCheck());
85 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL)); 102 EXPECT_FALSE(memoryCache()->resourceForURL(secureURL));
86 103
87 // Start by calling startLoad() directly, rather than via requestResource(). 104 // Start by calling startLoad() directly, rather than via requestResource().
88 // This shouldn't crash. 105 // This shouldn't crash.
89 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw)); 106 fetcher->startLoad(RawResource::create(secureURL, Resource::Raw));
90 } 107 }
91 108
92 TEST_F(ResourceFetcherTest, UseExistingResource) { 109 TEST_F(ResourceFetcherTest, UseExistingResource) {
93 ResourceFetcher* fetcher = ResourceFetcher::create( 110 ResourceFetcher* fetcher = ResourceFetcher::create(context());
94 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
95 111
96 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 112 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
97 ResourceResponse response; 113 ResourceResponse response;
98 response.setURL(url); 114 response.setURL(url);
99 response.setHTTPStatusCode(200); 115 response.setHTTPStatusCode(200);
100 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 116 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
101 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 117 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
102 url, kTestResourceFilename, WebString::fromUTF8(""), 118 url, kTestResourceFilename, WebString::fromUTF8(""),
103 WrappedResourceResponse(response)); 119 WrappedResourceResponse(response));
104 120
(...skipping 16 matching lines...) Expand all
121 memoryCache()->add(resource); 137 memoryCache()->add(resource);
122 ResourceResponse response; 138 ResourceResponse response;
123 response.setURL(url); 139 response.setURL(url);
124 response.setHTTPStatusCode(200); 140 response.setHTTPStatusCode(200);
125 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 141 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
126 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 142 response.setHTTPHeaderField(HTTPNames::Vary, "*");
127 resource->responseReceived(response, nullptr); 143 resource->responseReceived(response, nullptr);
128 resource->finish(); 144 resource->finish();
129 ASSERT_TRUE(resource->hasVaryHeader()); 145 ASSERT_TRUE(resource->hasVaryHeader());
130 146
131 ResourceFetcher* fetcher = ResourceFetcher::create( 147 ResourceFetcher* fetcher = ResourceFetcher::create(context());
132 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
133 ResourceRequest resourceRequest(url); 148 ResourceRequest resourceRequest(url);
134 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 149 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
135 FetchRequest fetchRequest = 150 FetchRequest fetchRequest =
136 FetchRequest(resourceRequest, FetchInitiatorInfo()); 151 FetchRequest(resourceRequest, FetchInitiatorInfo());
137 Platform::current()->getURLLoaderMockFactory()->registerURL( 152 Platform::current()->getURLLoaderMockFactory()->registerURL(
138 url, WebURLResponse(), ""); 153 url, WebURLResponse(), "");
139 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 154 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
140 EXPECT_NE(resource, newResource); 155 EXPECT_NE(resource, newResource);
141 newResource->loader()->cancel(); 156 newResource->loader()->cancel();
142 memoryCache()->remove(newResource); 157 memoryCache()->remove(newResource);
143 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 158 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
144 159
145 memoryCache()->remove(resource); 160 memoryCache()->remove(resource);
146 } 161 }
147 162
148 TEST_F(ResourceFetcherTest, NavigationTimingInfo) { 163 TEST_F(ResourceFetcherTest, NavigationTimingInfo) {
149 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 164 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
150 ResourceResponse response; 165 ResourceResponse response;
151 response.setURL(url); 166 response.setURL(url);
152 response.setHTTPStatusCode(200); 167 response.setHTTPStatusCode(200);
153 168
154 ResourceFetcher* fetcher = ResourceFetcher::create( 169 ResourceFetcher* fetcher = ResourceFetcher::create(context());
155 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
156 ResourceRequest resourceRequest(url); 170 ResourceRequest resourceRequest(url);
157 resourceRequest.setFrameType(WebURLRequest::FrameTypeNested); 171 resourceRequest.setFrameType(WebURLRequest::FrameTypeNested);
158 resourceRequest.setRequestContext(WebURLRequest::RequestContextForm); 172 resourceRequest.setRequestContext(WebURLRequest::RequestContextForm);
159 FetchRequest fetchRequest = 173 FetchRequest fetchRequest =
160 FetchRequest(resourceRequest, FetchInitiatorInfo()); 174 FetchRequest(resourceRequest, FetchInitiatorInfo());
161 Platform::current()->getURLLoaderMockFactory()->registerURL( 175 Platform::current()->getURLLoaderMockFactory()->registerURL(
162 url, WebURLResponse(), ""); 176 url, WebURLResponse(), "");
163 Resource* resource = 177 Resource* resource =
164 RawResource::fetchMainResource(fetchRequest, fetcher, SubstituteData()); 178 RawResource::fetchMainResource(fetchRequest, fetcher, SubstituteData());
165 resource->responseReceived(response, nullptr); 179 resource->responseReceived(response, nullptr);
(...skipping 13 matching lines...) Expand all
179 long long redirectEncodedDataLength = 123; 193 long long redirectEncodedDataLength = 123;
180 redirectResponse.setEncodedDataLength(redirectEncodedDataLength); 194 redirectResponse.setEncodedDataLength(redirectEncodedDataLength);
181 ResourceRequest redirectResourceRequest(url); 195 ResourceRequest redirectResourceRequest(url);
182 fetcher->recordResourceTimingOnRedirect(resource, redirectResponse, false); 196 fetcher->recordResourceTimingOnRedirect(resource, redirectResponse, false);
183 EXPECT_EQ(navigationTimingInfo->transferSize(), 197 EXPECT_EQ(navigationTimingInfo->transferSize(),
184 encodedDataLength + redirectEncodedDataLength); 198 encodedDataLength + redirectEncodedDataLength);
185 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 199 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
186 } 200 }
187 201
188 TEST_F(ResourceFetcherTest, VaryOnBack) { 202 TEST_F(ResourceFetcherTest, VaryOnBack) {
189 MockFetchContext* context = 203 context()->setCachePolicy(CachePolicyHistoryBuffer);
190 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource); 204 ResourceFetcher* fetcher = ResourceFetcher::create(context());
191 context->setCachePolicy(CachePolicyHistoryBuffer);
192 ResourceFetcher* fetcher = ResourceFetcher::create(context);
193 205
194 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 206 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
195 Resource* resource = RawResource::create(url, Resource::Raw); 207 Resource* resource = RawResource::create(url, Resource::Raw);
196 memoryCache()->add(resource); 208 memoryCache()->add(resource);
197 ResourceResponse response; 209 ResourceResponse response;
198 response.setURL(url); 210 response.setURL(url);
199 response.setHTTPStatusCode(200); 211 response.setHTTPStatusCode(200);
200 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 212 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
201 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 213 response.setHTTPHeaderField(HTTPNames::Vary, "*");
202 resource->responseReceived(response, nullptr); 214 resource->responseReceived(response, nullptr);
203 resource->finish(); 215 resource->finish();
204 ASSERT_TRUE(resource->hasVaryHeader()); 216 ASSERT_TRUE(resource->hasVaryHeader());
205 217
206 ResourceRequest resourceRequest(url); 218 ResourceRequest resourceRequest(url);
207 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 219 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
208 FetchRequest fetchRequest = 220 FetchRequest fetchRequest =
209 FetchRequest(resourceRequest, FetchInitiatorInfo()); 221 FetchRequest(resourceRequest, FetchInitiatorInfo());
210 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 222 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
211 EXPECT_EQ(resource, newResource); 223 EXPECT_EQ(resource, newResource);
212 224
213 memoryCache()->remove(newResource); 225 memoryCache()->remove(newResource);
214 } 226 }
215 227
216 TEST_F(ResourceFetcherTest, VaryResource) { 228 TEST_F(ResourceFetcherTest, VaryResource) {
217 ResourceFetcher* fetcher = ResourceFetcher::create( 229 ResourceFetcher* fetcher = ResourceFetcher::create(context());
218 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
219 230
220 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 231 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
221 ResourceResponse response; 232 ResourceResponse response;
222 response.setURL(url); 233 response.setURL(url);
223 response.setHTTPStatusCode(200); 234 response.setHTTPStatusCode(200);
224 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 235 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
225 response.setHTTPHeaderField(HTTPNames::Vary, "*"); 236 response.setHTTPHeaderField(HTTPNames::Vary, "*");
226 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 237 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
227 url, kTestResourceFilename, WebString::fromUTF8(""), 238 url, kTestResourceFilename, WebString::fromUTF8(""),
228 WrappedResourceResponse(response)); 239 WrappedResourceResponse(response));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) { 289 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading) {
279 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 290 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
280 ResourceResponse response; 291 ResourceResponse response;
281 response.setURL(url); 292 response.setURL(url);
282 response.setHTTPStatusCode(200); 293 response.setHTTPStatusCode(200);
283 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600"); 294 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
284 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890"); 295 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
285 URLTestHelpers::registerMockedURLLoadWithCustomResponse( 296 URLTestHelpers::registerMockedURLLoadWithCustomResponse(
286 url, kTestResourceFilename, WebString::fromUTF8(""), 297 url, kTestResourceFilename, WebString::fromUTF8(""),
287 WrappedResourceResponse(response)); 298 WrappedResourceResponse(response));
288 ResourceFetcher* fetcher1 = ResourceFetcher::create( 299 ResourceFetcher* fetcher1 = ResourceFetcher::create(context());
289 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
290 ResourceRequest request1(url); 300 ResourceRequest request1(url);
291 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); 301 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache");
292 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); 302 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo());
293 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1); 303 Resource* resource1 = MockResource::fetch(fetchRequest1, fetcher1);
294 Persistent<RequestSameResourceOnComplete> client = 304 Persistent<RequestSameResourceOnComplete> client =
295 new RequestSameResourceOnComplete(resource1); 305 new RequestSameResourceOnComplete(resource1);
296 resource1->addClient(client); 306 resource1->addClient(client);
297 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 307 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
298 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 308 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
299 EXPECT_TRUE(client->notifyFinishedCalled()); 309 EXPECT_TRUE(client->notifyFinishedCalled());
300 resource1->removeClient(client); 310 resource1->removeClient(client);
301 memoryCache()->remove(resource1); 311 memoryCache()->remove(resource1);
302 } 312 }
303 313
304 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) { 314 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) {
305 ResourceFetcher* fetcher = ResourceFetcher::create( 315 ResourceFetcher* fetcher = ResourceFetcher::create(context());
306 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
307 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo")); 316 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo"));
308 request.setRequestContext(WebURLRequest::RequestContextVideo); 317 request.setRequestContext(WebURLRequest::RequestContextVideo);
309 ResourceLoaderOptions options; 318 ResourceLoaderOptions options;
310 options.dataBufferingPolicy = DoNotBufferData; 319 options.dataBufferingPolicy = DoNotBufferData;
311 FetchRequest fetchRequest = 320 FetchRequest fetchRequest =
312 FetchRequest(request, FetchInitiatorTypeNames::internal, options); 321 FetchRequest(request, FetchInitiatorTypeNames::internal, options);
313 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher); 322 Resource* resource1 = RawResource::fetchMedia(fetchRequest, fetcher);
314 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher); 323 Resource* resource2 = RawResource::fetchMedia(fetchRequest, fetcher);
315 EXPECT_NE(resource1, resource2); 324 EXPECT_NE(resource1, resource2);
316 memoryCache()->remove(resource2); 325 memoryCache()->remove(resource2);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 // Regression test for http://crbug.com/594072. 370 // Regression test for http://crbug.com/594072.
362 // This emulates a modal dialog triggering a nested run loop inside 371 // This emulates a modal dialog triggering a nested run loop inside
363 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its 372 // ResourceLoader::cancel(). If the ResourceLoader doesn't promptly cancel its
364 // WebURLLoader before notifying its clients, a nested run loop may send a 373 // WebURLLoader before notifying its clients, a nested run loop may send a
365 // network response, leading to an invalid state transition in ResourceLoader. 374 // network response, leading to an invalid state transition in ResourceLoader.
366 TEST_F(ResourceFetcherTest, ResponseOnCancel) { 375 TEST_F(ResourceFetcherTest, ResponseOnCancel) {
367 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 376 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
368 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 377 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
369 kTestResourceMimeType); 378 kTestResourceMimeType);
370 379
371 ResourceFetcher* fetcher = ResourceFetcher::create( 380 ResourceFetcher* fetcher = ResourceFetcher::create(context());
372 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
373 ResourceRequest resourceRequest(url); 381 ResourceRequest resourceRequest(url);
374 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 382 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
375 FetchRequest fetchRequest = 383 FetchRequest fetchRequest =
376 FetchRequest(resourceRequest, FetchInitiatorInfo()); 384 FetchRequest(resourceRequest, FetchInitiatorInfo());
377 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 385 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
378 Persistent<ServeRequestsOnCompleteClient> client = 386 Persistent<ServeRequestsOnCompleteClient> client =
379 new ServeRequestsOnCompleteClient(); 387 new ServeRequestsOnCompleteClient();
380 resource->addClient(client); 388 resource->addClient(client);
381 resource->loader()->cancel(); 389 resource->loader()->cancel();
382 resource->removeClient(client); 390 resource->removeClient(client);
383 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 391 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
384 } 392 }
385 393
386 class ScopedMockRedirectRequester { 394 class ScopedMockRedirectRequester {
387 STACK_ALLOCATED(); 395 STACK_ALLOCATED();
388 WTF_MAKE_NONCOPYABLE(ScopedMockRedirectRequester); 396 WTF_MAKE_NONCOPYABLE(ScopedMockRedirectRequester);
389 397
390 public: 398 public:
391 ScopedMockRedirectRequester() : m_context(nullptr) {} 399 ScopedMockRedirectRequester(MockFetchContext* context) : m_context(context) {}
yhirano 2017/01/23 07:42:14 explicit
Takashi Toyoshima 2017/01/23 09:18:13 Done.
392 400
393 ~ScopedMockRedirectRequester() { cleanUp(); } 401 ~ScopedMockRedirectRequester() { cleanUp(); }
394 402
395 void registerRedirect(const WebString& fromURL, const WebString& toURL) { 403 void registerRedirect(const WebString& fromURL, const WebString& toURL) {
396 KURL redirectURL(ParsedURLString, fromURL); 404 KURL redirectURL(ParsedURLString, fromURL);
397 WebURLResponse redirectResponse; 405 WebURLResponse redirectResponse;
398 redirectResponse.setURL(redirectURL); 406 redirectResponse.setURL(redirectURL);
399 redirectResponse.setHTTPStatusCode(301); 407 redirectResponse.setHTTPStatusCode(301);
400 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL); 408 redirectResponse.setHTTPHeaderField(HTTPNames::Location, toURL);
401 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes); 409 redirectResponse.setEncodedDataLength(kRedirectResponseOverheadBytes);
402 Platform::current()->getURLLoaderMockFactory()->registerURL( 410 Platform::current()->getURLLoaderMockFactory()->registerURL(
403 redirectURL, redirectResponse, ""); 411 redirectURL, redirectResponse, "");
404 } 412 }
405 413
406 void registerFinalResource(const WebString& url) { 414 void registerFinalResource(const WebString& url) {
407 KURL finalURL(ParsedURLString, url); 415 KURL finalURL(ParsedURLString, url);
408 URLTestHelpers::registerMockedURLLoad(finalURL, kTestResourceFilename); 416 URLTestHelpers::registerMockedURLLoad(finalURL, kTestResourceFilename);
409 } 417 }
410 418
411 void request(const WebString& url) { 419 void request(const WebString& url) {
412 DCHECK(!m_context);
413 m_context =
414 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource);
415 ResourceFetcher* fetcher = ResourceFetcher::create(m_context); 420 ResourceFetcher* fetcher = ResourceFetcher::create(m_context);
416 ResourceRequest resourceRequest(url); 421 ResourceRequest resourceRequest(url);
417 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 422 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
418 FetchRequest fetchRequest = 423 FetchRequest fetchRequest =
419 FetchRequest(resourceRequest, FetchInitiatorInfo()); 424 FetchRequest(resourceRequest, FetchInitiatorInfo());
420 RawResource::fetch(fetchRequest, fetcher); 425 RawResource::fetch(fetchRequest, fetcher);
421 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 426 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
422 } 427 }
423 428
424 void cleanUp() { 429 void cleanUp() {
425 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs(); 430 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs();
426 memoryCache()->evictResources(); 431 memoryCache()->evictResources();
427 } 432 }
428 433
429 MockFetchContext* context() const { return m_context; }
430
431 private: 434 private:
432 Member<MockFetchContext> m_context; 435 Member<MockFetchContext> m_context;
433 }; 436 };
434 437
435 TEST_F(ResourceFetcherTest, SameOriginRedirect) { 438 TEST_F(ResourceFetcherTest, SameOriginRedirect) {
436 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html"; 439 const char redirectURL[] = "http://127.0.0.1:8000/redirect.html";
437 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 440 const char finalURL[] = "http://127.0.0.1:8000/final.html";
438 ScopedMockRedirectRequester requester; 441 ScopedMockRedirectRequester requester(context());
439 requester.registerRedirect(redirectURL, finalURL); 442 requester.registerRedirect(redirectURL, finalURL);
440 requester.registerFinalResource(finalURL); 443 requester.registerFinalResource(finalURL);
441 requester.request(redirectURL); 444 requester.request(redirectURL);
442 445
443 EXPECT_EQ(kRedirectResponseOverheadBytes + kTestResourceSize, 446 EXPECT_EQ(kRedirectResponseOverheadBytes + kTestResourceSize,
444 requester.context()->getTransferSize()); 447 context()->getTransferSize());
445 } 448 }
446 449
447 TEST_F(ResourceFetcherTest, CrossOriginRedirect) { 450 TEST_F(ResourceFetcherTest, CrossOriginRedirect) {
448 const char redirectURL[] = "http://otherorigin.test/redirect.html"; 451 const char redirectURL[] = "http://otherorigin.test/redirect.html";
449 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 452 const char finalURL[] = "http://127.0.0.1:8000/final.html";
450 ScopedMockRedirectRequester requester; 453 ScopedMockRedirectRequester requester(context());
451 requester.registerRedirect(redirectURL, finalURL); 454 requester.registerRedirect(redirectURL, finalURL);
452 requester.registerFinalResource(finalURL); 455 requester.registerFinalResource(finalURL);
453 requester.request(redirectURL); 456 requester.request(redirectURL);
454 457
455 EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); 458 EXPECT_EQ(kTestResourceSize, context()->getTransferSize());
456 } 459 }
457 460
458 TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) { 461 TEST_F(ResourceFetcherTest, ComplexCrossOriginRedirect) {
459 const char redirectURL1[] = "http://127.0.0.1:8000/redirect1.html"; 462 const char redirectURL1[] = "http://127.0.0.1:8000/redirect1.html";
460 const char redirectURL2[] = "http://otherorigin.test/redirect2.html"; 463 const char redirectURL2[] = "http://otherorigin.test/redirect2.html";
461 const char redirectURL3[] = "http://127.0.0.1:8000/redirect3.html"; 464 const char redirectURL3[] = "http://127.0.0.1:8000/redirect3.html";
462 const char finalURL[] = "http://127.0.0.1:8000/final.html"; 465 const char finalURL[] = "http://127.0.0.1:8000/final.html";
463 ScopedMockRedirectRequester requester; 466 ScopedMockRedirectRequester requester(context());
464 requester.registerRedirect(redirectURL1, redirectURL2); 467 requester.registerRedirect(redirectURL1, redirectURL2);
465 requester.registerRedirect(redirectURL2, redirectURL3); 468 requester.registerRedirect(redirectURL2, redirectURL3);
466 requester.registerRedirect(redirectURL3, finalURL); 469 requester.registerRedirect(redirectURL3, finalURL);
467 requester.registerFinalResource(finalURL); 470 requester.registerFinalResource(finalURL);
468 requester.request(redirectURL1); 471 requester.request(redirectURL1);
469 472
470 EXPECT_EQ(kTestResourceSize, requester.context()->getTransferSize()); 473 EXPECT_EQ(kTestResourceSize, context()->getTransferSize());
471 } 474 }
472 475
473 TEST_F(ResourceFetcherTest, SynchronousRequest) { 476 TEST_F(ResourceFetcherTest, SynchronousRequest) {
474 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 477 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
475 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 478 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
476 kTestResourceMimeType); 479 kTestResourceMimeType);
477 480
478 ResourceFetcher* fetcher = ResourceFetcher::create( 481 ResourceFetcher* fetcher = ResourceFetcher::create(context());
479 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
480 ResourceRequest resourceRequest(url); 482 ResourceRequest resourceRequest(url);
481 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 483 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
482 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo()); 484 FetchRequest fetchRequest(resourceRequest, FetchInitiatorInfo());
483 fetchRequest.makeSynchronous(); 485 fetchRequest.makeSynchronous();
484 Resource* resource = RawResource::fetch(fetchRequest, fetcher); 486 Resource* resource = RawResource::fetch(fetchRequest, fetcher);
485 EXPECT_TRUE(resource->isLoaded()); 487 EXPECT_TRUE(resource->isLoaded());
486 EXPECT_EQ(ResourceLoadPriorityHighest, 488 EXPECT_EQ(ResourceLoadPriorityHighest,
487 resource->resourceRequest().priority()); 489 resource->resourceRequest().priority());
488 490
489 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 491 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
490 memoryCache()->remove(resource); 492 memoryCache()->remove(resource);
491 } 493 }
492 494
493 TEST_F(ResourceFetcherTest, PreloadResourceTwice) { 495 TEST_F(ResourceFetcherTest, PreloadResourceTwice) {
494 ResourceFetcher* fetcher = ResourceFetcher::create( 496 ResourceFetcher* fetcher = ResourceFetcher::create(context());
495 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
496 497
497 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 498 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
498 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 499 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
499 kTestResourceMimeType); 500 kTestResourceMimeType);
500 501
501 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 502 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
502 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 503 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
503 ASSERT_TRUE(resource); 504 ASSERT_TRUE(resource);
504 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 505 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
505 fetcher->preloadStarted(resource); 506 fetcher->preloadStarted(resource);
506 507
507 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); 508 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
508 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); 509 Resource* newResource = MockResource::fetch(fetchRequest, fetcher);
509 EXPECT_EQ(resource, newResource); 510 EXPECT_EQ(resource, newResource);
510 fetcher->preloadStarted(resource); 511 fetcher->preloadStarted(resource);
511 512
512 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads); 513 fetcher->clearPreloads(ResourceFetcher::ClearAllPreloads);
513 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 514 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
514 EXPECT_FALSE(memoryCache()->contains(resource)); 515 EXPECT_FALSE(memoryCache()->contains(resource));
515 EXPECT_FALSE(resource->isPreloaded()); 516 EXPECT_FALSE(resource->isPreloaded());
516 } 517 }
517 518
518 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) { 519 TEST_F(ResourceFetcherTest, LinkPreloadResourceAndUse) {
519 ResourceFetcher* fetcher = ResourceFetcher::create( 520 ResourceFetcher* fetcher = ResourceFetcher::create(context());
520 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
521 521
522 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 522 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
523 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 523 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
524 kTestResourceMimeType); 524 kTestResourceMimeType);
525 525
526 // Link preload preload scanner 526 // Link preload preload scanner
527 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 527 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
528 fetchRequestOriginal.setLinkPreload(true); 528 fetchRequestOriginal.setLinkPreload(true);
529 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 529 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
530 ASSERT_TRUE(resource); 530 ASSERT_TRUE(resource);
(...skipping 15 matching lines...) Expand all
546 Resource* newResource = MockResource::fetch(fetchRequest, fetcher); 546 Resource* newResource = MockResource::fetch(fetchRequest, fetcher);
547 Persistent<MockResourceClient> client = new MockResourceClient(newResource); 547 Persistent<MockResourceClient> client = new MockResourceClient(newResource);
548 EXPECT_EQ(resource, newResource); 548 EXPECT_EQ(resource, newResource);
549 EXPECT_FALSE(resource->isLinkPreload()); 549 EXPECT_FALSE(resource->isLinkPreload());
550 550
551 // DCL reached 551 // DCL reached
552 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 552 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
553 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 553 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
554 EXPECT_TRUE(memoryCache()->contains(resource)); 554 EXPECT_TRUE(memoryCache()->contains(resource));
555 EXPECT_FALSE(resource->isPreloaded()); 555 EXPECT_FALSE(resource->isPreloaded());
556
557 memoryCache()->remove(resource);
556 } 558 }
557 559
558 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) { 560 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndUse) {
559 ResourceFetcher* fetcher = ResourceFetcher::create( 561 ResourceFetcher* fetcher = ResourceFetcher::create(context());
560 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); 562 ResourceFetcher* fetcher2 = ResourceFetcher::create(context());
561 ResourceFetcher* fetcher2 = ResourceFetcher::create(
562 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
563 563
564 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 564 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
565 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 565 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
566 kTestResourceMimeType); 566 kTestResourceMimeType);
567 567
568 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 568 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
569 fetchRequestOriginal.setLinkPreload(true); 569 fetchRequestOriginal.setLinkPreload(true);
570 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 570 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
571 ASSERT_TRUE(resource); 571 ASSERT_TRUE(resource);
572 EXPECT_TRUE(resource->isLinkPreload()); 572 EXPECT_TRUE(resource->isLinkPreload());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 EXPECT_TRUE(resource->isPreloaded()); 627 EXPECT_TRUE(resource->isPreloaded());
628 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 628 fetcher->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
629 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 629 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
630 EXPECT_TRUE(memoryCache()->contains(resource)); 630 EXPECT_TRUE(memoryCache()->contains(resource));
631 EXPECT_TRUE(resource->isPreloaded()); 631 EXPECT_TRUE(resource->isPreloaded());
632 632
633 // DCL reached on second fetcher 633 // DCL reached on second fetcher
634 fetcher2->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads); 634 fetcher2->clearPreloads(ResourceFetcher::ClearSpeculativeMarkupPreloads);
635 EXPECT_TRUE(memoryCache()->contains(resource)); 635 EXPECT_TRUE(memoryCache()->contains(resource));
636 EXPECT_FALSE(resource->isPreloaded()); 636 EXPECT_FALSE(resource->isPreloaded());
637
638 memoryCache()->remove(resource);
637 } 639 }
638 640
639 TEST_F(ResourceFetcherTest, Revalidate304) { 641 TEST_F(ResourceFetcherTest, Revalidate304) {
640 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 642 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
641 Resource* resource = RawResource::create(url, Resource::Raw); 643 Resource* resource = RawResource::create(url, Resource::Raw);
642 memoryCache()->add(resource); 644 memoryCache()->add(resource);
643 ResourceResponse response; 645 ResourceResponse response;
644 response.setURL(url); 646 response.setURL(url);
645 response.setHTTPStatusCode(304); 647 response.setHTTPStatusCode(304);
646 response.setHTTPHeaderField("etag", "1234567890"); 648 response.setHTTPHeaderField("etag", "1234567890");
647 resource->responseReceived(response, nullptr); 649 resource->responseReceived(response, nullptr);
648 resource->finish(); 650 resource->finish();
649 651
650 ResourceFetcher* fetcher = ResourceFetcher::create( 652 ResourceFetcher* fetcher = ResourceFetcher::create(context());
651 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
652 ResourceRequest resourceRequest(url); 653 ResourceRequest resourceRequest(url);
653 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal); 654 resourceRequest.setRequestContext(WebURLRequest::RequestContextInternal);
654 FetchRequest fetchRequest = 655 FetchRequest fetchRequest =
655 FetchRequest(resourceRequest, FetchInitiatorInfo()); 656 FetchRequest(resourceRequest, FetchInitiatorInfo());
656 Platform::current()->getURLLoaderMockFactory()->registerURL( 657 Platform::current()->getURLLoaderMockFactory()->registerURL(
657 url, WebURLResponse(), ""); 658 url, WebURLResponse(), "");
658 Resource* newResource = RawResource::fetch(fetchRequest, fetcher); 659 Resource* newResource = RawResource::fetch(fetchRequest, fetcher);
659 fetcher->stopFetching(); 660 fetcher->stopFetching();
660 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 661 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
661 662
662 EXPECT_NE(resource, newResource); 663 EXPECT_NE(resource, newResource);
663 } 664 }
664 665
665 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) { 666 TEST_F(ResourceFetcherTest, LinkPreloadResourceMultipleFetchersAndMove) {
666 ResourceFetcher* fetcher = ResourceFetcher::create( 667 ResourceFetcher* fetcher = ResourceFetcher::create(context());
667 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource)); 668 ResourceFetcher* fetcher2 = ResourceFetcher::create(context());
668 ResourceFetcher* fetcher2 = ResourceFetcher::create(
669 MockFetchContext::create(MockFetchContext::kShouldLoadNewResource));
670 669
671 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png"); 670 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.png");
672 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename, 671 URLTestHelpers::registerMockedURLLoad(url, kTestResourceFilename,
673 kTestResourceMimeType); 672 kTestResourceMimeType);
674 673
675 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo()); 674 FetchRequest fetchRequestOriginal = FetchRequest(url, FetchInitiatorInfo());
676 fetchRequestOriginal.setLinkPreload(true); 675 fetchRequestOriginal.setLinkPreload(true);
677 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher); 676 Resource* resource = MockResource::fetch(fetchRequestOriginal, fetcher);
678 ASSERT_TRUE(resource); 677 ASSERT_TRUE(resource);
679 EXPECT_TRUE(resource->isLinkPreload()); 678 EXPECT_TRUE(resource->isLinkPreload());
680 fetcher->preloadStarted(resource); 679 fetcher->preloadStarted(resource);
681 680
682 // Resource created by parser on the second fetcher 681 // Resource created by parser on the second fetcher
683 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo()); 682 FetchRequest fetchRequest2 = FetchRequest(url, FetchInitiatorInfo());
684 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2); 683 Resource* newResource2 = MockResource::fetch(fetchRequest2, fetcher2);
685 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2); 684 Persistent<MockResourceClient> client2 = new MockResourceClient(newResource2);
686 EXPECT_EQ(resource, newResource2); 685 EXPECT_EQ(resource, newResource2);
687 EXPECT_FALSE(fetcher2->isFetching()); 686 EXPECT_FALSE(fetcher2->isFetching());
688 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests(); 687 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
689 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 688 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
690 } 689 }
691 690
692 } // namespace blink 691 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698