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