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

Side by Side Diff: content/browser/service_worker/service_worker_browsertest.cc

Issue 1056913010: Revert of Evict Service Worker when reading it from disk cache fails. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_read_from_cache_job.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "content/browser/fileapi/chrome_blob_storage_context.h" 10 #include "content/browser/fileapi/chrome_blob_storage_context.h"
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 565
566 AssociateRendererProcessToPattern(pattern); 566 AssociateRendererProcessToPattern(pattern);
567 } 567 }
568 568
569 void TimeoutWorkerOnIOThread() { 569 void TimeoutWorkerOnIOThread() {
570 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); 570 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
571 version_->PingWorker(); 571 version_->PingWorker();
572 version_->OnPingTimeout(); 572 version_->OnPingTimeout();
573 } 573 }
574 574
575 void AddControlleeOnIOThread() {
576 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
577 scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
578 33 /* dummy render process id */,
579 MSG_ROUTING_NONE /* render_frame_id */, 1 /* dummy provider_id */,
580 SERVICE_WORKER_PROVIDER_FOR_WINDOW, wrapper()->context()->AsWeakPtr(),
581 NULL));
582 host->SetDocumentUrl(
583 embedded_test_server()->GetURL("/service_worker/host"));
584 host->AssociateRegistration(registration_.get(),
585 false /* notify_controllerchange */);
586 wrapper()->context()->AddProviderHost(host.Pass());
587 }
588
589 void AddWaitingWorkerOnIOThread(const std::string& worker_url) {
590 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
591 scoped_refptr<ServiceWorkerVersion> waiting_version(
592 new ServiceWorkerVersion(
593 registration_.get(), embedded_test_server()->GetURL(worker_url),
594 wrapper()->context()->storage()->NewVersionId(),
595 wrapper()->context()->AsWeakPtr()));
596 waiting_version->SetStatus(ServiceWorkerVersion::INSTALLED);
597 registration_->SetWaitingVersion(waiting_version.get());
598 registration_->ActivateWaitingVersionWhenReady();
599 }
600
601 void StartWorker(ServiceWorkerStatusCode expected_status) { 575 void StartWorker(ServiceWorkerStatusCode expected_status) {
602 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); 576 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
603 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 577 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
604 base::RunLoop start_run_loop; 578 base::RunLoop start_run_loop;
605 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 579 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
606 base::Bind(&self::StartOnIOThread, this, 580 base::Bind(&self::StartOnIOThread, this,
607 start_run_loop.QuitClosure(), 581 start_run_loop.QuitClosure(),
608 &status)); 582 &status));
609 start_run_loop.Run(); 583 start_run_loop.Run();
610 ASSERT_EQ(expected_status, status); 584 ASSERT_EQ(expected_status, status);
(...skipping 22 matching lines...) Expand all
633 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); 607 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
634 version_->SetStatus(ServiceWorkerVersion::INSTALLING); 608 version_->SetStatus(ServiceWorkerVersion::INSTALLING);
635 version_->DispatchInstallEvent( 609 version_->DispatchInstallEvent(
636 CreateReceiver(BrowserThread::UI, done, result)); 610 CreateReceiver(BrowserThread::UI, done, result));
637 } 611 }
638 612
639 void ActivateOnIOThread(const base::Closure& done, 613 void ActivateOnIOThread(const base::Closure& done,
640 ServiceWorkerStatusCode* result) { 614 ServiceWorkerStatusCode* result) {
641 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); 615 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
642 version_->SetStatus(ServiceWorkerVersion::ACTIVATING); 616 version_->SetStatus(ServiceWorkerVersion::ACTIVATING);
643 registration_->SetActiveVersion(version_.get());
644 version_->DispatchActivateEvent( 617 version_->DispatchActivateEvent(
645 CreateReceiver(BrowserThread::UI, done, result)); 618 CreateReceiver(BrowserThread::UI, done, result));
646 } 619 }
647 620
648 void FetchOnIOThread(const base::Closure& done, 621 void FetchOnIOThread(const base::Closure& done,
649 bool* prepare_result, 622 bool* prepare_result,
650 FetchResult* result) { 623 FetchResult* result) {
651 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); 624 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
652 ServiceWorkerFetchRequest request( 625 ServiceWorkerFetchRequest request(
653 embedded_test_server()->GetURL("/service_worker/empty.html"), 626 embedded_test_server()->GetURL("/service_worker/empty.html"),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 } 723 }
751 724
752 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, StartNotFound) { 725 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, StartNotFound) {
753 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this, 726 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this,
754 "/service_worker/nonexistent.js")); 727 "/service_worker/nonexistent.js"));
755 728
756 // Start a worker for nonexistent URL. 729 // Start a worker for nonexistent URL.
757 StartWorker(SERVICE_WORKER_ERROR_NETWORK); 730 StartWorker(SERVICE_WORKER_ERROR_NETWORK);
758 } 731 }
759 732
760 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, ReadResourceFailure) {
761 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this,
762 "/service_worker/worker.js"));
763 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
764
765 // Add a non-existent resource to the version.
766 std::vector<ServiceWorkerDatabase::ResourceRecord> records;
767 records.push_back(
768 ServiceWorkerDatabase::ResourceRecord(30, version_->script_url(), 100));
769 version_->script_cache_map()->SetResources(records);
770
771 // We'll fail to read from disk and the worker should be doomed.
772 StartWorker(SERVICE_WORKER_ERROR_DISK_CACHE);
773 EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version_->status());
774
775 // The registration should be deleted since the version was the stored one.
776 EXPECT_TRUE(registration_->is_deleted());
777 }
778
779 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
780 ReadResourceFailure_WaitingWorker) {
781 RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this,
782 "/service_worker/worker.js"));
783 base::RunLoop acrivate_run_loop;
784 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
785 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
786 base::Bind(&self::ActivateOnIOThread, this,
787 acrivate_run_loop.QuitClosure(), &status));
788 acrivate_run_loop.Run();
789 ASSERT_TRUE(registration_->active_version());
790
791 // Give the version a controllee.
792 RunOnIOThread(base::Bind(&self::AddControlleeOnIOThread, this));
793
794 // Add a non-existent resource to the version.
795 std::vector<ServiceWorkerDatabase::ResourceRecord> records;
796 records.push_back(
797 ServiceWorkerDatabase::ResourceRecord(30, version_->script_url(), 100));
798 version_->script_cache_map()->SetResources(records);
799
800 // Make a waiting version.
801 RunOnIOThread(base::Bind(&self::AddWaitingWorkerOnIOThread, this,
802 "/service_worker/worker.js"));
803
804 // Start the worker. We'll fail to read from disk and the worker should be
805 // doomed.
806 StopWorker(SERVICE_WORKER_OK); // in case it's already running
807 StartWorker(SERVICE_WORKER_ERROR_DISK_CACHE);
808 EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version_->status());
809
810 // The registration is still alive since the waiting version was the stored
811 // one.
812 EXPECT_FALSE(registration_->is_deleted());
813 }
814
815 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Install) { 733 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Install) {
816 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK); 734 InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK);
817 } 735 }
818 736
819 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, 737 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
820 InstallWithWaitUntil_Fulfilled) { 738 InstallWithWaitUntil_Fulfilled) {
821 InstallTestHelper("/service_worker/worker_install_fulfilled.js", 739 InstallTestHelper("/service_worker/worker_install_fulfilled.js",
822 SERVICE_WORKER_OK); 740 SERVICE_WORKER_OK);
823 } 741 }
824 742
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 ASSERT_EQ(SERVICE_WORKER_OK, status); 1286 ASSERT_EQ(SERVICE_WORKER_OK, status);
1369 // Stop the worker. 1287 // Stop the worker.
1370 StopWorker(SERVICE_WORKER_OK); 1288 StopWorker(SERVICE_WORKER_OK);
1371 // Restart the worker. 1289 // Restart the worker.
1372 StartWorker(SERVICE_WORKER_OK); 1290 StartWorker(SERVICE_WORKER_OK);
1373 // Stop the worker. 1291 // Stop the worker.
1374 StopWorker(SERVICE_WORKER_OK); 1292 StopWorker(SERVICE_WORKER_OK);
1375 } 1293 }
1376 1294
1377 } // namespace content 1295 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_read_from_cache_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698