Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index ed7b357561fe7906d4c167ab13b5ee0316d19e17..be0e7fe77cc43e5a2eee1457d7f42e1cc8d734f0 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -27,6 +27,7 @@ |
#include "content/browser/service_worker/service_worker_registration.h" |
#include "content/browser/service_worker/service_worker_registration_handle.h" |
#include "content/common/service_worker/embedded_worker_messages.h" |
+#include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" |
#include "content/common/service_worker/service_worker_messages.h" |
#include "content/common/service_worker/service_worker_types.h" |
#include "content/common/service_worker/service_worker_utils.h" |
@@ -1142,24 +1143,27 @@ void ServiceWorkerDispatcherHost:: |
std::vector<int> new_routing_ids; |
filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids); |
- ServiceWorkerMsg_ExtendableMessageEvent_Params params; |
- params.message = message; |
- params.source_origin = source_origin; |
- params.message_ports = sent_message_ports; |
- params.new_routing_ids = new_routing_ids; |
- params.source = source; |
+ mojom::ExtendableMessageEventPtr event = mojom::ExtendableMessageEvent::New(); |
+ event->message = message; |
+ event->source_origin = source_origin; |
+ event->message_ports = sent_message_ports; |
+ event->new_routing_ids = new_routing_ids; |
+ event->source = source; |
// Hide the client url if the client has a unique origin. |
if (source_origin.unique()) { |
- if (params.source.client_info.IsValid()) |
- params.source.client_info.url = GURL(); |
+ if (event->source.client_info.IsValid()) |
+ event->source.client_info.url = GURL(); |
else |
- params.source.service_worker_info.url = GURL(); |
+ event->source.service_worker_info.url = GURL(); |
} |
- worker->DispatchSimpleEvent< |
- ServiceWorkerHostMsg_ExtendableMessageEventFinished>( |
- request_id, ServiceWorkerMsg_ExtendableMessageEvent(request_id, params)); |
+ // |event_dispatcher| is owned by |worker|, once |worker| got destroyed, the |
+ // bound function will never be called, so it is safe to use |
+ // base::Unretained() here. |
+ worker->event_dispatcher()->DispatchExtendableMessageEvent( |
+ std::move(event), base::Bind(&ServiceWorkerVersion::OnSimpleEventFinished, |
+ base::Unretained(worker.get()), request_id)); |
} |
template <typename SourceInfo> |