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

Side by Side Diff: content/browser/appcache/appcache_request_handler_unittest.cc

Issue 2848493007: Reduce/Remove URLRequest dependencies from AppCacheRequestHandler (Closed)
Patch Set: Created 3 years, 7 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 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>
11 #include <utility> 11 #include <utility>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/bind_helpers.h" 15 #include "base/bind_helpers.h"
16 #include "base/callback.h" 16 #include "base/callback.h"
17 #include "base/location.h" 17 #include "base/location.h"
18 #include "base/macros.h" 18 #include "base/macros.h"
19 #include "base/memory/ptr_util.h" 19 #include "base/memory/ptr_util.h"
20 #include "base/memory/weak_ptr.h" 20 #include "base/memory/weak_ptr.h"
21 #include "base/single_thread_task_runner.h" 21 #include "base/single_thread_task_runner.h"
22 #include "base/strings/stringprintf.h" 22 #include "base/strings/stringprintf.h"
23 #include "base/synchronization/waitable_event.h" 23 #include "base/synchronization/waitable_event.h"
24 #include "base/threading/thread.h" 24 #include "base/threading/thread.h"
25 #include "base/threading/thread_task_runner_handle.h" 25 #include "base/threading/thread_task_runner_handle.h"
26 #include "content/browser/appcache/appcache.h" 26 #include "content/browser/appcache/appcache.h"
27 #include "content/browser/appcache/appcache_backend_impl.h" 27 #include "content/browser/appcache/appcache_backend_impl.h"
28 #include "content/browser/appcache/appcache_url_request.h"
28 #include "content/browser/appcache/appcache_url_request_job.h" 29 #include "content/browser/appcache/appcache_url_request_job.h"
29 #include "content/browser/appcache/mock_appcache_policy.h" 30 #include "content/browser/appcache/mock_appcache_policy.h"
30 #include "content/browser/appcache/mock_appcache_service.h" 31 #include "content/browser/appcache/mock_appcache_service.h"
31 #include "net/base/net_errors.h" 32 #include "net/base/net_errors.h"
32 #include "net/base/request_priority.h" 33 #include "net/base/request_priority.h"
33 #include "net/http/http_response_headers.h" 34 #include "net/http/http_response_headers.h"
34 #include "net/http/http_util.h" 35 #include "net/http/http_util.h"
35 #include "net/url_request/url_request.h" 36 #include "net/url_request/url_request.h"
36 #include "net/url_request/url_request_context.h" 37 #include "net/url_request/url_request_context.h"
37 #include "net/url_request/url_request_error_job.h" 38 #include "net/url_request/url_request_error_job.h"
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 265
265 // MainResource_Miss -------------------------------------------------- 266 // MainResource_Miss --------------------------------------------------
266 267
267 void MainResource_Miss() { 268 void MainResource_Miss() {
268 PushNextTask( 269 PushNextTask(
269 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, 270 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss,
270 base::Unretained(this))); 271 base::Unretained(this)));
271 272
272 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 273 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
273 net::DEFAULT_PRIORITY, &delegate_); 274 net::DEFAULT_PRIORITY, &delegate_);
274 handler_ = host_->CreateRequestHandler(request_.get(), 275 handler_ =
275 RESOURCE_TYPE_MAIN_FRAME, false); 276 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
277 RESOURCE_TYPE_MAIN_FRAME, false);
276 EXPECT_TRUE(handler_.get()); 278 EXPECT_TRUE(handler_.get());
277 279
278 job_.reset(handler_->MaybeLoadResource( 280 job_.reset(
279 request_.get(), request_->context()->network_delegate())); 281 handler_->MaybeLoadResource(request_->context()->network_delegate()));
280 EXPECT_TRUE(job_.get()); 282 EXPECT_TRUE(job_.get());
281 EXPECT_TRUE(job_->is_waiting()); 283 EXPECT_TRUE(job_->is_waiting());
282 284
283 // We have to wait for completion of storage->FindResponseForMainRequest. 285 // We have to wait for completion of storage->FindResponseForMainRequest.
284 ScheduleNextTask(); 286 ScheduleNextTask();
285 } 287 }
286 288
287 void Verify_MainResource_Miss() { 289 void Verify_MainResource_Miss() {
288 EXPECT_FALSE(job_->is_waiting()); 290 EXPECT_FALSE(job_->is_waiting());
289 EXPECT_TRUE(job_->is_delivering_network_response()); 291 EXPECT_TRUE(job_->is_delivering_network_response());
290 292
291 int64_t cache_id = kAppCacheNoCacheId; 293 int64_t cache_id = kAppCacheNoCacheId;
292 GURL manifest_url; 294 GURL manifest_url;
293 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 295 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
294 EXPECT_EQ(kAppCacheNoCacheId, cache_id); 296 EXPECT_EQ(kAppCacheNoCacheId, cache_id);
295 EXPECT_EQ(GURL(), manifest_url); 297 EXPECT_EQ(GURL(), manifest_url);
296 EXPECT_EQ(0, handler_->found_group_id_); 298 EXPECT_EQ(0, handler_->found_group_id_);
297 299
298 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 300 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
299 handler_->MaybeLoadFallbackForRedirect( 301 handler_->MaybeLoadFallbackForRedirect(
300 request_.get(), request_->context()->network_delegate(), 302 request_->context()->network_delegate(),
301 GURL("http://blah/redirect"))); 303 GURL("http://blah/redirect")));
302 EXPECT_FALSE(fallback_job); 304 EXPECT_FALSE(fallback_job);
303 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 305 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
304 request_.get(), request_->context()->network_delegate())); 306 request_->context()->network_delegate()));
305 EXPECT_FALSE(fallback_job); 307 EXPECT_FALSE(fallback_job);
306 308
307 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); 309 EXPECT_TRUE(host_->preferred_manifest_url().is_empty());
308 310
309 TestFinished(); 311 TestFinished();
310 } 312 }
311 313
312 // MainResource_Hit -------------------------------------------------- 314 // MainResource_Hit --------------------------------------------------
313 315
314 void MainResource_Hit() { 316 void MainResource_Hit() {
315 PushNextTask( 317 PushNextTask(
316 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, 318 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit,
317 base::Unretained(this))); 319 base::Unretained(this)));
318 320
319 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 321 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
320 net::DEFAULT_PRIORITY, &delegate_); 322 net::DEFAULT_PRIORITY, &delegate_);
321 handler_ = host_->CreateRequestHandler(request_.get(), 323 handler_ =
322 RESOURCE_TYPE_MAIN_FRAME, false); 324 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
325 RESOURCE_TYPE_MAIN_FRAME, false);
323 EXPECT_TRUE(handler_.get()); 326 EXPECT_TRUE(handler_.get());
324 327
325 mock_storage()->SimulateFindMainResource( 328 mock_storage()->SimulateFindMainResource(
326 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 329 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
327 GURL(), AppCacheEntry(), 330 GURL(), AppCacheEntry(),
328 1, 2, GURL("http://blah/manifest/")); 331 1, 2, GURL("http://blah/manifest/"));
329 332
330 job_.reset(handler_->MaybeLoadResource( 333 job_.reset(
331 request_.get(), request_->context()->network_delegate())); 334 handler_->MaybeLoadResource(request_->context()->network_delegate()));
332 EXPECT_TRUE(job_.get()); 335 EXPECT_TRUE(job_.get());
333 EXPECT_TRUE(job_->is_waiting()); 336 EXPECT_TRUE(job_->is_waiting());
334 337
335 // We have to wait for completion of storage->FindResponseForMainRequest. 338 // We have to wait for completion of storage->FindResponseForMainRequest.
336 ScheduleNextTask(); 339 ScheduleNextTask();
337 } 340 }
338 341
339 void Verify_MainResource_Hit() { 342 void Verify_MainResource_Hit() {
340 EXPECT_FALSE(job_->is_waiting()); 343 EXPECT_FALSE(job_->is_waiting());
341 EXPECT_TRUE(job_->is_delivering_appcache_response()); 344 EXPECT_TRUE(job_->is_delivering_appcache_response());
342 345
343 int64_t cache_id = kAppCacheNoCacheId; 346 int64_t cache_id = kAppCacheNoCacheId;
344 GURL manifest_url; 347 GURL manifest_url;
345 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 348 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
346 EXPECT_EQ(1, cache_id); 349 EXPECT_EQ(1, cache_id);
347 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); 350 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url);
348 EXPECT_EQ(2, handler_->found_group_id_); 351 EXPECT_EQ(2, handler_->found_group_id_);
349 352
350 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 353 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
351 handler_->MaybeLoadFallbackForResponse( 354 handler_->MaybeLoadFallbackForResponse(
352 request_.get(), request_->context()->network_delegate())); 355 request_->context()->network_delegate()));
353 EXPECT_FALSE(fallback_job); 356 EXPECT_FALSE(fallback_job);
354 357
355 EXPECT_EQ(GURL("http://blah/manifest/"), 358 EXPECT_EQ(GURL("http://blah/manifest/"),
356 host_->preferred_manifest_url()); 359 host_->preferred_manifest_url());
357 360
358 TestFinished(); 361 TestFinished();
359 } 362 }
360 363
361 // MainResource_Fallback -------------------------------------------------- 364 // MainResource_Fallback --------------------------------------------------
362 365
363 void MainResource_Fallback() { 366 void MainResource_Fallback() {
364 PushNextTask( 367 PushNextTask(
365 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, 368 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback,
366 base::Unretained(this))); 369 base::Unretained(this)));
367 370
368 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 371 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
369 net::DEFAULT_PRIORITY, &delegate_); 372 net::DEFAULT_PRIORITY, &delegate_);
370 handler_ = host_->CreateRequestHandler(request_.get(), 373 handler_ =
371 RESOURCE_TYPE_MAIN_FRAME, false); 374 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
375 RESOURCE_TYPE_MAIN_FRAME, false);
372 EXPECT_TRUE(handler_.get()); 376 EXPECT_TRUE(handler_.get());
373 377
374 mock_storage()->SimulateFindMainResource( 378 mock_storage()->SimulateFindMainResource(
375 AppCacheEntry(), 379 AppCacheEntry(),
376 GURL("http://blah/fallbackurl"), 380 GURL("http://blah/fallbackurl"),
377 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 381 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
378 1, 2, GURL("http://blah/manifest/")); 382 1, 2, GURL("http://blah/manifest/"));
379 383
380 job_.reset(handler_->MaybeLoadResource( 384 job_.reset(
381 request_.get(), request_->context()->network_delegate())); 385 handler_->MaybeLoadResource(request_->context()->network_delegate()));
382 EXPECT_TRUE(job_.get()); 386 EXPECT_TRUE(job_.get());
383 EXPECT_TRUE(job_->is_waiting()); 387 EXPECT_TRUE(job_->is_waiting());
384 388
385 // We have to wait for completion of storage->FindResponseForMainRequest. 389 // We have to wait for completion of storage->FindResponseForMainRequest.
386 ScheduleNextTask(); 390 ScheduleNextTask();
387 } 391 }
388 392
389 void SimulateResponseCode(int response_code) { 393 void SimulateResponseCode(int response_code) {
390 net::HttpResponseInfo info; 394 net::HttpResponseInfo info;
391 std::string headers = 395 std::string headers =
(...skipping 19 matching lines...) Expand all
411 EXPECT_FALSE(job_->is_waiting()); 415 EXPECT_FALSE(job_->is_waiting());
412 EXPECT_TRUE(job_->is_delivering_network_response()); 416 EXPECT_TRUE(job_->is_delivering_network_response());
413 417
414 // The handler expects to the job to tell it that the request is going to 418 // The handler expects to the job to tell it that the request is going to
415 // be restarted before it sees the next request. 419 // be restarted before it sees the next request.
416 handler_->OnPrepareToRestart(); 420 handler_->OnPrepareToRestart();
417 421
418 // When the request is restarted, the existing job is dropped so a 422 // When the request is restarted, the existing job is dropped so a
419 // real network job gets created. We expect NULL here which will cause 423 // real network job gets created. We expect NULL here which will cause
420 // the net library to create a real job. 424 // the net library to create a real job.
421 job_.reset(handler_->MaybeLoadResource( 425 job_.reset(
422 request_.get(), request_->context()->network_delegate())); 426 handler_->MaybeLoadResource(request_->context()->network_delegate()));
423 EXPECT_FALSE(job_.get()); 427 EXPECT_FALSE(job_.get());
424 428
425 // Simulate an http error of the real network job. 429 // Simulate an http error of the real network job.
426 SimulateResponseCode(500); 430 SimulateResponseCode(500);
427 431
428 job_.reset(handler_->MaybeLoadFallbackForResponse( 432 job_.reset(handler_->MaybeLoadFallbackForResponse(
429 request_.get(), request_->context()->network_delegate())); 433 request_->context()->network_delegate()));
430 EXPECT_TRUE(job_.get()); 434 EXPECT_TRUE(job_.get());
431 EXPECT_TRUE(job_->is_delivering_appcache_response()); 435 EXPECT_TRUE(job_->is_delivering_appcache_response());
432 436
433 int64_t cache_id = kAppCacheNoCacheId; 437 int64_t cache_id = kAppCacheNoCacheId;
434 GURL manifest_url; 438 GURL manifest_url;
435 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 439 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
436 EXPECT_EQ(1, cache_id); 440 EXPECT_EQ(1, cache_id);
437 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); 441 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url);
438 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); 442 EXPECT_TRUE(host_->main_resource_was_namespace_entry_);
439 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); 443 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_);
440 444
441 EXPECT_EQ(GURL("http://blah/manifest/"), 445 EXPECT_EQ(GURL("http://blah/manifest/"),
442 host_->preferred_manifest_url()); 446 host_->preferred_manifest_url());
443 447
444 TestFinished(); 448 TestFinished();
445 } 449 }
446 450
447 // MainResource_FallbackOverride -------------------------------------------- 451 // MainResource_FallbackOverride --------------------------------------------
448 452
449 void MainResource_FallbackOverride() { 453 void MainResource_FallbackOverride() {
450 PushNextTask(base::Bind( 454 PushNextTask(base::Bind(
451 &AppCacheRequestHandlerTest::Verify_MainResource_FallbackOverride, 455 &AppCacheRequestHandlerTest::Verify_MainResource_FallbackOverride,
452 base::Unretained(this))); 456 base::Unretained(this)));
453 457
454 request_ = 458 request_ =
455 empty_context_->CreateRequest(GURL("http://blah/fallback-override"), 459 empty_context_->CreateRequest(GURL("http://blah/fallback-override"),
456 net::DEFAULT_PRIORITY, &delegate_); 460 net::DEFAULT_PRIORITY, &delegate_);
457 handler_ = host_->CreateRequestHandler(request_.get(), 461 handler_ =
458 RESOURCE_TYPE_MAIN_FRAME, false); 462 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
463 RESOURCE_TYPE_MAIN_FRAME, false);
459 EXPECT_TRUE(handler_.get()); 464 EXPECT_TRUE(handler_.get());
460 465
461 mock_storage()->SimulateFindMainResource( 466 mock_storage()->SimulateFindMainResource(
462 AppCacheEntry(), 467 AppCacheEntry(),
463 GURL("http://blah/fallbackurl"), 468 GURL("http://blah/fallbackurl"),
464 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 469 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
465 1, 2, GURL("http://blah/manifest/")); 470 1, 2, GURL("http://blah/manifest/"));
466 471
467 job_.reset(handler_->MaybeLoadResource( 472 job_.reset(
468 request_.get(), request_->context()->network_delegate())); 473 handler_->MaybeLoadResource(request_->context()->network_delegate()));
469 EXPECT_TRUE(job_.get()); 474 EXPECT_TRUE(job_.get());
470 EXPECT_TRUE(job_->is_waiting()); 475 EXPECT_TRUE(job_->is_waiting());
471 476
472 // We have to wait for completion of storage->FindResponseForMainRequest. 477 // We have to wait for completion of storage->FindResponseForMainRequest.
473 ScheduleNextTask(); 478 ScheduleNextTask();
474 } 479 }
475 480
476 void Verify_MainResource_FallbackOverride() { 481 void Verify_MainResource_FallbackOverride() {
477 EXPECT_FALSE(job_->is_waiting()); 482 EXPECT_FALSE(job_->is_waiting());
478 EXPECT_TRUE(job_->is_delivering_network_response()); 483 EXPECT_TRUE(job_->is_delivering_network_response());
479 484
480 // The handler expects to the job to tell it that the request is going to 485 // The handler expects to the job to tell it that the request is going to
481 // be restarted before it sees the next request. 486 // be restarted before it sees the next request.
482 handler_->OnPrepareToRestart(); 487 handler_->OnPrepareToRestart();
483 488
484 // When the request is restarted, the existing job is dropped so a 489 // When the request is restarted, the existing job is dropped so a
485 // real network job gets created. We expect NULL here which will cause 490 // real network job gets created. We expect NULL here which will cause
486 // the net library to create a real job. 491 // the net library to create a real job.
487 job_.reset(handler_->MaybeLoadResource( 492 job_.reset(
488 request_.get(), request_->context()->network_delegate())); 493 handler_->MaybeLoadResource(request_->context()->network_delegate()));
489 EXPECT_FALSE(job_.get()); 494 EXPECT_FALSE(job_.get());
490 495
491 // Simulate an http error of the real network job, but with custom 496 // Simulate an http error of the real network job, but with custom
492 // headers that override the fallback behavior. 497 // headers that override the fallback behavior.
493 const char kOverrideHeaders[] = 498 const char kOverrideHeaders[] =
494 "HTTP/1.1 404 BOO HOO\0" 499 "HTTP/1.1 404 BOO HOO\0"
495 "x-chromium-appcache-fallback-override: disallow-fallback\0" 500 "x-chromium-appcache-fallback-override: disallow-fallback\0"
496 "\0"; 501 "\0";
497 net::HttpResponseInfo info; 502 net::HttpResponseInfo info;
498 info.headers = new net::HttpResponseHeaders( 503 info.headers = new net::HttpResponseHeaders(
499 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); 504 std::string(kOverrideHeaders, arraysize(kOverrideHeaders)));
500 SimulateResponseInfo(info); 505 SimulateResponseInfo(info);
501 506
502 job_.reset(handler_->MaybeLoadFallbackForResponse( 507 job_.reset(handler_->MaybeLoadFallbackForResponse(
503 request_.get(), request_->context()->network_delegate())); 508 request_->context()->network_delegate()));
504 EXPECT_FALSE(job_.get()); 509 EXPECT_FALSE(job_.get());
505 510
506 // GetExtraResponseInfo should return no information. 511 // GetExtraResponseInfo should return no information.
507 int64_t cache_id = kAppCacheNoCacheId; 512 int64_t cache_id = kAppCacheNoCacheId;
508 GURL manifest_url; 513 GURL manifest_url;
509 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 514 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
510 EXPECT_EQ(kAppCacheNoCacheId, cache_id); 515 EXPECT_EQ(kAppCacheNoCacheId, cache_id);
511 EXPECT_TRUE(manifest_url.is_empty()); 516 EXPECT_TRUE(manifest_url.is_empty());
512 517
513 TestFinished(); 518 TestFinished();
514 } 519 }
515 520
516 // SubResource_Miss_WithNoCacheSelected ---------------------------------- 521 // SubResource_Miss_WithNoCacheSelected ----------------------------------
517 522
518 void SubResource_Miss_WithNoCacheSelected() { 523 void SubResource_Miss_WithNoCacheSelected() {
519 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 524 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
520 net::DEFAULT_PRIORITY, &delegate_); 525 net::DEFAULT_PRIORITY, &delegate_);
521 handler_ = host_->CreateRequestHandler(request_.get(), 526 handler_ =
522 RESOURCE_TYPE_SUB_RESOURCE, false); 527 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
528 RESOURCE_TYPE_SUB_RESOURCE, false);
523 529
524 // We avoid creating handler when possible, sub-resource requests are not 530 // We avoid creating handler when possible, sub-resource requests are not
525 // subject to retrieval from an appcache when there's no associated cache. 531 // subject to retrieval from an appcache when there's no associated cache.
526 EXPECT_FALSE(handler_.get()); 532 EXPECT_FALSE(handler_.get());
527 533
528 TestFinished(); 534 TestFinished();
529 } 535 }
530 536
531 // SubResource_Miss_WithCacheSelected ---------------------------------- 537 // SubResource_Miss_WithCacheSelected ----------------------------------
532 538
533 void SubResource_Miss_WithCacheSelected() { 539 void SubResource_Miss_WithCacheSelected() {
534 // A sub-resource load where the resource is not in an appcache, or 540 // A sub-resource load where the resource is not in an appcache, or
535 // in a network or fallback namespace, should result in a failed request. 541 // in a network or fallback namespace, should result in a failed request.
536 host_->AssociateCompleteCache(MakeNewCache()); 542 host_->AssociateCompleteCache(MakeNewCache());
537 543
538 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 544 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
539 net::DEFAULT_PRIORITY, &delegate_); 545 net::DEFAULT_PRIORITY, &delegate_);
540 handler_ = host_->CreateRequestHandler(request_.get(), 546 handler_ =
541 RESOURCE_TYPE_SUB_RESOURCE, false); 547 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
548 RESOURCE_TYPE_SUB_RESOURCE, false);
542 EXPECT_TRUE(handler_.get()); 549 EXPECT_TRUE(handler_.get());
543 550
544 job_.reset(handler_->MaybeLoadResource( 551 job_.reset(
545 request_.get(), request_->context()->network_delegate())); 552 handler_->MaybeLoadResource(request_->context()->network_delegate()));
546 EXPECT_TRUE(job_.get()); 553 EXPECT_TRUE(job_.get());
547 EXPECT_TRUE(job_->is_delivering_error_response()); 554 EXPECT_TRUE(job_->is_delivering_error_response());
548 555
549 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 556 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
550 handler_->MaybeLoadFallbackForRedirect( 557 handler_->MaybeLoadFallbackForRedirect(
551 request_.get(), request_->context()->network_delegate(), 558 request_->context()->network_delegate(),
552 GURL("http://blah/redirect"))); 559 GURL("http://blah/redirect")));
553 EXPECT_FALSE(fallback_job); 560 EXPECT_FALSE(fallback_job);
554 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 561 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
555 request_.get(), request_->context()->network_delegate())); 562 request_->context()->network_delegate()));
556 EXPECT_FALSE(fallback_job); 563 EXPECT_FALSE(fallback_job);
557 564
558 TestFinished(); 565 TestFinished();
559 } 566 }
560 567
561 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- 568 // SubResource_Miss_WithWaitForCacheSelection -----------------------------
562 569
563 void SubResource_Miss_WithWaitForCacheSelection() { 570 void SubResource_Miss_WithWaitForCacheSelection() {
564 // Precondition, the host is waiting on cache selection. 571 // Precondition, the host is waiting on cache selection.
565 scoped_refptr<AppCache> cache(MakeNewCache()); 572 scoped_refptr<AppCache> cache(MakeNewCache());
566 host_->pending_selected_cache_id_ = cache->cache_id(); 573 host_->pending_selected_cache_id_ = cache->cache_id();
567 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); 574 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url());
568 575
569 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 576 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
570 net::DEFAULT_PRIORITY, &delegate_); 577 net::DEFAULT_PRIORITY, &delegate_);
571 handler_ = host_->CreateRequestHandler(request_.get(), 578 handler_ =
572 RESOURCE_TYPE_SUB_RESOURCE, false); 579 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
580 RESOURCE_TYPE_SUB_RESOURCE, false);
573 EXPECT_TRUE(handler_.get()); 581 EXPECT_TRUE(handler_.get());
574 job_.reset(handler_->MaybeLoadResource( 582 job_.reset(
575 request_.get(), request_->context()->network_delegate())); 583 handler_->MaybeLoadResource(request_->context()->network_delegate()));
576 EXPECT_TRUE(job_.get()); 584 EXPECT_TRUE(job_.get());
577 EXPECT_TRUE(job_->is_waiting()); 585 EXPECT_TRUE(job_->is_waiting());
578 586
579 host_->FinishCacheSelection(cache.get(), NULL); 587 host_->FinishCacheSelection(cache.get(), NULL);
580 EXPECT_FALSE(job_->is_waiting()); 588 EXPECT_FALSE(job_->is_waiting());
581 EXPECT_TRUE(job_->is_delivering_error_response()); 589 EXPECT_TRUE(job_->is_delivering_error_response());
582 590
583 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 591 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
584 handler_->MaybeLoadFallbackForRedirect( 592 handler_->MaybeLoadFallbackForRedirect(
585 request_.get(), request_->context()->network_delegate(), 593 request_->context()->network_delegate(),
586 GURL("http://blah/redirect"))); 594 GURL("http://blah/redirect")));
587 EXPECT_FALSE(fallback_job); 595 EXPECT_FALSE(fallback_job);
588 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 596 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
589 request_.get(), request_->context()->network_delegate())); 597 request_->context()->network_delegate()));
590 EXPECT_FALSE(fallback_job); 598 EXPECT_FALSE(fallback_job);
591 599
592 TestFinished(); 600 TestFinished();
593 } 601 }
594 602
595 // SubResource_Hit ----------------------------- 603 // SubResource_Hit -----------------------------
596 604
597 void SubResource_Hit() { 605 void SubResource_Hit() {
598 host_->AssociateCompleteCache(MakeNewCache()); 606 host_->AssociateCompleteCache(MakeNewCache());
599 607
600 mock_storage()->SimulateFindSubResource( 608 mock_storage()->SimulateFindSubResource(
601 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 609 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
602 610
603 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 611 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
604 net::DEFAULT_PRIORITY, &delegate_); 612 net::DEFAULT_PRIORITY, &delegate_);
605 handler_ = host_->CreateRequestHandler(request_.get(), 613 handler_ =
606 RESOURCE_TYPE_SUB_RESOURCE, false); 614 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
615 RESOURCE_TYPE_SUB_RESOURCE, false);
607 EXPECT_TRUE(handler_.get()); 616 EXPECT_TRUE(handler_.get());
608 job_.reset(handler_->MaybeLoadResource( 617 job_.reset(
609 request_.get(), request_->context()->network_delegate())); 618 handler_->MaybeLoadResource(request_->context()->network_delegate()));
610 EXPECT_TRUE(job_.get()); 619 EXPECT_TRUE(job_.get());
611 EXPECT_TRUE(job_->is_delivering_appcache_response()); 620 EXPECT_TRUE(job_->is_delivering_appcache_response());
612 621
613 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 622 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
614 handler_->MaybeLoadFallbackForRedirect( 623 handler_->MaybeLoadFallbackForRedirect(
615 request_.get(), request_->context()->network_delegate(), 624 request_->context()->network_delegate(),
616 GURL("http://blah/redirect"))); 625 GURL("http://blah/redirect")));
617 EXPECT_FALSE(fallback_job); 626 EXPECT_FALSE(fallback_job);
618 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 627 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
619 request_.get(), request_->context()->network_delegate())); 628 request_->context()->network_delegate()));
620 EXPECT_FALSE(fallback_job); 629 EXPECT_FALSE(fallback_job);
621 630
622 TestFinished(); 631 TestFinished();
623 } 632 }
624 633
625 // SubResource_RedirectFallback ----------------------------- 634 // SubResource_RedirectFallback -----------------------------
626 635
627 void SubResource_RedirectFallback() { 636 void SubResource_RedirectFallback() {
628 // Redirects to resources in the a different origin are subject to 637 // Redirects to resources in the a different origin are subject to
629 // fallback namespaces. 638 // fallback namespaces.
630 host_->AssociateCompleteCache(MakeNewCache()); 639 host_->AssociateCompleteCache(MakeNewCache());
631 640
632 mock_storage()->SimulateFindSubResource( 641 mock_storage()->SimulateFindSubResource(
633 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 642 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
634 643
635 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 644 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
636 net::DEFAULT_PRIORITY, &delegate_); 645 net::DEFAULT_PRIORITY, &delegate_);
637 handler_ = host_->CreateRequestHandler(request_.get(), 646 handler_ =
638 RESOURCE_TYPE_SUB_RESOURCE, false); 647 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
648 RESOURCE_TYPE_SUB_RESOURCE, false);
639 EXPECT_TRUE(handler_.get()); 649 EXPECT_TRUE(handler_.get());
640 job_.reset(handler_->MaybeLoadResource( 650 job_.reset(
641 request_.get(), request_->context()->network_delegate())); 651 handler_->MaybeLoadResource(request_->context()->network_delegate()));
642 EXPECT_FALSE(job_.get()); 652 EXPECT_FALSE(job_.get());
643 653
644 job_.reset(handler_->MaybeLoadFallbackForRedirect( 654 job_.reset(handler_->MaybeLoadFallbackForRedirect(
645 request_.get(), request_->context()->network_delegate(), 655 request_->context()->network_delegate(),
646 GURL("http://not_blah/redirect"))); 656 GURL("http://not_blah/redirect")));
647 EXPECT_TRUE(job_.get()); 657 EXPECT_TRUE(job_.get());
648 EXPECT_TRUE(job_->is_delivering_appcache_response()); 658 EXPECT_TRUE(job_->is_delivering_appcache_response());
649 659
650 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 660 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
651 handler_->MaybeLoadFallbackForResponse( 661 handler_->MaybeLoadFallbackForResponse(
652 request_.get(), request_->context()->network_delegate())); 662 request_->context()->network_delegate()));
653 EXPECT_FALSE(fallback_job); 663 EXPECT_FALSE(fallback_job);
654 664
655 TestFinished(); 665 TestFinished();
656 } 666 }
657 667
658 // SubResource_NoRedirectFallback ----------------------------- 668 // SubResource_NoRedirectFallback -----------------------------
659 669
660 void SubResource_NoRedirectFallback() { 670 void SubResource_NoRedirectFallback() {
661 // Redirects to resources in the same-origin are not subject to 671 // Redirects to resources in the same-origin are not subject to
662 // fallback namespaces. 672 // fallback namespaces.
663 host_->AssociateCompleteCache(MakeNewCache()); 673 host_->AssociateCompleteCache(MakeNewCache());
664 674
665 mock_storage()->SimulateFindSubResource( 675 mock_storage()->SimulateFindSubResource(
666 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 676 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
667 677
668 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 678 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
669 net::DEFAULT_PRIORITY, &delegate_); 679 net::DEFAULT_PRIORITY, &delegate_);
670 handler_ = host_->CreateRequestHandler(request_.get(), 680 handler_ =
671 RESOURCE_TYPE_SUB_RESOURCE, false); 681 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
682 RESOURCE_TYPE_SUB_RESOURCE, false);
672 EXPECT_TRUE(handler_.get()); 683 EXPECT_TRUE(handler_.get());
673 job_.reset(handler_->MaybeLoadResource( 684 job_.reset(
674 request_.get(), request_->context()->network_delegate())); 685 handler_->MaybeLoadResource(request_->context()->network_delegate()));
675 EXPECT_FALSE(job_.get()); 686 EXPECT_FALSE(job_.get());
676 687
677 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 688 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
678 handler_->MaybeLoadFallbackForRedirect( 689 handler_->MaybeLoadFallbackForRedirect(
679 request_.get(), request_->context()->network_delegate(), 690 request_->context()->network_delegate(),
680 GURL("http://blah/redirect"))); 691 GURL("http://blah/redirect")));
681 EXPECT_FALSE(fallback_job); 692 EXPECT_FALSE(fallback_job);
682 693
683 SimulateResponseCode(200); 694 SimulateResponseCode(200);
684 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 695 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
685 request_.get(), request_->context()->network_delegate())); 696 request_->context()->network_delegate()));
686 EXPECT_FALSE(fallback_job); 697 EXPECT_FALSE(fallback_job);
687 698
688 TestFinished(); 699 TestFinished();
689 } 700 }
690 701
691 // SubResource_Network ----------------------------- 702 // SubResource_Network -----------------------------
692 703
693 void SubResource_Network() { 704 void SubResource_Network() {
694 // A sub-resource load where the resource is in a network namespace, 705 // A sub-resource load where the resource is in a network namespace,
695 // should result in the system using a 'real' job to do the network 706 // should result in the system using a 'real' job to do the network
696 // retrieval. 707 // retrieval.
697 host_->AssociateCompleteCache(MakeNewCache()); 708 host_->AssociateCompleteCache(MakeNewCache());
698 709
699 mock_storage()->SimulateFindSubResource( 710 mock_storage()->SimulateFindSubResource(
700 AppCacheEntry(), AppCacheEntry(), true); 711 AppCacheEntry(), AppCacheEntry(), true);
701 712
702 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 713 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
703 net::DEFAULT_PRIORITY, &delegate_); 714 net::DEFAULT_PRIORITY, &delegate_);
704 handler_ = host_->CreateRequestHandler(request_.get(), 715 handler_ =
705 RESOURCE_TYPE_SUB_RESOURCE, false); 716 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
717 RESOURCE_TYPE_SUB_RESOURCE, false);
706 EXPECT_TRUE(handler_.get()); 718 EXPECT_TRUE(handler_.get());
707 job_.reset(handler_->MaybeLoadResource( 719 job_.reset(
708 request_.get(), request_->context()->network_delegate())); 720 handler_->MaybeLoadResource(request_->context()->network_delegate()));
709 EXPECT_FALSE(job_.get()); 721 EXPECT_FALSE(job_.get());
710 722
711 std::unique_ptr<AppCacheURLRequestJob> fallback_job( 723 std::unique_ptr<AppCacheURLRequestJob> fallback_job(
712 handler_->MaybeLoadFallbackForRedirect( 724 handler_->MaybeLoadFallbackForRedirect(
713 request_.get(), request_->context()->network_delegate(), 725 request_->context()->network_delegate(),
714 GURL("http://blah/redirect"))); 726 GURL("http://blah/redirect")));
715 EXPECT_FALSE(fallback_job); 727 EXPECT_FALSE(fallback_job);
716 fallback_job.reset(handler_->MaybeLoadFallbackForResponse( 728 fallback_job.reset(handler_->MaybeLoadFallbackForResponse(
717 request_.get(), request_->context()->network_delegate())); 729 request_->context()->network_delegate()));
718 EXPECT_FALSE(fallback_job); 730 EXPECT_FALSE(fallback_job);
719 731
720 TestFinished(); 732 TestFinished();
721 } 733 }
722 734
723 // DestroyedHost ----------------------------- 735 // DestroyedHost -----------------------------
724 736
725 void DestroyedHost() { 737 void DestroyedHost() {
726 host_->AssociateCompleteCache(MakeNewCache()); 738 host_->AssociateCompleteCache(MakeNewCache());
727 739
728 mock_storage()->SimulateFindSubResource( 740 mock_storage()->SimulateFindSubResource(
729 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 741 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
730 742
731 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 743 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
732 net::DEFAULT_PRIORITY, &delegate_); 744 net::DEFAULT_PRIORITY, &delegate_);
733 handler_ = host_->CreateRequestHandler(request_.get(), 745 handler_ =
734 RESOURCE_TYPE_SUB_RESOURCE, false); 746 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
747 RESOURCE_TYPE_SUB_RESOURCE, false);
735 EXPECT_TRUE(handler_.get()); 748 EXPECT_TRUE(handler_.get());
736 749
737 backend_impl_->UnregisterHost(1); 750 backend_impl_->UnregisterHost(1);
738 host_ = NULL; 751 host_ = NULL;
739 752
740 EXPECT_FALSE(handler_->MaybeLoadResource( 753 EXPECT_FALSE(
741 request_.get(), request_->context()->network_delegate())); 754 handler_->MaybeLoadResource(request_->context()->network_delegate()));
742 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 755 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
743 request_.get(),
744 request_->context()->network_delegate(), 756 request_->context()->network_delegate(),
745 GURL("http://blah/redirect"))); 757 GURL("http://blah/redirect")));
746 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 758 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
747 request_.get(), request_->context()->network_delegate())); 759 request_->context()->network_delegate()));
748 760
749 TestFinished(); 761 TestFinished();
750 } 762 }
751 763
752 // DestroyedHostWithWaitingJob ----------------------------- 764 // DestroyedHostWithWaitingJob -----------------------------
753 765
754 void DestroyedHostWithWaitingJob() { 766 void DestroyedHostWithWaitingJob() {
755 // Precondition, the host is waiting on cache selection. 767 // Precondition, the host is waiting on cache selection.
756 host_->pending_selected_cache_id_ = 1; 768 host_->pending_selected_cache_id_ = 1;
757 769
758 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 770 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
759 net::DEFAULT_PRIORITY, &delegate_); 771 net::DEFAULT_PRIORITY, &delegate_);
760 handler_ = host_->CreateRequestHandler(request_.get(), 772 handler_ =
761 RESOURCE_TYPE_SUB_RESOURCE, false); 773 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
774 RESOURCE_TYPE_SUB_RESOURCE, false);
762 EXPECT_TRUE(handler_.get()); 775 EXPECT_TRUE(handler_.get());
763 776
764 job_.reset(handler_->MaybeLoadResource( 777 job_.reset(
765 request_.get(), request_->context()->network_delegate())); 778 handler_->MaybeLoadResource(request_->context()->network_delegate()));
766 EXPECT_TRUE(job_.get()); 779 EXPECT_TRUE(job_.get());
767 EXPECT_TRUE(job_->is_waiting()); 780 EXPECT_TRUE(job_->is_waiting());
768 781
769 backend_impl_->UnregisterHost(1); 782 backend_impl_->UnregisterHost(1);
770 host_ = NULL; 783 host_ = NULL;
771 EXPECT_TRUE(job_->has_been_killed()); 784 EXPECT_TRUE(job_->has_been_killed());
772 785
773 EXPECT_FALSE(handler_->MaybeLoadResource( 786 EXPECT_FALSE(
774 request_.get(), request_->context()->network_delegate())); 787 handler_->MaybeLoadResource(request_->context()->network_delegate()));
775 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 788 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
776 request_.get(),
777 request_->context()->network_delegate(), 789 request_->context()->network_delegate(),
778 GURL("http://blah/redirect"))); 790 GURL("http://blah/redirect")));
779 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 791 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
780 request_.get(), request_->context()->network_delegate())); 792 request_->context()->network_delegate()));
781 793
782 TestFinished(); 794 TestFinished();
783 } 795 }
784 796
785 // DestroyedService ----------------------------- 797 // DestroyedService -----------------------------
786 798
787 void DestroyedService() { 799 void DestroyedService() {
788 host_->AssociateCompleteCache(MakeNewCache()); 800 host_->AssociateCompleteCache(MakeNewCache());
789 801
790 mock_storage()->SimulateFindSubResource( 802 mock_storage()->SimulateFindSubResource(
791 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 803 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
792 804
793 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 805 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
794 net::DEFAULT_PRIORITY, &delegate_); 806 net::DEFAULT_PRIORITY, &delegate_);
795 handler_ = host_->CreateRequestHandler(request_.get(), 807 handler_ =
796 RESOURCE_TYPE_SUB_RESOURCE, false); 808 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
809 RESOURCE_TYPE_SUB_RESOURCE, false);
797 EXPECT_TRUE(handler_.get()); 810 EXPECT_TRUE(handler_.get());
798 job_.reset(handler_->MaybeLoadResource( 811 job_.reset(
799 request_.get(), request_->context()->network_delegate())); 812 handler_->MaybeLoadResource(request_->context()->network_delegate()));
800 EXPECT_TRUE(job_.get()); 813 EXPECT_TRUE(job_.get());
801 814
802 backend_impl_.reset(); 815 backend_impl_.reset();
803 mock_frontend_.reset(); 816 mock_frontend_.reset();
804 mock_service_.reset(); 817 mock_service_.reset();
805 mock_policy_.reset(); 818 mock_policy_.reset();
806 host_ = NULL; 819 host_ = NULL;
807 820
808 EXPECT_TRUE(job_->has_been_killed()); 821 EXPECT_TRUE(job_->has_been_killed());
809 EXPECT_FALSE(handler_->MaybeLoadResource( 822 EXPECT_FALSE(
810 request_.get(), request_->context()->network_delegate())); 823 handler_->MaybeLoadResource(request_->context()->network_delegate()));
811 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 824 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
812 request_.get(),
813 request_->context()->network_delegate(), 825 request_->context()->network_delegate(),
814 GURL("http://blah/redirect"))); 826 GURL("http://blah/redirect")));
815 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 827 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
816 request_.get(), request_->context()->network_delegate())); 828 request_->context()->network_delegate()));
817 829
818 TestFinished(); 830 TestFinished();
819 } 831 }
820 832
821 void DestroyedServiceWithCrossSiteNav() { 833 void DestroyedServiceWithCrossSiteNav() {
822 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 834 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
823 net::DEFAULT_PRIORITY, &delegate_); 835 net::DEFAULT_PRIORITY, &delegate_);
824 handler_ = host_->CreateRequestHandler(request_.get(), 836 handler_ =
825 RESOURCE_TYPE_MAIN_FRAME, false); 837 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
838 RESOURCE_TYPE_MAIN_FRAME, false);
826 EXPECT_TRUE(handler_.get()); 839 EXPECT_TRUE(handler_.get());
827 handler_->PrepareForCrossSiteTransfer(backend_impl_->process_id()); 840 handler_->PrepareForCrossSiteTransfer(backend_impl_->process_id());
828 EXPECT_TRUE(handler_->host_for_cross_site_transfer_.get()); 841 EXPECT_TRUE(handler_->host_for_cross_site_transfer_.get());
829 842
830 backend_impl_.reset(); 843 backend_impl_.reset();
831 mock_frontend_.reset(); 844 mock_frontend_.reset();
832 mock_service_.reset(); 845 mock_service_.reset();
833 mock_policy_.reset(); 846 mock_policy_.reset();
834 host_ = NULL; 847 host_ = NULL;
835 848
836 EXPECT_FALSE(handler_->host_for_cross_site_transfer_.get()); 849 EXPECT_FALSE(handler_->host_for_cross_site_transfer_.get());
837 EXPECT_FALSE(handler_->MaybeLoadResource( 850 EXPECT_FALSE(
838 request_.get(), request_->context()->network_delegate())); 851 handler_->MaybeLoadResource(request_->context()->network_delegate()));
839 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 852 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
840 request_.get(),
841 request_->context()->network_delegate(), 853 request_->context()->network_delegate(),
842 GURL("http://blah/redirect"))); 854 GURL("http://blah/redirect")));
843 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 855 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
844 request_.get(), request_->context()->network_delegate())); 856 request_->context()->network_delegate()));
845 857
846 TestFinished(); 858 TestFinished();
847 } 859 }
848 860
849 // UnsupportedScheme ----------------------------- 861 // UnsupportedScheme -----------------------------
850 862
851 void UnsupportedScheme() { 863 void UnsupportedScheme() {
852 // Precondition, the host is waiting on cache selection. 864 // Precondition, the host is waiting on cache selection.
853 host_->pending_selected_cache_id_ = 1; 865 host_->pending_selected_cache_id_ = 1;
854 866
855 request_ = empty_context_->CreateRequest(GURL("ftp://blah/"), 867 request_ = empty_context_->CreateRequest(GURL("ftp://blah/"),
856 net::DEFAULT_PRIORITY, &delegate_); 868 net::DEFAULT_PRIORITY, &delegate_);
857 handler_ = host_->CreateRequestHandler(request_.get(), 869 handler_ =
858 RESOURCE_TYPE_SUB_RESOURCE, false); 870 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
871 RESOURCE_TYPE_SUB_RESOURCE, false);
859 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) 872 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably)
860 873
861 EXPECT_FALSE(handler_->MaybeLoadResource( 874 EXPECT_FALSE(
862 request_.get(), request_->context()->network_delegate())); 875 handler_->MaybeLoadResource(request_->context()->network_delegate()));
863 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 876 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
864 request_.get(),
865 request_->context()->network_delegate(), 877 request_->context()->network_delegate(),
866 GURL("ftp://blah/redirect"))); 878 GURL("ftp://blah/redirect")));
867 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 879 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
868 request_.get(), request_->context()->network_delegate())); 880 request_->context()->network_delegate()));
869 881
870 TestFinished(); 882 TestFinished();
871 } 883 }
872 884
873 // CanceledRequest ----------------------------- 885 // CanceledRequest -----------------------------
874 886
875 void CanceledRequest() { 887 void CanceledRequest() {
876 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 888 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
877 net::DEFAULT_PRIORITY, &delegate_); 889 net::DEFAULT_PRIORITY, &delegate_);
878 handler_ = host_->CreateRequestHandler(request_.get(), 890 handler_ =
879 RESOURCE_TYPE_MAIN_FRAME, false); 891 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
892 RESOURCE_TYPE_MAIN_FRAME, false);
880 EXPECT_TRUE(handler_.get()); 893 EXPECT_TRUE(handler_.get());
881 894
882 job_.reset(handler_->MaybeLoadResource( 895 job_.reset(
883 request_.get(), request_->context()->network_delegate())); 896 handler_->MaybeLoadResource(request_->context()->network_delegate()));
884 EXPECT_TRUE(job_.get()); 897 EXPECT_TRUE(job_.get());
885 EXPECT_TRUE(job_->is_waiting()); 898 EXPECT_TRUE(job_->is_waiting());
886 EXPECT_FALSE(job_->has_been_started()); 899 EXPECT_FALSE(job_->has_been_started());
887 900
888 base::WeakPtr<AppCacheURLRequestJob> weak_job = job_->GetWeakPtr(); 901 base::WeakPtr<AppCacheURLRequestJob> weak_job = job_->GetWeakPtr();
889 902
890 job_factory_->SetJob(std::move(job_)); 903 job_factory_->SetJob(std::move(job_));
891 request_->Start(); 904 request_->Start();
892 ASSERT_TRUE(weak_job); 905 ASSERT_TRUE(weak_job);
893 EXPECT_TRUE(weak_job->has_been_started()); 906 EXPECT_TRUE(weak_job->has_been_started());
894 907
895 request_->Cancel(); 908 request_->Cancel();
896 ASSERT_FALSE(weak_job); 909 ASSERT_FALSE(weak_job);
897 910
898 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 911 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
899 request_.get(), request_->context()->network_delegate())); 912 request_->context()->network_delegate()));
900 913
901 TestFinished(); 914 TestFinished();
902 } 915 }
903 916
904 // WorkerRequest ----------------------------- 917 // WorkerRequest -----------------------------
905 918
906 void WorkerRequest() { 919 void WorkerRequest() {
907 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 920 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
908 RESOURCE_TYPE_MAIN_FRAME)); 921 RESOURCE_TYPE_MAIN_FRAME));
909 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 922 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
910 RESOURCE_TYPE_SUB_FRAME)); 923 RESOURCE_TYPE_SUB_FRAME));
911 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 924 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
912 RESOURCE_TYPE_SHARED_WORKER)); 925 RESOURCE_TYPE_SHARED_WORKER));
913 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType( 926 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType(
914 RESOURCE_TYPE_WORKER)); 927 RESOURCE_TYPE_WORKER));
915 928
916 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 929 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
917 net::DEFAULT_PRIORITY, &delegate_); 930 net::DEFAULT_PRIORITY, &delegate_);
918 931
919 const int kParentHostId = host_->host_id(); 932 const int kParentHostId = host_->host_id();
920 const int kWorkerHostId = 2; 933 const int kWorkerHostId = 2;
921 const int kAbandonedWorkerHostId = 3; 934 const int kAbandonedWorkerHostId = 3;
922 const int kNonExsitingHostId = 700; 935 const int kNonExsitingHostId = 700;
923 936
924 backend_impl_->RegisterHost(kWorkerHostId); 937 backend_impl_->RegisterHost(kWorkerHostId);
925 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId); 938 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId);
926 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId); 939 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId);
927 handler_ = worker_host->CreateRequestHandler( 940 handler_ = worker_host->CreateRequestHandler(
928 request_.get(), RESOURCE_TYPE_SHARED_WORKER, false); 941 AppCacheURLRequest::Create(request_.get()), RESOURCE_TYPE_SHARED_WORKER,
942 false);
929 EXPECT_TRUE(handler_.get()); 943 EXPECT_TRUE(handler_.get());
930 // Verify that the handler is associated with the parent host. 944 // Verify that the handler is associated with the parent host.
931 EXPECT_EQ(host_, handler_->host_); 945 EXPECT_EQ(host_, handler_->host_);
932 946
933 // Create a new worker host, but associate it with a parent host that 947 // Create a new worker host, but associate it with a parent host that
934 // does not exists to simulate the host having been torn down. 948 // does not exists to simulate the host having been torn down.
935 backend_impl_->UnregisterHost(kWorkerHostId); 949 backend_impl_->UnregisterHost(kWorkerHostId);
936 backend_impl_->RegisterHost(kAbandonedWorkerHostId); 950 backend_impl_->RegisterHost(kAbandonedWorkerHostId);
937 worker_host = backend_impl_->GetHost(kAbandonedWorkerHostId); 951 worker_host = backend_impl_->GetHost(kAbandonedWorkerHostId);
938 EXPECT_EQ(NULL, backend_impl_->GetHost(kNonExsitingHostId)); 952 EXPECT_EQ(NULL, backend_impl_->GetHost(kNonExsitingHostId));
939 worker_host->SelectCacheForWorker(kNonExsitingHostId, kMockProcessId); 953 worker_host->SelectCacheForWorker(kNonExsitingHostId, kMockProcessId);
940 handler_ = worker_host->CreateRequestHandler( 954 handler_ = worker_host->CreateRequestHandler(
941 request_.get(), RESOURCE_TYPE_SHARED_WORKER, false); 955 AppCacheURLRequest::Create(request_.get()), RESOURCE_TYPE_SHARED_WORKER,
956 false);
942 EXPECT_FALSE(handler_.get()); 957 EXPECT_FALSE(handler_.get());
943 958
944 TestFinished(); 959 TestFinished();
945 } 960 }
946 961
947 // MainResource_Blocked -------------------------------------------------- 962 // MainResource_Blocked --------------------------------------------------
948 963
949 void MainResource_Blocked() { 964 void MainResource_Blocked() {
950 PushNextTask( 965 PushNextTask(
951 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked, 966 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked,
952 base::Unretained(this))); 967 base::Unretained(this)));
953 968
954 request_ = empty_context_->CreateRequest(GURL("http://blah/"), 969 request_ = empty_context_->CreateRequest(GURL("http://blah/"),
955 net::DEFAULT_PRIORITY, &delegate_); 970 net::DEFAULT_PRIORITY, &delegate_);
956 handler_ = host_->CreateRequestHandler(request_.get(), 971 handler_ =
957 RESOURCE_TYPE_MAIN_FRAME, false); 972 host_->CreateRequestHandler(AppCacheURLRequest::Create(request_.get()),
973 RESOURCE_TYPE_MAIN_FRAME, false);
958 EXPECT_TRUE(handler_.get()); 974 EXPECT_TRUE(handler_.get());
959 975
960 mock_policy_->can_load_return_value_ = false; 976 mock_policy_->can_load_return_value_ = false;
961 mock_storage()->SimulateFindMainResource( 977 mock_storage()->SimulateFindMainResource(
962 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 978 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
963 GURL(), AppCacheEntry(), 979 GURL(), AppCacheEntry(),
964 1, 2, GURL("http://blah/manifest/")); 980 1, 2, GURL("http://blah/manifest/"));
965 981
966 job_.reset(handler_->MaybeLoadResource( 982 job_.reset(
967 request_.get(), request_->context()->network_delegate())); 983 handler_->MaybeLoadResource(request_->context()->network_delegate()));
968 EXPECT_TRUE(job_.get()); 984 EXPECT_TRUE(job_.get());
969 EXPECT_TRUE(job_->is_waiting()); 985 EXPECT_TRUE(job_->is_waiting());
970 986
971 // We have to wait for completion of storage->FindResponseForMainRequest. 987 // We have to wait for completion of storage->FindResponseForMainRequest.
972 ScheduleNextTask(); 988 ScheduleNextTask();
973 } 989 }
974 990
975 void Verify_MainResource_Blocked() { 991 void Verify_MainResource_Blocked() {
976 EXPECT_FALSE(job_->is_waiting()); 992 EXPECT_FALSE(job_->is_waiting());
977 EXPECT_FALSE(job_->is_delivering_appcache_response()); 993 EXPECT_FALSE(job_->is_delivering_appcache_response());
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 1118
1103 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { 1119 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) {
1104 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); 1120 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest);
1105 } 1121 }
1106 1122
1107 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { 1123 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) {
1108 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); 1124 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked);
1109 } 1125 }
1110 1126
1111 } // namespace content 1127 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698