| 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 |