| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stack> | 5 #include <stack> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 // exercise fallback code paths. | 67 // exercise fallback code paths. |
| 68 | 68 |
| 69 class MockURLRequestDelegate : public net::URLRequest::Delegate { | 69 class MockURLRequestDelegate : public net::URLRequest::Delegate { |
| 70 virtual void OnResponseStarted(net::URLRequest* request) {} | 70 virtual void OnResponseStarted(net::URLRequest* request) {} |
| 71 virtual void OnReadCompleted(net::URLRequest* request, int bytes_read) {} | 71 virtual void OnReadCompleted(net::URLRequest* request, int bytes_read) {} |
| 72 }; | 72 }; |
| 73 | 73 |
| 74 class MockURLRequestJob : public net::URLRequestJob { | 74 class MockURLRequestJob : public net::URLRequestJob { |
| 75 public: | 75 public: |
| 76 MockURLRequestJob(net::URLRequest* request, | 76 MockURLRequestJob(net::URLRequest* request, |
| 77 net::NetworkDelegate* network_delegate, |
| 77 int response_code) | 78 int response_code) |
| 78 : net::URLRequestJob(request, request->context()->network_delegate()), | 79 : net::URLRequestJob(request, network_delegate), |
| 79 response_code_(response_code), | 80 response_code_(response_code), |
| 80 has_response_info_(false) {} | 81 has_response_info_(false) {} |
| 81 MockURLRequestJob(net::URLRequest* request, | 82 MockURLRequestJob(net::URLRequest* request, |
| 83 net::NetworkDelegate* network_delegate, |
| 82 const net::HttpResponseInfo& info) | 84 const net::HttpResponseInfo& info) |
| 83 : net::URLRequestJob(request, | 85 : net::URLRequestJob(request, network_delegate), |
| 84 request->context()->network_delegate()), | |
| 85 response_code_(info.headers->response_code()), | 86 response_code_(info.headers->response_code()), |
| 86 has_response_info_(true), | 87 has_response_info_(true), |
| 87 response_info_(info) {} | 88 response_info_(info) {} |
| 88 | 89 |
| 89 protected: | 90 protected: |
| 90 virtual ~MockURLRequestJob() {} | 91 virtual ~MockURLRequestJob() {} |
| 91 virtual void Start() OVERRIDE { | 92 virtual void Start() OVERRIDE { |
| 92 NotifyHeadersComplete(); | 93 NotifyHeadersComplete(); |
| 93 } | 94 } |
| 94 virtual int GetResponseCode() const OVERRIDE { | 95 virtual int GetResponseCode() const OVERRIDE { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 107 net::HttpResponseInfo response_info_; | 108 net::HttpResponseInfo response_info_; |
| 108 }; | 109 }; |
| 109 | 110 |
| 110 class MockURLRequest : public net::URLRequest { | 111 class MockURLRequest : public net::URLRequest { |
| 111 public: | 112 public: |
| 112 explicit MockURLRequest(const GURL& url, net::URLRequestContext* context) : | 113 explicit MockURLRequest(const GURL& url, net::URLRequestContext* context) : |
| 113 net::URLRequest(url, NULL, context) { | 114 net::URLRequest(url, NULL, context) { |
| 114 } | 115 } |
| 115 | 116 |
| 116 void SimulateResponseCode(int http_response_code) { | 117 void SimulateResponseCode(int http_response_code) { |
| 117 mock_factory_job_ = new MockURLRequestJob(this, http_response_code); | 118 mock_factory_job_ = new MockURLRequestJob( |
| 119 this, context()->network_delegate(), http_response_code); |
| 118 Start(); | 120 Start(); |
| 119 DCHECK(!mock_factory_job_); | 121 DCHECK(!mock_factory_job_); |
| 120 // All our simulation needs to satisfy are the following two DCHECKs | 122 // All our simulation needs to satisfy are the following two DCHECKs |
| 121 DCHECK(status().is_success()); | 123 DCHECK(status().is_success()); |
| 122 DCHECK_EQ(http_response_code, GetResponseCode()); | 124 DCHECK_EQ(http_response_code, GetResponseCode()); |
| 123 } | 125 } |
| 124 | 126 |
| 125 void SimulateResponseInfo(const net::HttpResponseInfo& info) { | 127 void SimulateResponseInfo(const net::HttpResponseInfo& info) { |
| 126 mock_factory_job_ = new MockURLRequestJob(this, info); | 128 mock_factory_job_ = new MockURLRequestJob( |
| 129 this, context()->network_delegate(), info); |
| 127 set_delegate(&delegate_); // needed to get the info back out | 130 set_delegate(&delegate_); // needed to get the info back out |
| 128 Start(); | 131 Start(); |
| 129 DCHECK(!mock_factory_job_); | 132 DCHECK(!mock_factory_job_); |
| 130 } | 133 } |
| 131 | 134 |
| 132 MockURLRequestDelegate delegate_; | 135 MockURLRequestDelegate delegate_; |
| 133 }; | 136 }; |
| 134 | 137 |
| 135 static net::URLRequestJob* MockHttpJobFactory(net::URLRequest* request, | 138 static net::URLRequestJob* MockHttpJobFactory( |
| 136 const std::string& scheme) { | 139 net::URLRequest* request, |
| 140 net::NetworkDelegate* network_delegate, |
| 141 const std::string& scheme) { |
| 137 if (mock_factory_job_) { | 142 if (mock_factory_job_) { |
| 138 net::URLRequestJob* temp = mock_factory_job_; | 143 net::URLRequestJob* temp = mock_factory_job_; |
| 139 mock_factory_job_ = NULL; | 144 mock_factory_job_ = NULL; |
| 140 return temp; | 145 return temp; |
| 141 } else { | 146 } else { |
| 142 // Some of these tests trigger UpdateJobs which start URLRequests. | 147 // Some of these tests trigger UpdateJobs which start URLRequests. |
| 143 // We short circuit those be returning error jobs. | 148 // We short circuit those be returning error jobs. |
| 144 return new net::URLRequestErrorJob(request, | 149 return new net::URLRequestErrorJob(request, |
| 150 network_delegate, |
| 145 net::ERR_INTERNET_DISCONNECTED); | 151 net::ERR_INTERNET_DISCONNECTED); |
| 146 } | 152 } |
| 147 } | 153 } |
| 148 | 154 |
| 149 static void SetUpTestCase() { | 155 static void SetUpTestCase() { |
| 150 io_thread_.reset(new base::Thread("AppCacheRequestHandlerTest Thread")); | 156 io_thread_.reset(new base::Thread("AppCacheRequestHandlerTest Thread")); |
| 151 base::Thread::Options options(MessageLoop::TYPE_IO, 0); | 157 base::Thread::Options options(MessageLoop::TYPE_IO, 0); |
| 152 io_thread_->StartWithOptions(options); | 158 io_thread_->StartWithOptions(options); |
| 153 } | 159 } |
| 154 | 160 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 void MainResource_Miss() { | 245 void MainResource_Miss() { |
| 240 PushNextTask( | 246 PushNextTask( |
| 241 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, | 247 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, |
| 242 base::Unretained(this))); | 248 base::Unretained(this))); |
| 243 | 249 |
| 244 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 250 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 245 handler_.reset(host_->CreateRequestHandler(request_.get(), | 251 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 246 ResourceType::MAIN_FRAME)); | 252 ResourceType::MAIN_FRAME)); |
| 247 EXPECT_TRUE(handler_.get()); | 253 EXPECT_TRUE(handler_.get()); |
| 248 | 254 |
| 249 job_ = handler_->MaybeLoadResource(request_.get()); | 255 job_ = handler_->MaybeLoadResource(request_.get(), |
| 256 empty_context_.network_delegate()); |
| 250 EXPECT_TRUE(job_.get()); | 257 EXPECT_TRUE(job_.get()); |
| 251 EXPECT_TRUE(job_->is_waiting()); | 258 EXPECT_TRUE(job_->is_waiting()); |
| 252 | 259 |
| 253 // We have to wait for completion of storage->FindResponseForMainRequest. | 260 // We have to wait for completion of storage->FindResponseForMainRequest. |
| 254 ScheduleNextTask(); | 261 ScheduleNextTask(); |
| 255 } | 262 } |
| 256 | 263 |
| 257 void Verify_MainResource_Miss() { | 264 void Verify_MainResource_Miss() { |
| 258 EXPECT_FALSE(job_->is_waiting()); | 265 EXPECT_FALSE(job_->is_waiting()); |
| 259 EXPECT_TRUE(job_->is_delivering_network_response()); | 266 EXPECT_TRUE(job_->is_delivering_network_response()); |
| 260 | 267 |
| 261 int64 cache_id = kNoCacheId; | 268 int64 cache_id = kNoCacheId; |
| 262 GURL manifest_url; | 269 GURL manifest_url; |
| 263 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 270 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
| 264 EXPECT_EQ(kNoCacheId, cache_id); | 271 EXPECT_EQ(kNoCacheId, cache_id); |
| 265 EXPECT_EQ(GURL(), manifest_url); | 272 EXPECT_EQ(GURL(), manifest_url); |
| 266 EXPECT_EQ(0, handler_->found_group_id_); | 273 EXPECT_EQ(0, handler_->found_group_id_); |
| 267 | 274 |
| 268 AppCacheURLRequestJob* fallback_job; | 275 AppCacheURLRequestJob* fallback_job; |
| 269 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 276 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 270 request_.get(), GURL("http://blah/redirect")); | 277 request_.get(), |
| 278 request_->context()->network_delegate(), |
| 279 GURL("http://blah/redirect")); |
| 271 EXPECT_FALSE(fallback_job); | 280 EXPECT_FALSE(fallback_job); |
| 272 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 281 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 282 request_.get(), request_->context()->network_delegate()); |
| 273 EXPECT_FALSE(fallback_job); | 283 EXPECT_FALSE(fallback_job); |
| 274 | 284 |
| 275 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); | 285 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); |
| 276 | 286 |
| 277 TestFinished(); | 287 TestFinished(); |
| 278 } | 288 } |
| 279 | 289 |
| 280 // MainResource_Hit -------------------------------------------------- | 290 // MainResource_Hit -------------------------------------------------- |
| 281 | 291 |
| 282 void MainResource_Hit() { | 292 void MainResource_Hit() { |
| 283 PushNextTask( | 293 PushNextTask( |
| 284 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, | 294 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, |
| 285 base::Unretained(this))); | 295 base::Unretained(this))); |
| 286 | 296 |
| 287 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 297 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 288 handler_.reset(host_->CreateRequestHandler(request_.get(), | 298 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 289 ResourceType::MAIN_FRAME)); | 299 ResourceType::MAIN_FRAME)); |
| 290 EXPECT_TRUE(handler_.get()); | 300 EXPECT_TRUE(handler_.get()); |
| 291 | 301 |
| 292 mock_storage()->SimulateFindMainResource( | 302 mock_storage()->SimulateFindMainResource( |
| 293 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 303 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
| 294 GURL(), AppCacheEntry(), | 304 GURL(), AppCacheEntry(), |
| 295 1, 2, GURL("http://blah/manifest/")); | 305 1, 2, GURL("http://blah/manifest/")); |
| 296 | 306 |
| 297 job_ = handler_->MaybeLoadResource(request_.get()); | 307 job_ = handler_->MaybeLoadResource(request_.get(), |
| 308 empty_context_.network_delegate()); |
| 298 EXPECT_TRUE(job_.get()); | 309 EXPECT_TRUE(job_.get()); |
| 299 EXPECT_TRUE(job_->is_waiting()); | 310 EXPECT_TRUE(job_->is_waiting()); |
| 300 | 311 |
| 301 // We have to wait for completion of storage->FindResponseForMainRequest. | 312 // We have to wait for completion of storage->FindResponseForMainRequest. |
| 302 ScheduleNextTask(); | 313 ScheduleNextTask(); |
| 303 } | 314 } |
| 304 | 315 |
| 305 void Verify_MainResource_Hit() { | 316 void Verify_MainResource_Hit() { |
| 306 EXPECT_FALSE(job_->is_waiting()); | 317 EXPECT_FALSE(job_->is_waiting()); |
| 307 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 318 EXPECT_TRUE(job_->is_delivering_appcache_response()); |
| 308 | 319 |
| 309 int64 cache_id = kNoCacheId; | 320 int64 cache_id = kNoCacheId; |
| 310 GURL manifest_url; | 321 GURL manifest_url; |
| 311 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 322 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
| 312 EXPECT_EQ(1, cache_id); | 323 EXPECT_EQ(1, cache_id); |
| 313 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); | 324 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); |
| 314 EXPECT_EQ(2, handler_->found_group_id_); | 325 EXPECT_EQ(2, handler_->found_group_id_); |
| 315 | 326 |
| 316 AppCacheURLRequestJob* fallback_job; | 327 AppCacheURLRequestJob* fallback_job; |
| 317 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 328 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 329 request_.get(), request_->context()->network_delegate()); |
| 318 EXPECT_FALSE(fallback_job); | 330 EXPECT_FALSE(fallback_job); |
| 319 | 331 |
| 320 EXPECT_EQ(GURL("http://blah/manifest/"), | 332 EXPECT_EQ(GURL("http://blah/manifest/"), |
| 321 host_->preferred_manifest_url()); | 333 host_->preferred_manifest_url()); |
| 322 | 334 |
| 323 TestFinished(); | 335 TestFinished(); |
| 324 } | 336 } |
| 325 | 337 |
| 326 // MainResource_Fallback -------------------------------------------------- | 338 // MainResource_Fallback -------------------------------------------------- |
| 327 | 339 |
| 328 void MainResource_Fallback() { | 340 void MainResource_Fallback() { |
| 329 PushNextTask( | 341 PushNextTask( |
| 330 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, | 342 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, |
| 331 base::Unretained(this))); | 343 base::Unretained(this))); |
| 332 | 344 |
| 333 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 345 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 334 handler_.reset(host_->CreateRequestHandler(request_.get(), | 346 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 335 ResourceType::MAIN_FRAME)); | 347 ResourceType::MAIN_FRAME)); |
| 336 EXPECT_TRUE(handler_.get()); | 348 EXPECT_TRUE(handler_.get()); |
| 337 | 349 |
| 338 mock_storage()->SimulateFindMainResource( | 350 mock_storage()->SimulateFindMainResource( |
| 339 AppCacheEntry(), | 351 AppCacheEntry(), |
| 340 GURL("http://blah/fallbackurl"), | 352 GURL("http://blah/fallbackurl"), |
| 341 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 353 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
| 342 1, 2, GURL("http://blah/manifest/")); | 354 1, 2, GURL("http://blah/manifest/")); |
| 343 | 355 |
| 344 job_ = handler_->MaybeLoadResource(request_.get()); | 356 job_ = handler_->MaybeLoadResource(request_.get(), |
| 357 empty_context_.network_delegate()); |
| 345 EXPECT_TRUE(job_.get()); | 358 EXPECT_TRUE(job_.get()); |
| 346 EXPECT_TRUE(job_->is_waiting()); | 359 EXPECT_TRUE(job_->is_waiting()); |
| 347 | 360 |
| 348 // We have to wait for completion of storage->FindResponseForMainRequest. | 361 // We have to wait for completion of storage->FindResponseForMainRequest. |
| 349 ScheduleNextTask(); | 362 ScheduleNextTask(); |
| 350 } | 363 } |
| 351 | 364 |
| 352 void Verify_MainResource_Fallback() { | 365 void Verify_MainResource_Fallback() { |
| 353 EXPECT_FALSE(job_->is_waiting()); | 366 EXPECT_FALSE(job_->is_waiting()); |
| 354 EXPECT_TRUE(job_->is_delivering_network_response()); | 367 EXPECT_TRUE(job_->is_delivering_network_response()); |
| 355 | 368 |
| 356 // When the request is restarted, the existing job is dropped so a | 369 // When the request is restarted, the existing job is dropped so a |
| 357 // real network job gets created. We expect NULL here which will cause | 370 // real network job gets created. We expect NULL here which will cause |
| 358 // the net library to create a real job. | 371 // the net library to create a real job. |
| 359 job_ = handler_->MaybeLoadResource(request_.get()); | 372 job_ = handler_->MaybeLoadResource(request_.get(), |
| 373 empty_context_.network_delegate()); |
| 360 EXPECT_FALSE(job_); | 374 EXPECT_FALSE(job_); |
| 361 | 375 |
| 362 // Simulate an http error of the real network job. | 376 // Simulate an http error of the real network job. |
| 363 request_->SimulateResponseCode(500); | 377 request_->SimulateResponseCode(500); |
| 364 | 378 |
| 365 job_ = handler_->MaybeLoadFallbackForResponse(request_.get()); | 379 job_ = handler_->MaybeLoadFallbackForResponse( |
| 380 request_.get(), request_->context()->network_delegate()); |
| 366 EXPECT_TRUE(job_); | 381 EXPECT_TRUE(job_); |
| 367 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 382 EXPECT_TRUE(job_->is_delivering_appcache_response()); |
| 368 | 383 |
| 369 int64 cache_id = kNoCacheId; | 384 int64 cache_id = kNoCacheId; |
| 370 GURL manifest_url; | 385 GURL manifest_url; |
| 371 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); | 386 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); |
| 372 EXPECT_EQ(1, cache_id); | 387 EXPECT_EQ(1, cache_id); |
| 373 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); | 388 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); |
| 374 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); | 389 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); |
| 375 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); | 390 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 392 handler_.reset(host_->CreateRequestHandler(request_.get(), | 407 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 393 ResourceType::MAIN_FRAME)); | 408 ResourceType::MAIN_FRAME)); |
| 394 EXPECT_TRUE(handler_.get()); | 409 EXPECT_TRUE(handler_.get()); |
| 395 | 410 |
| 396 mock_storage()->SimulateFindMainResource( | 411 mock_storage()->SimulateFindMainResource( |
| 397 AppCacheEntry(), | 412 AppCacheEntry(), |
| 398 GURL("http://blah/fallbackurl"), | 413 GURL("http://blah/fallbackurl"), |
| 399 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 414 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
| 400 1, 2, GURL("http://blah/manifest/")); | 415 1, 2, GURL("http://blah/manifest/")); |
| 401 | 416 |
| 402 job_ = handler_->MaybeLoadResource(request_.get()); | 417 job_ = handler_->MaybeLoadResource(request_.get(), |
| 418 empty_context_.network_delegate()); |
| 403 EXPECT_TRUE(job_.get()); | 419 EXPECT_TRUE(job_.get()); |
| 404 EXPECT_TRUE(job_->is_waiting()); | 420 EXPECT_TRUE(job_->is_waiting()); |
| 405 | 421 |
| 406 // We have to wait for completion of storage->FindResponseForMainRequest. | 422 // We have to wait for completion of storage->FindResponseForMainRequest. |
| 407 ScheduleNextTask(); | 423 ScheduleNextTask(); |
| 408 } | 424 } |
| 409 | 425 |
| 410 void Verify_MainResource_FallbackOverride() { | 426 void Verify_MainResource_FallbackOverride() { |
| 411 EXPECT_FALSE(job_->is_waiting()); | 427 EXPECT_FALSE(job_->is_waiting()); |
| 412 EXPECT_TRUE(job_->is_delivering_network_response()); | 428 EXPECT_TRUE(job_->is_delivering_network_response()); |
| 413 | 429 |
| 414 // When the request is restarted, the existing job is dropped so a | 430 // When the request is restarted, the existing job is dropped so a |
| 415 // real network job gets created. We expect NULL here which will cause | 431 // real network job gets created. We expect NULL here which will cause |
| 416 // the net library to create a real job. | 432 // the net library to create a real job. |
| 417 job_ = handler_->MaybeLoadResource(request_.get()); | 433 job_ = handler_->MaybeLoadResource(request_.get(), |
| 434 empty_context_.network_delegate()); |
| 418 EXPECT_FALSE(job_); | 435 EXPECT_FALSE(job_); |
| 419 | 436 |
| 420 // Simulate an http error of the real network job, but with custom | 437 // Simulate an http error of the real network job, but with custom |
| 421 // headers that override the fallback behavior. | 438 // headers that override the fallback behavior. |
| 422 const char kOverrideHeaders[] = | 439 const char kOverrideHeaders[] = |
| 423 "HTTP/1.1 404 BOO HOO\0" | 440 "HTTP/1.1 404 BOO HOO\0" |
| 424 "x-chromium-appcache-fallback-override: disallow-fallback\0" | 441 "x-chromium-appcache-fallback-override: disallow-fallback\0" |
| 425 "\0"; | 442 "\0"; |
| 426 net::HttpResponseInfo info; | 443 net::HttpResponseInfo info; |
| 427 info.headers = new net::HttpResponseHeaders( | 444 info.headers = new net::HttpResponseHeaders( |
| 428 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); | 445 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); |
| 429 request_->SimulateResponseInfo(info); | 446 request_->SimulateResponseInfo(info); |
| 430 | 447 |
| 431 job_ = handler_->MaybeLoadFallbackForResponse(request_.get()); | 448 job_ = handler_->MaybeLoadFallbackForResponse( |
| 449 request_.get(), request_->context()->network_delegate()); |
| 432 EXPECT_FALSE(job_); | 450 EXPECT_FALSE(job_); |
| 433 | 451 |
| 434 TestFinished(); | 452 TestFinished(); |
| 435 } | 453 } |
| 436 | 454 |
| 437 // SubResource_Miss_WithNoCacheSelected ---------------------------------- | 455 // SubResource_Miss_WithNoCacheSelected ---------------------------------- |
| 438 | 456 |
| 439 void SubResource_Miss_WithNoCacheSelected() { | 457 void SubResource_Miss_WithNoCacheSelected() { |
| 440 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 458 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 441 handler_.reset(host_->CreateRequestHandler(request_.get(), | 459 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 453 void SubResource_Miss_WithCacheSelected() { | 471 void SubResource_Miss_WithCacheSelected() { |
| 454 // A sub-resource load where the resource is not in an appcache, or | 472 // A sub-resource load where the resource is not in an appcache, or |
| 455 // in a network or fallback namespace, should result in a failed request. | 473 // in a network or fallback namespace, should result in a failed request. |
| 456 host_->AssociateCompleteCache(MakeNewCache()); | 474 host_->AssociateCompleteCache(MakeNewCache()); |
| 457 | 475 |
| 458 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 476 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 459 handler_.reset(host_->CreateRequestHandler(request_.get(), | 477 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 460 ResourceType::SUB_RESOURCE)); | 478 ResourceType::SUB_RESOURCE)); |
| 461 EXPECT_TRUE(handler_.get()); | 479 EXPECT_TRUE(handler_.get()); |
| 462 | 480 |
| 463 job_ = handler_->MaybeLoadResource(request_.get()); | 481 job_ = handler_->MaybeLoadResource(request_.get(), |
| 482 empty_context_.network_delegate()); |
| 464 EXPECT_TRUE(job_.get()); | 483 EXPECT_TRUE(job_.get()); |
| 465 EXPECT_TRUE(job_->is_delivering_error_response()); | 484 EXPECT_TRUE(job_->is_delivering_error_response()); |
| 466 | 485 |
| 467 AppCacheURLRequestJob* fallback_job; | 486 AppCacheURLRequestJob* fallback_job; |
| 468 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 487 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 469 request_.get(), GURL("http://blah/redirect")); | 488 request_.get(), |
| 489 empty_context_.network_delegate(), |
| 490 GURL("http://blah/redirect")); |
| 470 EXPECT_FALSE(fallback_job); | 491 EXPECT_FALSE(fallback_job); |
| 471 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 492 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 493 request_.get(), empty_context_.network_delegate()); |
| 472 EXPECT_FALSE(fallback_job); | 494 EXPECT_FALSE(fallback_job); |
| 473 | 495 |
| 474 TestFinished(); | 496 TestFinished(); |
| 475 } | 497 } |
| 476 | 498 |
| 477 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- | 499 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- |
| 478 | 500 |
| 479 void SubResource_Miss_WithWaitForCacheSelection() { | 501 void SubResource_Miss_WithWaitForCacheSelection() { |
| 480 // Precondition, the host is waiting on cache selection. | 502 // Precondition, the host is waiting on cache selection. |
| 481 scoped_refptr<AppCache> cache(MakeNewCache()); | 503 scoped_refptr<AppCache> cache(MakeNewCache()); |
| 482 host_->pending_selected_cache_id_ = cache->cache_id(); | 504 host_->pending_selected_cache_id_ = cache->cache_id(); |
| 483 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); | 505 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); |
| 484 | 506 |
| 485 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 507 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 486 handler_.reset(host_->CreateRequestHandler(request_.get(), | 508 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 487 ResourceType::SUB_RESOURCE)); | 509 ResourceType::SUB_RESOURCE)); |
| 488 EXPECT_TRUE(handler_.get()); | 510 EXPECT_TRUE(handler_.get()); |
| 489 job_ = handler_->MaybeLoadResource(request_.get()); | 511 job_ = handler_->MaybeLoadResource(request_.get(), |
| 512 empty_context_.network_delegate()); |
| 490 EXPECT_TRUE(job_.get()); | 513 EXPECT_TRUE(job_.get()); |
| 491 EXPECT_TRUE(job_->is_waiting()); | 514 EXPECT_TRUE(job_->is_waiting()); |
| 492 | 515 |
| 493 host_->FinishCacheSelection(cache, NULL); | 516 host_->FinishCacheSelection(cache, NULL); |
| 494 EXPECT_FALSE(job_->is_waiting()); | 517 EXPECT_FALSE(job_->is_waiting()); |
| 495 EXPECT_TRUE(job_->is_delivering_error_response()); | 518 EXPECT_TRUE(job_->is_delivering_error_response()); |
| 496 | 519 |
| 497 AppCacheURLRequestJob* fallback_job; | 520 AppCacheURLRequestJob* fallback_job; |
| 498 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 521 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 499 request_.get(), GURL("http://blah/redirect")); | 522 request_.get(), |
| 523 empty_context_.network_delegate(), |
| 524 GURL("http://blah/redirect")); |
| 500 EXPECT_FALSE(fallback_job); | 525 EXPECT_FALSE(fallback_job); |
| 501 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 526 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 527 request_.get(), empty_context_.network_delegate()); |
| 502 EXPECT_FALSE(fallback_job); | 528 EXPECT_FALSE(fallback_job); |
| 503 | 529 |
| 504 TestFinished(); | 530 TestFinished(); |
| 505 } | 531 } |
| 506 | 532 |
| 507 // SubResource_Hit ----------------------------- | 533 // SubResource_Hit ----------------------------- |
| 508 | 534 |
| 509 void SubResource_Hit() { | 535 void SubResource_Hit() { |
| 510 host_->AssociateCompleteCache(MakeNewCache()); | 536 host_->AssociateCompleteCache(MakeNewCache()); |
| 511 | 537 |
| 512 mock_storage()->SimulateFindSubResource( | 538 mock_storage()->SimulateFindSubResource( |
| 513 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); | 539 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); |
| 514 | 540 |
| 515 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 541 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 516 handler_.reset(host_->CreateRequestHandler(request_.get(), | 542 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 517 ResourceType::SUB_RESOURCE)); | 543 ResourceType::SUB_RESOURCE)); |
| 518 EXPECT_TRUE(handler_.get()); | 544 EXPECT_TRUE(handler_.get()); |
| 519 job_ = handler_->MaybeLoadResource(request_.get()); | 545 job_ = handler_->MaybeLoadResource(request_.get(), |
| 546 empty_context_.network_delegate()); |
| 520 EXPECT_TRUE(job_.get()); | 547 EXPECT_TRUE(job_.get()); |
| 521 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 548 EXPECT_TRUE(job_->is_delivering_appcache_response()); |
| 522 | 549 |
| 523 AppCacheURLRequestJob* fallback_job; | 550 AppCacheURLRequestJob* fallback_job; |
| 524 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 551 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 525 request_.get(), GURL("http://blah/redirect")); | 552 request_.get(), |
| 553 empty_context_.network_delegate(), |
| 554 GURL("http://blah/redirect")); |
| 526 EXPECT_FALSE(fallback_job); | 555 EXPECT_FALSE(fallback_job); |
| 527 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 556 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 557 request_.get(), empty_context_.network_delegate()); |
| 528 EXPECT_FALSE(fallback_job); | 558 EXPECT_FALSE(fallback_job); |
| 529 | 559 |
| 530 TestFinished(); | 560 TestFinished(); |
| 531 } | 561 } |
| 532 | 562 |
| 533 // SubResource_RedirectFallback ----------------------------- | 563 // SubResource_RedirectFallback ----------------------------- |
| 534 | 564 |
| 535 void SubResource_RedirectFallback() { | 565 void SubResource_RedirectFallback() { |
| 536 // Redirects to resources in the a different origin are subject to | 566 // Redirects to resources in the a different origin are subject to |
| 537 // fallback namespaces. | 567 // fallback namespaces. |
| 538 host_->AssociateCompleteCache(MakeNewCache()); | 568 host_->AssociateCompleteCache(MakeNewCache()); |
| 539 | 569 |
| 540 mock_storage()->SimulateFindSubResource( | 570 mock_storage()->SimulateFindSubResource( |
| 541 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); | 571 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); |
| 542 | 572 |
| 543 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 573 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 544 handler_.reset(host_->CreateRequestHandler(request_.get(), | 574 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 545 ResourceType::SUB_RESOURCE)); | 575 ResourceType::SUB_RESOURCE)); |
| 546 EXPECT_TRUE(handler_.get()); | 576 EXPECT_TRUE(handler_.get()); |
| 547 job_ = handler_->MaybeLoadResource(request_.get()); | 577 job_ = handler_->MaybeLoadResource(request_.get(), |
| 578 empty_context_.network_delegate()); |
| 548 EXPECT_FALSE(job_.get()); | 579 EXPECT_FALSE(job_.get()); |
| 549 | 580 |
| 550 job_ = handler_->MaybeLoadFallbackForRedirect( | 581 job_ = handler_->MaybeLoadFallbackForRedirect( |
| 551 request_.get(), GURL("http://not_blah/redirect")); | 582 request_.get(), |
| 583 empty_context_.network_delegate(), |
| 584 GURL("http://not_blah/redirect")); |
| 552 EXPECT_TRUE(job_.get()); | 585 EXPECT_TRUE(job_.get()); |
| 553 EXPECT_TRUE(job_->is_delivering_appcache_response()); | 586 EXPECT_TRUE(job_->is_delivering_appcache_response()); |
| 554 | 587 |
| 555 AppCacheURLRequestJob* fallback_job; | 588 AppCacheURLRequestJob* fallback_job; |
| 556 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 589 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 590 request_.get(), empty_context_.network_delegate()); |
| 557 EXPECT_FALSE(fallback_job); | 591 EXPECT_FALSE(fallback_job); |
| 558 | 592 |
| 559 TestFinished(); | 593 TestFinished(); |
| 560 } | 594 } |
| 561 | 595 |
| 562 // SubResource_NoRedirectFallback ----------------------------- | 596 // SubResource_NoRedirectFallback ----------------------------- |
| 563 | 597 |
| 564 void SubResource_NoRedirectFallback() { | 598 void SubResource_NoRedirectFallback() { |
| 565 // Redirects to resources in the same-origin are not subject to | 599 // Redirects to resources in the same-origin are not subject to |
| 566 // fallback namespaces. | 600 // fallback namespaces. |
| 567 host_->AssociateCompleteCache(MakeNewCache()); | 601 host_->AssociateCompleteCache(MakeNewCache()); |
| 568 | 602 |
| 569 mock_storage()->SimulateFindSubResource( | 603 mock_storage()->SimulateFindSubResource( |
| 570 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); | 604 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); |
| 571 | 605 |
| 572 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 606 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 573 handler_.reset(host_->CreateRequestHandler(request_.get(), | 607 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 574 ResourceType::SUB_RESOURCE)); | 608 ResourceType::SUB_RESOURCE)); |
| 575 EXPECT_TRUE(handler_.get()); | 609 EXPECT_TRUE(handler_.get()); |
| 576 job_ = handler_->MaybeLoadResource(request_.get()); | 610 job_ = handler_->MaybeLoadResource(request_.get(), |
| 611 empty_context_.network_delegate()); |
| 577 EXPECT_FALSE(job_.get()); | 612 EXPECT_FALSE(job_.get()); |
| 578 | 613 |
| 579 AppCacheURLRequestJob* fallback_job; | 614 AppCacheURLRequestJob* fallback_job; |
| 580 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 615 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 581 request_.get(), GURL("http://blah/redirect")); | 616 request_.get(), |
| 617 empty_context_.network_delegate(), |
| 618 GURL("http://blah/redirect")); |
| 582 EXPECT_FALSE(fallback_job); | 619 EXPECT_FALSE(fallback_job); |
| 583 | 620 |
| 584 request_->SimulateResponseCode(200); | 621 request_->SimulateResponseCode(200); |
| 585 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 622 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 623 request_.get(), empty_context_.network_delegate()); |
| 586 EXPECT_FALSE(fallback_job); | 624 EXPECT_FALSE(fallback_job); |
| 587 | 625 |
| 588 TestFinished(); | 626 TestFinished(); |
| 589 } | 627 } |
| 590 | 628 |
| 591 // SubResource_Network ----------------------------- | 629 // SubResource_Network ----------------------------- |
| 592 | 630 |
| 593 void SubResource_Network() { | 631 void SubResource_Network() { |
| 594 // A sub-resource load where the resource is in a network namespace, | 632 // A sub-resource load where the resource is in a network namespace, |
| 595 // should result in the system using a 'real' job to do the network | 633 // should result in the system using a 'real' job to do the network |
| 596 // retrieval. | 634 // retrieval. |
| 597 host_->AssociateCompleteCache(MakeNewCache()); | 635 host_->AssociateCompleteCache(MakeNewCache()); |
| 598 | 636 |
| 599 mock_storage()->SimulateFindSubResource( | 637 mock_storage()->SimulateFindSubResource( |
| 600 AppCacheEntry(), AppCacheEntry(), true); | 638 AppCacheEntry(), AppCacheEntry(), true); |
| 601 | 639 |
| 602 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 640 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 603 handler_.reset(host_->CreateRequestHandler(request_.get(), | 641 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 604 ResourceType::SUB_RESOURCE)); | 642 ResourceType::SUB_RESOURCE)); |
| 605 EXPECT_TRUE(handler_.get()); | 643 EXPECT_TRUE(handler_.get()); |
| 606 job_ = handler_->MaybeLoadResource(request_.get()); | 644 job_ = handler_->MaybeLoadResource(request_.get(), |
| 645 empty_context_.network_delegate()); |
| 607 EXPECT_FALSE(job_.get()); | 646 EXPECT_FALSE(job_.get()); |
| 608 | 647 |
| 609 AppCacheURLRequestJob* fallback_job; | 648 AppCacheURLRequestJob* fallback_job; |
| 610 fallback_job = handler_->MaybeLoadFallbackForRedirect( | 649 fallback_job = handler_->MaybeLoadFallbackForRedirect( |
| 611 request_.get(), GURL("http://blah/redirect")); | 650 request_.get(), |
| 651 empty_context_.network_delegate(), |
| 652 GURL("http://blah/redirect")); |
| 612 EXPECT_FALSE(fallback_job); | 653 EXPECT_FALSE(fallback_job); |
| 613 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get()); | 654 fallback_job = handler_->MaybeLoadFallbackForResponse( |
| 655 request_.get(), empty_context_.network_delegate()); |
| 614 EXPECT_FALSE(fallback_job); | 656 EXPECT_FALSE(fallback_job); |
| 615 | 657 |
| 616 TestFinished(); | 658 TestFinished(); |
| 617 } | 659 } |
| 618 | 660 |
| 619 // DestroyedHost ----------------------------- | 661 // DestroyedHost ----------------------------- |
| 620 | 662 |
| 621 void DestroyedHost() { | 663 void DestroyedHost() { |
| 622 host_->AssociateCompleteCache(MakeNewCache()); | 664 host_->AssociateCompleteCache(MakeNewCache()); |
| 623 | 665 |
| 624 mock_storage()->SimulateFindSubResource( | 666 mock_storage()->SimulateFindSubResource( |
| 625 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); | 667 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); |
| 626 | 668 |
| 627 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 669 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 628 handler_.reset(host_->CreateRequestHandler(request_.get(), | 670 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 629 ResourceType::SUB_RESOURCE)); | 671 ResourceType::SUB_RESOURCE)); |
| 630 EXPECT_TRUE(handler_.get()); | 672 EXPECT_TRUE(handler_.get()); |
| 631 | 673 |
| 632 backend_impl_->UnregisterHost(1); | 674 backend_impl_->UnregisterHost(1); |
| 633 host_ = NULL; | 675 host_ = NULL; |
| 634 | 676 |
| 635 EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); | 677 EXPECT_FALSE(handler_->MaybeLoadResource( |
| 678 request_.get(), empty_context_.network_delegate())); |
| 636 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 679 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( |
| 637 request_.get(), GURL("http://blah/redirect"))); | 680 request_.get(), |
| 638 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); | 681 empty_context_.network_delegate(), |
| 682 GURL("http://blah/redirect"))); |
| 683 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( |
| 684 request_.get(), empty_context_.network_delegate())); |
| 639 | 685 |
| 640 TestFinished(); | 686 TestFinished(); |
| 641 } | 687 } |
| 642 | 688 |
| 643 // DestroyedHostWithWaitingJob ----------------------------- | 689 // DestroyedHostWithWaitingJob ----------------------------- |
| 644 | 690 |
| 645 void DestroyedHostWithWaitingJob() { | 691 void DestroyedHostWithWaitingJob() { |
| 646 // Precondition, the host is waiting on cache selection. | 692 // Precondition, the host is waiting on cache selection. |
| 647 host_->pending_selected_cache_id_ = 1; | 693 host_->pending_selected_cache_id_ = 1; |
| 648 | 694 |
| 649 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 695 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 650 handler_.reset(host_->CreateRequestHandler(request_.get(), | 696 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 651 ResourceType::SUB_RESOURCE)); | 697 ResourceType::SUB_RESOURCE)); |
| 652 EXPECT_TRUE(handler_.get()); | 698 EXPECT_TRUE(handler_.get()); |
| 653 | 699 |
| 654 job_ = handler_->MaybeLoadResource(request_.get()); | 700 job_ = handler_->MaybeLoadResource( |
| 701 request_.get(), empty_context_.network_delegate()); |
| 655 EXPECT_TRUE(job_.get()); | 702 EXPECT_TRUE(job_.get()); |
| 656 EXPECT_TRUE(job_->is_waiting()); | 703 EXPECT_TRUE(job_->is_waiting()); |
| 657 | 704 |
| 658 backend_impl_->UnregisterHost(1); | 705 backend_impl_->UnregisterHost(1); |
| 659 host_ = NULL; | 706 host_ = NULL; |
| 660 EXPECT_TRUE(job_->has_been_killed()); | 707 EXPECT_TRUE(job_->has_been_killed()); |
| 661 | 708 |
| 662 EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); | 709 EXPECT_FALSE(handler_->MaybeLoadResource( |
| 710 request_.get(), empty_context_.network_delegate())); |
| 663 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 711 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( |
| 664 request_.get(), GURL("http://blah/redirect"))); | 712 request_.get(), |
| 665 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); | 713 empty_context_.network_delegate(), |
| 714 GURL("http://blah/redirect"))); |
| 715 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( |
| 716 request_.get(), empty_context_.network_delegate())); |
| 666 | 717 |
| 667 TestFinished(); | 718 TestFinished(); |
| 668 } | 719 } |
| 669 | 720 |
| 670 // UnsupportedScheme ----------------------------- | 721 // UnsupportedScheme ----------------------------- |
| 671 | 722 |
| 672 void UnsupportedScheme() { | 723 void UnsupportedScheme() { |
| 673 // Precondition, the host is waiting on cache selection. | 724 // Precondition, the host is waiting on cache selection. |
| 674 host_->pending_selected_cache_id_ = 1; | 725 host_->pending_selected_cache_id_ = 1; |
| 675 | 726 |
| 676 request_.reset(new MockURLRequest(GURL("ftp://blah/"), &empty_context_)); | 727 request_.reset(new MockURLRequest(GURL("ftp://blah/"), &empty_context_)); |
| 677 handler_.reset(host_->CreateRequestHandler(request_.get(), | 728 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 678 ResourceType::SUB_RESOURCE)); | 729 ResourceType::SUB_RESOURCE)); |
| 679 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) | 730 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) |
| 680 | 731 |
| 681 EXPECT_FALSE(handler_->MaybeLoadResource(request_.get())); | 732 EXPECT_FALSE(handler_->MaybeLoadResource( |
| 733 request_.get(), empty_context_.network_delegate())); |
| 682 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( | 734 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( |
| 683 request_.get(), GURL("ftp://blah/redirect"))); | 735 request_.get(), |
| 684 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); | 736 empty_context_.network_delegate(), |
| 737 GURL("ftp://blah/redirect"))); |
| 738 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( |
| 739 request_.get(), empty_context_.network_delegate())); |
| 685 | 740 |
| 686 TestFinished(); | 741 TestFinished(); |
| 687 } | 742 } |
| 688 | 743 |
| 689 // CanceledRequest ----------------------------- | 744 // CanceledRequest ----------------------------- |
| 690 | 745 |
| 691 void CanceledRequest() { | 746 void CanceledRequest() { |
| 692 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); | 747 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); |
| 693 handler_.reset(host_->CreateRequestHandler(request_.get(), | 748 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 694 ResourceType::MAIN_FRAME)); | 749 ResourceType::MAIN_FRAME)); |
| 695 EXPECT_TRUE(handler_.get()); | 750 EXPECT_TRUE(handler_.get()); |
| 696 | 751 |
| 697 job_ = handler_->MaybeLoadResource(request_.get()); | 752 job_ = handler_->MaybeLoadResource(request_.get(), |
| 753 empty_context_.network_delegate()); |
| 698 EXPECT_TRUE(job_.get()); | 754 EXPECT_TRUE(job_.get()); |
| 699 EXPECT_TRUE(job_->is_waiting()); | 755 EXPECT_TRUE(job_->is_waiting()); |
| 700 EXPECT_FALSE(job_->has_been_started()); | 756 EXPECT_FALSE(job_->has_been_started()); |
| 701 | 757 |
| 702 mock_factory_job_ = job_.get(); | 758 mock_factory_job_ = job_.get(); |
| 703 request_->Start(); | 759 request_->Start(); |
| 704 EXPECT_TRUE(job_->has_been_started()); | 760 EXPECT_TRUE(job_->has_been_started()); |
| 705 | 761 |
| 706 request_->Cancel(); | 762 request_->Cancel(); |
| 707 EXPECT_TRUE(job_->has_been_killed()); | 763 EXPECT_TRUE(job_->has_been_killed()); |
| 708 | 764 |
| 709 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get())); | 765 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( |
| 766 request_.get(), empty_context_.network_delegate())); |
| 710 | 767 |
| 711 TestFinished(); | 768 TestFinished(); |
| 712 } | 769 } |
| 713 | 770 |
| 714 // WorkerRequest ----------------------------- | 771 // WorkerRequest ----------------------------- |
| 715 | 772 |
| 716 void WorkerRequest() { | 773 void WorkerRequest() { |
| 717 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( | 774 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( |
| 718 ResourceType::MAIN_FRAME)); | 775 ResourceType::MAIN_FRAME)); |
| 719 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( | 776 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 handler_.reset(host_->CreateRequestHandler(request_.get(), | 821 handler_.reset(host_->CreateRequestHandler(request_.get(), |
| 765 ResourceType::MAIN_FRAME)); | 822 ResourceType::MAIN_FRAME)); |
| 766 EXPECT_TRUE(handler_.get()); | 823 EXPECT_TRUE(handler_.get()); |
| 767 | 824 |
| 768 mock_policy_->can_load_return_value_ = false; | 825 mock_policy_->can_load_return_value_ = false; |
| 769 mock_storage()->SimulateFindMainResource( | 826 mock_storage()->SimulateFindMainResource( |
| 770 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), | 827 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), |
| 771 GURL(), AppCacheEntry(), | 828 GURL(), AppCacheEntry(), |
| 772 1, 2, GURL("http://blah/manifest/")); | 829 1, 2, GURL("http://blah/manifest/")); |
| 773 | 830 |
| 774 job_ = handler_->MaybeLoadResource(request_.get()); | 831 job_ = handler_->MaybeLoadResource(request_.get(), |
| 832 empty_context_.network_delegate()); |
| 775 EXPECT_TRUE(job_.get()); | 833 EXPECT_TRUE(job_.get()); |
| 776 EXPECT_TRUE(job_->is_waiting()); | 834 EXPECT_TRUE(job_->is_waiting()); |
| 777 | 835 |
| 778 // We have to wait for completion of storage->FindResponseForMainRequest. | 836 // We have to wait for completion of storage->FindResponseForMainRequest. |
| 779 ScheduleNextTask(); | 837 ScheduleNextTask(); |
| 780 } | 838 } |
| 781 | 839 |
| 782 void Verify_MainResource_Blocked() { | 840 void Verify_MainResource_Blocked() { |
| 783 EXPECT_FALSE(job_->is_waiting()); | 841 EXPECT_FALSE(job_->is_waiting()); |
| 784 EXPECT_FALSE(job_->is_delivering_appcache_response()); | 842 EXPECT_FALSE(job_->is_delivering_appcache_response()); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 901 | 959 |
| 902 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { | 960 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { |
| 903 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); | 961 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); |
| 904 } | 962 } |
| 905 | 963 |
| 906 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { | 964 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { |
| 907 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); | 965 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); |
| 908 } | 966 } |
| 909 | 967 |
| 910 } // namespace appcache | 968 } // namespace appcache |
| OLD | NEW |