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

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

Powered by Google App Engine
This is Rietveld 408576698