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

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

Issue 1686483002: Oilpan: Remove most WillBe types from the code base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/CachedMetadataHandler.h ('k') | third_party/WebKit/Source/core/fetch/DocumentResource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698