| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 MockFetchContext() { } | 67 MockFetchContext() { } |
| 68 }; | 68 }; |
| 69 | 69 |
| 70 class CachingCorrectnessTest : public ::testing::Test { | 70 class CachingCorrectnessTest : public ::testing::Test { |
| 71 protected: | 71 protected: |
| 72 static void advanceClock(double seconds) | 72 static void advanceClock(double seconds) |
| 73 { | 73 { |
| 74 s_timeElapsed += seconds; | 74 s_timeElapsed += seconds; |
| 75 } | 75 } |
| 76 | 76 |
| 77 PassRefPtrWillBeRawPtr<Resource> resourceFromResourceResponse(ResourceRespon
se response, Resource::Type type = Resource::Raw) | 77 RawPtr<Resource> resourceFromResourceResponse(ResourceResponse response, Res
ource::Type type = Resource::Raw) |
| 78 { | 78 { |
| 79 if (response.url().isNull()) | 79 if (response.url().isNull()) |
| 80 response.setURL(KURL(ParsedURLString, kResourceURL)); | 80 response.setURL(KURL(ParsedURLString, kResourceURL)); |
| 81 RefPtrWillBeRawPtr<Resource> resource = nullptr; | 81 RawPtr<Resource> resource = nullptr; |
| 82 switch (type) { | 82 switch (type) { |
| 83 case Resource::Raw: | 83 case Resource::Raw: |
| 84 resource = Resource::create(ResourceRequest(response.url()), type); | 84 resource = Resource::create(ResourceRequest(response.url()), type); |
| 85 break; | 85 break; |
| 86 case Resource::Image: | 86 case Resource::Image: |
| 87 resource = ImageResource::create(ResourceRequest(response.url()), nu
llptr); | 87 resource = ImageResource::create(ResourceRequest(response.url()), nu
llptr); |
| 88 break; | 88 break; |
| 89 default: | 89 default: |
| 90 EXPECT_TRUE(false) << "'Unreachable' code was reached"; | 90 EXPECT_TRUE(false) << "'Unreachable' code was reached"; |
| 91 return nullptr; | 91 return nullptr; |
| 92 } | 92 } |
| 93 resource->setResponse(response); | 93 resource->setResponse(response); |
| 94 resource->finish(); | 94 resource->finish(); |
| 95 // Because we didn't give any real data, an image will have set its | 95 // Because we didn't give any real data, an image will have set its |
| 96 // status to DecodeError. Override it so the resource is cacaheable | 96 // status to DecodeError. Override it so the resource is cacaheable |
| 97 // for testing purposes. | 97 // for testing purposes. |
| 98 if (type == Resource::Image) | 98 if (type == Resource::Image) |
| 99 resource->setStatus(Resource::Cached); | 99 resource->setStatus(Resource::Cached); |
| 100 memoryCache()->add(resource.get()); | 100 memoryCache()->add(resource.get()); |
| 101 | 101 |
| 102 return resource; | 102 return resource; |
| 103 } | 103 } |
| 104 | 104 |
| 105 PassRefPtrWillBeRawPtr<Resource> resourceFromResourceRequest(ResourceRequest
request, Resource::Type type = Resource::Raw) | 105 RawPtr<Resource> resourceFromResourceRequest(ResourceRequest request, Resour
ce::Type type = Resource::Raw) |
| 106 { | 106 { |
| 107 if (request.url().isNull()) | 107 if (request.url().isNull()) |
| 108 request.setURL(KURL(ParsedURLString, kResourceURL)); | 108 request.setURL(KURL(ParsedURLString, kResourceURL)); |
| 109 RefPtrWillBeRawPtr<Resource> resource = | 109 RawPtr<Resource> resource = |
| 110 Resource::create(request, type); | 110 Resource::create(request, type); |
| 111 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceUR
L), "text/html", 0, nullAtom, String())); | 111 resource->setResponse(ResourceResponse(KURL(ParsedURLString, kResourceUR
L), "text/html", 0, nullAtom, String())); |
| 112 resource->finish(); | 112 resource->finish(); |
| 113 memoryCache()->add(resource.get()); | 113 memoryCache()->add(resource.get()); |
| 114 | 114 |
| 115 return resource; | 115 return resource; |
| 116 } | 116 } |
| 117 | 117 |
| 118 PassRefPtrWillBeRawPtr<Resource> fetch() | 118 RawPtr<Resource> fetch() |
| 119 { | 119 { |
| 120 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); | 120 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); |
| 121 return RawResource::fetchSynchronously(fetchRequest, fetcher()); | 121 return RawResource::fetchSynchronously(fetchRequest, fetcher()); |
| 122 } | 122 } |
| 123 | 123 |
| 124 PassRefPtrWillBeRawPtr<Resource> fetchImage() | 124 RawPtr<Resource> fetchImage() |
| 125 { | 125 { |
| 126 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); | 126 FetchRequest fetchRequest(ResourceRequest(KURL(ParsedURLString, kResourc
eURL)), FetchInitiatorInfo()); |
| 127 return ImageResource::fetch(fetchRequest, fetcher()); | 127 return ImageResource::fetch(fetchRequest, fetcher()); |
| 128 } | 128 } |
| 129 | 129 |
| 130 ResourceFetcher* fetcher() const { return m_fetcher.get(); } | 130 ResourceFetcher* fetcher() const { return m_fetcher.get(); } |
| 131 | 131 |
| 132 private: | 132 private: |
| 133 static double returnMockTime() | 133 static double returnMockTime() |
| 134 { | 134 { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 164 | 164 |
| 165 double CachingCorrectnessTest::s_timeElapsed; | 165 double CachingCorrectnessTest::s_timeElapsed; |
| 166 | 166 |
| 167 TEST_F(CachingCorrectnessTest, FreshFromLastModified) | 167 TEST_F(CachingCorrectnessTest, FreshFromLastModified) |
| 168 { | 168 { |
| 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", kOneDayBeforeOriginalRe
quest); | 172 fresh200Response.setHTTPHeaderField("Last-Modified", kOneDayBeforeOriginalRe
quest); |
| 173 | 173 |
| 174 RefPtrWillBeRawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh20
0Response); | 174 RawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh200Response); |
| 175 | 175 |
| 176 // Advance the clock within the implicit freshness period of this resource b
efore we make a request. | 176 // Advance the clock within the implicit freshness period of this resource b
efore we make a request. |
| 177 advanceClock(600.); | 177 advanceClock(600.); |
| 178 | 178 |
| 179 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 179 RawPtr<Resource> fetched = fetch(); |
| 180 EXPECT_EQ(fresh200, fetched); | 180 EXPECT_EQ(fresh200, fetched); |
| 181 } | 181 } |
| 182 | 182 |
| 183 TEST_F(CachingCorrectnessTest, FreshFromExpires) | 183 TEST_F(CachingCorrectnessTest, FreshFromExpires) |
| 184 { | 184 { |
| 185 ResourceResponse fresh200Response; | 185 ResourceResponse fresh200Response; |
| 186 fresh200Response.setHTTPStatusCode(200); | 186 fresh200Response.setHTTPStatusCode(200); |
| 187 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 187 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 188 fresh200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); | 188 fresh200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest); |
| 189 | 189 |
| 190 RefPtrWillBeRawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh20
0Response); | 190 RawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh200Response); |
| 191 | 191 |
| 192 // Advance the clock within the freshness period of this resource before we
make a request. | 192 // Advance the clock within the freshness period of this resource before we
make a request. |
| 193 advanceClock(24. * 60. * 60. - 15.); | 193 advanceClock(24. * 60. * 60. - 15.); |
| 194 | 194 |
| 195 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 195 RawPtr<Resource> fetched = fetch(); |
| 196 EXPECT_EQ(fresh200, fetched); | 196 EXPECT_EQ(fresh200, fetched); |
| 197 } | 197 } |
| 198 | 198 |
| 199 TEST_F(CachingCorrectnessTest, FreshFromMaxAge) | 199 TEST_F(CachingCorrectnessTest, FreshFromMaxAge) |
| 200 { | 200 { |
| 201 ResourceResponse fresh200Response; | 201 ResourceResponse fresh200Response; |
| 202 fresh200Response.setHTTPStatusCode(200); | 202 fresh200Response.setHTTPStatusCode(200); |
| 203 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 203 fresh200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 204 fresh200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); | 204 fresh200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); |
| 205 | 205 |
| 206 RefPtrWillBeRawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh20
0Response); | 206 RawPtr<Resource> fresh200 = resourceFromResourceResponse(fresh200Response); |
| 207 | 207 |
| 208 // Advance the clock within the freshness period of this resource before we
make a request. | 208 // Advance the clock within the freshness period of this resource before we
make a request. |
| 209 advanceClock(500.); | 209 advanceClock(500.); |
| 210 | 210 |
| 211 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 211 RawPtr<Resource> fetched = fetch(); |
| 212 EXPECT_EQ(fresh200, fetched); | 212 EXPECT_EQ(fresh200, fetched); |
| 213 } | 213 } |
| 214 | 214 |
| 215 // The strong validator causes a revalidation to be launched, and the proxy and
original resources leak because of their reference loop. | 215 // The strong validator causes a revalidation to be launched, and the proxy and
original resources leak because of their reference loop. |
| 216 TEST_F(CachingCorrectnessTest, DISABLED_ExpiredFromLastModified) | 216 TEST_F(CachingCorrectnessTest, DISABLED_ExpiredFromLastModified) |
| 217 { | 217 { |
| 218 ResourceResponse expired200Response; | 218 ResourceResponse expired200Response; |
| 219 expired200Response.setHTTPStatusCode(200); | 219 expired200Response.setHTTPStatusCode(200); |
| 220 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 220 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 221 expired200Response.setHTTPHeaderField("Last-Modified", kOneDayBeforeOriginal
Request); | 221 expired200Response.setHTTPHeaderField("Last-Modified", kOneDayBeforeOriginal
Request); |
| 222 | 222 |
| 223 RefPtrWillBeRawPtr<Resource> expired200 = resourceFromResourceResponse(expir
ed200Response); | 223 RawPtr<Resource> expired200 = resourceFromResourceResponse(expired200Respons
e); |
| 224 | 224 |
| 225 // Advance the clock beyond the implicit freshness period. | 225 // Advance the clock beyond the implicit freshness period. |
| 226 advanceClock(24. * 60. * 60. * 0.2); | 226 advanceClock(24. * 60. * 60. * 0.2); |
| 227 | 227 |
| 228 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 228 RawPtr<Resource> fetched = fetch(); |
| 229 EXPECT_NE(expired200, fetched); | 229 EXPECT_NE(expired200, fetched); |
| 230 } | 230 } |
| 231 | 231 |
| 232 TEST_F(CachingCorrectnessTest, ExpiredFromExpires) | 232 TEST_F(CachingCorrectnessTest, ExpiredFromExpires) |
| 233 { | 233 { |
| 234 ResourceResponse expired200Response; | 234 ResourceResponse expired200Response; |
| 235 expired200Response.setHTTPStatusCode(200); | 235 expired200Response.setHTTPStatusCode(200); |
| 236 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 236 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 237 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); | 237 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); |
| 238 | 238 |
| 239 RefPtrWillBeRawPtr<Resource> expired200 = resourceFromResourceResponse(expir
ed200Response); | 239 RawPtr<Resource> expired200 = resourceFromResourceResponse(expired200Respons
e); |
| 240 | 240 |
| 241 // Advance the clock within the expiredness period of this resource before w
e make a request. | 241 // Advance the clock within the expiredness period of this resource before w
e make a request. |
| 242 advanceClock(24. * 60. * 60. + 15.); | 242 advanceClock(24. * 60. * 60. + 15.); |
| 243 | 243 |
| 244 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 244 RawPtr<Resource> fetched = fetch(); |
| 245 EXPECT_NE(expired200, fetched); | 245 EXPECT_NE(expired200, fetched); |
| 246 } | 246 } |
| 247 | 247 |
| 248 // If the image hasn't been loaded in this "document" before, then it shouldn't
have list of available images logic. | 248 // If the image hasn't been loaded in this "document" before, then it shouldn't
have list of available images logic. |
| 249 TEST_F(CachingCorrectnessTest, NewImageExpiredFromExpires) | 249 TEST_F(CachingCorrectnessTest, NewImageExpiredFromExpires) |
| 250 { | 250 { |
| 251 ResourceResponse expired200Response; | 251 ResourceResponse expired200Response; |
| 252 expired200Response.setHTTPStatusCode(200); | 252 expired200Response.setHTTPStatusCode(200); |
| 253 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 253 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 254 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); | 254 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); |
| 255 | 255 |
| 256 RefPtrWillBeRawPtr<Resource> expired200 = resourceFromResourceResponse(expir
ed200Response, Resource::Image); | 256 RawPtr<Resource> expired200 = resourceFromResourceResponse(expired200Respons
e, Resource::Image); |
| 257 | 257 |
| 258 // Advance the clock within the expiredness period of this resource before w
e make a request. | 258 // Advance the clock within the expiredness period of this resource before w
e make a request. |
| 259 advanceClock(24. * 60. * 60. + 15.); | 259 advanceClock(24. * 60. * 60. + 15.); |
| 260 | 260 |
| 261 RefPtrWillBeRawPtr<Resource> fetched = fetchImage(); | 261 RawPtr<Resource> fetched = fetchImage(); |
| 262 EXPECT_NE(expired200, fetched); | 262 EXPECT_NE(expired200, fetched); |
| 263 } | 263 } |
| 264 | 264 |
| 265 // If the image has been loaded in this "document" before, then it should have l
ist of available images logic, and so | 265 // If the image has been loaded in this "document" before, then it should have l
ist of available images logic, and so |
| 266 // normal cache testing should be bypassed. | 266 // normal cache testing should be bypassed. |
| 267 TEST_F(CachingCorrectnessTest, ReuseImageExpiredFromExpires) | 267 TEST_F(CachingCorrectnessTest, ReuseImageExpiredFromExpires) |
| 268 { | 268 { |
| 269 ResourceResponse expired200Response; | 269 ResourceResponse expired200Response; |
| 270 expired200Response.setHTTPStatusCode(200); | 270 expired200Response.setHTTPStatusCode(200); |
| 271 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 271 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 272 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); | 272 expired200Response.setHTTPHeaderField("Expires", kOneDayAfterOriginalRequest
); |
| 273 | 273 |
| 274 RefPtrWillBeRawPtr<Resource> expired200 = resourceFromResourceResponse(expir
ed200Response, Resource::Image); | 274 RawPtr<Resource> expired200 = resourceFromResourceResponse(expired200Respons
e, Resource::Image); |
| 275 | 275 |
| 276 // Advance the clock within the freshness period, and make a request to add
this image to the document resources. | 276 // Advance the clock within the freshness period, and make a request to add
this image to the document resources. |
| 277 advanceClock(15.); | 277 advanceClock(15.); |
| 278 RefPtrWillBeRawPtr<Resource> firstFetched = fetchImage(); | 278 RawPtr<Resource> firstFetched = fetchImage(); |
| 279 EXPECT_EQ(expired200, firstFetched); | 279 EXPECT_EQ(expired200, firstFetched); |
| 280 | 280 |
| 281 // Advance the clock within the expiredness period of this resource before w
e make a request. | 281 // Advance the clock within the expiredness period of this resource before w
e make a request. |
| 282 advanceClock(24. * 60. * 60. + 15.); | 282 advanceClock(24. * 60. * 60. + 15.); |
| 283 | 283 |
| 284 RefPtrWillBeRawPtr<Resource> fetched = fetchImage(); | 284 RawPtr<Resource> fetched = fetchImage(); |
| 285 EXPECT_EQ(expired200, fetched); | 285 EXPECT_EQ(expired200, fetched); |
| 286 } | 286 } |
| 287 | 287 |
| 288 TEST_F(CachingCorrectnessTest, ExpiredFromMaxAge) | 288 TEST_F(CachingCorrectnessTest, ExpiredFromMaxAge) |
| 289 { | 289 { |
| 290 ResourceResponse expired200Response; | 290 ResourceResponse expired200Response; |
| 291 expired200Response.setHTTPStatusCode(200); | 291 expired200Response.setHTTPStatusCode(200); |
| 292 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); | 292 expired200Response.setHTTPHeaderField("Date", kOriginalRequestDateAsString); |
| 293 expired200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); | 293 expired200Response.setHTTPHeaderField("Cache-Control", "max-age=600"); |
| 294 | 294 |
| 295 RefPtrWillBeRawPtr<Resource> expired200 = resourceFromResourceResponse(expir
ed200Response); | 295 RawPtr<Resource> expired200 = resourceFromResourceResponse(expired200Respons
e); |
| 296 | 296 |
| 297 // Advance the clock within the expiredness period of this resource before w
e make a request. | 297 // Advance the clock within the expiredness period of this resource before w
e make a request. |
| 298 advanceClock(700.); | 298 advanceClock(700.); |
| 299 | 299 |
| 300 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 300 RawPtr<Resource> fetched = fetch(); |
| 301 EXPECT_NE(expired200, fetched); | 301 EXPECT_NE(expired200, fetched); |
| 302 } | 302 } |
| 303 | 303 |
| 304 TEST_F(CachingCorrectnessTest, FreshButNoCache) | 304 TEST_F(CachingCorrectnessTest, FreshButNoCache) |
| 305 { | 305 { |
| 306 ResourceResponse fresh200NocacheResponse; | 306 ResourceResponse fresh200NocacheResponse; |
| 307 fresh200NocacheResponse.setHTTPStatusCode(200); | 307 fresh200NocacheResponse.setHTTPStatusCode(200); |
| 308 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Date, kOriginalRequest
DateAsString); | 308 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Date, kOriginalRequest
DateAsString); |
| 309 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterO
riginalRequest); | 309 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterO
riginalRequest); |
| 310 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cac
he"); | 310 fresh200NocacheResponse.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cac
he"); |
| 311 | 311 |
| 312 RefPtrWillBeRawPtr<Resource> fresh200Nocache = resourceFromResourceResponse(
fresh200NocacheResponse); | 312 RawPtr<Resource> fresh200Nocache = resourceFromResourceResponse(fresh200Noca
cheResponse); |
| 313 | 313 |
| 314 // Advance the clock within the freshness period of this resource before we
make a request. | 314 // Advance the clock within the freshness period of this resource before we
make a request. |
| 315 advanceClock(24. * 60. * 60. - 15.); | 315 advanceClock(24. * 60. * 60. - 15.); |
| 316 | 316 |
| 317 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 317 RawPtr<Resource> fetched = fetch(); |
| 318 EXPECT_NE(fresh200Nocache, fetched); | 318 EXPECT_NE(fresh200Nocache, fetched); |
| 319 } | 319 } |
| 320 | 320 |
| 321 TEST_F(CachingCorrectnessTest, RequestWithNoCahe) | 321 TEST_F(CachingCorrectnessTest, RequestWithNoCahe) |
| 322 { | 322 { |
| 323 ResourceRequest noCacheRequest; | 323 ResourceRequest noCacheRequest; |
| 324 noCacheRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); | 324 noCacheRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-cache"); |
| 325 RefPtrWillBeRawPtr<Resource> noCacheResource = resourceFromResourceRequest(n
oCacheRequest); | 325 RawPtr<Resource> noCacheResource = resourceFromResourceRequest(noCacheReques
t); |
| 326 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 326 RawPtr<Resource> fetched = fetch(); |
| 327 EXPECT_NE(noCacheResource, fetched); | 327 EXPECT_NE(noCacheResource, fetched); |
| 328 } | 328 } |
| 329 | 329 |
| 330 TEST_F(CachingCorrectnessTest, FreshButNoStore) | 330 TEST_F(CachingCorrectnessTest, FreshButNoStore) |
| 331 { | 331 { |
| 332 ResourceResponse fresh200NostoreResponse; | 332 ResourceResponse fresh200NostoreResponse; |
| 333 fresh200NostoreResponse.setHTTPStatusCode(200); | 333 fresh200NostoreResponse.setHTTPStatusCode(200); |
| 334 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Date, kOriginalRequest
DateAsString); | 334 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Date, kOriginalRequest
DateAsString); |
| 335 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterO
riginalRequest); | 335 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterO
riginalRequest); |
| 336 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Cache_Control, "no-sto
re"); | 336 fresh200NostoreResponse.setHTTPHeaderField(HTTPNames::Cache_Control, "no-sto
re"); |
| 337 | 337 |
| 338 RefPtrWillBeRawPtr<Resource> fresh200Nostore = resourceFromResourceResponse(
fresh200NostoreResponse); | 338 RawPtr<Resource> fresh200Nostore = resourceFromResourceResponse(fresh200Nost
oreResponse); |
| 339 | 339 |
| 340 // Advance the clock within the freshness period of this resource before we
make a request. | 340 // Advance the clock within the freshness period of this resource before we
make a request. |
| 341 advanceClock(24. * 60. * 60. - 15.); | 341 advanceClock(24. * 60. * 60. - 15.); |
| 342 | 342 |
| 343 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 343 RawPtr<Resource> fetched = fetch(); |
| 344 EXPECT_NE(fresh200Nostore, fetched); | 344 EXPECT_NE(fresh200Nostore, fetched); |
| 345 } | 345 } |
| 346 | 346 |
| 347 TEST_F(CachingCorrectnessTest, RequestWithNoStore) | 347 TEST_F(CachingCorrectnessTest, RequestWithNoStore) |
| 348 { | 348 { |
| 349 ResourceRequest noStoreRequest; | 349 ResourceRequest noStoreRequest; |
| 350 noStoreRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-store"); | 350 noStoreRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "no-store"); |
| 351 RefPtrWillBeRawPtr<Resource> noStoreResource = resourceFromResourceRequest(n
oStoreRequest); | 351 RawPtr<Resource> noStoreResource = resourceFromResourceRequest(noStoreReques
t); |
| 352 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 352 RawPtr<Resource> fetched = fetch(); |
| 353 EXPECT_NE(noStoreResource, fetched); | 353 EXPECT_NE(noStoreResource, fetched); |
| 354 } | 354 } |
| 355 | 355 |
| 356 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour. | 356 // FIXME: Determine if ignoring must-revalidate for blink is correct behaviour. |
| 357 // See crbug.com/340088 . | 357 // See crbug.com/340088 . |
| 358 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate) | 358 TEST_F(CachingCorrectnessTest, DISABLED_FreshButMustRevalidate) |
| 359 { | 359 { |
| 360 ResourceResponse fresh200MustRevalidateResponse; | 360 ResourceResponse fresh200MustRevalidateResponse; |
| 361 fresh200MustRevalidateResponse.setHTTPStatusCode(200); | 361 fresh200MustRevalidateResponse.setHTTPStatusCode(200); |
| 362 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Date, kOriginal
RequestDateAsString); | 362 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Date, kOriginal
RequestDateAsString); |
| 363 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDa
yAfterOriginalRequest); | 363 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Expires, kOneDa
yAfterOriginalRequest); |
| 364 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Cache_Control,
"must-revalidate"); | 364 fresh200MustRevalidateResponse.setHTTPHeaderField(HTTPNames::Cache_Control,
"must-revalidate"); |
| 365 | 365 |
| 366 RefPtrWillBeRawPtr<Resource> fresh200MustRevalidate = resourceFromResourceRe
sponse(fresh200MustRevalidateResponse); | 366 RawPtr<Resource> fresh200MustRevalidate = resourceFromResourceResponse(fresh
200MustRevalidateResponse); |
| 367 | 367 |
| 368 // Advance the clock within the freshness period of this resource before we
make a request. | 368 // Advance the clock within the freshness period of this resource before we
make a request. |
| 369 advanceClock(24. * 60. * 60. - 15.); | 369 advanceClock(24. * 60. * 60. - 15.); |
| 370 | 370 |
| 371 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 371 RawPtr<Resource> fetched = fetch(); |
| 372 EXPECT_NE(fresh200MustRevalidate, fetched); | 372 EXPECT_NE(fresh200MustRevalidate, fetched); |
| 373 } | 373 } |
| 374 | 374 |
| 375 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) | 375 TEST_F(CachingCorrectnessTest, FreshWithFreshRedirect) |
| 376 { | 376 { |
| 377 KURL redirectUrl(ParsedURLString, kResourceURL); | 377 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 378 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 378 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 379 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 379 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 380 | 380 |
| 381 RefPtrWillBeRawPtr<Resource> firstResource = Resource::create(ResourceReques
t(redirectUrl), Resource::Raw); | 381 RawPtr<Resource> firstResource = Resource::create(ResourceRequest(redirectUr
l), Resource::Raw); |
| 382 | 382 |
| 383 ResourceResponse fresh301Response; | 383 ResourceResponse fresh301Response; |
| 384 fresh301Response.setURL(redirectUrl); | 384 fresh301Response.setURL(redirectUrl); |
| 385 fresh301Response.setHTTPStatusCode(301); | 385 fresh301Response.setHTTPStatusCode(301); |
| 386 fresh301Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 386 fresh301Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 387 fresh301Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); | 387 fresh301Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); |
| 388 fresh301Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600")
; | 388 fresh301Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600")
; |
| 389 | 389 |
| 390 // Add the redirect to our request. | 390 // Add the redirect to our request. |
| 391 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); | 391 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); |
| 392 firstResource->willFollowRedirect(redirectRequest, fresh301Response); | 392 firstResource->willFollowRedirect(redirectRequest, fresh301Response); |
| 393 | 393 |
| 394 // Add the final response to our request. | 394 // Add the final response to our request. |
| 395 ResourceResponse fresh200Response; | 395 ResourceResponse fresh200Response; |
| 396 fresh200Response.setURL(redirectTargetUrl); | 396 fresh200Response.setURL(redirectTargetUrl); |
| 397 fresh200Response.setHTTPStatusCode(200); | 397 fresh200Response.setHTTPStatusCode(200); |
| 398 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 398 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 399 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 399 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 400 | 400 |
| 401 firstResource->setResponse(fresh200Response); | 401 firstResource->setResponse(fresh200Response); |
| 402 firstResource->finish(); | 402 firstResource->finish(); |
| 403 memoryCache()->add(firstResource.get()); | 403 memoryCache()->add(firstResource.get()); |
| 404 | 404 |
| 405 advanceClock(500.); | 405 advanceClock(500.); |
| 406 | 406 |
| 407 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 407 RawPtr<Resource> fetched = fetch(); |
| 408 EXPECT_EQ(firstResource, fetched); | 408 EXPECT_EQ(firstResource, fetched); |
| 409 } | 409 } |
| 410 | 410 |
| 411 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) | 411 TEST_F(CachingCorrectnessTest, FreshWithStaleRedirect) |
| 412 { | 412 { |
| 413 KURL redirectUrl(ParsedURLString, kResourceURL); | 413 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 414 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 414 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 415 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 415 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 416 | 416 |
| 417 RefPtrWillBeRawPtr<Resource> firstResource = Resource::create(ResourceReques
t(redirectUrl), Resource::Raw); | 417 RawPtr<Resource> firstResource = Resource::create(ResourceRequest(redirectUr
l), Resource::Raw); |
| 418 | 418 |
| 419 ResourceResponse stale301Response; | 419 ResourceResponse stale301Response; |
| 420 stale301Response.setURL(redirectUrl); | 420 stale301Response.setURL(redirectUrl); |
| 421 stale301Response.setHTTPStatusCode(301); | 421 stale301Response.setHTTPStatusCode(301); |
| 422 stale301Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 422 stale301Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 423 stale301Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); | 423 stale301Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); |
| 424 | 424 |
| 425 // Add the redirect to our request. | 425 // Add the redirect to our request. |
| 426 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); | 426 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); |
| 427 firstResource->willFollowRedirect(redirectRequest, stale301Response); | 427 firstResource->willFollowRedirect(redirectRequest, stale301Response); |
| 428 | 428 |
| 429 // Add the final response to our request. | 429 // Add the final response to our request. |
| 430 ResourceResponse fresh200Response; | 430 ResourceResponse fresh200Response; |
| 431 fresh200Response.setURL(redirectTargetUrl); | 431 fresh200Response.setURL(redirectTargetUrl); |
| 432 fresh200Response.setHTTPStatusCode(200); | 432 fresh200Response.setHTTPStatusCode(200); |
| 433 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 433 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 434 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 434 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 435 | 435 |
| 436 firstResource->setResponse(fresh200Response); | 436 firstResource->setResponse(fresh200Response); |
| 437 firstResource->finish(); | 437 firstResource->finish(); |
| 438 memoryCache()->add(firstResource.get()); | 438 memoryCache()->add(firstResource.get()); |
| 439 | 439 |
| 440 advanceClock(500.); | 440 advanceClock(500.); |
| 441 | 441 |
| 442 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 442 RawPtr<Resource> fetched = fetch(); |
| 443 EXPECT_NE(firstResource, fetched); | 443 EXPECT_NE(firstResource, fetched); |
| 444 } | 444 } |
| 445 | 445 |
| 446 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) | 446 TEST_F(CachingCorrectnessTest, PostToSameURLTwice) |
| 447 { | 447 { |
| 448 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); | 448 ResourceRequest request1(KURL(ParsedURLString, kResourceURL)); |
| 449 request1.setHTTPMethod(HTTPNames::POST); | 449 request1.setHTTPMethod(HTTPNames::POST); |
| 450 RefPtrWillBeRawPtr<Resource> resource1 = Resource::create(ResourceRequest(re
quest1.url()), Resource::Raw); | 450 RawPtr<Resource> resource1 = Resource::create(ResourceRequest(request1.url()
), Resource::Raw); |
| 451 resource1->setStatus(Resource::Pending); | 451 resource1->setStatus(Resource::Pending); |
| 452 memoryCache()->add(resource1.get()); | 452 memoryCache()->add(resource1.get()); |
| 453 | 453 |
| 454 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); | 454 ResourceRequest request2(KURL(ParsedURLString, kResourceURL)); |
| 455 request2.setHTTPMethod(HTTPNames::POST); | 455 request2.setHTTPMethod(HTTPNames::POST); |
| 456 FetchRequest fetch2(request2, FetchInitiatorInfo()); | 456 FetchRequest fetch2(request2, FetchInitiatorInfo()); |
| 457 RefPtrWillBeRawPtr<Resource> resource2 = RawResource::fetchSynchronously(fet
ch2, fetcher()); | 457 RawPtr<Resource> resource2 = RawResource::fetchSynchronously(fetch2, fetcher
()); |
| 458 | 458 |
| 459 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); | 459 EXPECT_EQ(resource2, memoryCache()->resourceForURL(request2.url())); |
| 460 EXPECT_NE(resource1, resource2); | 460 EXPECT_NE(resource1, resource2); |
| 461 } | 461 } |
| 462 | 462 |
| 463 TEST_F(CachingCorrectnessTest, 302RedirectNotImplicitlyFresh) | 463 TEST_F(CachingCorrectnessTest, 302RedirectNotImplicitlyFresh) |
| 464 { | 464 { |
| 465 KURL redirectUrl(ParsedURLString, kResourceURL); | 465 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 466 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 466 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 467 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 467 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 468 | 468 |
| 469 RefPtrWillBeRawPtr<Resource> firstResource = Resource::create(ResourceReques
t(redirectUrl), Resource::Raw); | 469 RawPtr<Resource> firstResource = Resource::create(ResourceRequest(redirectUr
l), Resource::Raw); |
| 470 | 470 |
| 471 ResourceResponse fresh302Response; | 471 ResourceResponse fresh302Response; |
| 472 fresh302Response.setURL(redirectUrl); | 472 fresh302Response.setURL(redirectUrl); |
| 473 fresh302Response.setHTTPStatusCode(302); | 473 fresh302Response.setHTTPStatusCode(302); |
| 474 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 474 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 475 fresh302Response.setHTTPHeaderField(HTTPNames::Last_Modified, kOneDayBeforeO
riginalRequest); | 475 fresh302Response.setHTTPHeaderField(HTTPNames::Last_Modified, kOneDayBeforeO
riginalRequest); |
| 476 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); | 476 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); |
| 477 | 477 |
| 478 // Add the redirect to our request. | 478 // Add the redirect to our request. |
| 479 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); | 479 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); |
| 480 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 480 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
| 481 | 481 |
| 482 // Add the final response to our request. | 482 // Add the final response to our request. |
| 483 ResourceResponse fresh200Response; | 483 ResourceResponse fresh200Response; |
| 484 fresh200Response.setURL(redirectTargetUrl); | 484 fresh200Response.setURL(redirectTargetUrl); |
| 485 fresh200Response.setHTTPStatusCode(200); | 485 fresh200Response.setHTTPStatusCode(200); |
| 486 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 486 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 487 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 487 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 488 | 488 |
| 489 firstResource->setResponse(fresh200Response); | 489 firstResource->setResponse(fresh200Response); |
| 490 firstResource->finish(); | 490 firstResource->finish(); |
| 491 memoryCache()->add(firstResource.get()); | 491 memoryCache()->add(firstResource.get()); |
| 492 | 492 |
| 493 advanceClock(500.); | 493 advanceClock(500.); |
| 494 | 494 |
| 495 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 495 RawPtr<Resource> fetched = fetch(); |
| 496 EXPECT_NE(firstResource, fetched); | 496 EXPECT_NE(firstResource, fetched); |
| 497 } | 497 } |
| 498 | 498 |
| 499 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) | 499 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshMaxAge) |
| 500 { | 500 { |
| 501 KURL redirectUrl(ParsedURLString, kResourceURL); | 501 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 502 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 502 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 503 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 503 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 504 | 504 |
| 505 RefPtrWillBeRawPtr<Resource> firstResource = Resource::create(ResourceReques
t(redirectUrl), Resource::Raw); | 505 RawPtr<Resource> firstResource = Resource::create(ResourceRequest(redirectUr
l), Resource::Raw); |
| 506 | 506 |
| 507 ResourceResponse fresh302Response; | 507 ResourceResponse fresh302Response; |
| 508 fresh302Response.setURL(redirectUrl); | 508 fresh302Response.setURL(redirectUrl); |
| 509 fresh302Response.setHTTPStatusCode(302); | 509 fresh302Response.setHTTPStatusCode(302); |
| 510 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 510 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 511 fresh302Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600")
; | 511 fresh302Response.setHTTPHeaderField(HTTPNames::Cache_Control, "max-age=600")
; |
| 512 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); | 512 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); |
| 513 | 513 |
| 514 // Add the redirect to our request. | 514 // Add the redirect to our request. |
| 515 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); | 515 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); |
| 516 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 516 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
| 517 | 517 |
| 518 // Add the final response to our request. | 518 // Add the final response to our request. |
| 519 ResourceResponse fresh200Response; | 519 ResourceResponse fresh200Response; |
| 520 fresh200Response.setURL(redirectTargetUrl); | 520 fresh200Response.setURL(redirectTargetUrl); |
| 521 fresh200Response.setHTTPStatusCode(200); | 521 fresh200Response.setHTTPStatusCode(200); |
| 522 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 522 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 523 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 523 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 524 | 524 |
| 525 firstResource->setResponse(fresh200Response); | 525 firstResource->setResponse(fresh200Response); |
| 526 firstResource->finish(); | 526 firstResource->finish(); |
| 527 memoryCache()->add(firstResource.get()); | 527 memoryCache()->add(firstResource.get()); |
| 528 | 528 |
| 529 advanceClock(500.); | 529 advanceClock(500.); |
| 530 | 530 |
| 531 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 531 RawPtr<Resource> fetched = fetch(); |
| 532 EXPECT_EQ(firstResource, fetched); | 532 EXPECT_EQ(firstResource, fetched); |
| 533 } | 533 } |
| 534 | 534 |
| 535 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) | 535 TEST_F(CachingCorrectnessTest, 302RedirectExplicitlyFreshExpires) |
| 536 { | 536 { |
| 537 KURL redirectUrl(ParsedURLString, kResourceURL); | 537 KURL redirectUrl(ParsedURLString, kResourceURL); |
| 538 const char redirectTargetUrlString[] = "http://redirect-target.com"; | 538 const char redirectTargetUrlString[] = "http://redirect-target.com"; |
| 539 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); | 539 KURL redirectTargetUrl(ParsedURLString, redirectTargetUrlString); |
| 540 | 540 |
| 541 RefPtrWillBeRawPtr<Resource> firstResource = Resource::create(ResourceReques
t(redirectUrl), Resource::Raw); | 541 RawPtr<Resource> firstResource = Resource::create(ResourceRequest(redirectUr
l), Resource::Raw); |
| 542 | 542 |
| 543 ResourceResponse fresh302Response; | 543 ResourceResponse fresh302Response; |
| 544 fresh302Response.setURL(redirectUrl); | 544 fresh302Response.setURL(redirectUrl); |
| 545 fresh302Response.setHTTPStatusCode(302); | 545 fresh302Response.setHTTPStatusCode(302); |
| 546 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 546 fresh302Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 547 fresh302Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 547 fresh302Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 548 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); | 548 fresh302Response.setHTTPHeaderField(HTTPNames::Location, redirectTargetUrlSt
ring); |
| 549 | 549 |
| 550 // Add the redirect to our request. | 550 // Add the redirect to our request. |
| 551 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); | 551 ResourceRequest redirectRequest = ResourceRequest(redirectTargetUrl); |
| 552 firstResource->willFollowRedirect(redirectRequest, fresh302Response); | 552 firstResource->willFollowRedirect(redirectRequest, fresh302Response); |
| 553 | 553 |
| 554 // Add the final response to our request. | 554 // Add the final response to our request. |
| 555 ResourceResponse fresh200Response; | 555 ResourceResponse fresh200Response; |
| 556 fresh200Response.setURL(redirectTargetUrl); | 556 fresh200Response.setURL(redirectTargetUrl); |
| 557 fresh200Response.setHTTPStatusCode(200); | 557 fresh200Response.setHTTPStatusCode(200); |
| 558 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); | 558 fresh200Response.setHTTPHeaderField(HTTPNames::Date, kOriginalRequestDateAsS
tring); |
| 559 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); | 559 fresh200Response.setHTTPHeaderField(HTTPNames::Expires, kOneDayAfterOriginal
Request); |
| 560 | 560 |
| 561 firstResource->setResponse(fresh200Response); | 561 firstResource->setResponse(fresh200Response); |
| 562 firstResource->finish(); | 562 firstResource->finish(); |
| 563 memoryCache()->add(firstResource.get()); | 563 memoryCache()->add(firstResource.get()); |
| 564 | 564 |
| 565 advanceClock(500.); | 565 advanceClock(500.); |
| 566 | 566 |
| 567 RefPtrWillBeRawPtr<Resource> fetched = fetch(); | 567 RawPtr<Resource> fetched = fetch(); |
| 568 EXPECT_EQ(firstResource, fetched); | 568 EXPECT_EQ(firstResource, fetched); |
| 569 } | 569 } |
| 570 | 570 |
| 571 } // namespace blink | 571 } // namespace blink |
| OLD | NEW |