| 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();
|
| }
|
|
|