Index: content/browser/service_worker/service_worker_version_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc |
index 5dc91dc05d06ae48c4f1990595461bde9776f237..e2df36af77c4d8cbec5638fd1b506b772bf86a7c 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -18,6 +18,7 @@ |
#include "content/browser/service_worker/embedded_worker_status.h" |
#include "content/browser/service_worker/embedded_worker_test_helper.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
+#include "content/browser/service_worker/service_worker_dispatcher_host.h" |
#include "content/browser/service_worker/service_worker_registration.h" |
#include "content/browser/service_worker/service_worker_test_utils.h" |
#include "content/common/service_worker/service_worker_utils.h" |
@@ -269,14 +270,15 @@ class MessageReceiverDisallowStart : public MessageReceiver { |
enum class StartMode { STALL, FAIL, SUCCEED }; |
- void OnStartWorker(int embedded_worker_id, |
- int64_t service_worker_version_id, |
- const GURL& scope, |
- const GURL& script_url, |
- bool pause_after_download, |
- mojom::ServiceWorkerEventDispatcherRequest request, |
- mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo |
- instance_host) override { |
+ void OnStartWorker( |
+ int embedded_worker_id, |
+ int64_t service_worker_version_id, |
+ const GURL& scope, |
+ const GURL& script_url, |
+ bool pause_after_download, |
+ mojom::ServiceWorkerEventDispatcherRequest request, |
+ mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host, |
+ mojom::ServiceWorkerProviderClientInfoPtr provider_client_info) override { |
switch (mode_) { |
case StartMode::STALL: |
// Prepare for OnStopWorker(). |
@@ -292,7 +294,8 @@ class MessageReceiverDisallowStart : public MessageReceiver { |
case StartMode::SUCCEED: |
MessageReceiver::OnStartWorker( |
embedded_worker_id, service_worker_version_id, scope, script_url, |
- pause_after_download, std::move(request), std::move(instance_host)); |
+ pause_after_download, std::move(request), std::move(instance_host), |
+ std::move(provider_client_info)); |
break; |
} |
current_mock_instance_index_++; |
@@ -697,6 +700,11 @@ TEST_F(ServiceWorkerVersionTest, StoppingBeforeDestruct) { |
EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); |
EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, listener.last_status); |
+ // Release the reference to |version_|. |
+ // Hosting provider has the reference to the |version_|. |
+ helper_->context()->RemoveProviderHost( |
+ version_->running_controller()->process_id(), |
+ version_->running_controller()->provider_id()); |
version_ = nullptr; |
EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, listener.last_status); |
} |
@@ -1103,9 +1111,10 @@ TEST_F(ServiceWorkerFailToStartTest, RendererCrash) { |
EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, status); |
EXPECT_EQ(EmbeddedWorkerStatus::STARTING, version_->running_status()); |
- // Simulate renderer crash: do what |
+ // Simulate renderer crash: remove DispatcherHost like what |
// ServiceWorkerDispatcherHost::OnFilterRemoved does. |
- helper_->context()->RemoveDispatcherHost(helper_->mock_render_process_id()); |
+ helper_->RegisterMockDispatcherHost(helper_->mock_render_process_id(), |
+ nullptr); |
base::RunLoop().RunUntilIdle(); |
// Callback completed. |
@@ -1313,9 +1322,10 @@ TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) { |
// Callback has not completed yet. |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
- // Simulate renderer crash: do what |
+ // Simulate renderer crash: remove DispatcherHost like what |
// ServiceWorkerDispatcherHost::OnFilterRemoved does. |
- helper_->context()->RemoveDispatcherHost(helper_->mock_render_process_id()); |
+ helper_->RegisterMockDispatcherHost(helper_->mock_render_process_id(), |
+ nullptr); |
base::RunLoop().RunUntilIdle(); |
// Callback completed. |