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

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

Issue 1923003002: Clear Resource::m_loader in Resource::finish() and Resource::error() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 ASSERT_TRUE(resource->hasVaryHeader()); 208 ASSERT_TRUE(resource->hasVaryHeader());
209 209
210 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); 210 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
211 Resource* newResource = fetcher->requestResource(fetchRequest, TestResourceF actory(Resource::Image)); 211 Resource* newResource = fetcher->requestResource(fetchRequest, TestResourceF actory(Resource::Image));
212 EXPECT_EQ(resource, newResource); 212 EXPECT_EQ(resource, newResource);
213 213
214 memoryCache()->remove(newResource); 214 memoryCache()->remove(newResource);
215 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 215 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
216 } 216 }
217 217
218 TEST_F(ResourceFetcherTest, RevalidateWhileLoading) 218 class RequestSameResourceOnComplete : public RawResourceClient {
219 public:
220 RequestSameResourceOnComplete(Resource* resource)
221 : m_resource(resource)
222 {
223 }
224
225 void notifyFinished(Resource* resource) override
226 {
227 ASSERT_EQ(m_resource, resource);
228 ResourceFetcherTestMockFetchContext* context = ResourceFetcherTestMockFe tchContext::create();
229 context->setCachePolicy(CachePolicyRevalidate);
230 ResourceFetcher* fetcher2 = ResourceFetcher::create(context);
231 FetchRequest fetchRequest2(m_resource->url(), FetchInitiatorInfo());
232 Resource* resource2 = fetcher2->requestResource(fetchRequest2, TestResou rceFactory(Resource::Image));
233 EXPECT_EQ(m_resource, resource2);
234 }
235 String debugName() const override { return "RequestSameResourceOnComplete"; }
236
237 private:
238 Persistent<Resource> m_resource;
239 };
240
241 TEST_F(ResourceFetcherTest, RevalidateWhileFinishingLoading)
Nate Chapin 2016/04/27 19:48:30 This is probably how this test should have been wr
219 { 242 {
220 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); 243 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
221 Platform::current()->getURLLoaderMockFactory()->registerURL(url, WebURLRespo nse(), ""); 244 ResourceResponse response;
245 response.setURL(url);
246 response.setHTTPStatusCode(200);
247 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
248 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
249 Platform::current()->getURLLoaderMockFactory()->registerURL(url, WrappedReso urceResponse(response), "");
222 250
223 ResourceFetcher* fetcher1 = ResourceFetcher::create(ResourceFetcherTestMockF etchContext::create()); 251 ResourceFetcher* fetcher1 = ResourceFetcher::create(ResourceFetcherTestMockF etchContext::create());
224 ResourceRequest request1(url); 252 ResourceRequest request1(url);
225 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); 253 request1.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache");
226 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo()); 254 FetchRequest fetchRequest1 = FetchRequest(request1, FetchInitiatorInfo());
227 Resource* resource1 = fetcher1->requestResource(fetchRequest1, TestResourceF actory(Resource::Image)); 255 Resource* resource1 = fetcher1->requestResource(fetchRequest1, TestResourceF actory(Resource::Image));
228 ResourceResponse response; 256 RequestSameResourceOnComplete client(resource1);
229 response.setURL(url); 257 resource1->addClient(&client);
230 response.setHTTPStatusCode(200); 258 Platform::current()->getURLLoaderMockFactory()->serveAsynchronousRequests();
231 response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=3600");
232 response.setHTTPHeaderField(HTTPNames::ETag, "1234567890");
233 resource1->responseReceived(response, nullptr);
234 resource1->finish();
235
236 ResourceFetcherTestMockFetchContext* context = ResourceFetcherTestMockFetchC ontext::create();
237 context->setCachePolicy(CachePolicyRevalidate);
238 ResourceFetcher* fetcher2 = ResourceFetcher::create(context);
239 FetchRequest fetchRequest2(url, FetchInitiatorInfo());
240 Resource* resource2 = fetcher2->requestResource(fetchRequest2, TestResourceF actory(Resource::Image));
241 EXPECT_EQ(resource1, resource2);
242
243 // Tidily(?) shut down the ResourceLoader.
244 resource1->loader()->cancel();
245 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 259 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
246 } 260 }
247 261
248 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl) 262 TEST_F(ResourceFetcherTest, DontReuseMediaDataUrl)
249 { 263 {
250 ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFe tchContext::create()); 264 ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFe tchContext::create());
251 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo")); 265 ResourceRequest request(KURL(ParsedURLString, "data:text/html,foo"));
252 ResourceLoaderOptions options; 266 ResourceLoaderOptions options;
253 options.dataBufferingPolicy = DoNotBufferData; 267 options.dataBufferingPolicy = DoNotBufferData;
254 FetchRequest fetchRequest = FetchRequest(request, FetchInitiatorTypeNames::i nternal, options); 268 FetchRequest fetchRequest = FetchRequest(request, FetchInitiatorTypeNames::i nternal, options);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFe tchContext::create()); 308 ResourceFetcher* fetcher = ResourceFetcher::create(ResourceFetcherTestMockFe tchContext::create());
295 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo()); 309 FetchRequest fetchRequest = FetchRequest(url, FetchInitiatorInfo());
296 Resource* resource = fetcher->requestResource(fetchRequest, TestResourceFact ory(Resource::Raw)); 310 Resource* resource = fetcher->requestResource(fetchRequest, TestResourceFact ory(Resource::Raw));
297 ServeRequestsOnCompleteClient client; 311 ServeRequestsOnCompleteClient client;
298 resource->addClient(&client); 312 resource->addClient(&client);
299 resource->loader()->cancel(); 313 resource->loader()->cancel();
300 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url); 314 Platform::current()->getURLLoaderMockFactory()->unregisterURL(url);
301 } 315 }
302 316
303 } // namespace blink 317 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698