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

Side by Side Diff: webkit/appcache/appcache_request_handler_unittest.cc

Issue 12321106: Update TestURLRequest constructor interface in unit tests. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Make use of NULL NetworkDelegate explicit in unit test. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 } 110 }
111 111
112 private: 112 private:
113 int response_code_; 113 int response_code_;
114 bool has_response_info_; 114 bool has_response_info_;
115 net::HttpResponseInfo response_info_; 115 net::HttpResponseInfo response_info_;
116 }; 116 };
117 117
118 class MockURLRequest : public net::URLRequest { 118 class MockURLRequest : public net::URLRequest {
119 public: 119 public:
120 explicit MockURLRequest(const GURL& url, net::URLRequestContext* context) : 120 explicit MockURLRequest(
121 net::URLRequest(url, NULL, context) { 121 const GURL& url,
122 net::URLRequestContext* context,
123 net::NetworkDelegate* network_delegate) :
124 net::URLRequest(url, NULL, context, network_delegate) {
122 } 125 }
123 126
124 void SimulateResponseCode(int http_response_code) { 127 void SimulateResponseCode(int http_response_code) {
125 mock_factory_job_ = new MockURLRequestJob( 128 mock_factory_job_ = new MockURLRequestJob(
126 this, context()->network_delegate(), http_response_code); 129 this, network_delegate(), http_response_code);
127 Start(); 130 Start();
128 DCHECK(!mock_factory_job_); 131 DCHECK(!mock_factory_job_);
129 // All our simulation needs to satisfy are the following two DCHECKs 132 // All our simulation needs to satisfy are the following two DCHECKs
130 DCHECK(status().is_success()); 133 DCHECK(status().is_success());
131 DCHECK_EQ(http_response_code, GetResponseCode()); 134 DCHECK_EQ(http_response_code, GetResponseCode());
132 } 135 }
133 136
134 void SimulateResponseInfo(const net::HttpResponseInfo& info) { 137 void SimulateResponseInfo(const net::HttpResponseInfo& info) {
135 mock_factory_job_ = new MockURLRequestJob( 138 mock_factory_job_ = new MockURLRequestJob(
136 this, context()->network_delegate(), info); 139 this, network_delegate(), info);
137 set_delegate(&delegate_); // needed to get the info back out 140 set_delegate(&delegate_); // needed to get the info back out
138 Start(); 141 Start();
139 DCHECK(!mock_factory_job_); 142 DCHECK(!mock_factory_job_);
140 } 143 }
141 144
142 MockURLRequestDelegate delegate_; 145 MockURLRequestDelegate delegate_;
143 }; 146 };
144 147
145 static net::URLRequestJob* MockHttpJobFactory( 148 static net::URLRequestJob* MockHttpJobFactory(
146 net::URLRequest* request, 149 net::URLRequest* request,
(...skipping 18 matching lines...) Expand all
165 io_thread_->StartWithOptions(options); 168 io_thread_->StartWithOptions(options);
166 } 169 }
167 170
168 static void TearDownTestCase() { 171 static void TearDownTestCase() {
169 io_thread_.reset(NULL); 172 io_thread_.reset(NULL);
170 } 173 }
171 174
172 // Test harness -------------------------------------------------- 175 // Test harness --------------------------------------------------
173 176
174 AppCacheRequestHandlerTest() 177 AppCacheRequestHandlerTest()
175 : host_(NULL), orig_http_factory_(NULL) { 178 : host_(NULL), empty_network_delegate_(NULL), orig_http_factory_(NULL) {
176 } 179 }
177 180
178 template <class Method> 181 template <class Method>
179 void RunTestOnIOThread(Method method) { 182 void RunTestOnIOThread(Method method) {
180 test_finished_event_ .reset(new base::WaitableEvent(false, false)); 183 test_finished_event_ .reset(new base::WaitableEvent(false, false));
181 io_thread_->message_loop()->PostTask( 184 io_thread_->message_loop()->PostTask(
182 FROM_HERE, 185 FROM_HERE,
183 base::Bind(&AppCacheRequestHandlerTest::MethodWrapper<Method>, 186 base::Bind(&AppCacheRequestHandlerTest::MethodWrapper<Method>,
184 base::Unretained(this), method)); 187 base::Unretained(this), method));
185 test_finished_event_->Wait(); 188 test_finished_event_->Wait();
186 } 189 }
187 190
188 void SetUpTest() { 191 void SetUpTest() {
189 DCHECK(MessageLoop::current() == io_thread_->message_loop()); 192 DCHECK(MessageLoop::current() == io_thread_->message_loop());
190 orig_http_factory_ = net::URLRequest::Deprecated::RegisterProtocolFactory( 193 orig_http_factory_ = net::URLRequest::Deprecated::RegisterProtocolFactory(
191 "http", MockHttpJobFactory); 194 "http", MockHttpJobFactory);
192 mock_service_.reset(new MockAppCacheService); 195 mock_service_.reset(new MockAppCacheService);
193 mock_service_->set_request_context(&empty_context_); 196 mock_service_->set_request_context(&empty_context_);
194 mock_policy_.reset(new MockAppCachePolicy); 197 mock_policy_.reset(new MockAppCachePolicy);
195 mock_service_->set_appcache_policy(mock_policy_.get()); 198 mock_service_->set_appcache_policy(mock_policy_.get());
196 mock_frontend_.reset(new MockFrontend); 199 mock_frontend_.reset(new MockFrontend);
197 backend_impl_.reset(new AppCacheBackendImpl); 200 backend_impl_.reset(new AppCacheBackendImpl);
198 backend_impl_->Initialize(mock_service_.get(), mock_frontend_.get(), 201 backend_impl_->Initialize(mock_service_.get(), mock_frontend_.get(),
199 kMockProcessId); 202 kMockProcessId);
200 const int kHostId = 1; 203 const int kHostId = 1;
201 backend_impl_->RegisterHost(kHostId); 204 backend_impl_->RegisterHost(kHostId);
202 host_ = backend_impl_->GetHost(kHostId); 205 host_ = backend_impl_->GetHost(kHostId);
206 empty_network_delegate_ = NULL;
203 } 207 }
204 208
205 void TearDownTest() { 209 void TearDownTest() {
206 DCHECK(MessageLoop::current() == io_thread_->message_loop()); 210 DCHECK(MessageLoop::current() == io_thread_->message_loop());
207 DCHECK(!mock_factory_job_); 211 DCHECK(!mock_factory_job_);
208 net::URLRequest::Deprecated::RegisterProtocolFactory( 212 net::URLRequest::Deprecated::RegisterProtocolFactory(
209 "http", orig_http_factory_); 213 "http", orig_http_factory_);
210 orig_http_factory_ = NULL; 214 orig_http_factory_ = NULL;
211 job_ = NULL; 215 job_ = NULL;
212 handler_.reset(); 216 handler_.reset();
213 request_.reset(); 217 request_.reset();
214 backend_impl_.reset(); 218 backend_impl_.reset();
215 mock_frontend_.reset(); 219 mock_frontend_.reset();
216 mock_service_.reset(); 220 mock_service_.reset();
217 mock_policy_.reset(); 221 mock_policy_.reset();
218 host_ = NULL; 222 host_ = NULL;
223 empty_network_delegate_ = NULL;
219 } 224 }
220 225
221 void TestFinished() { 226 void TestFinished() {
222 // We unwind the stack prior to finishing up to let stack 227 // We unwind the stack prior to finishing up to let stack
223 // based objects get deleted. 228 // based objects get deleted.
224 DCHECK(MessageLoop::current() == io_thread_->message_loop()); 229 DCHECK(MessageLoop::current() == io_thread_->message_loop());
225 MessageLoop::current()->PostTask( 230 MessageLoop::current()->PostTask(
226 FROM_HERE, 231 FROM_HERE,
227 base::Bind(&AppCacheRequestHandlerTest::TestFinishedUnwound, 232 base::Bind(&AppCacheRequestHandlerTest::TestFinishedUnwound,
228 base::Unretained(this))); 233 base::Unretained(this)));
(...skipping 18 matching lines...) Expand all
247 task_stack_.pop(); 252 task_stack_.pop();
248 } 253 }
249 254
250 // MainResource_Miss -------------------------------------------------- 255 // MainResource_Miss --------------------------------------------------
251 256
252 void MainResource_Miss() { 257 void MainResource_Miss() {
253 PushNextTask( 258 PushNextTask(
254 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, 259 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss,
255 base::Unretained(this))); 260 base::Unretained(this)));
256 261
257 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 262 request_.reset(new MockURLRequest(
263 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
258 handler_.reset(host_->CreateRequestHandler(request_.get(), 264 handler_.reset(host_->CreateRequestHandler(request_.get(),
259 ResourceType::MAIN_FRAME)); 265 ResourceType::MAIN_FRAME));
260 EXPECT_TRUE(handler_.get()); 266 EXPECT_TRUE(handler_.get());
261 267
262 job_ = handler_->MaybeLoadResource(request_.get(), 268 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
263 empty_context_.network_delegate());
264 EXPECT_TRUE(job_.get()); 269 EXPECT_TRUE(job_.get());
265 EXPECT_TRUE(job_->is_waiting()); 270 EXPECT_TRUE(job_->is_waiting());
266 271
267 // We have to wait for completion of storage->FindResponseForMainRequest. 272 // We have to wait for completion of storage->FindResponseForMainRequest.
268 ScheduleNextTask(); 273 ScheduleNextTask();
269 } 274 }
270 275
271 void Verify_MainResource_Miss() { 276 void Verify_MainResource_Miss() {
272 EXPECT_FALSE(job_->is_waiting()); 277 EXPECT_FALSE(job_->is_waiting());
273 EXPECT_TRUE(job_->is_delivering_network_response()); 278 EXPECT_TRUE(job_->is_delivering_network_response());
274 279
275 int64 cache_id = kNoCacheId; 280 int64 cache_id = kNoCacheId;
276 GURL manifest_url; 281 GURL manifest_url;
277 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 282 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
278 EXPECT_EQ(kNoCacheId, cache_id); 283 EXPECT_EQ(kNoCacheId, cache_id);
279 EXPECT_EQ(GURL(), manifest_url); 284 EXPECT_EQ(GURL(), manifest_url);
280 EXPECT_EQ(0, handler_->found_group_id_); 285 EXPECT_EQ(0, handler_->found_group_id_);
281 286
282 AppCacheURLRequestJob* fallback_job; 287 AppCacheURLRequestJob* fallback_job;
283 fallback_job = handler_->MaybeLoadFallbackForRedirect( 288 fallback_job = handler_->MaybeLoadFallbackForRedirect(
284 request_.get(), 289 request_.get(),
285 request_->context()->network_delegate(), 290 empty_network_delegate_,
286 GURL("http://blah/redirect")); 291 GURL("http://blah/redirect"));
287 EXPECT_FALSE(fallback_job); 292 EXPECT_FALSE(fallback_job);
288 fallback_job = handler_->MaybeLoadFallbackForResponse( 293 fallback_job = handler_->MaybeLoadFallbackForResponse(
289 request_.get(), request_->context()->network_delegate()); 294 request_.get(), empty_network_delegate_);
290 EXPECT_FALSE(fallback_job); 295 EXPECT_FALSE(fallback_job);
291 296
292 EXPECT_TRUE(host_->preferred_manifest_url().is_empty()); 297 EXPECT_TRUE(host_->preferred_manifest_url().is_empty());
293 298
294 TestFinished(); 299 TestFinished();
295 } 300 }
296 301
297 // MainResource_Hit -------------------------------------------------- 302 // MainResource_Hit --------------------------------------------------
298 303
299 void MainResource_Hit() { 304 void MainResource_Hit() {
300 PushNextTask( 305 PushNextTask(
301 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, 306 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit,
302 base::Unretained(this))); 307 base::Unretained(this)));
303 308
304 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 309 request_.reset(new MockURLRequest(
310 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
305 handler_.reset(host_->CreateRequestHandler(request_.get(), 311 handler_.reset(host_->CreateRequestHandler(request_.get(),
306 ResourceType::MAIN_FRAME)); 312 ResourceType::MAIN_FRAME));
307 EXPECT_TRUE(handler_.get()); 313 EXPECT_TRUE(handler_.get());
308 314
309 mock_storage()->SimulateFindMainResource( 315 mock_storage()->SimulateFindMainResource(
310 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 316 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
311 GURL(), AppCacheEntry(), 317 GURL(), AppCacheEntry(),
312 1, 2, GURL("http://blah/manifest/")); 318 1, 2, GURL("http://blah/manifest/"));
313 319
314 job_ = handler_->MaybeLoadResource(request_.get(), 320 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
315 empty_context_.network_delegate());
316 EXPECT_TRUE(job_.get()); 321 EXPECT_TRUE(job_.get());
317 EXPECT_TRUE(job_->is_waiting()); 322 EXPECT_TRUE(job_->is_waiting());
318 323
319 // We have to wait for completion of storage->FindResponseForMainRequest. 324 // We have to wait for completion of storage->FindResponseForMainRequest.
320 ScheduleNextTask(); 325 ScheduleNextTask();
321 } 326 }
322 327
323 void Verify_MainResource_Hit() { 328 void Verify_MainResource_Hit() {
324 EXPECT_FALSE(job_->is_waiting()); 329 EXPECT_FALSE(job_->is_waiting());
325 EXPECT_TRUE(job_->is_delivering_appcache_response()); 330 EXPECT_TRUE(job_->is_delivering_appcache_response());
326 331
327 int64 cache_id = kNoCacheId; 332 int64 cache_id = kNoCacheId;
328 GURL manifest_url; 333 GURL manifest_url;
329 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 334 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
330 EXPECT_EQ(1, cache_id); 335 EXPECT_EQ(1, cache_id);
331 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); 336 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url);
332 EXPECT_EQ(2, handler_->found_group_id_); 337 EXPECT_EQ(2, handler_->found_group_id_);
333 338
334 AppCacheURLRequestJob* fallback_job; 339 AppCacheURLRequestJob* fallback_job;
335 fallback_job = handler_->MaybeLoadFallbackForResponse( 340 fallback_job = handler_->MaybeLoadFallbackForResponse(
336 request_.get(), request_->context()->network_delegate()); 341 request_.get(), empty_network_delegate_);
337 EXPECT_FALSE(fallback_job); 342 EXPECT_FALSE(fallback_job);
338 343
339 EXPECT_EQ(GURL("http://blah/manifest/"), 344 EXPECT_EQ(GURL("http://blah/manifest/"),
340 host_->preferred_manifest_url()); 345 host_->preferred_manifest_url());
341 346
342 TestFinished(); 347 TestFinished();
343 } 348 }
344 349
345 // MainResource_Fallback -------------------------------------------------- 350 // MainResource_Fallback --------------------------------------------------
346 351
347 void MainResource_Fallback() { 352 void MainResource_Fallback() {
348 PushNextTask( 353 PushNextTask(
349 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, 354 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback,
350 base::Unretained(this))); 355 base::Unretained(this)));
351 356
352 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 357 request_.reset(new MockURLRequest(
358 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
353 handler_.reset(host_->CreateRequestHandler(request_.get(), 359 handler_.reset(host_->CreateRequestHandler(request_.get(),
354 ResourceType::MAIN_FRAME)); 360 ResourceType::MAIN_FRAME));
355 EXPECT_TRUE(handler_.get()); 361 EXPECT_TRUE(handler_.get());
356 362
357 mock_storage()->SimulateFindMainResource( 363 mock_storage()->SimulateFindMainResource(
358 AppCacheEntry(), 364 AppCacheEntry(),
359 GURL("http://blah/fallbackurl"), 365 GURL("http://blah/fallbackurl"),
360 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 366 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
361 1, 2, GURL("http://blah/manifest/")); 367 1, 2, GURL("http://blah/manifest/"));
362 368
363 job_ = handler_->MaybeLoadResource(request_.get(), 369 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
364 empty_context_.network_delegate());
365 EXPECT_TRUE(job_.get()); 370 EXPECT_TRUE(job_.get());
366 EXPECT_TRUE(job_->is_waiting()); 371 EXPECT_TRUE(job_->is_waiting());
367 372
368 // We have to wait for completion of storage->FindResponseForMainRequest. 373 // We have to wait for completion of storage->FindResponseForMainRequest.
369 ScheduleNextTask(); 374 ScheduleNextTask();
370 } 375 }
371 376
372 void Verify_MainResource_Fallback() { 377 void Verify_MainResource_Fallback() {
373 EXPECT_FALSE(job_->is_waiting()); 378 EXPECT_FALSE(job_->is_waiting());
374 EXPECT_TRUE(job_->is_delivering_network_response()); 379 EXPECT_TRUE(job_->is_delivering_network_response());
375 380
376 // When the request is restarted, the existing job is dropped so a 381 // When the request is restarted, the existing job is dropped so a
377 // real network job gets created. We expect NULL here which will cause 382 // real network job gets created. We expect NULL here which will cause
378 // the net library to create a real job. 383 // the net library to create a real job.
379 job_ = handler_->MaybeLoadResource(request_.get(), 384 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
380 empty_context_.network_delegate());
381 EXPECT_FALSE(job_); 385 EXPECT_FALSE(job_);
382 386
383 // Simulate an http error of the real network job. 387 // Simulate an http error of the real network job.
384 request_->SimulateResponseCode(500); 388 request_->SimulateResponseCode(500);
385 389
386 job_ = handler_->MaybeLoadFallbackForResponse( 390 job_ = handler_->MaybeLoadFallbackForResponse(
387 request_.get(), request_->context()->network_delegate()); 391 request_.get(), empty_network_delegate_);
388 EXPECT_TRUE(job_); 392 EXPECT_TRUE(job_);
389 EXPECT_TRUE(job_->is_delivering_appcache_response()); 393 EXPECT_TRUE(job_->is_delivering_appcache_response());
390 394
391 int64 cache_id = kNoCacheId; 395 int64 cache_id = kNoCacheId;
392 GURL manifest_url; 396 GURL manifest_url;
393 handler_->GetExtraResponseInfo(&cache_id, &manifest_url); 397 handler_->GetExtraResponseInfo(&cache_id, &manifest_url);
394 EXPECT_EQ(1, cache_id); 398 EXPECT_EQ(1, cache_id);
395 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url); 399 EXPECT_EQ(GURL("http://blah/manifest/"), manifest_url);
396 EXPECT_TRUE(host_->main_resource_was_namespace_entry_); 400 EXPECT_TRUE(host_->main_resource_was_namespace_entry_);
397 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_); 401 EXPECT_EQ(GURL("http://blah/fallbackurl"), host_->namespace_entry_url_);
398 402
399 EXPECT_EQ(GURL("http://blah/manifest/"), 403 EXPECT_EQ(GURL("http://blah/manifest/"),
400 host_->preferred_manifest_url()); 404 host_->preferred_manifest_url());
401 405
402 TestFinished(); 406 TestFinished();
403 } 407 }
404 408
405 // MainResource_FallbackOverride -------------------------------------------- 409 // MainResource_FallbackOverride --------------------------------------------
406 410
407 void MainResource_FallbackOverride() { 411 void MainResource_FallbackOverride() {
408 PushNextTask(base::Bind( 412 PushNextTask(base::Bind(
409 &AppCacheRequestHandlerTest::Verify_MainResource_FallbackOverride, 413 &AppCacheRequestHandlerTest::Verify_MainResource_FallbackOverride,
410 base::Unretained(this))); 414 base::Unretained(this)));
411 415
412 request_.reset(new MockURLRequest(GURL("http://blah/fallback-override"), 416 request_.reset(new MockURLRequest(
413 &empty_context_)); 417 GURL("http://blah/fallback-override"),
418 &empty_context_, empty_network_delegate_));
414 handler_.reset(host_->CreateRequestHandler(request_.get(), 419 handler_.reset(host_->CreateRequestHandler(request_.get(),
415 ResourceType::MAIN_FRAME)); 420 ResourceType::MAIN_FRAME));
416 EXPECT_TRUE(handler_.get()); 421 EXPECT_TRUE(handler_.get());
417 422
418 mock_storage()->SimulateFindMainResource( 423 mock_storage()->SimulateFindMainResource(
419 AppCacheEntry(), 424 AppCacheEntry(),
420 GURL("http://blah/fallbackurl"), 425 GURL("http://blah/fallbackurl"),
421 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 426 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
422 1, 2, GURL("http://blah/manifest/")); 427 1, 2, GURL("http://blah/manifest/"));
423 428
424 job_ = handler_->MaybeLoadResource(request_.get(), 429 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
425 empty_context_.network_delegate());
426 EXPECT_TRUE(job_.get()); 430 EXPECT_TRUE(job_.get());
427 EXPECT_TRUE(job_->is_waiting()); 431 EXPECT_TRUE(job_->is_waiting());
428 432
429 // We have to wait for completion of storage->FindResponseForMainRequest. 433 // We have to wait for completion of storage->FindResponseForMainRequest.
430 ScheduleNextTask(); 434 ScheduleNextTask();
431 } 435 }
432 436
433 void Verify_MainResource_FallbackOverride() { 437 void Verify_MainResource_FallbackOverride() {
434 EXPECT_FALSE(job_->is_waiting()); 438 EXPECT_FALSE(job_->is_waiting());
435 EXPECT_TRUE(job_->is_delivering_network_response()); 439 EXPECT_TRUE(job_->is_delivering_network_response());
436 440
437 // When the request is restarted, the existing job is dropped so a 441 // When the request is restarted, the existing job is dropped so a
438 // real network job gets created. We expect NULL here which will cause 442 // real network job gets created. We expect NULL here which will cause
439 // the net library to create a real job. 443 // the net library to create a real job.
440 job_ = handler_->MaybeLoadResource(request_.get(), 444 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
441 empty_context_.network_delegate());
442 EXPECT_FALSE(job_); 445 EXPECT_FALSE(job_);
443 446
444 // Simulate an http error of the real network job, but with custom 447 // Simulate an http error of the real network job, but with custom
445 // headers that override the fallback behavior. 448 // headers that override the fallback behavior.
446 const char kOverrideHeaders[] = 449 const char kOverrideHeaders[] =
447 "HTTP/1.1 404 BOO HOO\0" 450 "HTTP/1.1 404 BOO HOO\0"
448 "x-chromium-appcache-fallback-override: disallow-fallback\0" 451 "x-chromium-appcache-fallback-override: disallow-fallback\0"
449 "\0"; 452 "\0";
450 net::HttpResponseInfo info; 453 net::HttpResponseInfo info;
451 info.headers = new net::HttpResponseHeaders( 454 info.headers = new net::HttpResponseHeaders(
452 std::string(kOverrideHeaders, arraysize(kOverrideHeaders))); 455 std::string(kOverrideHeaders, arraysize(kOverrideHeaders)));
453 request_->SimulateResponseInfo(info); 456 request_->SimulateResponseInfo(info);
454 457
455 job_ = handler_->MaybeLoadFallbackForResponse( 458 job_ = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
456 request_.get(), request_->context()->network_delegate());
457 EXPECT_FALSE(job_); 459 EXPECT_FALSE(job_);
458 460
459 TestFinished(); 461 TestFinished();
460 } 462 }
461 463
462 // SubResource_Miss_WithNoCacheSelected ---------------------------------- 464 // SubResource_Miss_WithNoCacheSelected ----------------------------------
463 465
464 void SubResource_Miss_WithNoCacheSelected() { 466 void SubResource_Miss_WithNoCacheSelected() {
465 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 467 request_.reset(new MockURLRequest(
468 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
466 handler_.reset(host_->CreateRequestHandler(request_.get(), 469 handler_.reset(host_->CreateRequestHandler(request_.get(),
467 ResourceType::SUB_RESOURCE)); 470 ResourceType::SUB_RESOURCE));
468 471
469 // We avoid creating handler when possible, sub-resource requests are not 472 // We avoid creating handler when possible, sub-resource requests are not
470 // subject to retrieval from an appcache when there's no associated cache. 473 // subject to retrieval from an appcache when there's no associated cache.
471 EXPECT_FALSE(handler_.get()); 474 EXPECT_FALSE(handler_.get());
472 475
473 TestFinished(); 476 TestFinished();
474 } 477 }
475 478
476 // SubResource_Miss_WithCacheSelected ---------------------------------- 479 // SubResource_Miss_WithCacheSelected ----------------------------------
477 480
478 void SubResource_Miss_WithCacheSelected() { 481 void SubResource_Miss_WithCacheSelected() {
479 // A sub-resource load where the resource is not in an appcache, or 482 // A sub-resource load where the resource is not in an appcache, or
480 // in a network or fallback namespace, should result in a failed request. 483 // in a network or fallback namespace, should result in a failed request.
481 host_->AssociateCompleteCache(MakeNewCache()); 484 host_->AssociateCompleteCache(MakeNewCache());
482 485
483 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 486 request_.reset(new MockURLRequest(
487 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
484 handler_.reset(host_->CreateRequestHandler(request_.get(), 488 handler_.reset(host_->CreateRequestHandler(request_.get(),
485 ResourceType::SUB_RESOURCE)); 489 ResourceType::SUB_RESOURCE));
486 EXPECT_TRUE(handler_.get()); 490 EXPECT_TRUE(handler_.get());
487 491
488 job_ = handler_->MaybeLoadResource(request_.get(), 492 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
489 empty_context_.network_delegate());
490 EXPECT_TRUE(job_.get()); 493 EXPECT_TRUE(job_.get());
491 EXPECT_TRUE(job_->is_delivering_error_response()); 494 EXPECT_TRUE(job_->is_delivering_error_response());
492 495
493 AppCacheURLRequestJob* fallback_job; 496 AppCacheURLRequestJob* fallback_job;
494 fallback_job = handler_->MaybeLoadFallbackForRedirect( 497 fallback_job = handler_->MaybeLoadFallbackForRedirect(
495 request_.get(), 498 request_.get(), NULL, GURL("http://blah/redirect"));
496 empty_context_.network_delegate(),
497 GURL("http://blah/redirect"));
498 EXPECT_FALSE(fallback_job); 499 EXPECT_FALSE(fallback_job);
499 fallback_job = handler_->MaybeLoadFallbackForResponse( 500 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
500 request_.get(), empty_context_.network_delegate());
501 EXPECT_FALSE(fallback_job); 501 EXPECT_FALSE(fallback_job);
502 502
503 TestFinished(); 503 TestFinished();
504 } 504 }
505 505
506 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- 506 // SubResource_Miss_WithWaitForCacheSelection -----------------------------
507 507
508 void SubResource_Miss_WithWaitForCacheSelection() { 508 void SubResource_Miss_WithWaitForCacheSelection() {
509 // Precondition, the host is waiting on cache selection. 509 // Precondition, the host is waiting on cache selection.
510 scoped_refptr<AppCache> cache(MakeNewCache()); 510 scoped_refptr<AppCache> cache(MakeNewCache());
511 host_->pending_selected_cache_id_ = cache->cache_id(); 511 host_->pending_selected_cache_id_ = cache->cache_id();
512 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); 512 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url());
513 513
514 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 514 request_.reset(new MockURLRequest(
515 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
515 handler_.reset(host_->CreateRequestHandler(request_.get(), 516 handler_.reset(host_->CreateRequestHandler(request_.get(),
516 ResourceType::SUB_RESOURCE)); 517 ResourceType::SUB_RESOURCE));
517 EXPECT_TRUE(handler_.get()); 518 EXPECT_TRUE(handler_.get());
518 job_ = handler_->MaybeLoadResource(request_.get(), 519 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
519 empty_context_.network_delegate());
520 EXPECT_TRUE(job_.get()); 520 EXPECT_TRUE(job_.get());
521 EXPECT_TRUE(job_->is_waiting()); 521 EXPECT_TRUE(job_->is_waiting());
522 522
523 host_->FinishCacheSelection(cache, NULL); 523 host_->FinishCacheSelection(cache, NULL);
524 EXPECT_FALSE(job_->is_waiting()); 524 EXPECT_FALSE(job_->is_waiting());
525 EXPECT_TRUE(job_->is_delivering_error_response()); 525 EXPECT_TRUE(job_->is_delivering_error_response());
526 526
527 AppCacheURLRequestJob* fallback_job; 527 AppCacheURLRequestJob* fallback_job;
528 fallback_job = handler_->MaybeLoadFallbackForRedirect( 528 fallback_job = handler_->MaybeLoadFallbackForRedirect(
529 request_.get(), 529 request_.get(), NULL, GURL("http://blah/redirect"));
530 empty_context_.network_delegate(),
531 GURL("http://blah/redirect"));
532 EXPECT_FALSE(fallback_job); 530 EXPECT_FALSE(fallback_job);
533 fallback_job = handler_->MaybeLoadFallbackForResponse( 531 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
534 request_.get(), empty_context_.network_delegate());
535 EXPECT_FALSE(fallback_job); 532 EXPECT_FALSE(fallback_job);
536 533
537 TestFinished(); 534 TestFinished();
538 } 535 }
539 536
540 // SubResource_Hit ----------------------------- 537 // SubResource_Hit -----------------------------
541 538
542 void SubResource_Hit() { 539 void SubResource_Hit() {
543 host_->AssociateCompleteCache(MakeNewCache()); 540 host_->AssociateCompleteCache(MakeNewCache());
544 541
545 mock_storage()->SimulateFindSubResource( 542 mock_storage()->SimulateFindSubResource(
546 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 543 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
547 544
548 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 545 request_.reset(new MockURLRequest(
546 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
549 handler_.reset(host_->CreateRequestHandler(request_.get(), 547 handler_.reset(host_->CreateRequestHandler(request_.get(),
550 ResourceType::SUB_RESOURCE)); 548 ResourceType::SUB_RESOURCE));
551 EXPECT_TRUE(handler_.get()); 549 EXPECT_TRUE(handler_.get());
552 job_ = handler_->MaybeLoadResource(request_.get(), 550 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
553 empty_context_.network_delegate());
554 EXPECT_TRUE(job_.get()); 551 EXPECT_TRUE(job_.get());
555 EXPECT_TRUE(job_->is_delivering_appcache_response()); 552 EXPECT_TRUE(job_->is_delivering_appcache_response());
556 553
557 AppCacheURLRequestJob* fallback_job; 554 AppCacheURLRequestJob* fallback_job;
558 fallback_job = handler_->MaybeLoadFallbackForRedirect( 555 fallback_job = handler_->MaybeLoadFallbackForRedirect(
559 request_.get(), 556 request_.get(), NULL, GURL("http://blah/redirect"));
560 empty_context_.network_delegate(),
561 GURL("http://blah/redirect"));
562 EXPECT_FALSE(fallback_job); 557 EXPECT_FALSE(fallback_job);
563 fallback_job = handler_->MaybeLoadFallbackForResponse( 558 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
564 request_.get(), empty_context_.network_delegate());
565 EXPECT_FALSE(fallback_job); 559 EXPECT_FALSE(fallback_job);
566 560
567 TestFinished(); 561 TestFinished();
568 } 562 }
569 563
570 // SubResource_RedirectFallback ----------------------------- 564 // SubResource_RedirectFallback -----------------------------
571 565
572 void SubResource_RedirectFallback() { 566 void SubResource_RedirectFallback() {
573 // Redirects to resources in the a different origin are subject to 567 // Redirects to resources in the a different origin are subject to
574 // fallback namespaces. 568 // fallback namespaces.
575 host_->AssociateCompleteCache(MakeNewCache()); 569 host_->AssociateCompleteCache(MakeNewCache());
576 570
577 mock_storage()->SimulateFindSubResource( 571 mock_storage()->SimulateFindSubResource(
578 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 572 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
579 573
580 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 574 request_.reset(new MockURLRequest(
575 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
581 handler_.reset(host_->CreateRequestHandler(request_.get(), 576 handler_.reset(host_->CreateRequestHandler(request_.get(),
582 ResourceType::SUB_RESOURCE)); 577 ResourceType::SUB_RESOURCE));
583 EXPECT_TRUE(handler_.get()); 578 EXPECT_TRUE(handler_.get());
584 job_ = handler_->MaybeLoadResource(request_.get(), 579 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
585 empty_context_.network_delegate());
586 EXPECT_FALSE(job_.get()); 580 EXPECT_FALSE(job_.get());
587 581
588 job_ = handler_->MaybeLoadFallbackForRedirect( 582 job_ = handler_->MaybeLoadFallbackForRedirect(
589 request_.get(), 583 request_.get(), NULL, GURL("http://not_blah/redirect"));
590 empty_context_.network_delegate(),
591 GURL("http://not_blah/redirect"));
592 EXPECT_TRUE(job_.get()); 584 EXPECT_TRUE(job_.get());
593 EXPECT_TRUE(job_->is_delivering_appcache_response()); 585 EXPECT_TRUE(job_->is_delivering_appcache_response());
594 586
595 AppCacheURLRequestJob* fallback_job; 587 AppCacheURLRequestJob* fallback_job;
596 fallback_job = handler_->MaybeLoadFallbackForResponse( 588 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
597 request_.get(), empty_context_.network_delegate());
598 EXPECT_FALSE(fallback_job); 589 EXPECT_FALSE(fallback_job);
599 590
600 TestFinished(); 591 TestFinished();
601 } 592 }
602 593
603 // SubResource_NoRedirectFallback ----------------------------- 594 // SubResource_NoRedirectFallback -----------------------------
604 595
605 void SubResource_NoRedirectFallback() { 596 void SubResource_NoRedirectFallback() {
606 // Redirects to resources in the same-origin are not subject to 597 // Redirects to resources in the same-origin are not subject to
607 // fallback namespaces. 598 // fallback namespaces.
608 host_->AssociateCompleteCache(MakeNewCache()); 599 host_->AssociateCompleteCache(MakeNewCache());
609 600
610 mock_storage()->SimulateFindSubResource( 601 mock_storage()->SimulateFindSubResource(
611 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 602 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
612 603
613 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 604 request_.reset(new MockURLRequest(
605 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
614 handler_.reset(host_->CreateRequestHandler(request_.get(), 606 handler_.reset(host_->CreateRequestHandler(request_.get(),
615 ResourceType::SUB_RESOURCE)); 607 ResourceType::SUB_RESOURCE));
616 EXPECT_TRUE(handler_.get()); 608 EXPECT_TRUE(handler_.get());
617 job_ = handler_->MaybeLoadResource(request_.get(), 609 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
618 empty_context_.network_delegate());
619 EXPECT_FALSE(job_.get()); 610 EXPECT_FALSE(job_.get());
620 611
621 AppCacheURLRequestJob* fallback_job; 612 AppCacheURLRequestJob* fallback_job;
622 fallback_job = handler_->MaybeLoadFallbackForRedirect( 613 fallback_job = handler_->MaybeLoadFallbackForRedirect(
623 request_.get(), 614 request_.get(), NULL, GURL("http://blah/redirect"));
624 empty_context_.network_delegate(),
625 GURL("http://blah/redirect"));
626 EXPECT_FALSE(fallback_job); 615 EXPECT_FALSE(fallback_job);
627 616
628 request_->SimulateResponseCode(200); 617 request_->SimulateResponseCode(200);
629 fallback_job = handler_->MaybeLoadFallbackForResponse( 618 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
630 request_.get(), empty_context_.network_delegate());
631 EXPECT_FALSE(fallback_job); 619 EXPECT_FALSE(fallback_job);
632 620
633 TestFinished(); 621 TestFinished();
634 } 622 }
635 623
636 // SubResource_Network ----------------------------- 624 // SubResource_Network -----------------------------
637 625
638 void SubResource_Network() { 626 void SubResource_Network() {
639 // A sub-resource load where the resource is in a network namespace, 627 // A sub-resource load where the resource is in a network namespace,
640 // should result in the system using a 'real' job to do the network 628 // should result in the system using a 'real' job to do the network
641 // retrieval. 629 // retrieval.
642 host_->AssociateCompleteCache(MakeNewCache()); 630 host_->AssociateCompleteCache(MakeNewCache());
643 631
644 mock_storage()->SimulateFindSubResource( 632 mock_storage()->SimulateFindSubResource(
645 AppCacheEntry(), AppCacheEntry(), true); 633 AppCacheEntry(), AppCacheEntry(), true);
646 634
647 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 635 request_.reset(new MockURLRequest(
636 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
648 handler_.reset(host_->CreateRequestHandler(request_.get(), 637 handler_.reset(host_->CreateRequestHandler(request_.get(),
649 ResourceType::SUB_RESOURCE)); 638 ResourceType::SUB_RESOURCE));
650 EXPECT_TRUE(handler_.get()); 639 EXPECT_TRUE(handler_.get());
651 job_ = handler_->MaybeLoadResource(request_.get(), 640 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
652 empty_context_.network_delegate());
653 EXPECT_FALSE(job_.get()); 641 EXPECT_FALSE(job_.get());
654 642
655 AppCacheURLRequestJob* fallback_job; 643 AppCacheURLRequestJob* fallback_job;
656 fallback_job = handler_->MaybeLoadFallbackForRedirect( 644 fallback_job = handler_->MaybeLoadFallbackForRedirect(
657 request_.get(), 645 request_.get(), NULL, GURL("http://blah/redirect"));
658 empty_context_.network_delegate(),
659 GURL("http://blah/redirect"));
660 EXPECT_FALSE(fallback_job); 646 EXPECT_FALSE(fallback_job);
661 fallback_job = handler_->MaybeLoadFallbackForResponse( 647 fallback_job = handler_->MaybeLoadFallbackForResponse(request_.get(), NULL);
662 request_.get(), empty_context_.network_delegate());
663 EXPECT_FALSE(fallback_job); 648 EXPECT_FALSE(fallback_job);
664 649
665 TestFinished(); 650 TestFinished();
666 } 651 }
667 652
668 // DestroyedHost ----------------------------- 653 // DestroyedHost -----------------------------
669 654
670 void DestroyedHost() { 655 void DestroyedHost() {
671 host_->AssociateCompleteCache(MakeNewCache()); 656 host_->AssociateCompleteCache(MakeNewCache());
672 657
673 mock_storage()->SimulateFindSubResource( 658 mock_storage()->SimulateFindSubResource(
674 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 659 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
675 660
676 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 661 request_.reset(new MockURLRequest(
662 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
677 handler_.reset(host_->CreateRequestHandler(request_.get(), 663 handler_.reset(host_->CreateRequestHandler(request_.get(),
678 ResourceType::SUB_RESOURCE)); 664 ResourceType::SUB_RESOURCE));
679 EXPECT_TRUE(handler_.get()); 665 EXPECT_TRUE(handler_.get());
680 666
681 backend_impl_->UnregisterHost(1); 667 backend_impl_->UnregisterHost(1);
682 host_ = NULL; 668 host_ = NULL;
683 669
684 EXPECT_FALSE(handler_->MaybeLoadResource( 670 EXPECT_FALSE(handler_->MaybeLoadResource(request_.get(), NULL));
685 request_.get(), empty_context_.network_delegate()));
686 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 671 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
687 request_.get(), 672 request_.get(), NULL, GURL("http://blah/redirect")));
688 empty_context_.network_delegate(), 673 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get(), NULL));
689 GURL("http://blah/redirect")));
690 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
691 request_.get(), empty_context_.network_delegate()));
692 674
693 TestFinished(); 675 TestFinished();
694 } 676 }
695 677
696 // DestroyedHostWithWaitingJob ----------------------------- 678 // DestroyedHostWithWaitingJob -----------------------------
697 679
698 void DestroyedHostWithWaitingJob() { 680 void DestroyedHostWithWaitingJob() {
699 // Precondition, the host is waiting on cache selection. 681 // Precondition, the host is waiting on cache selection.
700 host_->pending_selected_cache_id_ = 1; 682 host_->pending_selected_cache_id_ = 1;
701 683
702 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 684 request_.reset(new MockURLRequest(
685 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
703 handler_.reset(host_->CreateRequestHandler(request_.get(), 686 handler_.reset(host_->CreateRequestHandler(request_.get(),
704 ResourceType::SUB_RESOURCE)); 687 ResourceType::SUB_RESOURCE));
705 EXPECT_TRUE(handler_.get()); 688 EXPECT_TRUE(handler_.get());
706 689
707 job_ = handler_->MaybeLoadResource( 690 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
708 request_.get(), empty_context_.network_delegate());
709 EXPECT_TRUE(job_.get()); 691 EXPECT_TRUE(job_.get());
710 EXPECT_TRUE(job_->is_waiting()); 692 EXPECT_TRUE(job_->is_waiting());
711 693
712 backend_impl_->UnregisterHost(1); 694 backend_impl_->UnregisterHost(1);
713 host_ = NULL; 695 host_ = NULL;
714 EXPECT_TRUE(job_->has_been_killed()); 696 EXPECT_TRUE(job_->has_been_killed());
715 697
716 EXPECT_FALSE(handler_->MaybeLoadResource( 698 EXPECT_FALSE(handler_->MaybeLoadResource(request_.get(), NULL));
717 request_.get(), empty_context_.network_delegate()));
718 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 699 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
719 request_.get(), 700 request_.get(), NULL, GURL("http://blah/redirect")));
720 empty_context_.network_delegate(),
721 GURL("http://blah/redirect")));
722 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 701 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
723 request_.get(), empty_context_.network_delegate())); 702 request_.get(), NULL));
724 703
725 TestFinished(); 704 TestFinished();
726 } 705 }
727 706
728 // UnsupportedScheme ----------------------------- 707 // UnsupportedScheme -----------------------------
729 708
730 void UnsupportedScheme() { 709 void UnsupportedScheme() {
731 // Precondition, the host is waiting on cache selection. 710 // Precondition, the host is waiting on cache selection.
732 host_->pending_selected_cache_id_ = 1; 711 host_->pending_selected_cache_id_ = 1;
733 712
734 request_.reset(new MockURLRequest(GURL("ftp://blah/"), &empty_context_)); 713 request_.reset(new MockURLRequest(
714 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
735 handler_.reset(host_->CreateRequestHandler(request_.get(), 715 handler_.reset(host_->CreateRequestHandler(request_.get(),
736 ResourceType::SUB_RESOURCE)); 716 ResourceType::SUB_RESOURCE));
737 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) 717 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably)
738 718
739 EXPECT_FALSE(handler_->MaybeLoadResource( 719 EXPECT_FALSE(handler_->MaybeLoadResource(
740 request_.get(), empty_context_.network_delegate())); 720 request_.get(), NULL));
741 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 721 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
742 request_.get(), 722 request_.get(), NULL, GURL("ftp://blah/redirect")));
743 empty_context_.network_delegate(),
744 GURL("ftp://blah/redirect")));
745 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 723 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
746 request_.get(), empty_context_.network_delegate())); 724 request_.get(), NULL));
747 725
748 TestFinished(); 726 TestFinished();
749 } 727 }
750 728
751 // CanceledRequest ----------------------------- 729 // CanceledRequest -----------------------------
752 730
753 void CanceledRequest() { 731 void CanceledRequest() {
754 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 732 request_.reset(new MockURLRequest(
733 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
755 handler_.reset(host_->CreateRequestHandler(request_.get(), 734 handler_.reset(host_->CreateRequestHandler(request_.get(),
756 ResourceType::MAIN_FRAME)); 735 ResourceType::MAIN_FRAME));
757 EXPECT_TRUE(handler_.get()); 736 EXPECT_TRUE(handler_.get());
758 737
759 job_ = handler_->MaybeLoadResource(request_.get(), 738 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
760 empty_context_.network_delegate());
761 EXPECT_TRUE(job_.get()); 739 EXPECT_TRUE(job_.get());
762 EXPECT_TRUE(job_->is_waiting()); 740 EXPECT_TRUE(job_->is_waiting());
763 EXPECT_FALSE(job_->has_been_started()); 741 EXPECT_FALSE(job_->has_been_started());
764 742
765 mock_factory_job_ = job_.get(); 743 mock_factory_job_ = job_.get();
766 request_->Start(); 744 request_->Start();
767 EXPECT_TRUE(job_->has_been_started()); 745 EXPECT_TRUE(job_->has_been_started());
768 746
769 request_->Cancel(); 747 request_->Cancel();
770 EXPECT_TRUE(job_->has_been_killed()); 748 EXPECT_TRUE(job_->has_been_killed());
771 749
772 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 750 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(request_.get(), NULL));
773 request_.get(), empty_context_.network_delegate()));
774 751
775 TestFinished(); 752 TestFinished();
776 } 753 }
777 754
778 // WorkerRequest ----------------------------- 755 // WorkerRequest -----------------------------
779 756
780 void WorkerRequest() { 757 void WorkerRequest() {
781 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 758 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
782 ResourceType::MAIN_FRAME)); 759 ResourceType::MAIN_FRAME));
783 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 760 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
784 ResourceType::SUB_FRAME)); 761 ResourceType::SUB_FRAME));
785 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 762 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
786 ResourceType::SHARED_WORKER)); 763 ResourceType::SHARED_WORKER));
787 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType( 764 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType(
788 ResourceType::WORKER)); 765 ResourceType::WORKER));
789 766
790 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 767 request_.reset(new MockURLRequest(
768 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
791 769
792 const int kParentHostId = host_->host_id(); 770 const int kParentHostId = host_->host_id();
793 const int kWorkerHostId = 2; 771 const int kWorkerHostId = 2;
794 const int kAbandonedWorkerHostId = 3; 772 const int kAbandonedWorkerHostId = 3;
795 const int kNonExsitingHostId = 700; 773 const int kNonExsitingHostId = 700;
796 774
797 backend_impl_->RegisterHost(kWorkerHostId); 775 backend_impl_->RegisterHost(kWorkerHostId);
798 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId); 776 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId);
799 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId); 777 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId);
800 handler_.reset(worker_host->CreateRequestHandler( 778 handler_.reset(worker_host->CreateRequestHandler(
(...skipping 16 matching lines...) Expand all
817 TestFinished(); 795 TestFinished();
818 } 796 }
819 797
820 // MainResource_Blocked -------------------------------------------------- 798 // MainResource_Blocked --------------------------------------------------
821 799
822 void MainResource_Blocked() { 800 void MainResource_Blocked() {
823 PushNextTask( 801 PushNextTask(
824 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked, 802 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked,
825 base::Unretained(this))); 803 base::Unretained(this)));
826 804
827 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 805 request_.reset(new MockURLRequest(
806 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
828 handler_.reset(host_->CreateRequestHandler(request_.get(), 807 handler_.reset(host_->CreateRequestHandler(request_.get(),
829 ResourceType::MAIN_FRAME)); 808 ResourceType::MAIN_FRAME));
830 EXPECT_TRUE(handler_.get()); 809 EXPECT_TRUE(handler_.get());
831 810
832 mock_policy_->can_load_return_value_ = false; 811 mock_policy_->can_load_return_value_ = false;
833 mock_storage()->SimulateFindMainResource( 812 mock_storage()->SimulateFindMainResource(
834 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 813 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
835 GURL(), AppCacheEntry(), 814 GURL(), AppCacheEntry(),
836 1, 2, GURL("http://blah/manifest/")); 815 1, 2, GURL("http://blah/manifest/"));
837 816
838 job_ = handler_->MaybeLoadResource(request_.get(), 817 job_ = handler_->MaybeLoadResource(request_.get(), NULL);
839 empty_context_.network_delegate());
840 EXPECT_TRUE(job_.get()); 818 EXPECT_TRUE(job_.get());
841 EXPECT_TRUE(job_->is_waiting()); 819 EXPECT_TRUE(job_->is_waiting());
842 820
843 // We have to wait for completion of storage->FindResponseForMainRequest. 821 // We have to wait for completion of storage->FindResponseForMainRequest.
844 ScheduleNextTask(); 822 ScheduleNextTask();
845 } 823 }
846 824
847 void Verify_MainResource_Blocked() { 825 void Verify_MainResource_Blocked() {
848 EXPECT_FALSE(job_->is_waiting()); 826 EXPECT_FALSE(job_->is_waiting());
849 EXPECT_FALSE(job_->is_delivering_appcache_response()); 827 EXPECT_FALSE(job_->is_delivering_appcache_response());
(...skipping 28 matching lines...) Expand all
878 // Data members -------------------------------------------------- 856 // Data members --------------------------------------------------
879 857
880 scoped_ptr<base::WaitableEvent> test_finished_event_; 858 scoped_ptr<base::WaitableEvent> test_finished_event_;
881 std::stack<base::Closure> task_stack_; 859 std::stack<base::Closure> task_stack_;
882 scoped_ptr<MockAppCacheService> mock_service_; 860 scoped_ptr<MockAppCacheService> mock_service_;
883 scoped_ptr<AppCacheBackendImpl> backend_impl_; 861 scoped_ptr<AppCacheBackendImpl> backend_impl_;
884 scoped_ptr<MockFrontend> mock_frontend_; 862 scoped_ptr<MockFrontend> mock_frontend_;
885 scoped_ptr<MockAppCachePolicy> mock_policy_; 863 scoped_ptr<MockAppCachePolicy> mock_policy_;
886 AppCacheHost* host_; 864 AppCacheHost* host_;
887 net::URLRequestContext empty_context_; 865 net::URLRequestContext empty_context_;
866 net::NetworkDelegate* empty_network_delegate_;
888 scoped_ptr<MockURLRequest> request_; 867 scoped_ptr<MockURLRequest> request_;
889 scoped_ptr<AppCacheRequestHandler> handler_; 868 scoped_ptr<AppCacheRequestHandler> handler_;
890 scoped_refptr<AppCacheURLRequestJob> job_; 869 scoped_refptr<AppCacheURLRequestJob> job_;
891 net::URLRequest::ProtocolFactory* orig_http_factory_; 870 net::URLRequest::ProtocolFactory* orig_http_factory_;
892 871
893 static scoped_ptr<base::Thread> io_thread_; 872 static scoped_ptr<base::Thread> io_thread_;
894 static net::URLRequestJob* mock_factory_job_; 873 static net::URLRequestJob* mock_factory_job_;
895 }; 874 };
896 875
897 // static 876 // static
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 945
967 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { 946 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) {
968 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); 947 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest);
969 } 948 }
970 949
971 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { 950 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) {
972 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); 951 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked);
973 } 952 }
974 953
975 } // namespace appcache 954 } // namespace appcache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698