| 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 08aa0d18b0ab8d95ad4c059a8efb366fd8220bf6..53a36271e64207d1f5c38c87bac50849c95951ea 100644
|
| --- a/content/browser/service_worker/service_worker_version_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_version_unittest.cc
|
| @@ -834,10 +834,10 @@ class MessageReceiverControlEvents : public MessageReceiver {
|
|
|
| void OnExtendableMessageEvent(
|
| mojom::ExtendableMessageEventPtr event,
|
| - const mojom::ServiceWorkerEventDispatcher::
|
| - DispatchExtendableMessageEventCallback& callback) override {
|
| + mojom::ServiceWorkerEventDispatcher::
|
| + DispatchExtendableMessageEventCallback callback) override {
|
| EXPECT_FALSE(extendable_message_event_callback_);
|
| - extendable_message_event_callback_ = callback;
|
| + extendable_message_event_callback_ = std::move(callback);
|
| }
|
|
|
| void OnStopWorker(int embedded_worker_id) override {
|
| @@ -847,10 +847,13 @@ class MessageReceiverControlEvents : public MessageReceiver {
|
| base::Unretained(this), embedded_worker_id);
|
| }
|
|
|
| - const mojom::ServiceWorkerEventDispatcher::
|
| - DispatchExtendableMessageEventCallback&
|
| - extendable_message_event_callback() {
|
| - return extendable_message_event_callback_;
|
| + bool has_extendable_message_event_callback() {
|
| + return !extendable_message_event_callback_.is_null();
|
| + }
|
| +
|
| + mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
|
| + TakeExtendableMessageEventCallback() {
|
| + return std::move(extendable_message_event_callback_);
|
| }
|
|
|
| const base::Closure& stop_worker_callback() { return stop_worker_callback_; }
|
| @@ -869,11 +872,15 @@ class ServiceWorkerRequestTimeoutTest : public ServiceWorkerVersionTest {
|
| return base::MakeUnique<MessageReceiverControlEvents>();
|
| }
|
|
|
| - const mojom::ServiceWorkerEventDispatcher::
|
| - DispatchExtendableMessageEventCallback&
|
| - extendable_message_event_callback() {
|
| + bool has_extendable_message_event_callback() {
|
| + return static_cast<MessageReceiverControlEvents*>(helper_.get())
|
| + ->has_extendable_message_event_callback();
|
| + }
|
| +
|
| + mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
|
| + TakeExtendableMessageEventCallback() {
|
| return static_cast<MessageReceiverControlEvents*>(helper_.get())
|
| - ->extendable_message_event_callback();
|
| + ->TakeExtendableMessageEventCallback();
|
| }
|
|
|
| const base::Closure& stop_worker_callback() {
|
| @@ -900,14 +907,14 @@ TEST_F(ServiceWorkerRequestTimeoutTest, RequestTimeout) {
|
| CreateReceiverOnCurrentThread(&error_status));
|
|
|
| // Dispatch a dummy event whose response will be received by SWVersion.
|
| - EXPECT_FALSE(extendable_message_event_callback());
|
| + EXPECT_FALSE(has_extendable_message_event_callback());
|
| version_->event_dispatcher()->DispatchExtendableMessageEvent(
|
| mojom::ExtendableMessageEvent::New(),
|
| version_->CreateSimpleEventCallback(request_id));
|
|
|
| base::RunLoop().RunUntilIdle();
|
| // The renderer should have received an ExtendableMessageEvent request.
|
| - EXPECT_TRUE(extendable_message_event_callback());
|
| + EXPECT_TRUE(has_extendable_message_event_callback());
|
|
|
| // Callback has not completed yet.
|
| EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, error_status);
|
| @@ -930,8 +937,8 @@ TEST_F(ServiceWorkerRequestTimeoutTest, RequestTimeout) {
|
|
|
| // Simulate the renderer aborting the pending event.
|
| // This should not crash: https://crbug.com/676984.
|
| - extendable_message_event_callback().Run(SERVICE_WORKER_ERROR_ABORT,
|
| - base::Time::Now());
|
| + TakeExtendableMessageEventCallback().Run(SERVICE_WORKER_ERROR_ABORT,
|
| + base::Time::Now());
|
| base::RunLoop().RunUntilIdle();
|
|
|
| // Simulate the renderer stopping the worker.
|
|
|