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

Side by Side Diff: Source/core/fetch/CachingCorrectnessTest.cpp

Issue 229053004: Allow cache reuse of some requests with Cache-Control headers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/fetch/Resource.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014, Google Inc. All rights reserved. 2 * Copyright (c) 2014, 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 if (response.url().isNull()) 69 if (response.url().isNull())
70 response.setURL(KURL(ParsedURLString, kResourceURL)); 70 response.setURL(KURL(ParsedURLString, kResourceURL));
71 ResourcePtr<Resource> resource = 71 ResourcePtr<Resource> resource =
72 new Resource(ResourceRequest(response.url()), Resource::Raw); 72 new Resource(ResourceRequest(response.url()), Resource::Raw);
73 resource->setResponse(response); 73 resource->setResponse(response);
74 memoryCache()->add(resource.get()); 74 memoryCache()->add(resource.get());
75 75
76 return resource; 76 return resource;
77 } 77 }
78 78
79 ResourcePtr<Resource> resourceFromResourceRequest(ResourceRequest request)
80 {
81 if (request.url().isNull())
82 request.setURL(KURL(ParsedURLString, kResourceURL));
83 ResourcePtr<Resource> resource =
84 new Resource(request, Resource::Raw);
85 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceUR L), "text/html", 0, nullAtom, String()));
86 memoryCache()->add(resource.get());
87
88 return resource;
89 }
90
79 ResourcePtr<Resource> fetch() 91 ResourcePtr<Resource> fetch()
80 { 92 {
81 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc eURL)), FetchInitiatorInfo()); 93 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc eURL)), FetchInitiatorInfo());
82 return m_fetcher->fetchSynchronously(fetchRequest); 94 return m_fetcher->fetchSynchronously(fetchRequest);
83 } 95 }
84 96
85 private: 97 private:
86 // A simple platform that mocks out the clock, for cache freshness testing. 98 // A simple platform that mocks out the clock, for cache freshness testing.
87 class ProxyPlatform : public blink::Platform { 99 class ProxyPlatform : public blink::Platform {
88 public: 100 public:
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 274
263 ResourcePtr<Resource> fresh200Nocache = resourceFromResourceResponse(fresh20 0NocacheResponse); 275 ResourcePtr<Resource> fresh200Nocache = resourceFromResourceResponse(fresh20 0NocacheResponse);
264 276
265 // Advance the clock within the freshness period of this resource before we make a request. 277 // Advance the clock within the freshness period of this resource before we make a request.
266 advanceClock(24. * 60. * 60. - 15.); 278 advanceClock(24. * 60. * 60. - 15.);
267 279
268 ResourcePtr<Resource> fetched = fetch(); 280 ResourcePtr<Resource> fetched = fetch();
269 EXPECT_NE(fresh200Nocache, fetched); 281 EXPECT_NE(fresh200Nocache, fetched);
270 } 282 }
271 283
284 TEST_F(CachingCorrectnessTest, RequestWithNoCahe)
285 {
286 ResourceRequest noCacheRequest;
287 noCacheRequest.setHTTPHeaderField("Cache-Control", "no-cache");
288 ResourcePtr<Resource> noCacheResource = resourceFromResourceRequest(noCacheR equest);
289 ResourcePtr<Resource> fetched = fetch();
290 EXPECT_NE(noCacheResource, fetched);
291 }
292
272 TEST_F(CachingCorrectnessTest, FreshButNoStore) 293 TEST_F(CachingCorrectnessTest, FreshButNoStore)
273 { 294 {
274 ResourceResponse fresh200NostoreResponse; 295 ResourceResponse fresh200NostoreResponse;
275 fresh200NostoreResponse.setHTTPStatusCode(200); 296 fresh200NostoreResponse.setHTTPStatusCode(200);
276 fresh200NostoreResponse.setHTTPHeaderField("Date", kOriginalRequestDateAsStr ing); 297 fresh200NostoreResponse.setHTTPHeaderField("Date", kOriginalRequestDateAsStr ing);
277 fresh200NostoreResponse.setHTTPHeaderField("Expires", kOneDayAfterOriginalRe quest); 298 fresh200NostoreResponse.setHTTPHeaderField("Expires", kOneDayAfterOriginalRe quest);
278 fresh200NostoreResponse.setHTTPHeaderField("Cache-Control", "no-store"); 299 fresh200NostoreResponse.setHTTPHeaderField("Cache-Control", "no-store");
279 300
280 ResourcePtr<Resource> fresh200Nostore = resourceFromResourceResponse(fresh20 0NostoreResponse); 301 ResourcePtr<Resource> fresh200Nostore = resourceFromResourceResponse(fresh20 0NostoreResponse);
281 302
282 // Advance the clock within the freshness period of this resource before we make a request. 303 // Advance the clock within the freshness period of this resource before we make a request.
283 advanceClock(24. * 60. * 60. - 15.); 304 advanceClock(24. * 60. * 60. - 15.);
284 305
285 ResourcePtr<Resource> fetched = fetch(); 306 ResourcePtr<Resource> fetched = fetch();
286 EXPECT_NE(fresh200Nostore, fetched); 307 EXPECT_NE(fresh200Nostore, fetched);
287 } 308 }
288 309
310 TEST_F(CachingCorrectnessTest, RequestWithNoStore)
311 {
312 ResourceRequest noStoreRequest;
313 noStoreRequest.setHTTPHeaderField("Cache-Control", "no-store");
314 ResourcePtr<Resource> noStoreResource = resourceFromResourceRequest(noStoreR equest);
315 ResourcePtr<Resource> fetched = fetch();
316 EXPECT_NE(noStoreResource, fetched);
317 }
318
289 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour. 319 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour.
290 // See crbug.com/340088 . 320 // See crbug.com/340088 .
291 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate) 321 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate)
292 { 322 {
293 ResourceResponse fresh200MustRevalidateResponse; 323 ResourceResponse fresh200MustRevalidateResponse;
294 fresh200MustRevalidateResponse.setHTTPStatusCode(200); 324 fresh200MustRevalidateResponse.setHTTPStatusCode(200);
295 fresh200MustRevalidateResponse.setHTTPHeaderField("Date", kOriginalRequestDa teAsString); 325 fresh200MustRevalidateResponse.setHTTPHeaderField("Date", kOriginalRequestDa teAsString);
296 fresh200MustRevalidateResponse.setHTTPHeaderField("Expires", kOneDayAfterOri ginalRequest); 326 fresh200MustRevalidateResponse.setHTTPHeaderField("Expires", kOneDayAfterOri ginalRequest);
297 fresh200MustRevalidateResponse.setHTTPHeaderField("Cache-Control", "must-rev alidate"); 327 fresh200MustRevalidateResponse.setHTTPHeaderField("Cache-Control", "must-rev alidate");
298 328
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 firstResource->setResponse(fresh200Response); 398 firstResource->setResponse(fresh200Response);
369 memoryCache()->add(firstResource.get()); 399 memoryCache()->add(firstResource.get());
370 400
371 advanceClock(500.); 401 advanceClock(500.);
372 402
373 ResourcePtr<Resource> fetched = fetch(); 403 ResourcePtr<Resource> fetched = fetch();
374 EXPECT_NE(firstResource, fetched); 404 EXPECT_NE(firstResource, fetched);
375 } 405 }
376 406
377 } // namespace 407 } // namespace
OLDNEW
« no previous file with comments | « no previous file | Source/core/fetch/Resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698