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

Side by Side Diff: components/precache/core/precache_fetcher_unittest.cc

Issue 2614403003: Add revalidation_only option to precache config. (Closed)
Patch Set: Add Fetcher constructor parameter comments. Created 3 years, 11 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 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/precache/core/precache_fetcher.h" 5 #include "components/precache/core/precache_fetcher.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstring> 9 #include <cstring>
10 #include <memory> 10 #include <memory>
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 232
233 net::FakeURLFetcher* fetcher = nullptr; 233 net::FakeURLFetcher* fetcher = nullptr;
234 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) 234 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
235 .WillOnce(factory_.RespondWith("", &fetcher)); 235 .WillOnce(factory_.RespondWith("", &fetcher));
236 EXPECT_CALL(*this, 236 EXPECT_CALL(*this,
237 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, 237 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
238 NotNull()))); 238 NotNull())));
239 239
240 PrecacheFetcher::Fetcher precache_fetcher( 240 PrecacheFetcher::Fetcher precache_fetcher(
241 request_context_.get(), url, url.host(), callback_, 241 request_context_.get(), url, url.host(), callback_,
242 false /* is_resource_request */, SIZE_MAX); 242 false /* is_resource_request */, SIZE_MAX, false /* revalidation_only */);
243 243
244 base::RunLoop().RunUntilIdle(); 244 base::RunLoop().RunUntilIdle();
245 245
246 ASSERT_NE(nullptr, fetcher); 246 ASSERT_NE(nullptr, fetcher);
247 EXPECT_EQ(kNoTracking, fetcher->GetLoadFlags()); 247 EXPECT_EQ(kNoTracking, fetcher->GetLoadFlags());
248 } 248 }
249 249
250 TEST_F(PrecacheFetcherFetcherTest, ResourceNotInCache) { 250 TEST_F(PrecacheFetcherFetcherTest, ResourceNotInCache) {
251 GURL url(kGoodResourceURL); 251 GURL url(kGoodResourceURL);
252 252
253 net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr; 253 net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr;
254 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) 254 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
255 .WillOnce(factory_.RespondWith("", CacheMiss, &fetcher1)) 255 .WillOnce(factory_.RespondWith("", CacheMiss, &fetcher1))
256 .WillOnce(factory_.RespondWith("", &fetcher2)); 256 .WillOnce(factory_.RespondWith("", &fetcher2));
257 EXPECT_CALL(*this, 257 EXPECT_CALL(*this,
258 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, 258 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
259 NotNull()))) 259 NotNull())));
260 .Times(1);
261 260
262 PrecacheFetcher::Fetcher precache_fetcher( 261 PrecacheFetcher::Fetcher precache_fetcher(
263 request_context_.get(), url, url.host(), callback_, 262 request_context_.get(), url, url.host(), callback_,
264 true /* is_resource_request */, SIZE_MAX); 263 true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */);
265 264
266 base::RunLoop().RunUntilIdle(); 265 base::RunLoop().RunUntilIdle();
267 266
268 ASSERT_NE(nullptr, fetcher1); 267 ASSERT_NE(nullptr, fetcher1);
269 EXPECT_EQ( 268 EXPECT_EQ(
270 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, 269 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
271 fetcher1->GetLoadFlags()); 270 fetcher1->GetLoadFlags());
272 ASSERT_NE(nullptr, fetcher2); 271 ASSERT_NE(nullptr, fetcher2);
273 EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags()); 272 EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags());
274 } 273 }
275 274
276 TEST_F(PrecacheFetcherFetcherTest, ResourceHasValidators) { 275 TEST_F(PrecacheFetcherFetcherTest, ResourceHasValidators) {
277 GURL url(kGoodResourceURL); 276 GURL url(kGoodResourceURL);
278 277
279 net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr; 278 net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr;
280 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) 279 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
281 .WillOnce(factory_.RespondWith("", HasETag, &fetcher1)) 280 .WillOnce(factory_.RespondWith("", HasETag, &fetcher1))
282 .WillOnce(factory_.RespondWith("", &fetcher2)); 281 .WillOnce(factory_.RespondWith("", &fetcher2));
283 EXPECT_CALL(*this, 282 EXPECT_CALL(*this,
284 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, 283 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
285 NotNull()))); 284 NotNull())));
286 285
287 PrecacheFetcher::Fetcher precache_fetcher( 286 PrecacheFetcher::Fetcher precache_fetcher(
288 request_context_.get(), url, url.host(), callback_, 287 request_context_.get(), url, url.host(), callback_,
289 true /* is_resource_request */, SIZE_MAX); 288 true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */);
290 289
291 base::RunLoop().RunUntilIdle(); 290 base::RunLoop().RunUntilIdle();
292 291
293 ASSERT_NE(nullptr, fetcher1); 292 ASSERT_NE(nullptr, fetcher1);
294 EXPECT_EQ( 293 EXPECT_EQ(
295 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, 294 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
296 fetcher1->GetLoadFlags()); 295 fetcher1->GetLoadFlags());
297 ASSERT_NE(nullptr, fetcher2); 296 ASSERT_NE(nullptr, fetcher2);
298 EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags()); 297 EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags());
299 } 298 }
300 299
301 TEST_F(PrecacheFetcherFetcherTest, ResourceHasNoValidators) { 300 TEST_F(PrecacheFetcherFetcherTest, ResourceHasNoValidators) {
302 GURL url(kGoodResourceURL); 301 GURL url(kGoodResourceURL);
303 302
304 net::FakeURLFetcher* fetcher; 303 net::FakeURLFetcher* fetcher = nullptr;
305 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) 304 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
306 .WillOnce(factory_.RespondWith("", &fetcher)); 305 .WillOnce(factory_.RespondWith("", &fetcher));
307 EXPECT_CALL(*this, 306 EXPECT_CALL(*this,
307 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
308 nullptr))); // It never reached the network.
309
310 PrecacheFetcher::Fetcher precache_fetcher(
311 request_context_.get(), url, url.host(), callback_,
312 true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */);
313
314 base::RunLoop().RunUntilIdle();
315
316 EXPECT_EQ(
317 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
318 fetcher->GetLoadFlags());
319 }
320
321 TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceNotInCache) {
322 GURL url(kGoodResourceURL);
323
324 net::FakeURLFetcher* fetcher = nullptr;
325 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
326 .WillOnce(factory_.RespondWith("", CacheMiss, &fetcher));
327 EXPECT_CALL(*this,
328 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
329 nullptr))); // It never reached the network.
330
331 PrecacheFetcher::Fetcher precache_fetcher(
332 request_context_.get(), url, url.host(), callback_,
333 true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */);
334
335 base::RunLoop().RunUntilIdle();
336
337 ASSERT_NE(nullptr, fetcher);
338 EXPECT_EQ(
339 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
340 fetcher->GetLoadFlags());
341 }
342
343 TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceHasValidators) {
344 GURL url(kGoodResourceURL);
345
346 net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr;
347 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
348 .WillOnce(factory_.RespondWith("", HasETag, &fetcher1))
349 .WillOnce(factory_.RespondWith("", &fetcher2));
350 EXPECT_CALL(*this,
351 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
352 NotNull())));
353
354 PrecacheFetcher::Fetcher precache_fetcher(
355 request_context_.get(), url, url.host(), callback_,
356 true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */);
357
358 base::RunLoop().RunUntilIdle();
359
360 ASSERT_NE(nullptr, fetcher1);
361 EXPECT_EQ(
362 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
363 fetcher1->GetLoadFlags());
364 ASSERT_NE(nullptr, fetcher2);
365 EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags());
366 }
367
368 TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceHasNoValidators) {
369 GURL url(kGoodResourceURL);
370
371 net::FakeURLFetcher* fetcher = nullptr;
372 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
373 .WillOnce(factory_.RespondWith("", &fetcher));
374 EXPECT_CALL(*this,
308 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, 375 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
309 nullptr))); // It never reached the network. 376 nullptr))); // It never reached the network.
310 377
311 PrecacheFetcher::Fetcher precache_fetcher( 378 PrecacheFetcher::Fetcher precache_fetcher(
312 request_context_.get(), url, url.host(), callback_, 379 request_context_.get(), url, url.host(), callback_,
313 true /* is_resource_request */, SIZE_MAX); 380 true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */);
314 381
315 base::RunLoop().RunUntilIdle(); 382 base::RunLoop().RunUntilIdle();
316 383
317 EXPECT_EQ( 384 EXPECT_EQ(
318 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, 385 net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking,
319 fetcher->GetLoadFlags()); 386 fetcher->GetLoadFlags());
320 } 387 }
321 388
322 TEST_F(PrecacheFetcherFetcherTest, ResourceTooBig) { 389 TEST_F(PrecacheFetcherFetcherTest, ResourceTooBig) {
323 GURL url(kGoodResourceURL); 390 GURL url(kGoodResourceURL);
324 391
325 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) 392 EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _))
326 // Cache request will fail, so that a network request is made. Only 393 // Cache request will fail, so that a network request is made. Only
327 // network requests are byte-capped. 394 // network requests are byte-capped.
328 .WillOnce(factory_.RespondWith("", CacheMiss, nullptr)) 395 .WillOnce(factory_.RespondWith("", CacheMiss, nullptr))
329 .WillOnce(factory_.RespondWith(std::string(100, '.'), nullptr)); 396 .WillOnce(factory_.RespondWith(std::string(100, '.'), nullptr));
330 397
331 // The callback should be called even though the download was cancelled, so 398 // The callback should be called even though the download was cancelled, so
332 // that the next download can start. The network_url_fetcher within should be 399 // that the next download can start. The network_url_fetcher within should be
333 // null, to signify that either the network was never reached (which will be 400 // null, to signify that either the network was never reached (which will be
334 // flagged as an error due to the expectation above) or it was requested but 401 // flagged as an error due to the expectation above) or it was requested but
335 // cancelled (which is the desired behavior). 402 // cancelled (which is the desired behavior).
336 EXPECT_CALL(*this, 403 EXPECT_CALL(*this,
337 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, 404 Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher,
338 nullptr))); 405 nullptr)));
339 406
340 PrecacheFetcher::Fetcher precache_fetcher( 407 PrecacheFetcher::Fetcher precache_fetcher(
341 request_context_.get(), url, url.host(), callback_, 408 request_context_.get(), url, url.host(), callback_,
342 true /* is_resource_request */, 99 /* max_bytes */); 409 true /* is_resource_request */, 99 /* max_bytes */,
410 false /* revalidation_only */);
343 411
344 base::RunLoop().RunUntilIdle(); 412 base::RunLoop().RunUntilIdle();
345 } 413 }
346 414
347 class PrecacheFetcherTest : public testing::Test { 415 class PrecacheFetcherTest : public testing::Test {
348 public: 416 public:
349 PrecacheFetcherTest() 417 PrecacheFetcherTest()
350 : task_runner_(base::ThreadTaskRunnerHandle::Get()), 418 : task_runner_(base::ThreadTaskRunnerHandle::Get()),
351 request_context_(new net::TestURLRequestContextGetter( 419 request_context_(new net::TestURLRequestContextGetter(
352 base::ThreadTaskRunnerHandle::Get())), 420 base::ThreadTaskRunnerHandle::Get())),
(...skipping 1484 matching lines...) Expand 10 before | Expand all | Expand 10 after
1837 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 1905 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
1838 1906
1839 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 1907 EXPECT_TRUE(precache_delegate_.was_on_done_called());
1840 1908
1841 histogram.ExpectTotalCount("Precache.Fetch.PercentCompleted", 2); 1909 histogram.ExpectTotalCount("Precache.Fetch.PercentCompleted", 2);
1842 histogram.ExpectTotalCount("Precache.Fetch.ResponseBytes.Total", 2); 1910 histogram.ExpectTotalCount("Precache.Fetch.ResponseBytes.Total", 2);
1843 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 2); 1911 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 2);
1844 } 1912 }
1845 1913
1846 } // namespace precache 1914 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_fetcher.cc ('k') | components/precache/core/proto/precache.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698