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

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

Issue 7328015: Revert r91815, "Clean up RegisterProtocolFactory calls." (broke mac canaries) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 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
« no previous file with comments | « net/url_request/url_request_job_factory.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "base/stl_util-inl.h" 7 #include "base/stl_util-inl.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "net/http/http_response_headers.h" 11 #include "net/http/http_response_headers.h"
12 #include "net/url_request/url_request_error_job.h" 12 #include "net/url_request/url_request_error_job.h"
13 #include "net/url_request/url_request_job_factory.h"
14 #include "net/url_request/url_request_test_job.h" 13 #include "net/url_request/url_request_test_job.h"
15 #include "net/url_request/url_request_test_util.h" 14 #include "net/url_request/url_request_test_util.h"
16 #include "webkit/appcache/appcache_group.h" 15 #include "webkit/appcache/appcache_group.h"
17 #include "webkit/appcache/appcache_host.h" 16 #include "webkit/appcache/appcache_host.h"
18 #include "webkit/appcache/appcache_policy.h" 17 #include "webkit/appcache/appcache_policy.h"
19 #include "webkit/appcache/appcache_response.h" 18 #include "webkit/appcache/appcache_response.h"
20 #include "webkit/appcache/appcache_update_job.h" 19 #include "webkit/appcache/appcache_update_job.h"
21 #include "webkit/appcache/mock_appcache_service.h" 20 #include "webkit/appcache/mock_appcache_service.h"
22 21
23 namespace appcache { 22 namespace appcache {
(...skipping 19 matching lines...) Expand all
43 } 42 }
44 43
45 static GURL GetMockHttpsUrl(const std::string& path) { 44 static GURL GetMockHttpsUrl(const std::string& path) {
46 return GURL("https://mockhost/" + path); 45 return GURL("https://mockhost/" + path);
47 } 46 }
48 47
49 static GURL GetMockCrossOriginHttpsUrl(const std::string& path) { 48 static GURL GetMockCrossOriginHttpsUrl(const std::string& path) {
50 return GURL("https://cross_origin_host/" + path); 49 return GURL("https://cross_origin_host/" + path);
51 } 50 }
52 51
53 static net::URLRequestJob* JobFactory(net::URLRequest* request) { 52 static net::URLRequestJob* JobFactory(net::URLRequest* request,
53 const std::string& scheme) {
54 if (request->url().host() != "mockhost" && 54 if (request->url().host() != "mockhost" &&
55 request->url().host() != "cross_origin_host") 55 request->url().host() != "cross_origin_host")
56 return new net::URLRequestErrorJob(request, -1); 56 return new net::URLRequestErrorJob(request, -1);
57 57
58 std::string headers, body; 58 std::string headers, body;
59 GetMockResponse(request->url().path(), &headers, &body); 59 GetMockResponse(request->url().path(), &headers, &body);
60 return new net::URLRequestTestJob(request, headers, body, true); 60 return new net::URLRequestTestJob(request, headers, body, true);
61 } 61 }
62 62
63 private: 63 private:
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 (*headers) = std::string(no_store_headers, arraysize(no_store_headers)); 175 (*headers) = std::string(no_store_headers, arraysize(no_store_headers));
176 (*body) = "no-store"; 176 (*body) = "no-store";
177 } else { 177 } else {
178 (*headers) = std::string(not_found_headers, 178 (*headers) = std::string(not_found_headers,
179 arraysize(not_found_headers)); 179 arraysize(not_found_headers));
180 (*body) = ""; 180 (*body) = "";
181 } 181 }
182 } 182 }
183 }; 183 };
184 184
185 class MockHttpServerJobFactory
186 : public net::URLRequestJobFactory::ProtocolHandler {
187 public:
188 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const {
189 return MockHttpServer::JobFactory(request);
190 }
191 };
192
193 } // namespace 185 } // namespace
194 186
195 class MockFrontend : public AppCacheFrontend { 187 class MockFrontend : public AppCacheFrontend {
196 public: 188 public:
197 MockFrontend() 189 MockFrontend()
198 : ignore_progress_events_(false), verify_progress_events_(false), 190 : ignore_progress_events_(false), verify_progress_events_(false),
199 last_progress_total_(-1), last_progress_complete_(-1), 191 last_progress_total_(-1), last_progress_complete_(-1),
200 start_update_trigger_(CHECKING_EVENT), update_(NULL) { 192 start_update_trigger_(CHECKING_EVENT), update_(NULL) {
201 } 193 }
202 194
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 int last_progress_total_; 304 int last_progress_total_;
313 int last_progress_complete_; 305 int last_progress_complete_;
314 306
315 // Add ability for frontend to add master entries to an inprogress update. 307 // Add ability for frontend to add master entries to an inprogress update.
316 EventID start_update_trigger_; 308 EventID start_update_trigger_;
317 AppCacheUpdateJob* update_; 309 AppCacheUpdateJob* update_;
318 std::vector<AppCacheHost*> update_hosts_; 310 std::vector<AppCacheHost*> update_hosts_;
319 }; 311 };
320 312
321 // Helper factories to simulate redirected URL responses for tests. 313 // Helper factories to simulate redirected URL responses for tests.
322 class RedirectFactory : public net::URLRequestJobFactory::ProtocolHandler { 314 static net::URLRequestJob* RedirectFactory(net::URLRequest* request,
323 public: 315 const std::string& scheme) {
324 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const { 316 return new net::URLRequestTestJob(
325 return new net::URLRequestTestJob( 317 request,
326 request, 318 net::URLRequestTestJob::test_redirect_headers(),
327 net::URLRequestTestJob::test_redirect_headers(), 319 net::URLRequestTestJob::test_data_1(),
328 net::URLRequestTestJob::test_data_1(), 320 true);
329 true); 321 }
330 }
331 };
332 322
333 // Helper class to simulate a URL that returns retry or success. 323 // Helper class to simulate a URL that returns retry or success.
334 class RetryRequestTestJob : public net::URLRequestTestJob { 324 class RetryRequestTestJob : public net::URLRequestTestJob {
335 public: 325 public:
336 enum RetryHeader { 326 enum RetryHeader {
337 NO_RETRY_AFTER, 327 NO_RETRY_AFTER,
338 NONZERO_RETRY_AFTER, 328 NONZERO_RETRY_AFTER,
339 RETRY_AFTER_0, 329 RETRY_AFTER_0,
340 }; 330 };
341 331
342 static const GURL kRetryUrl; 332 static const GURL kRetryUrl;
343 333
344 // Call this at the start of each retry test. 334 // Call this at the start of each retry test.
345 static void Initialize(int num_retry_responses, RetryHeader header, 335 static void Initialize(int num_retry_responses, RetryHeader header,
346 int expected_requests) { 336 int expected_requests) {
347 num_requests_ = 0; 337 num_requests_ = 0;
348 num_retries_ = num_retry_responses; 338 num_retries_ = num_retry_responses;
349 retry_after_ = header; 339 retry_after_ = header;
350 expected_requests_ = expected_requests; 340 expected_requests_ = expected_requests;
351 } 341 }
352 342
353 // Verifies results at end of test and resets counters. 343 // Verifies results at end of test and resets counters.
354 static void Verify() { 344 static void Verify() {
355 EXPECT_EQ(expected_requests_, num_requests_); 345 EXPECT_EQ(expected_requests_, num_requests_);
356 num_requests_ = 0; 346 num_requests_ = 0;
357 expected_requests_ = 0; 347 expected_requests_ = 0;
358 } 348 }
359 349
360 static net::URLRequestJob* RetryFactory(net::URLRequest* request) { 350 static net::URLRequestJob* RetryFactory(net::URLRequest* request,
351 const std::string& scheme) {
361 ++num_requests_; 352 ++num_requests_;
362 if (num_retries_ > 0 && request->original_url() == kRetryUrl) { 353 if (num_retries_ > 0 && request->original_url() == kRetryUrl) {
363 --num_retries_; 354 --num_retries_;
364 return new RetryRequestTestJob( 355 return new RetryRequestTestJob(
365 request, RetryRequestTestJob::retry_headers(), 503); 356 request, RetryRequestTestJob::retry_headers(), 503);
366 } else { 357 } else {
367 return new RetryRequestTestJob( 358 return new RetryRequestTestJob(
368 request, RetryRequestTestJob::manifest_headers(), 200); 359 request, RetryRequestTestJob::manifest_headers(), 200);
369 } 360 }
370 } 361 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 } 410 }
420 411
421 int response_code_; 412 int response_code_;
422 413
423 static int num_requests_; 414 static int num_requests_;
424 static int num_retries_; 415 static int num_retries_;
425 static RetryHeader retry_after_; 416 static RetryHeader retry_after_;
426 static int expected_requests_; 417 static int expected_requests_;
427 }; 418 };
428 419
429 class RetryRequestTestJobFactory
430 : public net::URLRequestJobFactory::ProtocolHandler {
431 public:
432 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const {
433 return RetryRequestTestJob::RetryFactory(request);
434 }
435 };
436
437 // static 420 // static
438 const GURL RetryRequestTestJob::kRetryUrl("http://retry"); 421 const GURL RetryRequestTestJob::kRetryUrl("http://retry");
439 int RetryRequestTestJob::num_requests_ = 0; 422 int RetryRequestTestJob::num_requests_ = 0;
440 int RetryRequestTestJob::num_retries_; 423 int RetryRequestTestJob::num_retries_;
441 RetryRequestTestJob::RetryHeader RetryRequestTestJob::retry_after_; 424 RetryRequestTestJob::RetryHeader RetryRequestTestJob::retry_after_;
442 int RetryRequestTestJob::expected_requests_ = 0; 425 int RetryRequestTestJob::expected_requests_ = 0;
443 426
444 // Helper class to check for certain HTTP headers. 427 // Helper class to check for certain HTTP headers.
445 class HttpHeadersRequestTestJob : public net::URLRequestTestJob { 428 class HttpHeadersRequestTestJob : public net::URLRequestTestJob {
446 public: 429 public:
(...skipping 12 matching lines...) Expand all
459 EXPECT_TRUE(saw_if_none_match_); 442 EXPECT_TRUE(saw_if_none_match_);
460 443
461 // Reset. 444 // Reset.
462 expect_if_modified_since_.clear(); 445 expect_if_modified_since_.clear();
463 saw_if_modified_since_ = false; 446 saw_if_modified_since_ = false;
464 expect_if_none_match_.clear(); 447 expect_if_none_match_.clear();
465 saw_if_none_match_ = false; 448 saw_if_none_match_ = false;
466 already_checked_ = false; 449 already_checked_ = false;
467 } 450 }
468 451
469 static net::URLRequestJob* IfModifiedSinceFactory(net::URLRequest* request) { 452 static net::URLRequestJob* IfModifiedSinceFactory(net::URLRequest* request,
453 const std::string& scheme) {
470 if (!already_checked_) { 454 if (!already_checked_) {
471 already_checked_ = true; // only check once for a test 455 already_checked_ = true; // only check once for a test
472 const net::HttpRequestHeaders& extra_headers = 456 const net::HttpRequestHeaders& extra_headers =
473 request->extra_request_headers(); 457 request->extra_request_headers();
474 std::string header_value; 458 std::string header_value;
475 saw_if_modified_since_ = 459 saw_if_modified_since_ =
476 extra_headers.GetHeader( 460 extra_headers.GetHeader(
477 net::HttpRequestHeaders::kIfModifiedSince, &header_value) && 461 net::HttpRequestHeaders::kIfModifiedSince, &header_value) &&
478 header_value == expect_if_modified_since_; 462 header_value == expect_if_modified_since_;
479 463
480 saw_if_none_match_ = 464 saw_if_none_match_ =
481 extra_headers.GetHeader( 465 extra_headers.GetHeader(
482 net::HttpRequestHeaders::kIfNoneMatch, &header_value) && 466 net::HttpRequestHeaders::kIfNoneMatch, &header_value) &&
483 header_value == expect_if_none_match_; 467 header_value == expect_if_none_match_;
484 } 468 }
485 return MockHttpServer::JobFactory(request); 469 return MockHttpServer::JobFactory(request, scheme);
486 } 470 }
487 471
488 private: 472 private:
489 static std::string expect_if_modified_since_; 473 static std::string expect_if_modified_since_;
490 static bool saw_if_modified_since_; 474 static bool saw_if_modified_since_;
491 static std::string expect_if_none_match_; 475 static std::string expect_if_none_match_;
492 static bool saw_if_none_match_; 476 static bool saw_if_none_match_;
493 static bool already_checked_; 477 static bool already_checked_;
494 }; 478 };
495 479
496 // static 480 // static
497 std::string HttpHeadersRequestTestJob::expect_if_modified_since_; 481 std::string HttpHeadersRequestTestJob::expect_if_modified_since_;
498 bool HttpHeadersRequestTestJob::saw_if_modified_since_ = false; 482 bool HttpHeadersRequestTestJob::saw_if_modified_since_ = false;
499 std::string HttpHeadersRequestTestJob::expect_if_none_match_; 483 std::string HttpHeadersRequestTestJob::expect_if_none_match_;
500 bool HttpHeadersRequestTestJob::saw_if_none_match_ = false; 484 bool HttpHeadersRequestTestJob::saw_if_none_match_ = false;
501 bool HttpHeadersRequestTestJob::already_checked_ = false; 485 bool HttpHeadersRequestTestJob::already_checked_ = false;
502 486
503 class IfModifiedSinceJobFactory
504 : public net::URLRequestJobFactory::ProtocolHandler {
505 public:
506 virtual net::URLRequestJob* MaybeCreateJob(net::URLRequest* request) const {
507 return HttpHeadersRequestTestJob::IfModifiedSinceFactory(request);
508 }
509 };
510
511 namespace { 487 namespace {
512 488
513 class IOThread : public base::Thread { 489 class IOThread : public base::Thread {
514 public: 490 public:
515 explicit IOThread(const char* name) 491 explicit IOThread(const char* name)
516 : base::Thread(name) { 492 : base::Thread(name), old_factory_(NULL), old_factory_https_(NULL) {
517 } 493 }
518 494
519 ~IOThread() { 495 ~IOThread() {
520 // We cannot rely on our base class to stop the thread since we want our 496 // We cannot rely on our base class to stop the thread since we want our
521 // CleanUp function to run. 497 // CleanUp function to run.
522 Stop(); 498 Stop();
523 } 499 }
524 500
525 const scoped_refptr<net::URLRequestContext>& request_context() { 501 const scoped_refptr<net::URLRequestContext>& request_context() {
526 return request_context_; 502 return request_context_;
527 } 503 }
528 504
529 void SetNewJobFactory(net::URLRequestJobFactory* job_factory) {
530 DCHECK(job_factory);
531 job_factory_.reset(job_factory);
532 request_context_->set_job_factory(job_factory_.get());
533 }
534
535 virtual void Init() { 505 virtual void Init() {
536 job_factory_.reset(new net::URLRequestJobFactory); 506 old_factory_ = net::URLRequest::RegisterProtocolFactory(
537 job_factory_->SetProtocolHandler("http", new MockHttpServerJobFactory); 507 "http", MockHttpServer::JobFactory);
538 job_factory_->SetProtocolHandler("https", new MockHttpServerJobFactory); 508 old_factory_https_ = net::URLRequest::RegisterProtocolFactory(
509 "https", MockHttpServer::JobFactory);
539 request_context_ = new TestURLRequestContext(); 510 request_context_ = new TestURLRequestContext();
540 request_context_->set_job_factory(job_factory_.get());
541 } 511 }
542 512
543 virtual void CleanUp() { 513 virtual void CleanUp() {
514 net::URLRequest::RegisterProtocolFactory("http", old_factory_);
515 net::URLRequest::RegisterProtocolFactory("https", old_factory_https_);
544 request_context_ = NULL; 516 request_context_ = NULL;
545 job_factory_.reset();
546 } 517 }
547 518
548 private: 519 net::URLRequest::ProtocolFactory* old_factory_;
549 scoped_ptr<net::URLRequestJobFactory> job_factory_; 520 net::URLRequest::ProtocolFactory* old_factory_https_;
550 scoped_refptr<net::URLRequestContext> request_context_; 521 scoped_refptr<net::URLRequestContext> request_context_;
551 }; 522 };
552 523
553 } // namespace 524 } // namespace
554 525
555 class AppCacheUpdateJobTest : public testing::Test, 526 class AppCacheUpdateJobTest : public testing::Test,
556 public AppCacheGroup::UpdateObserver { 527 public AppCacheGroup::UpdateObserver {
557 public: 528 public:
558 class MockAppCachePolicy : public AppCachePolicy { 529 class MockAppCachePolicy : public AppCachePolicy {
559 public: 530 public:
(...skipping 30 matching lines...) Expand all
590 561
591 562
592 AppCacheUpdateJobTest() 563 AppCacheUpdateJobTest()
593 : do_checks_after_update_finished_(false), 564 : do_checks_after_update_finished_(false),
594 expect_group_obsolete_(false), 565 expect_group_obsolete_(false),
595 expect_group_has_cache_(false), 566 expect_group_has_cache_(false),
596 expect_old_cache_(NULL), 567 expect_old_cache_(NULL),
597 expect_newest_cache_(NULL), 568 expect_newest_cache_(NULL),
598 expect_non_null_update_time_(false), 569 expect_non_null_update_time_(false),
599 tested_manifest_(NONE), 570 tested_manifest_(NONE),
600 tested_manifest_path_override_(NULL) { 571 tested_manifest_path_override_(NULL),
601 io_thread_.reset(new IOThread("AppCacheUpdateJob IO test thread")); 572 registered_factory_(false),
573 old_factory_(NULL) {
574 }
575
576 static void SetUpTestCase() {
577 io_thread_ = new IOThread("AppCacheUpdateJob IO test thread");
602 base::Thread::Options options(MessageLoop::TYPE_IO, 0); 578 base::Thread::Options options(MessageLoop::TYPE_IO, 0);
603 io_thread_->StartWithOptions(options); 579 io_thread_->StartWithOptions(options);
604 } 580 }
605 581
582 static base::WaitableEvent* io_thread_shutdown_event_;
583
584 // Cleanup function; must be called on the IO Thread.
585 static void CleanupIOThread() {
586 io_thread_shutdown_event_->Signal();
587 }
588
589 static void TearDownTestCase() {
590 io_thread_shutdown_event_ = new base::WaitableEvent(false, false);
591 io_thread_->message_loop()->PostTask(FROM_HERE,
592 NewRunnableFunction(CleanupIOThread));
593 io_thread_shutdown_event_->Wait();
594 delete io_thread_shutdown_event_;
595 delete io_thread_;
596 io_thread_ = NULL;
597 }
598
606 // Use a separate IO thread to run a test. Thread will be destroyed 599 // Use a separate IO thread to run a test. Thread will be destroyed
607 // when it goes out of scope. 600 // when it goes out of scope.
608 template <class Method> 601 template <class Method>
609 void RunTestOnIOThread(Method method) { 602 void RunTestOnIOThread(Method method) {
610 event_.reset(new base::WaitableEvent(false, false)); 603 event_.reset(new base::WaitableEvent(false, false));
611 io_thread_->message_loop()->PostTask( 604 io_thread_->message_loop()->PostTask(
612 FROM_HERE, NewRunnableMethod(this, method)); 605 FROM_HERE, NewRunnableMethod(this, method));
613 606
614 // Wait until task is done before exiting the test. 607 // Wait until task is done before exiting the test.
615 event_->Wait(); 608 event_->Wait();
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 MockFrontend::HostIds ids2(1, host2->host_id()); 812 MockFrontend::HostIds ids2(1, host2->host_id());
820 frontend2->AddExpectedEvent(ids2, CHECKING_EVENT); 813 frontend2->AddExpectedEvent(ids2, CHECKING_EVENT);
821 frontend2->AddExpectedEvent(ids2, ERROR_EVENT); 814 frontend2->AddExpectedEvent(ids2, ERROR_EVENT);
822 815
823 WaitForUpdateToFinish(); 816 WaitForUpdateToFinish();
824 } 817 }
825 818
826 void ManifestRedirectTest() { 819 void ManifestRedirectTest() {
827 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 820 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
828 821
829 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 822 old_factory_ =
830 new_factory->SetProtocolHandler("http", new RedirectFactory); 823 net::URLRequest::RegisterProtocolFactory("http", RedirectFactory);
831 io_thread_->SetNewJobFactory(new_factory); 824 registered_factory_ = true;
832 825
833 MakeService(); 826 MakeService();
834 group_ = new AppCacheGroup(service_.get(), GURL("http://testme"), 827 group_ = new AppCacheGroup(service_.get(), GURL("http://testme"),
835 service_->storage()->NewGroupId()); 828 service_->storage()->NewGroupId());
836 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 829 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
837 group_->update_job_ = update; 830 group_->update_job_ = update;
838 831
839 MockFrontend* frontend = MakeMockFrontend(); 832 MockFrontend* frontend = MakeMockFrontend();
840 AppCacheHost* host = MakeHost(1, frontend); 833 AppCacheHost* host = MakeHost(1, frontend);
841 update->StartUpdate(host, GURL()); 834 update->StartUpdate(host, GURL());
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 1604
1612 WaitForUpdateToFinish(); 1605 WaitForUpdateToFinish();
1613 } 1606 }
1614 1607
1615 void RetryRequestTest() { 1608 void RetryRequestTest() {
1616 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 1609 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
1617 1610
1618 // Set some large number of times to return retry. 1611 // Set some large number of times to return retry.
1619 // Expect 1 manifest fetch and 3 retries. 1612 // Expect 1 manifest fetch and 3 retries.
1620 RetryRequestTestJob::Initialize(5, RetryRequestTestJob::RETRY_AFTER_0, 4); 1613 RetryRequestTestJob::Initialize(5, RetryRequestTestJob::RETRY_AFTER_0, 4);
1621 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 1614 old_factory_ = net::URLRequest::RegisterProtocolFactory(
1622 new_factory->SetProtocolHandler("http", new RetryRequestTestJobFactory); 1615 "http", RetryRequestTestJob::RetryFactory);
1623 io_thread_->SetNewJobFactory(new_factory); 1616 registered_factory_ = true;
1624 1617
1625 MakeService(); 1618 MakeService();
1626 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl, 1619 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl,
1627 service_->storage()->NewGroupId()); 1620 service_->storage()->NewGroupId());
1628 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 1621 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
1629 group_->update_job_ = update; 1622 group_->update_job_ = update;
1630 1623
1631 MockFrontend* frontend = MakeMockFrontend(); 1624 MockFrontend* frontend = MakeMockFrontend();
1632 AppCacheHost* host = MakeHost(1, frontend); 1625 AppCacheHost* host = MakeHost(1, frontend);
1633 update->StartUpdate(host, GURL()); 1626 update->StartUpdate(host, GURL());
1634 EXPECT_TRUE(update->manifest_fetcher_ != NULL); 1627 EXPECT_TRUE(update->manifest_fetcher_ != NULL);
1635 1628
1636 // Set up checks for when update job finishes. 1629 // Set up checks for when update job finishes.
1637 do_checks_after_update_finished_ = true; 1630 do_checks_after_update_finished_ = true;
1638 expect_group_obsolete_ = false; 1631 expect_group_obsolete_ = false;
1639 expect_group_has_cache_ = false; 1632 expect_group_has_cache_ = false;
1640 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()), 1633 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()),
1641 CHECKING_EVENT); 1634 CHECKING_EVENT);
1642 1635
1643 WaitForUpdateToFinish(); 1636 WaitForUpdateToFinish();
1644 } 1637 }
1645 1638
1646 void RetryNoRetryAfterTest() { 1639 void RetryNoRetryAfterTest() {
1647 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 1640 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
1648 1641
1649 // Set some large number of times to return retry. 1642 // Set some large number of times to return retry.
1650 // Expect 1 manifest fetch and 0 retries. 1643 // Expect 1 manifest fetch and 0 retries.
1651 RetryRequestTestJob::Initialize(5, RetryRequestTestJob::NO_RETRY_AFTER, 1); 1644 RetryRequestTestJob::Initialize(5, RetryRequestTestJob::NO_RETRY_AFTER, 1);
1652 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 1645 old_factory_ = net::URLRequest::RegisterProtocolFactory(
1653 new_factory->SetProtocolHandler("http", new RetryRequestTestJobFactory); 1646 "http", RetryRequestTestJob::RetryFactory);
1654 io_thread_->SetNewJobFactory(new_factory); 1647 registered_factory_ = true;
1655 1648
1656 MakeService(); 1649 MakeService();
1657 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl, 1650 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl,
1658 service_->storage()->NewGroupId()); 1651 service_->storage()->NewGroupId());
1659 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 1652 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
1660 group_->update_job_ = update; 1653 group_->update_job_ = update;
1661 1654
1662 MockFrontend* frontend = MakeMockFrontend(); 1655 MockFrontend* frontend = MakeMockFrontend();
1663 AppCacheHost* host = MakeHost(1, frontend); 1656 AppCacheHost* host = MakeHost(1, frontend);
1664 update->StartUpdate(host, GURL()); 1657 update->StartUpdate(host, GURL());
1665 EXPECT_TRUE(update->manifest_fetcher_ != NULL); 1658 EXPECT_TRUE(update->manifest_fetcher_ != NULL);
1666 1659
1667 // Set up checks for when update job finishes. 1660 // Set up checks for when update job finishes.
1668 do_checks_after_update_finished_ = true; 1661 do_checks_after_update_finished_ = true;
1669 expect_group_obsolete_ = false; 1662 expect_group_obsolete_ = false;
1670 expect_group_has_cache_ = false; 1663 expect_group_has_cache_ = false;
1671 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()), 1664 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()),
1672 CHECKING_EVENT); 1665 CHECKING_EVENT);
1673 1666
1674 WaitForUpdateToFinish(); 1667 WaitForUpdateToFinish();
1675 } 1668 }
1676 1669
1677 void RetryNonzeroRetryAfterTest() { 1670 void RetryNonzeroRetryAfterTest() {
1678 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 1671 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
1679 1672
1680 // Set some large number of times to return retry. 1673 // Set some large number of times to return retry.
1681 // Expect 1 request and 0 retry attempts. 1674 // Expect 1 request and 0 retry attempts.
1682 RetryRequestTestJob::Initialize( 1675 RetryRequestTestJob::Initialize(
1683 5, RetryRequestTestJob::NONZERO_RETRY_AFTER, 1); 1676 5, RetryRequestTestJob::NONZERO_RETRY_AFTER, 1);
1684 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 1677 old_factory_ = net::URLRequest::RegisterProtocolFactory(
1685 new_factory->SetProtocolHandler("http", new RetryRequestTestJobFactory); 1678 "http", RetryRequestTestJob::RetryFactory);
1686 io_thread_->SetNewJobFactory(new_factory); 1679 registered_factory_ = true;
1687 1680
1688 MakeService(); 1681 MakeService();
1689 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl, 1682 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl,
1690 service_->storage()->NewGroupId()); 1683 service_->storage()->NewGroupId());
1691 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 1684 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
1692 group_->update_job_ = update; 1685 group_->update_job_ = update;
1693 1686
1694 MockFrontend* frontend = MakeMockFrontend(); 1687 MockFrontend* frontend = MakeMockFrontend();
1695 AppCacheHost* host = MakeHost(1, frontend); 1688 AppCacheHost* host = MakeHost(1, frontend);
1696 update->StartUpdate(host, GURL()); 1689 update->StartUpdate(host, GURL());
1697 EXPECT_TRUE(update->manifest_fetcher_ != NULL); 1690 EXPECT_TRUE(update->manifest_fetcher_ != NULL);
1698 1691
1699 // Set up checks for when update job finishes. 1692 // Set up checks for when update job finishes.
1700 do_checks_after_update_finished_ = true; 1693 do_checks_after_update_finished_ = true;
1701 expect_group_obsolete_ = false; 1694 expect_group_obsolete_ = false;
1702 expect_group_has_cache_ = false; 1695 expect_group_has_cache_ = false;
1703 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()), 1696 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()),
1704 CHECKING_EVENT); 1697 CHECKING_EVENT);
1705 1698
1706 WaitForUpdateToFinish(); 1699 WaitForUpdateToFinish();
1707 } 1700 }
1708 1701
1709 void RetrySuccessTest() { 1702 void RetrySuccessTest() {
1710 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 1703 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
1711 1704
1712 // Set 2 as the retry limit (does not exceed the max). 1705 // Set 2 as the retry limit (does not exceed the max).
1713 // Expect 1 manifest fetch, 2 retries, 1 url fetch, 1 manifest refetch. 1706 // Expect 1 manifest fetch, 2 retries, 1 url fetch, 1 manifest refetch.
1714 RetryRequestTestJob::Initialize(2, RetryRequestTestJob::RETRY_AFTER_0, 5); 1707 RetryRequestTestJob::Initialize(2, RetryRequestTestJob::RETRY_AFTER_0, 5);
1715 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 1708 old_factory_ = net::URLRequest::RegisterProtocolFactory(
1716 new_factory->SetProtocolHandler("http", new RetryRequestTestJobFactory); 1709 "http", RetryRequestTestJob::RetryFactory);
1717 io_thread_->SetNewJobFactory(new_factory); 1710 registered_factory_ = true;
1718 1711
1719 MakeService(); 1712 MakeService();
1720 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl, 1713 group_ = new AppCacheGroup(service_.get(), RetryRequestTestJob::kRetryUrl,
1721 service_->storage()->NewGroupId()); 1714 service_->storage()->NewGroupId());
1722 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 1715 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
1723 group_->update_job_ = update; 1716 group_->update_job_ = update;
1724 1717
1725 MockFrontend* frontend = MakeMockFrontend(); 1718 MockFrontend* frontend = MakeMockFrontend();
1726 AppCacheHost* host = MakeHost(1, frontend); 1719 AppCacheHost* host = MakeHost(1, frontend);
1727 update->StartUpdate(host, GURL()); 1720 update->StartUpdate(host, GURL());
1728 EXPECT_TRUE(update->manifest_fetcher_ != NULL); 1721 EXPECT_TRUE(update->manifest_fetcher_ != NULL);
1729 1722
1730 // Set up checks for when update job finishes. 1723 // Set up checks for when update job finishes.
1731 do_checks_after_update_finished_ = true; 1724 do_checks_after_update_finished_ = true;
1732 expect_group_obsolete_ = false; 1725 expect_group_obsolete_ = false;
1733 expect_group_has_cache_ = true; 1726 expect_group_has_cache_ = true;
1734 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()), 1727 frontend->AddExpectedEvent(MockFrontend::HostIds(1, host->host_id()),
1735 CHECKING_EVENT); 1728 CHECKING_EVENT);
1736 1729
1737 WaitForUpdateToFinish(); 1730 WaitForUpdateToFinish();
1738 } 1731 }
1739 1732
1740 void RetryUrlTest() { 1733 void RetryUrlTest() {
1741 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 1734 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
1742 1735
1743 // Set 1 as the retry limit (does not exceed the max). 1736 // Set 1 as the retry limit (does not exceed the max).
1744 // Expect 1 manifest fetch, 1 url fetch, 1 url retry, 1 manifest refetch. 1737 // Expect 1 manifest fetch, 1 url fetch, 1 url retry, 1 manifest refetch.
1745 RetryRequestTestJob::Initialize(1, RetryRequestTestJob::RETRY_AFTER_0, 4); 1738 RetryRequestTestJob::Initialize(1, RetryRequestTestJob::RETRY_AFTER_0, 4);
1746 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 1739 old_factory_ = net::URLRequest::RegisterProtocolFactory(
1747 new_factory->SetProtocolHandler("http", new RetryRequestTestJobFactory); 1740 "http", RetryRequestTestJob::RetryFactory);
1748 io_thread_->SetNewJobFactory(new_factory); 1741 registered_factory_ = true;
1749 1742
1750 MakeService(); 1743 MakeService();
1751 group_ = new AppCacheGroup(service_.get(), GURL("http://retryurl"), 1744 group_ = new AppCacheGroup(service_.get(), GURL("http://retryurl"),
1752 service_->storage()->NewGroupId()); 1745 service_->storage()->NewGroupId());
1753 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 1746 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
1754 group_->update_job_ = update; 1747 group_->update_job_ = update;
1755 1748
1756 MockFrontend* frontend = MakeMockFrontend(); 1749 MockFrontend* frontend = MakeMockFrontend();
1757 AppCacheHost* host = MakeHost(1, frontend); 1750 AppCacheHost* host = MakeHost(1, frontend);
1758 update->StartUpdate(host, GURL()); 1751 update->StartUpdate(host, GURL());
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
2577 frontend->AddExpectedEvent(ids1, PROGRESS_EVENT); // final 2570 frontend->AddExpectedEvent(ids1, PROGRESS_EVENT); // final
2578 frontend->AddExpectedEvent(ids1, CACHED_EVENT); 2571 frontend->AddExpectedEvent(ids1, CACHED_EVENT);
2579 2572
2580 // Group status will be IDLE so cannot call WaitForUpdateToFinish. 2573 // Group status will be IDLE so cannot call WaitForUpdateToFinish.
2581 group_->AddUpdateObserver(this); 2574 group_->AddUpdateObserver(this);
2582 } 2575 }
2583 2576
2584 void IfModifiedSinceTest() { 2577 void IfModifiedSinceTest() {
2585 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 2578 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
2586 2579
2587 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 2580 old_factory_ = net::URLRequest::RegisterProtocolFactory(
2588 new_factory->SetProtocolHandler("http", new IfModifiedSinceJobFactory); 2581 "http", HttpHeadersRequestTestJob::IfModifiedSinceFactory);
2589 io_thread_->SetNewJobFactory(new_factory); 2582 registered_factory_ = true;
2590 2583
2591 MakeService(); 2584 MakeService();
2592 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111); 2585 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111);
2593 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 2586 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
2594 group_->update_job_ = update; 2587 group_->update_job_ = update;
2595 2588
2596 // First test against a cache attempt. Will start manifest fetch 2589 // First test against a cache attempt. Will start manifest fetch
2597 // synchronously. 2590 // synchronously.
2598 HttpHeadersRequestTestJob::Initialize("", ""); 2591 HttpHeadersRequestTestJob::Initialize("", "");
2599 MockFrontend mock_frontend; 2592 MockFrontend mock_frontend;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2643 HttpHeadersRequestTestJob::Verify(); 2636 HttpHeadersRequestTestJob::Verify();
2644 delete update; 2637 delete update;
2645 2638
2646 UpdateFinished(); 2639 UpdateFinished();
2647 } 2640 }
2648 2641
2649 void IfModifiedSinceUpgradeTest() { 2642 void IfModifiedSinceUpgradeTest() {
2650 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 2643 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
2651 2644
2652 HttpHeadersRequestTestJob::Initialize("Sat, 29 Oct 1994 19:43:31 GMT", ""); 2645 HttpHeadersRequestTestJob::Initialize("Sat, 29 Oct 1994 19:43:31 GMT", "");
2653 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 2646 old_factory_ = net::URLRequest::RegisterProtocolFactory(
2654 new_factory->SetProtocolHandler("http", new IfModifiedSinceJobFactory); 2647 "http", HttpHeadersRequestTestJob::IfModifiedSinceFactory);
2655 io_thread_->SetNewJobFactory(new_factory); 2648 registered_factory_ = true;
2656 2649
2657 MakeService(); 2650 MakeService();
2658 group_ = new AppCacheGroup( 2651 group_ = new AppCacheGroup(
2659 service_.get(), MockHttpServer::GetMockUrl("files/manifest1"), 111); 2652 service_.get(), MockHttpServer::GetMockUrl("files/manifest1"), 111);
2660 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 2653 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
2661 group_->update_job_ = update; 2654 group_->update_job_ = update;
2662 2655
2663 // Give the newest cache a manifest enry that is in storage. 2656 // Give the newest cache a manifest enry that is in storage.
2664 response_writer_.reset( 2657 response_writer_.reset(
2665 service_->storage()->CreateResponseWriter(group_->manifest_url())); 2658 service_->storage()->CreateResponseWriter(group_->manifest_url()));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2701 &AppCacheUpdateJobTest::StartUpdateAfterSeedingStorageData)); 2694 &AppCacheUpdateJobTest::StartUpdateAfterSeedingStorageData));
2702 response_writer_->WriteInfo(io_buffer, write_callback_.get()); 2695 response_writer_->WriteInfo(io_buffer, write_callback_.get());
2703 2696
2704 // Start update after data write completes asynchronously. 2697 // Start update after data write completes asynchronously.
2705 } 2698 }
2706 2699
2707 void IfNoneMatchUpgradeTest() { 2700 void IfNoneMatchUpgradeTest() {
2708 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 2701 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
2709 2702
2710 HttpHeadersRequestTestJob::Initialize("", "\"LadeDade\""); 2703 HttpHeadersRequestTestJob::Initialize("", "\"LadeDade\"");
2711 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 2704 old_factory_ = net::URLRequest::RegisterProtocolFactory(
2712 new_factory->SetProtocolHandler("http", new IfModifiedSinceJobFactory); 2705 "http", HttpHeadersRequestTestJob::IfModifiedSinceFactory);
2713 io_thread_->SetNewJobFactory(new_factory); 2706 registered_factory_ = true;
2714 2707
2715 MakeService(); 2708 MakeService();
2716 group_ = new AppCacheGroup( 2709 group_ = new AppCacheGroup(
2717 service_.get(), MockHttpServer::GetMockUrl("files/manifest1"), 111); 2710 service_.get(), MockHttpServer::GetMockUrl("files/manifest1"), 111);
2718 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 2711 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
2719 group_->update_job_ = update; 2712 group_->update_job_ = update;
2720 2713
2721 // Give the newest cache a manifest enry that is in storage. 2714 // Give the newest cache a manifest enry that is in storage.
2722 response_writer_.reset( 2715 response_writer_.reset(
2723 service_->storage()->CreateResponseWriter(group_->manifest_url())); 2716 service_->storage()->CreateResponseWriter(group_->manifest_url()));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2759 &AppCacheUpdateJobTest::StartUpdateAfterSeedingStorageData)); 2752 &AppCacheUpdateJobTest::StartUpdateAfterSeedingStorageData));
2760 response_writer_->WriteInfo(io_buffer, write_callback_.get()); 2753 response_writer_->WriteInfo(io_buffer, write_callback_.get());
2761 2754
2762 // Start update after data write completes asynchronously. 2755 // Start update after data write completes asynchronously.
2763 } 2756 }
2764 2757
2765 void IfNoneMatchRefetchTest() { 2758 void IfNoneMatchRefetchTest() {
2766 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 2759 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
2767 2760
2768 HttpHeadersRequestTestJob::Initialize("", "\"LadeDade\""); 2761 HttpHeadersRequestTestJob::Initialize("", "\"LadeDade\"");
2769 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 2762 old_factory_ = net::URLRequest::RegisterProtocolFactory(
2770 new_factory->SetProtocolHandler("http", new IfModifiedSinceJobFactory); 2763 "http", HttpHeadersRequestTestJob::IfModifiedSinceFactory);
2771 io_thread_->SetNewJobFactory(new_factory); 2764 registered_factory_ = true;
2772 2765
2773 MakeService(); 2766 MakeService();
2774 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111); 2767 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111);
2775 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 2768 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
2776 group_->update_job_ = update; 2769 group_->update_job_ = update;
2777 2770
2778 // Simulate a refetch manifest request that uses an ETag header. 2771 // Simulate a refetch manifest request that uses an ETag header.
2779 const char data[] = 2772 const char data[] =
2780 "HTTP/1.1 200 OK\0" 2773 "HTTP/1.1 200 OK\0"
2781 "ETag: \"LadeDade\"\0" 2774 "ETag: \"LadeDade\"\0"
(...skipping 12 matching lines...) Expand all
2794 2787
2795 UpdateFinished(); 2788 UpdateFinished();
2796 } 2789 }
2797 2790
2798 void MultipleHeadersRefetchTest() { 2791 void MultipleHeadersRefetchTest() {
2799 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); 2792 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type());
2800 2793
2801 // Verify that code is correct when building multiple extra headers. 2794 // Verify that code is correct when building multiple extra headers.
2802 HttpHeadersRequestTestJob::Initialize( 2795 HttpHeadersRequestTestJob::Initialize(
2803 "Sat, 29 Oct 1994 19:43:31 GMT", "\"LadeDade\""); 2796 "Sat, 29 Oct 1994 19:43:31 GMT", "\"LadeDade\"");
2804 net::URLRequestJobFactory* new_factory(new net::URLRequestJobFactory); 2797 old_factory_ = net::URLRequest::RegisterProtocolFactory(
2805 new_factory->SetProtocolHandler("http", new IfModifiedSinceJobFactory); 2798 "http", HttpHeadersRequestTestJob::IfModifiedSinceFactory);
2806 io_thread_->SetNewJobFactory(new_factory); 2799 registered_factory_ = true;
2807 2800
2808 MakeService(); 2801 MakeService();
2809 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111); 2802 group_ = new AppCacheGroup(service_.get(), GURL("http://headertest"), 111);
2810 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_); 2803 AppCacheUpdateJob* update = new AppCacheUpdateJob(service_.get(), group_);
2811 group_->update_job_ = update; 2804 group_->update_job_ = update;
2812 2805
2813 // Simulate a refetch manifest request that uses an ETag header. 2806 // Simulate a refetch manifest request that uses an ETag header.
2814 const char data[] = 2807 const char data[] =
2815 "HTTP/1.1 200 OK\0" 2808 "HTTP/1.1 200 OK\0"
2816 "Last-Modified: Sat, 29 Oct 1994 19:43:31 GMT\0" 2809 "Last-Modified: Sat, 29 Oct 1994 19:43:31 GMT\0"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2918 if (do_checks_after_update_finished_) 2911 if (do_checks_after_update_finished_)
2919 VerifyExpectations(); 2912 VerifyExpectations();
2920 2913
2921 // Clean up everything that was created on the IO thread. 2914 // Clean up everything that was created on the IO thread.
2922 protect_newest_cache_ = NULL; 2915 protect_newest_cache_ = NULL;
2923 group_ = NULL; 2916 group_ = NULL;
2924 STLDeleteContainerPointers(hosts_.begin(), hosts_.end()); 2917 STLDeleteContainerPointers(hosts_.begin(), hosts_.end());
2925 STLDeleteContainerPointers(frontends_.begin(), frontends_.end()); 2918 STLDeleteContainerPointers(frontends_.begin(), frontends_.end());
2926 response_infos_.clear(); 2919 response_infos_.clear();
2927 service_.reset(NULL); 2920 service_.reset(NULL);
2921 if (registered_factory_)
2922 net::URLRequest::RegisterProtocolFactory("http", old_factory_);
2928 2923
2929 event_->Signal(); 2924 event_->Signal();
2930 } 2925 }
2931 2926
2932 void MakeService() { 2927 void MakeService() {
2933 service_.reset(new MockAppCacheService()); 2928 service_.reset(new MockAppCacheService());
2934 service_->set_request_context(io_thread_->request_context()); 2929 service_->set_request_context(io_thread_->request_context());
2935 service_->set_appcache_policy(&policy_); 2930 service_->set_appcache_policy(&policy_);
2936 } 2931 }
2937 2932
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
3232 // Various manifest files used in this test. 3227 // Various manifest files used in this test.
3233 enum TestedManifest { 3228 enum TestedManifest {
3234 NONE, 3229 NONE,
3235 MANIFEST1, 3230 MANIFEST1,
3236 MANIFEST_MERGED_TYPES, 3231 MANIFEST_MERGED_TYPES,
3237 EMPTY_MANIFEST, 3232 EMPTY_MANIFEST,
3238 EMPTY_FILE_MANIFEST, 3233 EMPTY_FILE_MANIFEST,
3239 PENDING_MASTER_NO_UPDATE, 3234 PENDING_MASTER_NO_UPDATE,
3240 }; 3235 };
3241 3236
3242 scoped_ptr<IOThread> io_thread_; 3237 static IOThread* io_thread_;
3243 3238
3244 scoped_ptr<MockAppCacheService> service_; 3239 scoped_ptr<MockAppCacheService> service_;
3245 scoped_refptr<AppCacheGroup> group_; 3240 scoped_refptr<AppCacheGroup> group_;
3246 scoped_refptr<AppCache> protect_newest_cache_; 3241 scoped_refptr<AppCache> protect_newest_cache_;
3247 scoped_ptr<base::WaitableEvent> event_; 3242 scoped_ptr<base::WaitableEvent> event_;
3248 MockAppCachePolicy policy_; 3243 MockAppCachePolicy policy_;
3249 3244
3250 scoped_ptr<AppCacheResponseWriter> response_writer_; 3245 scoped_ptr<AppCacheResponseWriter> response_writer_;
3251 scoped_ptr<net::CompletionCallbackImpl<AppCacheUpdateJobTest> > 3246 scoped_ptr<net::CompletionCallbackImpl<AppCacheUpdateJobTest> >
3252 write_callback_; 3247 write_callback_;
(...skipping 11 matching lines...) Expand all
3264 bool expect_group_obsolete_; 3259 bool expect_group_obsolete_;
3265 bool expect_group_has_cache_; 3260 bool expect_group_has_cache_;
3266 AppCache* expect_old_cache_; 3261 AppCache* expect_old_cache_;
3267 AppCache* expect_newest_cache_; 3262 AppCache* expect_newest_cache_;
3268 bool expect_non_null_update_time_; 3263 bool expect_non_null_update_time_;
3269 std::vector<MockFrontend*> frontends_; // to check expected events 3264 std::vector<MockFrontend*> frontends_; // to check expected events
3270 TestedManifest tested_manifest_; 3265 TestedManifest tested_manifest_;
3271 const char* tested_manifest_path_override_; 3266 const char* tested_manifest_path_override_;
3272 AppCache::EntryMap expect_extra_entries_; 3267 AppCache::EntryMap expect_extra_entries_;
3273 std::map<GURL, int64> expect_response_ids_; 3268 std::map<GURL, int64> expect_response_ids_;
3269
3270 bool registered_factory_;
3271 net::URLRequest::ProtocolFactory* old_factory_;
3274 }; 3272 };
3275 3273
3274 // static
3275 IOThread* AppCacheUpdateJobTest::io_thread_ = NULL;
3276 base::WaitableEvent* AppCacheUpdateJobTest::io_thread_shutdown_event_ = NULL;
3277
3278
3276 TEST_F(AppCacheUpdateJobTest, AlreadyChecking) { 3279 TEST_F(AppCacheUpdateJobTest, AlreadyChecking) {
3277 MockAppCacheService service; 3280 MockAppCacheService service;
3278 scoped_refptr<AppCacheGroup> group( 3281 scoped_refptr<AppCacheGroup> group(
3279 new AppCacheGroup(&service, GURL("http://manifesturl.com"), 3282 new AppCacheGroup(&service, GURL("http://manifesturl.com"),
3280 service.storage()->NewGroupId())); 3283 service.storage()->NewGroupId()));
3281 3284
3282 AppCacheUpdateJob update(&service, group); 3285 AppCacheUpdateJob update(&service, group);
3283 3286
3284 // Pretend group is in checking state. 3287 // Pretend group is in checking state.
3285 group->update_job_ = &update; 3288 group->update_job_ = &update;
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
3549 RunTestOnIOThread(&AppCacheUpdateJobTest::CrossOriginHttpsDeniedTest); 3552 RunTestOnIOThread(&AppCacheUpdateJobTest::CrossOriginHttpsDeniedTest);
3550 } 3553 }
3551 3554
3552 } // namespace appcache 3555 } // namespace appcache
3553 3556
3554 // AppCacheUpdateJobTest is expected to always live longer than the 3557 // AppCacheUpdateJobTest is expected to always live longer than the
3555 // runnable methods. This lets us call NewRunnableMethod on its instances. 3558 // runnable methods. This lets us call NewRunnableMethod on its instances.
3556 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheUpdateJobTest); 3559 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheUpdateJobTest);
3557 DISABLE_RUNNABLE_METHOD_REFCOUNT( 3560 DISABLE_RUNNABLE_METHOD_REFCOUNT(
3558 appcache::AppCacheUpdateJobTest::MockAppCachePolicy); 3561 appcache::AppCacheUpdateJobTest::MockAppCachePolicy);
OLDNEW
« no previous file with comments | « net/url_request/url_request_job_factory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698