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

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

Powered by Google App Engine
This is Rietveld 408576698