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 b34a5b03aed94ab57cd1bfcb753f360b795931de..08aa0d18b0ab8d95ad4c059a8efb366fd8220bf6 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -292,15 +292,19 @@ 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) 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) override { |
switch (mode_) { |
case StartMode::STALL: |
+ // Prepare for OnStopWorker(). |
+ instance_host_ptr_map_[embedded_worker_id].Bind( |
+ std::move(instance_host)); |
break; // Do nothing. |
case StartMode::FAIL: |
ASSERT_EQ(current_mock_instance_index_ + 1, |
@@ -311,17 +315,31 @@ 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)); |
+ pause_after_download, std::move(request), std::move(instance_host)); |
break; |
} |
current_mock_instance_index_++; |
} |
+ void OnStopWorker(int embedded_worker_id) override { |
+ if (instance_host_ptr_map_[embedded_worker_id]) { |
+ instance_host_ptr_map_[embedded_worker_id]->OnStopped(); |
+ base::RunLoop().RunUntilIdle(); |
+ return; |
+ } |
+ EmbeddedWorkerTestHelper::OnStopWorker(embedded_worker_id); |
+ } |
+ |
void set_start_mode(StartMode mode) { mode_ = mode; } |
private: |
uint32_t current_mock_instance_index_ = 0; |
StartMode mode_ = StartMode::STALL; |
+ |
+ std::map< |
+ int /* embedded_worker_id */, |
+ mojom::EmbeddedWorkerInstanceHostAssociatedPtr /* instance_host_ptr */> |
+ instance_host_ptr_map_; |
DISALLOW_COPY_AND_ASSIGN(MessageReceiverDisallowStart); |
}; |
@@ -350,19 +368,13 @@ class NoOpStopWorkerEmbeddedWorkerInstanceClient |
base::WeakPtr<EmbeddedWorkerTestHelper> helper) |
: EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {} |
~NoOpStopWorkerEmbeddedWorkerInstanceClient() override { |
- // Stop callback should be called once. |
- if (pending_stop_callback_) |
- pending_stop_callback_.Run(); |
} |
protected: |
- void StopWorker(const StopWorkerCallback& callback) override { |
- pending_stop_callback_ = std::move(callback); |
+ void StopWorker() override { |
// Do nothing. |
} |
- StopWorkerCallback pending_stop_callback_; |
- |
private: |
DISALLOW_COPY_AND_ASSIGN(NoOpStopWorkerEmbeddedWorkerInstanceClient); |
}; |
@@ -375,9 +387,7 @@ class MessageReceiverDisallowStop : public MessageReceiver { |
} |
~MessageReceiverDisallowStop() override {} |
- void OnStopWorker( |
- const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) |
- override { |
+ void OnStopWorker(int embedded_worker_id) override { |
// Do nothing. |
} |
@@ -830,11 +840,11 @@ class MessageReceiverControlEvents : public MessageReceiver { |
extendable_message_event_callback_ = callback; |
} |
- void OnStopWorker( |
- const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) |
- override { |
+ void OnStopWorker(int embedded_worker_id) override { |
EXPECT_FALSE(stop_worker_callback_); |
- stop_worker_callback_ = callback; |
+ stop_worker_callback_ = |
+ base::Bind(&MessageReceiverControlEvents::SimulateWorkerStopped, |
+ base::Unretained(this), embedded_worker_id); |
} |
const mojom::ServiceWorkerEventDispatcher:: |
@@ -843,15 +853,12 @@ class MessageReceiverControlEvents : public MessageReceiver { |
return extendable_message_event_callback_; |
} |
- const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& |
- stop_worker_callback() { |
- return stop_worker_callback_; |
- } |
+ const base::Closure& stop_worker_callback() { return stop_worker_callback_; } |
private: |
mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback |
extendable_message_event_callback_; |
- mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback stop_worker_callback_; |
+ base::Closure stop_worker_callback_; |
}; |
class ServiceWorkerRequestTimeoutTest : public ServiceWorkerVersionTest { |
@@ -869,8 +876,7 @@ class ServiceWorkerRequestTimeoutTest : public ServiceWorkerVersionTest { |
->extendable_message_event_callback(); |
} |
- const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& |
- stop_worker_callback() { |
+ const base::Closure& stop_worker_callback() { |
return static_cast<MessageReceiverControlEvents*>(helper_.get()) |
->stop_worker_callback(); |
} |