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

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

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

Powered by Google App Engine
This is Rietveld 408576698