| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |