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

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 empty delegate more explicit, and fix one broken 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 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),
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(), empty_network_delegate_);
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(), empty_network_delegate_);
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(), empty_network_delegate_);
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(), empty_network_delegate_);
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(), empty_network_delegate_);
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(), empty_network_delegate_);
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(
456 request_.get(), request_->context()->network_delegate()); 463 request_.get(), empty_network_delegate_);
457 EXPECT_FALSE(job_); 464 EXPECT_FALSE(job_);
458 465
459 TestFinished(); 466 TestFinished();
460 } 467 }
461 468
462 // SubResource_Miss_WithNoCacheSelected ---------------------------------- 469 // SubResource_Miss_WithNoCacheSelected ----------------------------------
463 470
464 void SubResource_Miss_WithNoCacheSelected() { 471 void SubResource_Miss_WithNoCacheSelected() {
465 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 472 request_.reset(new MockURLRequest(
473 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
466 handler_.reset(host_->CreateRequestHandler(request_.get(), 474 handler_.reset(host_->CreateRequestHandler(request_.get(),
467 ResourceType::SUB_RESOURCE)); 475 ResourceType::SUB_RESOURCE));
468 476
469 // We avoid creating handler when possible, sub-resource requests are not 477 // We avoid creating handler when possible, sub-resource requests are not
470 // subject to retrieval from an appcache when there's no associated cache. 478 // subject to retrieval from an appcache when there's no associated cache.
471 EXPECT_FALSE(handler_.get()); 479 EXPECT_FALSE(handler_.get());
472 480
473 TestFinished(); 481 TestFinished();
474 } 482 }
475 483
476 // SubResource_Miss_WithCacheSelected ---------------------------------- 484 // SubResource_Miss_WithCacheSelected ----------------------------------
477 485
478 void SubResource_Miss_WithCacheSelected() { 486 void SubResource_Miss_WithCacheSelected() {
479 // A sub-resource load where the resource is not in an appcache, or 487 // 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. 488 // in a network or fallback namespace, should result in a failed request.
481 host_->AssociateCompleteCache(MakeNewCache()); 489 host_->AssociateCompleteCache(MakeNewCache());
482 490
483 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 491 request_.reset(new MockURLRequest(
492 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
484 handler_.reset(host_->CreateRequestHandler(request_.get(), 493 handler_.reset(host_->CreateRequestHandler(request_.get(),
485 ResourceType::SUB_RESOURCE)); 494 ResourceType::SUB_RESOURCE));
486 EXPECT_TRUE(handler_.get()); 495 EXPECT_TRUE(handler_.get());
487 496
488 job_ = handler_->MaybeLoadResource(request_.get(), 497 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
489 empty_context_.network_delegate());
490 EXPECT_TRUE(job_.get()); 498 EXPECT_TRUE(job_.get());
491 EXPECT_TRUE(job_->is_delivering_error_response()); 499 EXPECT_TRUE(job_->is_delivering_error_response());
492 500
493 AppCacheURLRequestJob* fallback_job; 501 AppCacheURLRequestJob* fallback_job;
494 fallback_job = handler_->MaybeLoadFallbackForRedirect( 502 fallback_job = handler_->MaybeLoadFallbackForRedirect(
495 request_.get(), 503 request_.get(), empty_network_delegate_, GURL("http://blah/redirect"));
496 empty_context_.network_delegate(),
497 GURL("http://blah/redirect"));
498 EXPECT_FALSE(fallback_job); 504 EXPECT_FALSE(fallback_job);
499 fallback_job = handler_->MaybeLoadFallbackForResponse( 505 fallback_job = handler_->MaybeLoadFallbackForResponse(
500 request_.get(), empty_context_.network_delegate()); 506 request_.get(), empty_network_delegate_);
501 EXPECT_FALSE(fallback_job); 507 EXPECT_FALSE(fallback_job);
502 508
503 TestFinished(); 509 TestFinished();
504 } 510 }
505 511
506 // SubResource_Miss_WithWaitForCacheSelection ----------------------------- 512 // SubResource_Miss_WithWaitForCacheSelection -----------------------------
507 513
508 void SubResource_Miss_WithWaitForCacheSelection() { 514 void SubResource_Miss_WithWaitForCacheSelection() {
509 // Precondition, the host is waiting on cache selection. 515 // Precondition, the host is waiting on cache selection.
510 scoped_refptr<AppCache> cache(MakeNewCache()); 516 scoped_refptr<AppCache> cache(MakeNewCache());
511 host_->pending_selected_cache_id_ = cache->cache_id(); 517 host_->pending_selected_cache_id_ = cache->cache_id();
512 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); 518 host_->set_preferred_manifest_url(cache->owning_group()->manifest_url());
513 519
514 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 520 request_.reset(new MockURLRequest(
521 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
515 handler_.reset(host_->CreateRequestHandler(request_.get(), 522 handler_.reset(host_->CreateRequestHandler(request_.get(),
516 ResourceType::SUB_RESOURCE)); 523 ResourceType::SUB_RESOURCE));
517 EXPECT_TRUE(handler_.get()); 524 EXPECT_TRUE(handler_.get());
518 job_ = handler_->MaybeLoadResource(request_.get(), 525 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
519 empty_context_.network_delegate());
520 EXPECT_TRUE(job_.get()); 526 EXPECT_TRUE(job_.get());
521 EXPECT_TRUE(job_->is_waiting()); 527 EXPECT_TRUE(job_->is_waiting());
522 528
523 host_->FinishCacheSelection(cache, NULL); 529 host_->FinishCacheSelection(cache, NULL);
524 EXPECT_FALSE(job_->is_waiting()); 530 EXPECT_FALSE(job_->is_waiting());
525 EXPECT_TRUE(job_->is_delivering_error_response()); 531 EXPECT_TRUE(job_->is_delivering_error_response());
526 532
527 AppCacheURLRequestJob* fallback_job; 533 AppCacheURLRequestJob* fallback_job;
528 fallback_job = handler_->MaybeLoadFallbackForRedirect( 534 fallback_job = handler_->MaybeLoadFallbackForRedirect(
529 request_.get(), 535 request_.get(), empty_network_delegate_, GURL("http://blah/redirect"));
530 empty_context_.network_delegate(),
531 GURL("http://blah/redirect"));
532 EXPECT_FALSE(fallback_job); 536 EXPECT_FALSE(fallback_job);
533 fallback_job = handler_->MaybeLoadFallbackForResponse( 537 fallback_job = handler_->MaybeLoadFallbackForResponse(
534 request_.get(), empty_context_.network_delegate()); 538 request_.get(), empty_network_delegate_);
535 EXPECT_FALSE(fallback_job); 539 EXPECT_FALSE(fallback_job);
536 540
537 TestFinished(); 541 TestFinished();
538 } 542 }
539 543
540 // SubResource_Hit ----------------------------- 544 // SubResource_Hit -----------------------------
541 545
542 void SubResource_Hit() { 546 void SubResource_Hit() {
543 host_->AssociateCompleteCache(MakeNewCache()); 547 host_->AssociateCompleteCache(MakeNewCache());
544 548
545 mock_storage()->SimulateFindSubResource( 549 mock_storage()->SimulateFindSubResource(
546 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 550 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
547 551
548 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 552 request_.reset(new MockURLRequest(
553 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
549 handler_.reset(host_->CreateRequestHandler(request_.get(), 554 handler_.reset(host_->CreateRequestHandler(request_.get(),
550 ResourceType::SUB_RESOURCE)); 555 ResourceType::SUB_RESOURCE));
551 EXPECT_TRUE(handler_.get()); 556 EXPECT_TRUE(handler_.get());
552 job_ = handler_->MaybeLoadResource(request_.get(), 557 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
553 empty_context_.network_delegate());
554 EXPECT_TRUE(job_.get()); 558 EXPECT_TRUE(job_.get());
555 EXPECT_TRUE(job_->is_delivering_appcache_response()); 559 EXPECT_TRUE(job_->is_delivering_appcache_response());
556 560
557 AppCacheURLRequestJob* fallback_job; 561 AppCacheURLRequestJob* fallback_job;
558 fallback_job = handler_->MaybeLoadFallbackForRedirect( 562 fallback_job = handler_->MaybeLoadFallbackForRedirect(
559 request_.get(), 563 request_.get(), empty_network_delegate_, GURL("http://blah/redirect"));
560 empty_context_.network_delegate(),
561 GURL("http://blah/redirect"));
562 EXPECT_FALSE(fallback_job); 564 EXPECT_FALSE(fallback_job);
563 fallback_job = handler_->MaybeLoadFallbackForResponse( 565 fallback_job = handler_->MaybeLoadFallbackForResponse(
564 request_.get(), empty_context_.network_delegate()); 566 request_.get(), empty_network_delegate_);
565 EXPECT_FALSE(fallback_job); 567 EXPECT_FALSE(fallback_job);
566 568
567 TestFinished(); 569 TestFinished();
568 } 570 }
569 571
570 // SubResource_RedirectFallback ----------------------------- 572 // SubResource_RedirectFallback -----------------------------
571 573
572 void SubResource_RedirectFallback() { 574 void SubResource_RedirectFallback() {
573 // Redirects to resources in the a different origin are subject to 575 // Redirects to resources in the a different origin are subject to
574 // fallback namespaces. 576 // fallback namespaces.
575 host_->AssociateCompleteCache(MakeNewCache()); 577 host_->AssociateCompleteCache(MakeNewCache());
576 578
577 mock_storage()->SimulateFindSubResource( 579 mock_storage()->SimulateFindSubResource(
578 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 580 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
579 581
580 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 582 request_.reset(new MockURLRequest(
583 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
581 handler_.reset(host_->CreateRequestHandler(request_.get(), 584 handler_.reset(host_->CreateRequestHandler(request_.get(),
582 ResourceType::SUB_RESOURCE)); 585 ResourceType::SUB_RESOURCE));
583 EXPECT_TRUE(handler_.get()); 586 EXPECT_TRUE(handler_.get());
584 job_ = handler_->MaybeLoadResource(request_.get(), 587 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
585 empty_context_.network_delegate());
586 EXPECT_FALSE(job_.get()); 588 EXPECT_FALSE(job_.get());
587 589
588 job_ = handler_->MaybeLoadFallbackForRedirect( 590 job_ = handler_->MaybeLoadFallbackForRedirect(
589 request_.get(), 591 request_.get(),
590 empty_context_.network_delegate(), 592 empty_network_delegate_,
591 GURL("http://not_blah/redirect")); 593 GURL("http://not_blah/redirect"));
592 EXPECT_TRUE(job_.get()); 594 EXPECT_TRUE(job_.get());
593 EXPECT_TRUE(job_->is_delivering_appcache_response()); 595 EXPECT_TRUE(job_->is_delivering_appcache_response());
594 596
595 AppCacheURLRequestJob* fallback_job; 597 AppCacheURLRequestJob* fallback_job;
596 fallback_job = handler_->MaybeLoadFallbackForResponse( 598 fallback_job = handler_->MaybeLoadFallbackForResponse(
597 request_.get(), empty_context_.network_delegate()); 599 request_.get(), empty_network_delegate_);
598 EXPECT_FALSE(fallback_job); 600 EXPECT_FALSE(fallback_job);
599 601
600 TestFinished(); 602 TestFinished();
601 } 603 }
602 604
603 // SubResource_NoRedirectFallback ----------------------------- 605 // SubResource_NoRedirectFallback -----------------------------
604 606
605 void SubResource_NoRedirectFallback() { 607 void SubResource_NoRedirectFallback() {
606 // Redirects to resources in the same-origin are not subject to 608 // Redirects to resources in the same-origin are not subject to
607 // fallback namespaces. 609 // fallback namespaces.
608 host_->AssociateCompleteCache(MakeNewCache()); 610 host_->AssociateCompleteCache(MakeNewCache());
609 611
610 mock_storage()->SimulateFindSubResource( 612 mock_storage()->SimulateFindSubResource(
611 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); 613 AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
612 614
613 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 615 request_.reset(new MockURLRequest(
616 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
614 handler_.reset(host_->CreateRequestHandler(request_.get(), 617 handler_.reset(host_->CreateRequestHandler(request_.get(),
615 ResourceType::SUB_RESOURCE)); 618 ResourceType::SUB_RESOURCE));
616 EXPECT_TRUE(handler_.get()); 619 EXPECT_TRUE(handler_.get());
617 job_ = handler_->MaybeLoadResource(request_.get(), 620 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
618 empty_context_.network_delegate());
619 EXPECT_FALSE(job_.get()); 621 EXPECT_FALSE(job_.get());
620 622
621 AppCacheURLRequestJob* fallback_job; 623 AppCacheURLRequestJob* fallback_job;
622 fallback_job = handler_->MaybeLoadFallbackForRedirect( 624 fallback_job = handler_->MaybeLoadFallbackForRedirect(
623 request_.get(), 625 request_.get(), empty_network_delegate_, GURL("http://blah/redirect"));
624 empty_context_.network_delegate(),
625 GURL("http://blah/redirect"));
626 EXPECT_FALSE(fallback_job); 626 EXPECT_FALSE(fallback_job);
627 627
628 request_->SimulateResponseCode(200); 628 request_->SimulateResponseCode(200);
629 fallback_job = handler_->MaybeLoadFallbackForResponse( 629 fallback_job = handler_->MaybeLoadFallbackForResponse(
630 request_.get(), empty_context_.network_delegate()); 630 request_.get(), empty_network_delegate_);
631 EXPECT_FALSE(fallback_job); 631 EXPECT_FALSE(fallback_job);
632 632
633 TestFinished(); 633 TestFinished();
634 } 634 }
635 635
636 // SubResource_Network ----------------------------- 636 // SubResource_Network -----------------------------
637 637
638 void SubResource_Network() { 638 void SubResource_Network() {
639 // A sub-resource load where the resource is in a network namespace, 639 // 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 640 // should result in the system using a 'real' job to do the network
641 // retrieval. 641 // retrieval.
642 host_->AssociateCompleteCache(MakeNewCache()); 642 host_->AssociateCompleteCache(MakeNewCache());
643 643
644 mock_storage()->SimulateFindSubResource( 644 mock_storage()->SimulateFindSubResource(
645 AppCacheEntry(), AppCacheEntry(), true); 645 AppCacheEntry(), AppCacheEntry(), true);
646 646
647 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 647 request_.reset(new MockURLRequest(
648 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
648 handler_.reset(host_->CreateRequestHandler(request_.get(), 649 handler_.reset(host_->CreateRequestHandler(request_.get(),
649 ResourceType::SUB_RESOURCE)); 650 ResourceType::SUB_RESOURCE));
650 EXPECT_TRUE(handler_.get()); 651 EXPECT_TRUE(handler_.get());
651 job_ = handler_->MaybeLoadResource(request_.get(), 652 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
652 empty_context_.network_delegate());
653 EXPECT_FALSE(job_.get()); 653 EXPECT_FALSE(job_.get());
654 654
655 AppCacheURLRequestJob* fallback_job; 655 AppCacheURLRequestJob* fallback_job;
656 fallback_job = handler_->MaybeLoadFallbackForRedirect( 656 fallback_job = handler_->MaybeLoadFallbackForRedirect(
657 request_.get(), 657 request_.get(), empty_network_delegate_, GURL("http://blah/redirect"));
658 empty_context_.network_delegate(),
659 GURL("http://blah/redirect"));
660 EXPECT_FALSE(fallback_job); 658 EXPECT_FALSE(fallback_job);
661 fallback_job = handler_->MaybeLoadFallbackForResponse( 659 fallback_job = handler_->MaybeLoadFallbackForResponse(
662 request_.get(), empty_context_.network_delegate()); 660 request_.get(), empty_network_delegate_);
663 EXPECT_FALSE(fallback_job); 661 EXPECT_FALSE(fallback_job);
664 662
665 TestFinished(); 663 TestFinished();
666 } 664 }
667 665
668 // DestroyedHost ----------------------------- 666 // DestroyedHost -----------------------------
669 667
670 void DestroyedHost() { 668 void DestroyedHost() {
671 host_->AssociateCompleteCache(MakeNewCache()); 669 host_->AssociateCompleteCache(MakeNewCache());
672 670
673 mock_storage()->SimulateFindSubResource( 671 mock_storage()->SimulateFindSubResource(
674 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); 672 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
675 673
676 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 674 request_.reset(new MockURLRequest(
675 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
677 handler_.reset(host_->CreateRequestHandler(request_.get(), 676 handler_.reset(host_->CreateRequestHandler(request_.get(),
678 ResourceType::SUB_RESOURCE)); 677 ResourceType::SUB_RESOURCE));
679 EXPECT_TRUE(handler_.get()); 678 EXPECT_TRUE(handler_.get());
680 679
681 backend_impl_->UnregisterHost(1); 680 backend_impl_->UnregisterHost(1);
682 host_ = NULL; 681 host_ = NULL;
683 682
684 EXPECT_FALSE(handler_->MaybeLoadResource( 683 EXPECT_FALSE(handler_->MaybeLoadResource(
685 request_.get(), empty_context_.network_delegate())); 684 request_.get(), empty_network_delegate_));
686 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 685 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
687 request_.get(), 686 request_.get(), empty_network_delegate_, GURL("http://blah/redirect")));
688 empty_context_.network_delegate(),
689 GURL("http://blah/redirect")));
690 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 687 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
691 request_.get(), empty_context_.network_delegate())); 688 request_.get(), empty_network_delegate_));
692 689
693 TestFinished(); 690 TestFinished();
694 } 691 }
695 692
696 // DestroyedHostWithWaitingJob ----------------------------- 693 // DestroyedHostWithWaitingJob -----------------------------
697 694
698 void DestroyedHostWithWaitingJob() { 695 void DestroyedHostWithWaitingJob() {
699 // Precondition, the host is waiting on cache selection. 696 // Precondition, the host is waiting on cache selection.
700 host_->pending_selected_cache_id_ = 1; 697 host_->pending_selected_cache_id_ = 1;
701 698
702 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 699 request_.reset(new MockURLRequest(
700 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
703 handler_.reset(host_->CreateRequestHandler(request_.get(), 701 handler_.reset(host_->CreateRequestHandler(request_.get(),
704 ResourceType::SUB_RESOURCE)); 702 ResourceType::SUB_RESOURCE));
705 EXPECT_TRUE(handler_.get()); 703 EXPECT_TRUE(handler_.get());
706 704
707 job_ = handler_->MaybeLoadResource( 705 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
708 request_.get(), empty_context_.network_delegate());
709 EXPECT_TRUE(job_.get()); 706 EXPECT_TRUE(job_.get());
710 EXPECT_TRUE(job_->is_waiting()); 707 EXPECT_TRUE(job_->is_waiting());
711 708
712 backend_impl_->UnregisterHost(1); 709 backend_impl_->UnregisterHost(1);
713 host_ = NULL; 710 host_ = NULL;
714 EXPECT_TRUE(job_->has_been_killed()); 711 EXPECT_TRUE(job_->has_been_killed());
715 712
716 EXPECT_FALSE(handler_->MaybeLoadResource( 713 EXPECT_FALSE(handler_->MaybeLoadResource(
717 request_.get(), empty_context_.network_delegate())); 714 request_.get(), empty_network_delegate_));
718 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 715 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
719 request_.get(), 716 request_.get(), empty_network_delegate_, GURL("http://blah/redirect")));
720 empty_context_.network_delegate(),
721 GURL("http://blah/redirect")));
722 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 717 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
723 request_.get(), empty_context_.network_delegate())); 718 request_.get(), empty_network_delegate_));
724 719
725 TestFinished(); 720 TestFinished();
726 } 721 }
727 722
728 // UnsupportedScheme ----------------------------- 723 // UnsupportedScheme -----------------------------
729 724
730 void UnsupportedScheme() { 725 void UnsupportedScheme() {
731 // Precondition, the host is waiting on cache selection. 726 // Precondition, the host is waiting on cache selection.
732 host_->pending_selected_cache_id_ = 1; 727 host_->pending_selected_cache_id_ = 1;
733 728
734 request_.reset(new MockURLRequest(GURL("ftp://blah/"), &empty_context_)); 729 request_.reset(new MockURLRequest(
730 GURL("ftp://blah/"), &empty_context_, empty_network_delegate_));
735 handler_.reset(host_->CreateRequestHandler(request_.get(), 731 handler_.reset(host_->CreateRequestHandler(request_.get(),
736 ResourceType::SUB_RESOURCE)); 732 ResourceType::SUB_RESOURCE));
737 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) 733 EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably)
738 734
739 EXPECT_FALSE(handler_->MaybeLoadResource( 735 EXPECT_FALSE(handler_->MaybeLoadResource(
740 request_.get(), empty_context_.network_delegate())); 736 request_.get(), empty_network_delegate_));
741 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect( 737 EXPECT_FALSE(handler_->MaybeLoadFallbackForRedirect(
742 request_.get(), 738 request_.get(), empty_network_delegate_, GURL("ftp://blah/redirect")));
743 empty_context_.network_delegate(),
744 GURL("ftp://blah/redirect")));
745 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 739 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
746 request_.get(), empty_context_.network_delegate())); 740 request_.get(), empty_network_delegate_));
747 741
748 TestFinished(); 742 TestFinished();
749 } 743 }
750 744
751 // CanceledRequest ----------------------------- 745 // CanceledRequest -----------------------------
752 746
753 void CanceledRequest() { 747 void CanceledRequest() {
754 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 748 request_.reset(new MockURLRequest(
749 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
755 handler_.reset(host_->CreateRequestHandler(request_.get(), 750 handler_.reset(host_->CreateRequestHandler(request_.get(),
756 ResourceType::MAIN_FRAME)); 751 ResourceType::MAIN_FRAME));
757 EXPECT_TRUE(handler_.get()); 752 EXPECT_TRUE(handler_.get());
758 753
759 job_ = handler_->MaybeLoadResource(request_.get(), 754 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
760 empty_context_.network_delegate());
761 EXPECT_TRUE(job_.get()); 755 EXPECT_TRUE(job_.get());
762 EXPECT_TRUE(job_->is_waiting()); 756 EXPECT_TRUE(job_->is_waiting());
763 EXPECT_FALSE(job_->has_been_started()); 757 EXPECT_FALSE(job_->has_been_started());
764 758
765 mock_factory_job_ = job_.get(); 759 mock_factory_job_ = job_.get();
766 request_->Start(); 760 request_->Start();
767 EXPECT_TRUE(job_->has_been_started()); 761 EXPECT_TRUE(job_->has_been_started());
768 762
769 request_->Cancel(); 763 request_->Cancel();
770 EXPECT_TRUE(job_->has_been_killed()); 764 EXPECT_TRUE(job_->has_been_killed());
771 765
772 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse( 766 EXPECT_FALSE(handler_->MaybeLoadFallbackForResponse(
773 request_.get(), empty_context_.network_delegate())); 767 request_.get(), empty_network_delegate_));
774 768
775 TestFinished(); 769 TestFinished();
776 } 770 }
777 771
778 // WorkerRequest ----------------------------- 772 // WorkerRequest -----------------------------
779 773
780 void WorkerRequest() { 774 void WorkerRequest() {
781 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 775 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
782 ResourceType::MAIN_FRAME)); 776 ResourceType::MAIN_FRAME));
783 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 777 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
784 ResourceType::SUB_FRAME)); 778 ResourceType::SUB_FRAME));
785 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType( 779 EXPECT_TRUE(AppCacheRequestHandler::IsMainResourceType(
786 ResourceType::SHARED_WORKER)); 780 ResourceType::SHARED_WORKER));
787 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType( 781 EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType(
788 ResourceType::WORKER)); 782 ResourceType::WORKER));
789 783
790 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 784 request_.reset(new MockURLRequest(
785 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
791 786
792 const int kParentHostId = host_->host_id(); 787 const int kParentHostId = host_->host_id();
793 const int kWorkerHostId = 2; 788 const int kWorkerHostId = 2;
794 const int kAbandonedWorkerHostId = 3; 789 const int kAbandonedWorkerHostId = 3;
795 const int kNonExsitingHostId = 700; 790 const int kNonExsitingHostId = 700;
796 791
797 backend_impl_->RegisterHost(kWorkerHostId); 792 backend_impl_->RegisterHost(kWorkerHostId);
798 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId); 793 AppCacheHost* worker_host = backend_impl_->GetHost(kWorkerHostId);
799 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId); 794 worker_host->SelectCacheForWorker(kParentHostId, kMockProcessId);
800 handler_.reset(worker_host->CreateRequestHandler( 795 handler_.reset(worker_host->CreateRequestHandler(
(...skipping 16 matching lines...) Expand all
817 TestFinished(); 812 TestFinished();
818 } 813 }
819 814
820 // MainResource_Blocked -------------------------------------------------- 815 // MainResource_Blocked --------------------------------------------------
821 816
822 void MainResource_Blocked() { 817 void MainResource_Blocked() {
823 PushNextTask( 818 PushNextTask(
824 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked, 819 base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked,
825 base::Unretained(this))); 820 base::Unretained(this)));
826 821
827 request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); 822 request_.reset(new MockURLRequest(
823 GURL("http://blah/"), &empty_context_, empty_network_delegate_));
828 handler_.reset(host_->CreateRequestHandler(request_.get(), 824 handler_.reset(host_->CreateRequestHandler(request_.get(),
829 ResourceType::MAIN_FRAME)); 825 ResourceType::MAIN_FRAME));
830 EXPECT_TRUE(handler_.get()); 826 EXPECT_TRUE(handler_.get());
831 827
832 mock_policy_->can_load_return_value_ = false; 828 mock_policy_->can_load_return_value_ = false;
833 mock_storage()->SimulateFindMainResource( 829 mock_storage()->SimulateFindMainResource(
834 AppCacheEntry(AppCacheEntry::EXPLICIT, 1), 830 AppCacheEntry(AppCacheEntry::EXPLICIT, 1),
835 GURL(), AppCacheEntry(), 831 GURL(), AppCacheEntry(),
836 1, 2, GURL("http://blah/manifest/")); 832 1, 2, GURL("http://blah/manifest/"));
837 833
838 job_ = handler_->MaybeLoadResource(request_.get(), 834 job_ = handler_->MaybeLoadResource(request_.get(), empty_network_delegate_);
839 empty_context_.network_delegate());
840 EXPECT_TRUE(job_.get()); 835 EXPECT_TRUE(job_.get());
841 EXPECT_TRUE(job_->is_waiting()); 836 EXPECT_TRUE(job_->is_waiting());
842 837
843 // We have to wait for completion of storage->FindResponseForMainRequest. 838 // We have to wait for completion of storage->FindResponseForMainRequest.
844 ScheduleNextTask(); 839 ScheduleNextTask();
845 } 840 }
846 841
847 void Verify_MainResource_Blocked() { 842 void Verify_MainResource_Blocked() {
848 EXPECT_FALSE(job_->is_waiting()); 843 EXPECT_FALSE(job_->is_waiting());
849 EXPECT_FALSE(job_->is_delivering_appcache_response()); 844 EXPECT_FALSE(job_->is_delivering_appcache_response());
(...skipping 28 matching lines...) Expand all
878 // Data members -------------------------------------------------- 873 // Data members --------------------------------------------------
879 874
880 scoped_ptr<base::WaitableEvent> test_finished_event_; 875 scoped_ptr<base::WaitableEvent> test_finished_event_;
881 std::stack<base::Closure> task_stack_; 876 std::stack<base::Closure> task_stack_;
882 scoped_ptr<MockAppCacheService> mock_service_; 877 scoped_ptr<MockAppCacheService> mock_service_;
883 scoped_ptr<AppCacheBackendImpl> backend_impl_; 878 scoped_ptr<AppCacheBackendImpl> backend_impl_;
884 scoped_ptr<MockFrontend> mock_frontend_; 879 scoped_ptr<MockFrontend> mock_frontend_;
885 scoped_ptr<MockAppCachePolicy> mock_policy_; 880 scoped_ptr<MockAppCachePolicy> mock_policy_;
886 AppCacheHost* host_; 881 AppCacheHost* host_;
887 net::URLRequestContext empty_context_; 882 net::URLRequestContext empty_context_;
883 net::NetworkDelegate* empty_network_delegate_;
888 scoped_ptr<MockURLRequest> request_; 884 scoped_ptr<MockURLRequest> request_;
889 scoped_ptr<AppCacheRequestHandler> handler_; 885 scoped_ptr<AppCacheRequestHandler> handler_;
890 scoped_refptr<AppCacheURLRequestJob> job_; 886 scoped_refptr<AppCacheURLRequestJob> job_;
891 net::URLRequest::ProtocolFactory* orig_http_factory_; 887 net::URLRequest::ProtocolFactory* orig_http_factory_;
892 888
893 static scoped_ptr<base::Thread> io_thread_; 889 static scoped_ptr<base::Thread> io_thread_;
894 static net::URLRequestJob* mock_factory_job_; 890 static net::URLRequestJob* mock_factory_job_;
895 }; 891 };
896 892
897 // static 893 // static
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 962
967 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) { 963 TEST_F(AppCacheRequestHandlerTest, WorkerRequest) {
968 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest); 964 RunTestOnIOThread(&AppCacheRequestHandlerTest::WorkerRequest);
969 } 965 }
970 966
971 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) { 967 TEST_F(AppCacheRequestHandlerTest, MainResource_Blocked) {
972 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked); 968 RunTestOnIOThread(&AppCacheRequestHandlerTest::MainResource_Blocked);
973 } 969 }
974 970
975 } // namespace appcache 971 } // namespace appcache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698