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

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

Issue 2389643002: Reflow comments in core/fetch (Closed)
Patch Set: yoavs comments Created 4 years, 2 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) 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 break; 87 break;
88 case Resource::Image: 88 case Resource::Image:
89 resource = ImageResource::create(ResourceRequest(response.url())); 89 resource = ImageResource::create(ResourceRequest(response.url()));
90 break; 90 break;
91 default: 91 default:
92 EXPECT_TRUE(false) << "'Unreachable' code was reached"; 92 EXPECT_TRUE(false) << "'Unreachable' code was reached";
93 return nullptr; 93 return nullptr;
94 } 94 }
95 resource->setResponse(response); 95 resource->setResponse(response);
96 resource->finish(); 96 resource->finish();
97 // Because we didn't give any real data, an image will have set its 97 // Because we didn't give any real data, an image will have set its status
98 // status to DecodeError. Override it so the resource is cacaheable 98 // to DecodeError. Override it so the resource is cacaheable for testing
99 // for testing purposes. 99 // purposes.
100 if (type == Resource::Image) 100 if (type == Resource::Image)
101 resource->setStatus(Resource::Cached); 101 resource->setStatus(Resource::Cached);
102 memoryCache()->add(resource); 102 memoryCache()->add(resource);
103 103
104 return resource; 104 return resource;
105 } 105 }
106 106
107 Resource* resourceFromResourceRequest(ResourceRequest request, 107 Resource* resourceFromResourceRequest(ResourceRequest request,
108 Resource::Type type = Resource::Raw) { 108 Resource::Type type = Resource::Raw) {
109 if (request.url().isNull()) 109 if (request.url().isNull())
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 167
168 TEST_F(CachingCorrectnessTest, FreshFromLastModified) { 168 TEST_F(CachingCorrectnessTest, FreshFromLastModified) {
169 ResourceResponse fresh200Response; 169 ResourceResponse fresh200Response;
170 fresh200Response.setHTTPStatusCode(200); 170 fresh200Response.setHTTPStatusCode(200);
171 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 171 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
172 fresh200Response.setHTTPHeaderField("Last-Modified", 172 fresh200Response.setHTTPHeaderField("Last-Modified",
173 kOneDayBeforeOriginalRequest); 173 kOneDayBeforeOriginalRequest);
174 174
175 Resource* fresh200 = resourceFromResourceResponse(fresh200Response); 175 Resource* fresh200 = resourceFromResourceResponse(fresh200Response);
176 176
177 // Advance the clock within the implicit freshness period of this resource bef ore we make a request. 177 // Advance the clock within the implicit freshness period of this resource
178 // before we make a request.
178 advanceClock(600.); 179 advanceClock(600.);
179 180
180 Resource* fetched = fetch(); 181 Resource* fetched = fetch();
181 EXPECT_EQ(fresh200, fetched); 182 EXPECT_EQ(fresh200, fetched);
182 } 183 }
183 184
184 TEST_F(CachingCorrectnessTest, FreshFromExpires) { 185 TEST_F(CachingCorrectnessTest, FreshFromExpires) {
185 ResourceResponse fresh200Response; 186 ResourceResponse fresh200Response;
186 fresh200Response.setHTTPStatusCode(200); 187 fresh200Response.setHTTPStatusCode(200);
187 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 188 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
188 fresh200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); 189 fresh200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest);
189 190
190 Resource* fresh200 = resourceFromResourceResponse(fresh200Response); 191 Resource* fresh200 = resourceFromResourceResponse(fresh200Response);
191 192
192 // Advance the clock within the freshness period of this resource before we ma ke a request. 193 // Advance the clock within the freshness period of this resource before we
194 // make a request.
193 advanceClock(24. * 60. * 60. - 15.); 195 advanceClock(24. * 60. * 60. - 15.);
194 196
195 Resource* fetched = fetch(); 197 Resource* fetched = fetch();
196 EXPECT_EQ(fresh200, fetched); 198 EXPECT_EQ(fresh200, fetched);
197 } 199 }
198 200
199 TEST_F(CachingCorrectnessTest, FreshFromMaxAge) { 201 TEST_F(CachingCorrectnessTest, FreshFromMaxAge) {
200 ResourceResponse fresh200Response; 202 ResourceResponse fresh200Response;
201 fresh200Response.setHTTPStatusCode(200); 203 fresh200Response.setHTTPStatusCode(200);
202 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 204 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
203 fresh200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); 205 fresh200Response.setHTTPHeaderField("Cache-Control", "max-age=600");
204 206
205 Resource* fresh200 = resourceFromResourceResponse(fresh200Response); 207 Resource* fresh200 = resourceFromResourceResponse(fresh200Response);
206 208
207 // Advance the clock within the freshness period of this resource before we ma ke a request. 209 // Advance the clock within the freshness period of this resource before we
210 // make a request.
208 advanceClock(500.); 211 advanceClock(500.);
209 212
210 Resource* fetched = fetch(); 213 Resource* fetched = fetch();
211 EXPECT_EQ(fresh200, fetched); 214 EXPECT_EQ(fresh200, fetched);
212 } 215 }
213 216
214 // The strong validator causes a revalidation to be launched, and the proxy and original resources leak because of their reference loop. 217 // The strong validator causes a revalidation to be launched, and the proxy and
218 // original resources leak because of their reference loop.
215 TEST_F(CachingCorrectnessTest, DISABLED_ExpiredFromLastModified) { 219 TEST_F(CachingCorrectnessTest, DISABLED_ExpiredFromLastModified) {
216 ResourceResponse expired200Response; 220 ResourceResponse expired200Response;
217 expired200Response.setHTTPStatusCode(200); 221 expired200Response.setHTTPStatusCode(200);
218 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 222 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
219 expired200Response.setHTTPHeaderField("Last-Modified", 223 expired200Response.setHTTPHeaderField("Last-Modified",
220 kOneDayBeforeOriginalRequest); 224 kOneDayBeforeOriginalRequest);
221 225
222 Resource* expired200 = resourceFromResourceResponse(expired200Response); 226 Resource* expired200 = resourceFromResourceResponse(expired200Response);
223 227
224 // Advance the clock beyond the implicit freshness period. 228 // Advance the clock beyond the implicit freshness period.
225 advanceClock(24. * 60. * 60. * 0.2); 229 advanceClock(24. * 60. * 60. * 0.2);
226 230
227 Resource* fetched = fetch(); 231 Resource* fetched = fetch();
228 EXPECT_NE(expired200, fetched); 232 EXPECT_NE(expired200, fetched);
229 } 233 }
230 234
231 TEST_F(CachingCorrectnessTest, ExpiredFromExpires) { 235 TEST_F(CachingCorrectnessTest, ExpiredFromExpires) {
232 ResourceResponse expired200Response; 236 ResourceResponse expired200Response;
233 expired200Response.setHTTPStatusCode(200); 237 expired200Response.setHTTPStatusCode(200);
234 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 238 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
235 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); 239 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest);
236 240
237 Resource* expired200 = resourceFromResourceResponse(expired200Response); 241 Resource* expired200 = resourceFromResourceResponse(expired200Response);
238 242
239 // Advance the clock within the expiredness period of this resource before we make a request. 243 // Advance the clock within the expiredness period of this resource before we
244 // make a request.
240 advanceClock(24. * 60. * 60. + 15.); 245 advanceClock(24. * 60. * 60. + 15.);
241 246
242 Resource* fetched = fetch(); 247 Resource* fetched = fetch();
243 EXPECT_NE(expired200, fetched); 248 EXPECT_NE(expired200, fetched);
244 } 249 }
245 250
246 // If the image hasn't been loaded in this "document" before, then it shouldn't have list of available images logic. 251 // If the image hasn't been loaded in this "document" before, then it shouldn't
252 // have list of available images logic.
247 TEST_F(CachingCorrectnessTest, NewImageExpiredFromExpires) { 253 TEST_F(CachingCorrectnessTest, NewImageExpiredFromExpires) {
248 ResourceResponse expired200Response; 254 ResourceResponse expired200Response;
249 expired200Response.setHTTPStatusCode(200); 255 expired200Response.setHTTPStatusCode(200);
250 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 256 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
251 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); 257 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest);
252 258
253 Resource* expired200 = 259 Resource* expired200 =
254 resourceFromResourceResponse(expired200Response, Resource::Image); 260 resourceFromResourceResponse(expired200Response, Resource::Image);
255 261
256 // Advance the clock within the expiredness period of this resource before we make a request. 262 // Advance the clock within the expiredness period of this resource before we
263 // make a request.
257 advanceClock(24. * 60. * 60. + 15.); 264 advanceClock(24. * 60. * 60. + 15.);
258 265
259 Resource* fetched = fetchImage(); 266 Resource* fetched = fetchImage();
260 EXPECT_NE(expired200, fetched); 267 EXPECT_NE(expired200, fetched);
261 } 268 }
262 269
263 // If the image has been loaded in this "document" before, then it should have l ist of available images logic, and so 270 // If the image has been loaded in this "document" before, then it should have
264 // normal cache testing should be bypassed. 271 // list of available images logic, and so normal cache testing should be
272 // bypassed.
265 TEST_F(CachingCorrectnessTest, ReuseImageExpiredFromExpires) { 273 TEST_F(CachingCorrectnessTest, ReuseImageExpiredFromExpires) {
266 ResourceResponse expired200Response; 274 ResourceResponse expired200Response;
267 expired200Response.setHTTPStatusCode(200); 275 expired200Response.setHTTPStatusCode(200);
268 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 276 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
269 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); 277 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest);
270 278
271 Resource* expired200 = 279 Resource* expired200 =
272 resourceFromResourceResponse(expired200Response, Resource::Image); 280 resourceFromResourceResponse(expired200Response, Resource::Image);
273 281
274 // Advance the clock within the freshness period, and make a request to add th is image to the document resources. 282 // Advance the clock within the freshness period, and make a request to add
283 // this image to the document resources.
275 advanceClock(15.); 284 advanceClock(15.);
276 Resource* firstFetched = fetchImage(); 285 Resource* firstFetched = fetchImage();
277 EXPECT_EQ(expired200, firstFetched); 286 EXPECT_EQ(expired200, firstFetched);
278 287
279 // Advance the clock within the expiredness period of this resource before we make a request. 288 // Advance the clock within the expiredness period of this resource before we
289 // make a request.
280 advanceClock(24. * 60. * 60. + 15.); 290 advanceClock(24. * 60. * 60. + 15.);
281 291
282 Resource* fetched = fetchImage(); 292 Resource* fetched = fetchImage();
283 EXPECT_EQ(expired200, fetched); 293 EXPECT_EQ(expired200, fetched);
284 } 294 }
285 295
286 TEST_F(CachingCorrectnessTest, ExpiredFromMaxAge) { 296 TEST_F(CachingCorrectnessTest, ExpiredFromMaxAge) {
287 ResourceResponse expired200Response; 297 ResourceResponse expired200Response;
288 expired200Response.setHTTPStatusCode(200); 298 expired200Response.setHTTPStatusCode(200);
289 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); 299 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString);
290 expired200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); 300 expired200Response.setHTTPHeaderField("Cache-Control", "max-age=600");
291 301
292 Resource* expired200 = resourceFromResourceResponse(expired200Response); 302 Resource* expired200 = resourceFromResourceResponse(expired200Response);
293 303
294 // Advance the clock within the expiredness period of this resource before we make a request. 304 // Advance the clock within the expiredness period of this resource before we
305 // make a request.
295 advanceClock(700.); 306 advanceClock(700.);
296 307
297 Resource* fetched = fetch(); 308 Resource* fetched = fetch();
298 EXPECT_NE(expired200, fetched); 309 EXPECT_NE(expired200, fetched);
299 } 310 }
300 311
301 TEST_F(CachingCorrectnessTest, FreshButNoCache) { 312 TEST_F(CachingCorrectnessTest, FreshButNoCache) {
302 ResourceResponse fresh200NocacheResponse; 313 ResourceResponse fresh200NocacheResponse;
303 fresh200NocacheResponse.setHTTPStatusCode(200); 314 fresh200NocacheResponse.setHTTPStatusCode(200);
304 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Date, 315 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Date,
305 kOriginalRequestDateAsString); 316 kOriginalRequestDateAsString);
306 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Expires, 317 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Expires,
307 kOneDayAfterOriginalRequest); 318 kOneDayAfterOriginalRequest);
308 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Cache_Control, 319 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Cache_Control,
309 "no-cache"); 320 "no-cache");
310 321
311 Resource* fresh200Nocache = 322 Resource* fresh200Nocache =
312 resourceFromResourceResponse(fresh200NocacheResponse); 323 resourceFromResourceResponse(fresh200NocacheResponse);
313 324
314 // Advance the clock within the freshness period of this resource before we ma ke a request. 325 // Advance the clock within the freshness period of this resource before we
326 // make a request.
315 advanceClock(24. * 60. * 60. - 15.); 327 advanceClock(24. * 60. * 60. - 15.);
316 328
317 Resource* fetched = fetch(); 329 Resource* fetched = fetch();
318 EXPECT_NE(fresh200Nocache, fetched); 330 EXPECT_NE(fresh200Nocache, fetched);
319 } 331 }
320 332
321 TEST_F(CachingCorrectnessTest, RequestWithNoCahe) { 333 TEST_F(CachingCorrectnessTest, RequestWithNoCahe) {
322 ResourceRequest noCacheRequest; 334 ResourceRequest noCacheRequest;
323 noCacheRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); 335 noCacheRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache");
324 Resource* noCacheResource = resourceFromResourceRequest(noCacheRequest); 336 Resource* noCacheResource = resourceFromResourceRequest(noCacheRequest);
325 Resource* fetched = fetch(); 337 Resource* fetched = fetch();
326 EXPECT_NE(noCacheResource, fetched); 338 EXPECT_NE(noCacheResource, fetched);
327 } 339 }
328 340
329 TEST_F(CachingCorrectnessTest, FreshButNoStore) { 341 TEST_F(CachingCorrectnessTest, FreshButNoStore) {
330 ResourceResponse fresh200NostoreResponse; 342 ResourceResponse fresh200NostoreResponse;
331 fresh200NostoreResponse.setHTTPStatusCode(200); 343 fresh200NostoreResponse.setHTTPStatusCode(200);
332 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Date, 344 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Date,
333 kOriginalRequestDateAsString); 345 kOriginalRequestDateAsString);
334 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Expires, 346 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Expires,
335 kOneDayAfterOriginalRequest); 347 kOneDayAfterOriginalRequest);
336 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Cache_Control, 348 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Cache_Control,
337 "no-store"); 349 "no-store");
338 350
339 Resource* fresh200Nostore = 351 Resource* fresh200Nostore =
340 resourceFromResourceResponse(fresh200NostoreResponse); 352 resourceFromResourceResponse(fresh200NostoreResponse);
341 353
342 // Advance the clock within the freshness period of this resource before we ma ke a request. 354 // Advance the clock within the freshness period of this resource before we
355 // make a request.
343 advanceClock(24. * 60. * 60. - 15.); 356 advanceClock(24. * 60. * 60. - 15.);
344 357
345 Resource* fetched = fetch(); 358 Resource* fetched = fetch();
346 EXPECT_NE(fresh200Nostore, fetched); 359 EXPECT_NE(fresh200Nostore, fetched);
347 } 360 }
348 361
349 TEST_F(CachingCorrectnessTest, RequestWithNoStore) { 362 TEST_F(CachingCorrectnessTest, RequestWithNoStore) {
350 ResourceRequest noStoreRequest; 363 ResourceRequest noStoreRequest;
351 noStoreRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-store"); 364 noStoreRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-store");
352 Resource* noStoreResource = resourceFromResourceRequest(noStoreRequest); 365 Resource* noStoreResource = resourceFromResourceRequest(noStoreRequest);
353 Resource* fetched = fetch(); 366 Resource* fetched = fetch();
354 EXPECT_NE(noStoreResource, fetched); 367 EXPECT_NE(noStoreResource, fetched);
355 } 368 }
356 369
357 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour. 370 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour.
358 // See crbug.com/340088 . 371 // See crbug.com/340088 .
359 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate) { 372 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate) {
360 ResourceResponse fresh200MustRevalidateResponse; 373 ResourceResponse fresh200MustRevalidateResponse;
361 fresh200MustRevalidateResponse.setHTTPStatusCode(200); 374 fresh200MustRevalidateResponse.setHTTPStatusCode(200);
362 fresh200MustRevalidateResponse.setHTTPHeaderField( 375 fresh200MustRevalidateResponse.setHTTPHeaderField(
363 HTTPNames::Date, kOriginalRequestDateAsString); 376 HTTPNames::Date, kOriginalRequestDateAsString);
364 fresh200MustRevalidateResponse.setHTTPHeaderField( 377 fresh200MustRevalidateResponse.setHTTPHeaderField(
365 HTTPNames::Expires, kOneDayAfterOriginalRequest); 378 HTTPNames::Expires, kOneDayAfterOriginalRequest);
366 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Cache_Control, 379 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Cache_Control,
367 "must-revalidate"); 380 "must-revalidate");
368 381
369 Resource* fresh200MustRevalidate = 382 Resource* fresh200MustRevalidate =
370 resourceFromResourceResponse(fresh200MustRevalidateResponse); 383 resourceFromResourceResponse(fresh200MustRevalidateResponse);
371 384
372 // Advance the clock within the freshness period of this resource before we ma ke a request. 385 // Advance the clock within the freshness period of this resource before we
386 // make a request.
373 advanceClock(24. * 60. * 60. - 15.); 387 advanceClock(24. * 60. * 60. - 15.);
374 388
375 Resource* fetched = fetch(); 389 Resource* fetched = fetch();
376 EXPECT_NE(fresh200MustRevalidate, fetched); 390 EXPECT_NE(fresh200MustRevalidate, fetched);
377 } 391 }
378 392
379 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) { 393 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) {
380 KURL redirectUrl(ParsedURLString, kResourceURL); 394 KURL redirectUrl(ParsedURLString, kResourceURL);
381 const char redirectTargetUrlString[] = "http://redirect-target.com"; 395 const char redirectTargetUrlString[] = "http://redirect-target.com";
382 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); 396 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString);
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 firstResource->finish(); 602 firstResource->finish();
589 memoryCache()->add(firstResource); 603 memoryCache()->add(firstResource);
590 604
591 advanceClock(500.); 605 advanceClock(500.);
592 606
593 Resource* fetched = fetch(); 607 Resource* fetched = fetch();
594 EXPECT_EQ(firstResource, fetched); 608 EXPECT_EQ(firstResource, fetched);
595 } 609 }
596 610
597 } // namespace blink 611 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698