OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/appcache/appcache_request_handler.h" | 5 #include "content/browser/appcache/appcache_request_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <stack> | 9 #include <stack> |
10 #include <string> | 10 #include <string> |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, | 270 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, |
271 base::Unretained(this))); | 271 base::Unretained(this))); |
272 | 272 |
273 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 273 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
274 net::DEFAULT_PRIORITY, &delegate_); | 274 net::DEFAULT_PRIORITY, &delegate_); |
275 handler_ = | 275 handler_ = |
276 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 276 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
277 RESOURCE_TYPE_MAIN_FRAME, false); | 277 RESOURCE_TYPE_MAIN_FRAME, false); |
278 EXPECT_TRUE(handler_.get()); | 278 EXPECT_TRUE(handler_.get()); |
279 | 279 |
280 job_.reset( | 280 job_.reset(static_cast<AppCacheURLRequestJob*>( |
281 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 281 handler_->MaybeLoadResource(request_->context()->network_delegate()) |
| 282 ->AsURLRequestJob())); |
282 EXPECT_TRUE(job_.get()); | 283 EXPECT_TRUE(job_.get()); |
283 EXPECT_TRUE(job_->is_waiting()); | 284 EXPECT_TRUE(job_->IsWaiting()); |
284 | 285 |
285 // We have to wait for completion of storage->FindResponseForMainRequest. | 286 // We have to wait for completion of storage->FindResponseForMainRequest. |
286 ScheduleNextTask(); | 287 ScheduleNextTask(); |
287 } | 288 } |
288 | 289 |
289 void Verify_MainResource_Miss() { | 290 void Verify_MainResource_Miss() { |
290 EXPECT_FALSE(job_->is_waiting()); | 291 EXPECT_FALSE(job_->IsWaiting()); |
291 EXPECT_TRUE(job_->is_delivering_network_response()); | 292 EXPECT_TRUE(job_->IsDeliveringNetworkResponse()); |
292 | 293 |
293 int64_t cache_id = kAppCacheNoCacheId; | 294 int64_t cache_id = kAppCacheNoCacheId; |
294 GURL manifest_url; | 295 GURL manifest_url; |
295 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 296 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
296 EXPECT_EQ(kAppCacheNoCacheId, cache_id); | 297 EXPECT_EQ(kAppCacheNoCacheId, cache_id); |
297 EXPECT_EQ(GURL(), manifest_url); | 298 EXPECT_EQ(GURL(), manifest_url); |
298 EXPECT_EQ(0, handler_->found_group_id_); | 299 EXPECT_EQ(0, handler_->found_group_id_); |
299 | 300 |
300 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 301 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
301 handler_->MaybeLoadFallbackForRedirect( | 302 static_cast<AppCacheURLRequestJob*>( |
302 request_->context()->network_delegate(), | 303 handler_->MaybeLoadFallbackForRedirect( |
303 GURL("http://blah/redirect"))); | 304 request_->context()->network_delegate(), |
| 305 GURL("http://blah/redirect")))); |
304 EXPECT_FALSE(fallback_job); | 306 EXPECT_FALSE(fallback_job); |
305 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 307 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
306 request_->context()->network_delegate())); | 308 handler_->MaybeLoadFallbackForResponse( |
| 309 request_->context()->network_delegate()))); |
307 EXPECT_FALSE(fallback_job); | 310 EXPECT_FALSE(fallback_job); |
308 | 311 |
309 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); | 312 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); |
310 | 313 |
311 TestFinished(); | 314 TestFinished(); |
312 } | 315 } |
313 | 316 |
314 // MainResource_Hit -------------------------------------------------- | 317 // MainResource_Hit -------------------------------------------------- |
315 | 318 |
316 void MainResource_Hit() { | 319 void MainResource_Hit() { |
317 PushNextTask( | 320 PushNextTask( |
318 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, | 321 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, |
319 base::Unretained(this))); | 322 base::Unretained(this))); |
320 | 323 |
321 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 324 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
322 net::DEFAULT_PRIORITY, &delegate_); | 325 net::DEFAULT_PRIORITY, &delegate_); |
323 handler_ = | 326 handler_ = |
324 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 327 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
325 RESOURCE_TYPE_MAIN_FRAME, false); | 328 RESOURCE_TYPE_MAIN_FRAME, false); |
326 EXPECT_TRUE(handler_.get()); | 329 EXPECT_TRUE(handler_.get()); |
327 | 330 |
328 mock_storage()->SimulateFindMainResource( | 331 mock_storage()->SimulateFindMainResource( |
329 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 332 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
330 GURL(), AppCacheEntry(), | 333 GURL(), AppCacheEntry(), |
331 1, 2, GURL("http://blah/manifest/")); | 334 1, 2, GURL("http://blah/manifest/")); |
332 | 335 |
333 job_.reset( | 336 job_.reset(static_cast<AppCacheURLRequestJob*>( |
334 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 337 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
335 EXPECT_TRUE(job_.get()); | 338 EXPECT_TRUE(job_.get()); |
336 EXPECT_TRUE(job_->is_waiting()); | 339 EXPECT_TRUE(job_->IsWaiting()); |
337 | 340 |
338 // We have to wait for completion of storage->FindResponseForMainRequest. | 341 // We have to wait for completion of storage->FindResponseForMainRequest. |
339 ScheduleNextTask(); | 342 ScheduleNextTask(); |
340 } | 343 } |
341 | 344 |
342 void Verify_MainResource_Hit() { | 345 void Verify_MainResource_Hit() { |
343 EXPECT_FALSE(job_->is_waiting()); | 346 EXPECT_FALSE(job_->IsWaiting()); |
344 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 347 EXPECT_TRUE(job_->IsDeliveringAppCacheResponse()); |
345 | 348 |
346 int64_t cache_id = kAppCacheNoCacheId; | 349 int64_t cache_id = kAppCacheNoCacheId; |
347 GURL manifest_url; | 350 GURL manifest_url; |
348 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 351 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
349 EXPECT_EQ(1, cache_id); | 352 EXPECT_EQ(1, cache_id); |
350 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); | 353 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); |
351 EXPECT_EQ(2, handler_->found_group_id_); | 354 EXPECT_EQ(2, handler_->found_group_id_); |
352 | 355 |
353 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 356 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
354 handler_->MaybeLoadFallbackForResponse( | 357 static_cast<AppCacheURLRequestJob*>( |
355 request_->context()->network_delegate())); | 358 handler_->MaybeLoadFallbackForResponse( |
| 359 request_->context()->network_delegate()))); |
356 EXPECT_FALSE(fallback_job); | 360 EXPECT_FALSE(fallback_job); |
357 | 361 |
358 EXPECT_EQ(GURL("http://blah/manifest/"), | 362 EXPECT_EQ(GURL("http://blah/manifest/"), |
359 host_->preferred_manifest_url()); | 363 host_->preferred_manifest_url()); |
360 | 364 |
361 TestFinished(); | 365 TestFinished(); |
362 } | 366 } |
363 | 367 |
364 // MainResource_Fallback -------------------------------------------------- | 368 // MainResource_Fallback -------------------------------------------------- |
365 | 369 |
366 void MainResource_Fallback() { | 370 void MainResource_Fallback() { |
367 PushNextTask( | 371 PushNextTask( |
368 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, | 372 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, |
369 base::Unretained(this))); | 373 base::Unretained(this))); |
370 | 374 |
371 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 375 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
372 net::DEFAULT_PRIORITY, &delegate_); | 376 net::DEFAULT_PRIORITY, &delegate_); |
373 handler_ = | 377 handler_ = |
374 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 378 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
375 RESOURCE_TYPE_MAIN_FRAME, false); | 379 RESOURCE_TYPE_MAIN_FRAME, false); |
376 EXPECT_TRUE(handler_.get()); | 380 EXPECT_TRUE(handler_.get()); |
377 | 381 |
378 mock_storage()->SimulateFindMainResource( | 382 mock_storage()->SimulateFindMainResource( |
379 AppCacheEntry(), | 383 AppCacheEntry(), |
380 GURL("http://blah/fallbackurl"), | 384 GURL("http://blah/fallbackurl"), |
381 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 385 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
382 1, 2, GURL("http://blah/manifest/")); | 386 1, 2, GURL("http://blah/manifest/")); |
383 | 387 |
384 job_.reset( | 388 job_.reset(static_cast<AppCacheURLRequestJob*>( |
385 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 389 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
386 EXPECT_TRUE(job_.get()); | 390 EXPECT_TRUE(job_.get()); |
387 EXPECT_TRUE(job_->is_waiting()); | 391 EXPECT_TRUE(job_->IsWaiting()); |
388 | 392 |
389 // We have to wait for completion of storage->FindResponseForMainRequest. | 393 // We have to wait for completion of storage->FindResponseForMainRequest. |
390 ScheduleNextTask(); | 394 ScheduleNextTask(); |
391 } | 395 } |
392 | 396 |
393 void SimulateResponseCode(int response_code) { | 397 void SimulateResponseCode(int response_code) { |
394 net::HttpResponseInfo info; | 398 net::HttpResponseInfo info; |
395 std::string headers = | 399 std::string headers = |
396 base::StringPrintf("HTTP/1.1 %i Muffin\r\n\r\n", response_code); | 400 base::StringPrintf("HTTP/1.1 %i Muffin\r\n\r\n", response_code); |
397 info.headers = new net::HttpResponseHeaders( | 401 info.headers = new net::HttpResponseHeaders( |
398 net::HttpUtil::AssembleRawHeaders(headers.c_str(), headers.length())); | 402 net::HttpUtil::AssembleRawHeaders(headers.c_str(), headers.length())); |
399 | 403 |
400 job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>( | 404 job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>( |
401 request_.get(), request_->context()->network_delegate(), info)); | 405 request_.get(), request_->context()->network_delegate(), info)); |
402 request_->Start(); | 406 request_->Start(); |
403 // All our simulation needs to satisfy are the following two DCHECKs. | 407 // All our simulation needs to satisfy are the following two DCHECKs. |
404 DCHECK_EQ(net::OK, delegate_.request_status()); | 408 DCHECK_EQ(net::OK, delegate_.request_status()); |
405 DCHECK_EQ(response_code, request_->GetResponseCode()); | 409 DCHECK_EQ(response_code, request_->GetResponseCode()); |
406 } | 410 } |
407 | 411 |
408 void SimulateResponseInfo(const net::HttpResponseInfo& info) { | 412 void SimulateResponseInfo(const net::HttpResponseInfo& info) { |
409 job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>( | 413 job_factory_->SetJob(base::MakeUnique<MockURLRequestJob>( |
410 request_.get(), request_->context()->network_delegate(), info)); | 414 request_.get(), request_->context()->network_delegate(), info)); |
411 request_->Start(); | 415 request_->Start(); |
412 } | 416 } |
413 | 417 |
414 void Verify_MainResource_Fallback() { | 418 void Verify_MainResource_Fallback() { |
415 EXPECT_FALSE(job_->is_waiting()); | 419 EXPECT_FALSE(job_->IsWaiting()); |
416 EXPECT_TRUE(job_->is_delivering_network_response()); | 420 EXPECT_TRUE(job_->IsDeliveringNetworkResponse()); |
417 | 421 |
418 // The handler expects to the job to tell it that the request is going to | 422 // The handler expects to the job to tell it that the request is going to |
419 // be restarted before it sees the next request. | 423 // be restarted before it sees the next request. |
420 handler_->OnPrepareToRestart(); | 424 handler_->OnPrepareToRestart(); |
421 | 425 |
422 // When the request is restarted, the existing job is dropped so a | 426 // When the request is restarted, the existing job is dropped so a |
423 // real network job gets created. We expect NULL here which will cause | 427 // real network job gets created. We expect NULL here which will cause |
424 // the net library to create a real job. | 428 // the net library to create a real job. |
425 job_.reset( | 429 job_.reset(static_cast<AppCacheURLRequestJob*>( |
426 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 430 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
427 EXPECT_FALSE(job_.get()); | 431 EXPECT_FALSE(job_.get()); |
428 | 432 |
429 // Simulate an http error of the real network job. | 433 // Simulate an http error of the real network job. |
430 SimulateResponseCode(500); | 434 SimulateResponseCode(500); |
431 | 435 |
432 job_.reset(handler_->MaybeLoadFallbackForResponse( | 436 job_.reset(static_cast<AppCacheURLRequestJob*>( |
433 request_->context()->network_delegate())); | 437 handler_->MaybeLoadFallbackForResponse( |
| 438 request_->context()->network_delegate()))); |
434 EXPECT_TRUE(job_.get()); | 439 EXPECT_TRUE(job_.get()); |
435 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 440 EXPECT_TRUE(job_->IsDeliveringAppCacheResponse()); |
436 | 441 |
437 int64_t cache_id = kAppCacheNoCacheId; | 442 int64_t cache_id = kAppCacheNoCacheId; |
438 GURL manifest_url; | 443 GURL manifest_url; |
439 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 444 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
440 EXPECT_EQ(1, cache_id); | 445 EXPECT_EQ(1, cache_id); |
441 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); | 446 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); |
442 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); | 447 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); |
443 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); | 448 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); |
444 | 449 |
445 EXPECT_EQ(GURL("http://blah/manifest/"), | 450 EXPECT_EQ(GURL("http://blah/manifest/"), |
(...skipping 16 matching lines...) Expand all Loading... |
462 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 467 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
463 RESOURCE_TYPE_MAIN_FRAME, false); | 468 RESOURCE_TYPE_MAIN_FRAME, false); |
464 EXPECT_TRUE(handler_.get()); | 469 EXPECT_TRUE(handler_.get()); |
465 | 470 |
466 mock_storage()->SimulateFindMainResource( | 471 mock_storage()->SimulateFindMainResource( |
467 AppCacheEntry(), | 472 AppCacheEntry(), |
468 GURL("http://blah/fallbackurl"), | 473 GURL("http://blah/fallbackurl"), |
469 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 474 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
470 1, 2, GURL("http://blah/manifest/")); | 475 1, 2, GURL("http://blah/manifest/")); |
471 | 476 |
472 job_.reset( | 477 job_.reset(static_cast<AppCacheURLRequestJob*>( |
473 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 478 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
474 EXPECT_TRUE(job_.get()); | 479 EXPECT_TRUE(job_.get()); |
475 EXPECT_TRUE(job_->is_waiting()); | 480 EXPECT_TRUE(job_->IsWaiting()); |
476 | 481 |
477 // We have to wait for completion of storage->FindResponseForMainRequest. | 482 // We have to wait for completion of storage->FindResponseForMainRequest. |
478 ScheduleNextTask(); | 483 ScheduleNextTask(); |
479 } | 484 } |
480 | 485 |
481 void Verify_MainResource_FallbackOverride() { | 486 void Verify_MainResource_FallbackOverride() { |
482 EXPECT_FALSE(job_->is_waiting()); | 487 EXPECT_FALSE(job_->IsWaiting()); |
483 EXPECT_TRUE(job_->is_delivering_network_response()); | 488 EXPECT_TRUE(job_->IsDeliveringNetworkResponse()); |
484 | 489 |
485 // The handler expects to the job to tell it that the request is going to | 490 // The handler expects to the job to tell it that the request is going to |
486 // be restarted before it sees the next request. | 491 // be restarted before it sees the next request. |
487 handler_->OnPrepareToRestart(); | 492 handler_->OnPrepareToRestart(); |
488 | 493 |
489 // When the request is restarted, the existing job is dropped so a | 494 // When the request is restarted, the existing job is dropped so a |
490 // real network job gets created. We expect NULL here which will cause | 495 // real network job gets created. We expect NULL here which will cause |
491 // the net library to create a real job. | 496 // the net library to create a real job. |
492 job_.reset( | 497 job_.reset(static_cast<AppCacheURLRequestJob*>( |
493 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 498 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
494 EXPECT_FALSE(job_.get()); | 499 EXPECT_FALSE(job_.get()); |
495 | 500 |
496 // Simulate an http error of the real network job, but with custom | 501 // Simulate an http error of the real network job, but with custom |
497 // headers that override the fallback behavior. | 502 // headers that override the fallback behavior. |
498 const char kOverrideHeaders[] = | 503 const char kOverrideHeaders[] = |
499 "HTTP/1.1 404 BOO HOO\0" | 504 "HTTP/1.1 404 BOO HOO\0" |
500 "x-chromium-appcache-fallback-override: disallow-fallback\0" | 505 "x-chromium-appcache-fallback-override: disallow-fallback\0" |
501 "\0"; | 506 "\0"; |
502 net::HttpResponseInfo info; | 507 net::HttpResponseInfo info; |
503 info.headers = new net::HttpResponseHeaders( | 508 info.headers = new net::HttpResponseHeaders( |
504 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); | 509 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); |
505 SimulateResponseInfo(info); | 510 SimulateResponseInfo(info); |
506 | 511 |
507 job_.reset(handler_->MaybeLoadFallbackForResponse( | 512 job_.reset(static_cast<AppCacheURLRequestJob*>( |
508 request_->context()->network_delegate())); | 513 handler_->MaybeLoadFallbackForResponse( |
| 514 request_->context()->network_delegate()))); |
509 EXPECT_FALSE(job_.get()); | 515 EXPECT_FALSE(job_.get()); |
510 | 516 |
511 // GetExtraResponseInfo should return no information. | 517 // GetExtraResponseInfo should return no information. |
512 int64_t cache_id = kAppCacheNoCacheId; | 518 int64_t cache_id = kAppCacheNoCacheId; |
513 GURL manifest_url; | 519 GURL manifest_url; |
514 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 520 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
515 EXPECT_EQ(kAppCacheNoCacheId, cache_id); | 521 EXPECT_EQ(kAppCacheNoCacheId, cache_id); |
516 EXPECT_TRUE(manifest_url.is_empty()); | 522 EXPECT_TRUE(manifest_url.is_empty()); |
517 | 523 |
518 TestFinished(); | 524 TestFinished(); |
(...skipping 22 matching lines...) Expand all Loading... |
541 // in a network or fallback namespace, should result in a failed request. | 547 // in a network or fallback namespace, should result in a failed request. |
542 host_->AssociateCompleteCache(MakeNewCache()); | 548 host_->AssociateCompleteCache(MakeNewCache()); |
543 | 549 |
544 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 550 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
545 net::DEFAULT_PRIORITY, &delegate_); | 551 net::DEFAULT_PRIORITY, &delegate_); |
546 handler_ = | 552 handler_ = |
547 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 553 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
548 RESOURCE_TYPE_SUB_RESOURCE, false); | 554 RESOURCE_TYPE_SUB_RESOURCE, false); |
549 EXPECT_TRUE(handler_.get()); | 555 EXPECT_TRUE(handler_.get()); |
550 | 556 |
551 job_.reset( | 557 job_.reset(static_cast<AppCacheURLRequestJob*>( |
552 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 558 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
553 EXPECT_TRUE(job_.get()); | 559 EXPECT_TRUE(job_.get()); |
554 EXPECT_TRUE(job_->is_delivering_error_response()); | 560 EXPECT_TRUE(job_->IsDeliveringErrorResponse()); |
555 | 561 |
556 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 562 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
557 handler_->MaybeLoadFallbackForRedirect( | 563 static_cast<AppCacheURLRequestJob*>( |
558 request_->context()->network_delegate(), | 564 handler_->MaybeLoadFallbackForRedirect( |
559 GURL("http://blah/redirect"))); | 565 request_->context()->network_delegate(), |
| 566 GURL("http://blah/redirect")))); |
560 EXPECT_FALSE(fallback_job); | 567 EXPECT_FALSE(fallback_job); |
561 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 568 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
562 request_->context()->network_delegate())); | 569 handler_->MaybeLoadFallbackForResponse( |
| 570 request_->context()->network_delegate()))); |
563 EXPECT_FALSE(fallback_job); | 571 EXPECT_FALSE(fallback_job); |
564 | 572 |
565 TestFinished(); | 573 TestFinished(); |
566 } | 574 } |
567 | 575 |
568 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- | 576 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- |
569 | 577 |
570 void SubResource_Miss_WithWaitForCacheSelection() { | 578 void SubResource_Miss_WithWaitForCacheSelection() { |
571 // Precondition, the host is waiting on cache selection. | 579 // Precondition, the host is waiting on cache selection. |
572 scoped_refptr<AppCache> cache(MakeNewCache()); | 580 scoped_refptr<AppCache> cache(MakeNewCache()); |
573 host_->pending_selected_cache_id_ = cache->cache_id(); | 581 host_->pending_selected_cache_id_ = cache->cache_id(); |
574 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); | 582 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); |
575 | 583 |
576 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 584 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
577 net::DEFAULT_PRIORITY, &delegate_); | 585 net::DEFAULT_PRIORITY, &delegate_); |
578 handler_ = | 586 handler_ = |
579 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 587 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
580 RESOURCE_TYPE_SUB_RESOURCE, false); | 588 RESOURCE_TYPE_SUB_RESOURCE, false); |
581 EXPECT_TRUE(handler_.get()); | 589 EXPECT_TRUE(handler_.get()); |
582 job_.reset( | 590 job_.reset(static_cast<AppCacheURLRequestJob*>( |
583 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 591 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
584 EXPECT_TRUE(job_.get()); | 592 EXPECT_TRUE(job_.get()); |
585 EXPECT_TRUE(job_->is_waiting()); | 593 EXPECT_TRUE(job_->IsWaiting()); |
586 | 594 |
587 host_->FinishCacheSelection(cache.get(), NULL); | 595 host_->FinishCacheSelection(cache.get(), NULL); |
588 EXPECT_FALSE(job_->is_waiting()); | 596 EXPECT_FALSE(job_->IsWaiting()); |
589 EXPECT_TRUE(job_->is_delivering_error_response()); | 597 EXPECT_TRUE(job_->IsDeliveringErrorResponse()); |
590 | 598 |
591 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 599 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
592 handler_->MaybeLoadFallbackForRedirect( | 600 static_cast<AppCacheURLRequestJob*>( |
593 request_->context()->network_delegate(), | 601 handler_->MaybeLoadFallbackForRedirect( |
594 GURL("http://blah/redirect"))); | 602 request_->context()->network_delegate(), |
| 603 GURL("http://blah/redirect")))); |
595 EXPECT_FALSE(fallback_job); | 604 EXPECT_FALSE(fallback_job); |
596 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 605 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
597 request_->context()->network_delegate())); | 606 handler_->MaybeLoadFallbackForResponse( |
| 607 request_->context()->network_delegate()))); |
598 EXPECT_FALSE(fallback_job); | 608 EXPECT_FALSE(fallback_job); |
599 | 609 |
600 TestFinished(); | 610 TestFinished(); |
601 } | 611 } |
602 | 612 |
603 // SubResource_Hit ----------------------------- | 613 // SubResource_Hit ----------------------------- |
604 | 614 |
605 void SubResource_Hit() { | 615 void SubResource_Hit() { |
606 host_->AssociateCompleteCache(MakeNewCache()); | 616 host_->AssociateCompleteCache(MakeNewCache()); |
607 | 617 |
608 mock_storage()->SimulateFindSubResource( | 618 mock_storage()->SimulateFindSubResource( |
609 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); | 619 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); |
610 | 620 |
611 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 621 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
612 net::DEFAULT_PRIORITY, &delegate_); | 622 net::DEFAULT_PRIORITY, &delegate_); |
613 handler_ = | 623 handler_ = |
614 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 624 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
615 RESOURCE_TYPE_SUB_RESOURCE, false); | 625 RESOURCE_TYPE_SUB_RESOURCE, false); |
616 EXPECT_TRUE(handler_.get()); | 626 EXPECT_TRUE(handler_.get()); |
617 job_.reset( | 627 job_.reset(static_cast<AppCacheURLRequestJob*>( |
618 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 628 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
619 EXPECT_TRUE(job_.get()); | 629 EXPECT_TRUE(job_.get()); |
620 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 630 EXPECT_TRUE(job_->IsDeliveringAppCacheResponse()); |
621 | 631 |
622 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 632 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
623 handler_->MaybeLoadFallbackForRedirect( | 633 static_cast<AppCacheURLRequestJob*>( |
624 request_->context()->network_delegate(), | 634 handler_->MaybeLoadFallbackForRedirect( |
625 GURL("http://blah/redirect"))); | 635 request_->context()->network_delegate(), |
| 636 GURL("http://blah/redirect")))); |
626 EXPECT_FALSE(fallback_job); | 637 EXPECT_FALSE(fallback_job); |
627 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 638 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
628 request_->context()->network_delegate())); | 639 handler_->MaybeLoadFallbackForResponse( |
| 640 request_->context()->network_delegate()))); |
629 EXPECT_FALSE(fallback_job); | 641 EXPECT_FALSE(fallback_job); |
630 | 642 |
631 TestFinished(); | 643 TestFinished(); |
632 } | 644 } |
633 | 645 |
634 // SubResource_RedirectFallback ----------------------------- | 646 // SubResource_RedirectFallback ----------------------------- |
635 | 647 |
636 void SubResource_RedirectFallback() { | 648 void SubResource_RedirectFallback() { |
637 // Redirects to resources in the a different origin are subject to | 649 // Redirects to resources in the a different origin are subject to |
638 // fallback namespaces. | 650 // fallback namespaces. |
639 host_->AssociateCompleteCache(MakeNewCache()); | 651 host_->AssociateCompleteCache(MakeNewCache()); |
640 | 652 |
641 mock_storage()->SimulateFindSubResource( | 653 mock_storage()->SimulateFindSubResource( |
642 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); | 654 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); |
643 | 655 |
644 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 656 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
645 net::DEFAULT_PRIORITY, &delegate_); | 657 net::DEFAULT_PRIORITY, &delegate_); |
646 handler_ = | 658 handler_ = |
647 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 659 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
648 RESOURCE_TYPE_SUB_RESOURCE, false); | 660 RESOURCE_TYPE_SUB_RESOURCE, false); |
649 EXPECT_TRUE(handler_.get()); | 661 EXPECT_TRUE(handler_.get()); |
650 job_.reset( | 662 job_.reset(static_cast<AppCacheURLRequestJob*>( |
651 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 663 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
652 EXPECT_FALSE(job_.get()); | 664 EXPECT_FALSE(job_.get()); |
653 | 665 |
654 job_.reset(handler_->MaybeLoadFallbackForRedirect( | 666 job_.reset(static_cast<AppCacheURLRequestJob*>( |
655 request_->context()->network_delegate(), | 667 handler_->MaybeLoadFallbackForRedirect( |
656 GURL("http://not_blah/redirect"))); | 668 request_->context()->network_delegate(), |
| 669 GURL("http://not_blah/redirect")))); |
657 EXPECT_TRUE(job_.get()); | 670 EXPECT_TRUE(job_.get()); |
658 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 671 EXPECT_TRUE(job_->IsDeliveringAppCacheResponse()); |
659 | 672 |
660 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 673 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
661 handler_->MaybeLoadFallbackForResponse( | 674 static_cast<AppCacheURLRequestJob*>( |
662 request_->context()->network_delegate())); | 675 handler_->MaybeLoadFallbackForResponse( |
| 676 request_->context()->network_delegate()))); |
663 EXPECT_FALSE(fallback_job); | 677 EXPECT_FALSE(fallback_job); |
664 | 678 |
665 TestFinished(); | 679 TestFinished(); |
666 } | 680 } |
667 | 681 |
668 // SubResource_NoRedirectFallback ----------------------------- | 682 // SubResource_NoRedirectFallback ----------------------------- |
669 | 683 |
670 void SubResource_NoRedirectFallback() { | 684 void SubResource_NoRedirectFallback() { |
671 // Redirects to resources in the same-origin are not subject to | 685 // Redirects to resources in the same-origin are not subject to |
672 // fallback namespaces. | 686 // fallback namespaces. |
673 host_->AssociateCompleteCache(MakeNewCache()); | 687 host_->AssociateCompleteCache(MakeNewCache()); |
674 | 688 |
675 mock_storage()->SimulateFindSubResource( | 689 mock_storage()->SimulateFindSubResource( |
676 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); | 690 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); |
677 | 691 |
678 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 692 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
679 net::DEFAULT_PRIORITY, &delegate_); | 693 net::DEFAULT_PRIORITY, &delegate_); |
680 handler_ = | 694 handler_ = |
681 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 695 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
682 RESOURCE_TYPE_SUB_RESOURCE, false); | 696 RESOURCE_TYPE_SUB_RESOURCE, false); |
683 EXPECT_TRUE(handler_.get()); | 697 EXPECT_TRUE(handler_.get()); |
684 job_.reset( | 698 job_.reset(static_cast<AppCacheURLRequestJob*>( |
685 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 699 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
686 EXPECT_FALSE(job_.get()); | 700 EXPECT_FALSE(job_.get()); |
687 | 701 |
688 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 702 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
689 handler_->MaybeLoadFallbackForRedirect( | 703 static_cast<AppCacheURLRequestJob*>( |
690 request_->context()->network_delegate(), | 704 handler_->MaybeLoadFallbackForRedirect( |
691 GURL("http://blah/redirect"))); | 705 request_->context()->network_delegate(), |
| 706 GURL("http://blah/redirect")))); |
692 EXPECT_FALSE(fallback_job); | 707 EXPECT_FALSE(fallback_job); |
693 | 708 |
694 SimulateResponseCode(200); | 709 SimulateResponseCode(200); |
695 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 710 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
696 request_->context()->network_delegate())); | 711 handler_->MaybeLoadFallbackForResponse( |
| 712 request_->context()->network_delegate()))); |
697 EXPECT_FALSE(fallback_job); | 713 EXPECT_FALSE(fallback_job); |
698 | 714 |
699 TestFinished(); | 715 TestFinished(); |
700 } | 716 } |
701 | 717 |
702 // SubResource_Network ----------------------------- | 718 // SubResource_Network ----------------------------- |
703 | 719 |
704 void SubResource_Network() { | 720 void SubResource_Network() { |
705 // A sub-resource load where the resource is in a network namespace, | 721 // A sub-resource load where the resource is in a network namespace, |
706 // should result in the system using a 'real' job to do the network | 722 // should result in the system using a 'real' job to do the network |
707 // retrieval. | 723 // retrieval. |
708 host_->AssociateCompleteCache(MakeNewCache()); | 724 host_->AssociateCompleteCache(MakeNewCache()); |
709 | 725 |
710 mock_storage()->SimulateFindSubResource( | 726 mock_storage()->SimulateFindSubResource( |
711 AppCacheEntry(), AppCacheEntry(), true); | 727 AppCacheEntry(), AppCacheEntry(), true); |
712 | 728 |
713 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 729 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
714 net::DEFAULT_PRIORITY, &delegate_); | 730 net::DEFAULT_PRIORITY, &delegate_); |
715 handler_ = | 731 handler_ = |
716 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 732 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
717 RESOURCE_TYPE_SUB_RESOURCE, false); | 733 RESOURCE_TYPE_SUB_RESOURCE, false); |
718 EXPECT_TRUE(handler_.get()); | 734 EXPECT_TRUE(handler_.get()); |
719 job_.reset( | 735 job_.reset(static_cast<AppCacheURLRequestJob*>( |
720 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 736 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
721 EXPECT_FALSE(job_.get()); | 737 EXPECT_FALSE(job_.get()); |
722 | 738 |
723 std::unique_ptr<AppCacheURLRequestJob> fallback_job( | 739 std::unique_ptr<AppCacheURLRequestJob> fallback_job( |
724 handler_->MaybeLoadFallbackForRedirect( | 740 static_cast<AppCacheURLRequestJob*>( |
725 request_->context()->network_delegate(), | 741 handler_->MaybeLoadFallbackForRedirect( |
726 GURL("http://blah/redirect"))); | 742 request_->context()->network_delegate(), |
| 743 GURL("http://blah/redirect")))); |
727 EXPECT_FALSE(fallback_job); | 744 EXPECT_FALSE(fallback_job); |
728 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( | 745 fallback_job.reset(static_cast<AppCacheURLRequestJob*>( |
729 request_->context()->network_delegate())); | 746 handler_->MaybeLoadFallbackForResponse( |
| 747 request_->context()->network_delegate()))); |
730 EXPECT_FALSE(fallback_job); | 748 EXPECT_FALSE(fallback_job); |
731 | 749 |
732 TestFinished(); | 750 TestFinished(); |
733 } | 751 } |
734 | 752 |
735 // DestroyedHost ----------------------------- | 753 // DestroyedHost ----------------------------- |
736 | 754 |
737 void DestroyedHost() { | 755 void DestroyedHost() { |
738 host_->AssociateCompleteCache(MakeNewCache()); | 756 host_->AssociateCompleteCache(MakeNewCache()); |
739 | 757 |
740 mock_storage()->SimulateFindSubResource( | 758 mock_storage()->SimulateFindSubResource( |
741 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); | 759 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); |
742 | 760 |
743 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 761 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
744 net::DEFAULT_PRIORITY, &delegate_); | 762 net::DEFAULT_PRIORITY, &delegate_); |
745 handler_ = | 763 handler_ = |
746 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 764 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
747 RESOURCE_TYPE_SUB_RESOURCE, false); | 765 RESOURCE_TYPE_SUB_RESOURCE, false); |
748 EXPECT_TRUE(handler_.get()); | 766 EXPECT_TRUE(handler_.get()); |
749 | 767 |
750 backend_impl_->UnregisterHost(1); | 768 backend_impl_->UnregisterHost(1); |
751 host_ = NULL; | 769 host_ = NULL; |
752 | 770 |
753 EXPECT_FALSE( | 771 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
754 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 772 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
755 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 773 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
756 request_->context()->network_delegate(), | 774 handler_->MaybeLoadFallbackForRedirect( |
757 GURL("http://blah/redirect"))); | 775 request_->context()->network_delegate(), |
758 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 776 GURL("http://blah/redirect")))); |
759 request_->context()->network_delegate())); | 777 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
| 778 handler_->MaybeLoadFallbackForResponse( |
| 779 request_->context()->network_delegate()))); |
760 | 780 |
761 TestFinished(); | 781 TestFinished(); |
762 } | 782 } |
763 | 783 |
764 // DestroyedHostWithWaitingJob ----------------------------- | 784 // DestroyedHostWithWaitingJob ----------------------------- |
765 | 785 |
766 void DestroyedHostWithWaitingJob() { | 786 void DestroyedHostWithWaitingJob() { |
767 // Precondition, the host is waiting on cache selection. | 787 // Precondition, the host is waiting on cache selection. |
768 host_->pending_selected_cache_id_ = 1; | 788 host_->pending_selected_cache_id_ = 1; |
769 | 789 |
770 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 790 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
771 net::DEFAULT_PRIORITY, &delegate_); | 791 net::DEFAULT_PRIORITY, &delegate_); |
772 handler_ = | 792 handler_ = |
773 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 793 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
774 RESOURCE_TYPE_SUB_RESOURCE, false); | 794 RESOURCE_TYPE_SUB_RESOURCE, false); |
775 EXPECT_TRUE(handler_.get()); | 795 EXPECT_TRUE(handler_.get()); |
776 | 796 |
777 job_.reset( | 797 job_.reset(static_cast<AppCacheURLRequestJob*>( |
778 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 798 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
779 EXPECT_TRUE(job_.get()); | 799 EXPECT_TRUE(job_.get()); |
780 EXPECT_TRUE(job_->is_waiting()); | 800 EXPECT_TRUE(job_->IsWaiting()); |
781 | 801 |
782 backend_impl_->UnregisterHost(1); | 802 backend_impl_->UnregisterHost(1); |
783 host_ = NULL; | 803 host_ = NULL; |
784 EXPECT_TRUE(job_->has_been_killed()); | 804 EXPECT_TRUE(job_->has_been_killed()); |
785 | 805 |
786 EXPECT_FALSE( | 806 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
787 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 807 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
788 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 808 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
789 request_->context()->network_delegate(), | 809 handler_->MaybeLoadFallbackForRedirect( |
790 GURL("http://blah/redirect"))); | 810 request_->context()->network_delegate(), |
791 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 811 GURL("http://blah/redirect")))); |
792 request_->context()->network_delegate())); | 812 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
| 813 handler_->MaybeLoadFallbackForResponse( |
| 814 request_->context()->network_delegate()))); |
793 | 815 |
794 TestFinished(); | 816 TestFinished(); |
795 } | 817 } |
796 | 818 |
797 // DestroyedService ----------------------------- | 819 // DestroyedService ----------------------------- |
798 | 820 |
799 void DestroyedService() { | 821 void DestroyedService() { |
800 host_->AssociateCompleteCache(MakeNewCache()); | 822 host_->AssociateCompleteCache(MakeNewCache()); |
801 | 823 |
802 mock_storage()->SimulateFindSubResource( | 824 mock_storage()->SimulateFindSubResource( |
803 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); | 825 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); |
804 | 826 |
805 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 827 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
806 net::DEFAULT_PRIORITY, &delegate_); | 828 net::DEFAULT_PRIORITY, &delegate_); |
807 handler_ = | 829 handler_ = |
808 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 830 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
809 RESOURCE_TYPE_SUB_RESOURCE, false); | 831 RESOURCE_TYPE_SUB_RESOURCE, false); |
810 EXPECT_TRUE(handler_.get()); | 832 EXPECT_TRUE(handler_.get()); |
811 job_.reset( | 833 job_.reset(static_cast<AppCacheURLRequestJob*>( |
812 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 834 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
813 EXPECT_TRUE(job_.get()); | 835 EXPECT_TRUE(job_.get()); |
814 | 836 |
815 backend_impl_.reset(); | 837 backend_impl_.reset(); |
816 mock_frontend_.reset(); | 838 mock_frontend_.reset(); |
817 mock_service_.reset(); | 839 mock_service_.reset(); |
818 mock_policy_.reset(); | 840 mock_policy_.reset(); |
819 host_ = NULL; | 841 host_ = NULL; |
820 | 842 |
821 EXPECT_TRUE(job_->has_been_killed()); | 843 EXPECT_TRUE(job_->has_been_killed()); |
822 EXPECT_FALSE( | 844 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
823 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 845 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
824 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 846 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
825 request_->context()->network_delegate(), | 847 handler_->MaybeLoadFallbackForRedirect( |
826 GURL("http://blah/redirect"))); | 848 request_->context()->network_delegate(), |
827 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 849 GURL("http://blah/redirect")))); |
828 request_->context()->network_delegate())); | 850 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
| 851 handler_->MaybeLoadFallbackForResponse( |
| 852 request_->context()->network_delegate()))); |
829 | 853 |
830 TestFinished(); | 854 TestFinished(); |
831 } | 855 } |
832 | 856 |
833 void DestroyedServiceWithCrossSiteNav() { | 857 void DestroyedServiceWithCrossSiteNav() { |
834 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 858 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
835 net::DEFAULT_PRIORITY, &delegate_); | 859 net::DEFAULT_PRIORITY, &delegate_); |
836 handler_ = | 860 handler_ = |
837 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 861 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
838 RESOURCE_TYPE_MAIN_FRAME, false); | 862 RESOURCE_TYPE_MAIN_FRAME, false); |
839 EXPECT_TRUE(handler_.get()); | 863 EXPECT_TRUE(handler_.get()); |
840 handler_->PrepareForCrossSiteTransfer(backend_impl_->process_id()); | 864 handler_->PrepareForCrossSiteTransfer(backend_impl_->process_id()); |
841 EXPECT_TRUE(handler_->host_for_cross_site_transfer_.get()); | 865 EXPECT_TRUE(handler_->host_for_cross_site_transfer_.get()); |
842 | 866 |
843 backend_impl_.reset(); | 867 backend_impl_.reset(); |
844 mock_frontend_.reset(); | 868 mock_frontend_.reset(); |
845 mock_service_.reset(); | 869 mock_service_.reset(); |
846 mock_policy_.reset(); | 870 mock_policy_.reset(); |
847 host_ = NULL; | 871 host_ = NULL; |
848 | 872 |
849 EXPECT_FALSE(handler_->host_for_cross_site_transfer_.get()); | 873 EXPECT_FALSE(handler_->host_for_cross_site_transfer_.get()); |
850 EXPECT_FALSE( | 874 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
851 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 875 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
852 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 876 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
853 request_->context()->network_delegate(), | 877 handler_->MaybeLoadFallbackForRedirect( |
854 GURL("http://blah/redirect"))); | 878 request_->context()->network_delegate(), |
855 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 879 GURL("http://blah/redirect")))); |
856 request_->context()->network_delegate())); | 880 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
| 881 handler_->MaybeLoadFallbackForResponse( |
| 882 request_->context()->network_delegate()))); |
857 | 883 |
858 TestFinished(); | 884 TestFinished(); |
859 } | 885 } |
860 | 886 |
861 // UnsupportedScheme ----------------------------- | 887 // UnsupportedScheme ----------------------------- |
862 | 888 |
863 void UnsupportedScheme() { | 889 void UnsupportedScheme() { |
864 // Precondition, the host is waiting on cache selection. | 890 // Precondition, the host is waiting on cache selection. |
865 host_->pending_selected_cache_id_ = 1; | 891 host_->pending_selected_cache_id_ = 1; |
866 | 892 |
867 request_ = empty_context_->CreateRequest(GURL("ftp://blah/"), | 893 request_ = empty_context_->CreateRequest(GURL("ftp://blah/"), |
868 net::DEFAULT_PRIORITY, &delegate_); | 894 net::DEFAULT_PRIORITY, &delegate_); |
869 handler_ = | 895 handler_ = |
870 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 896 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
871 RESOURCE_TYPE_SUB_RESOURCE, false); | 897 RESOURCE_TYPE_SUB_RESOURCE, false); |
872 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) | 898 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) |
873 | 899 |
874 EXPECT_FALSE( | 900 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
875 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 901 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
876 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 902 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
877 request_->context()->network_delegate(), | 903 handler_->MaybeLoadFallbackForRedirect( |
878 GURL("ftp://blah/redirect"))); | 904 request_->context()->network_delegate(), |
879 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 905 GURL("ftp://blah/redirect")))); |
880 request_->context()->network_delegate())); | 906 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
| 907 handler_->MaybeLoadFallbackForResponse( |
| 908 request_->context()->network_delegate()))); |
881 | 909 |
882 TestFinished(); | 910 TestFinished(); |
883 } | 911 } |
884 | 912 |
885 // CanceledRequest ----------------------------- | 913 // CanceledRequest ----------------------------- |
886 | 914 |
887 void CanceledRequest() { | 915 void CanceledRequest() { |
888 request_ = empty_context_->CreateRequest(GURL("http://blah/"), | 916 request_ = empty_context_->CreateRequest(GURL("http://blah/"), |
889 net::DEFAULT_PRIORITY, &delegate_); | 917 net::DEFAULT_PRIORITY, &delegate_); |
890 handler_ = | 918 handler_ = |
891 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 919 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
892 RESOURCE_TYPE_MAIN_FRAME, false); | 920 RESOURCE_TYPE_MAIN_FRAME, false); |
893 EXPECT_TRUE(handler_.get()); | 921 EXPECT_TRUE(handler_.get()); |
894 | 922 |
895 job_.reset( | 923 job_.reset(static_cast<AppCacheURLRequestJob*>( |
896 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 924 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
897 EXPECT_TRUE(job_.get()); | 925 EXPECT_TRUE(job_.get()); |
898 EXPECT_TRUE(job_->is_waiting()); | 926 EXPECT_TRUE(job_->IsWaiting()); |
899 EXPECT_FALSE(job_->has_been_started()); | 927 EXPECT_FALSE(job_->IsStarted()); |
900 | 928 |
901 base::WeakPtr<AppCacheURLRequestJob> weak_job = job_->GetWeakPtr(); | 929 base::WeakPtr<AppCacheJob> weak_job = job_->GetWeakPtr(); |
902 | 930 |
903 job_factory_->SetJob(std::move(job_)); | 931 job_factory_->SetJob(std::move(job_)); |
904 request_->Start(); | 932 request_->Start(); |
905 ASSERT_TRUE(weak_job); | 933 ASSERT_TRUE(weak_job); |
906 EXPECT_TRUE(weak_job->has_been_started()); | 934 EXPECT_TRUE(weak_job->IsStarted()); |
907 | 935 |
908 request_->Cancel(); | 936 request_->Cancel(); |
909 ASSERT_FALSE(weak_job); | 937 ASSERT_FALSE(weak_job); |
910 | 938 |
911 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( | 939 EXPECT_FALSE(static_cast<AppCacheURLRequestJob*>( |
912 request_->context()->network_delegate())); | 940 handler_->MaybeLoadFallbackForResponse( |
| 941 request_->context()->network_delegate()))); |
913 | 942 |
914 TestFinished(); | 943 TestFinished(); |
915 } | 944 } |
916 | 945 |
917 // WorkerRequest ----------------------------- | 946 // WorkerRequest ----------------------------- |
918 | 947 |
919 void WorkerRequest() { | 948 void WorkerRequest() { |
920 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( | 949 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( |
921 RESOURCE_TYPE_MAIN_FRAME)); | 950 RESOURCE_TYPE_MAIN_FRAME)); |
922 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( | 951 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
972 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), | 1001 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()), |
973 RESOURCE_TYPE_MAIN_FRAME, false); | 1002 RESOURCE_TYPE_MAIN_FRAME, false); |
974 EXPECT_TRUE(handler_.get()); | 1003 EXPECT_TRUE(handler_.get()); |
975 | 1004 |
976 mock_policy_->can_load_return_value_ = false; | 1005 mock_policy_->can_load_return_value_ = false; |
977 mock_storage()->SimulateFindMainResource( | 1006 mock_storage()->SimulateFindMainResource( |
978 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 1007 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
979 GURL(), AppCacheEntry(), | 1008 GURL(), AppCacheEntry(), |
980 1, 2, GURL("http://blah/manifest/")); | 1009 1, 2, GURL("http://blah/manifest/")); |
981 | 1010 |
982 job_.reset( | 1011 job_.reset(static_cast<AppCacheURLRequestJob*>( |
983 handler_->MaybeLoadResource(request_->context()->network_delegate())); | 1012 handler_->MaybeLoadResource(request_->context()->network_delegate()))); |
984 EXPECT_TRUE(job_.get()); | 1013 EXPECT_TRUE(job_.get()); |
985 EXPECT_TRUE(job_->is_waiting()); | 1014 EXPECT_TRUE(job_->IsWaiting()); |
986 | 1015 |
987 // We have to wait for completion of storage->FindResponseForMainRequest. | 1016 // We have to wait for completion of storage->FindResponseForMainRequest. |
988 ScheduleNextTask(); | 1017 ScheduleNextTask(); |
989 } | 1018 } |
990 | 1019 |
991 void Verify_MainResource_Blocked() { | 1020 void Verify_MainResource_Blocked() { |
992 EXPECT_FALSE(job_->is_waiting()); | 1021 EXPECT_FALSE(job_->IsWaiting()); |
993 EXPECT_FALSE(job_->is_delivering_appcache_response()); | 1022 EXPECT_FALSE(job_->IsDeliveringAppCacheResponse()); |
994 | 1023 |
995 EXPECT_EQ(0, handler_->found_cache_id_); | 1024 EXPECT_EQ(0, handler_->found_cache_id_); |
996 EXPECT_EQ(0, handler_->found_group_id_); | 1025 EXPECT_EQ(0, handler_->found_group_id_); |
997 EXPECT_TRUE(handler_->found_manifest_url_.is_empty()); | 1026 EXPECT_TRUE(handler_->found_manifest_url_.is_empty()); |
998 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); | 1027 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); |
999 EXPECT_TRUE(host_->main_resource_blocked_); | 1028 EXPECT_TRUE(host_->main_resource_blocked_); |
1000 EXPECT_EQ(host_->blocked_manifest_url_, "http://blah/manifest/"); | 1029 EXPECT_EQ(host_->blocked_manifest_url_, "http://blah/manifest/"); |
1001 | 1030 |
1002 TestFinished(); | 1031 TestFinished(); |
1003 } | 1032 } |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1118 | 1147 |
1119 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { | 1148 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { |
1120 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); | 1149 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); |
1121 } | 1150 } |
1122 | 1151 |
1123 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { | 1152 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { |
1124 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); | 1153 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); |
1125 } | 1154 } |
1126 | 1155 |
1127 } // namespace content | 1156 } // namespace content |
OLD | NEW |