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 5173be229978db1399c69b0cf781902e15b8e275..08cb58c226d5954efe68e29b9947641ced858272 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -6,6 +6,7 @@ |
#include <utility> |
+#include "base/debug/crash_logging.h" |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
@@ -85,6 +86,52 @@ bool CanGetRegistration(const GURL& document_url, |
OriginCanAccessServiceWorkers(given_document_url); |
} |
+std::string GetIPCMessageTypeAsString(uint32_t type) { |
+ switch (type) { |
+ case ServiceWorkerHostMsg_InstallEventFinished::ID: |
+ return "ServiceWorkerHostMsg_InstallEventFinished"; |
+ case ServiceWorkerHostMsg_ActivateEventFinished::ID: |
+ return "ServiceWorkerHostMsg_ActivateEventFinished"; |
+ case ServiceWorkerHostMsg_ExtendableMessageEventFinished::ID: |
+ return "ServiceWorkerHostMsg_ExtendableMessageEventFinished"; |
+ case ServiceWorkerHostMsg_FetchEventResponse::ID: |
+ return "ServiceWorkerHostMsg_FetchEventResponse"; |
+ case ServiceWorkerHostMsg_FetchEventFinished::ID: |
+ return "ServiceWorkerHostMsg_FetchEventFinished"; |
+ case ServiceWorkerHostMsg_NotificationClickEventFinished::ID: |
+ return "ServiceWorkerHostMsg_NotificationClickEventFinished"; |
+ case ServiceWorkerHostMsg_NotificationCloseEventFinished::ID: |
+ return "ServiceWorkerHostMsg_NotificationCloseEventFinished"; |
+ case ServiceWorkerHostMsg_PushEventFinished::ID: |
+ return "ServiceWorkerHostMsg_PushEventFinished"; |
+ case ServiceWorkerHostMsg_Pong::ID: |
+ return "ServiceWorkerHostMsg_Pong"; |
+ case ServiceWorkerHostMsg_GetClient::ID: |
+ return "ServiceWorkerHostMsg_GetClient"; |
+ case ServiceWorkerHostMsg_GetClients::ID: |
+ return "ServiceWorkerHostMsg_GetClients"; |
+ case ServiceWorkerHostMsg_PostMessageToClient::ID: |
+ return "ServiceWorkerHostMsg_PostMessageToClient"; |
+ case ServiceWorkerHostMsg_SetCachedMetadata::ID: |
+ return "ServiceWorkerHostMsg_SetCachedMetadata"; |
+ case ServiceWorkerHostMsg_ClearCachedMetadata::ID: |
+ return "ServiceWorkerHostMsg_ClearCachedMetadata"; |
+ case ServiceWorkerHostMsg_OpenWindow::ID: |
+ return "ServiceWorkerHostMsg_OpenWindow"; |
+ case ServiceWorkerHostMsg_FocusClient::ID: |
+ return "ServiceWorkerHostMsg_FocusClient"; |
+ case ServiceWorkerHostMsg_NavigateClient::ID: |
+ return "ServiceWorkerHostMsg_NavigateClient"; |
+ case ServiceWorkerHostMsg_SkipWaiting::ID: |
+ return "ServiceWorkerHostMsg_SkipWaiting"; |
+ case ServiceWorkerHostMsg_ClaimClients::ID: |
+ return "ServiceWorkerHostMsg_ClaimClients"; |
+ case ServiceWorkerHostMsg_RegisterForeignFetchScopes::ID: |
+ return "ServiceWorkerHostMsg_RegisterForeignFetchScopes"; |
+ } |
+ return "Unknown"; |
+} |
+ |
} // namespace |
ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( |
@@ -207,8 +254,18 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
if (!handled && GetContext()) { |
handled = GetContext()->embedded_worker_registry()->OnMessageReceived( |
message, render_process_id_); |
- if (!handled) |
+ if (!handled) { |
+ // Temporary debugging for https://crbug.com/625040 |
+ EmbeddedWorkerInstance* worker = |
+ GetContext()->embedded_worker_registry()->GetWorkerForMessage( |
+ render_process_id_, message.routing_id()); |
+ base::debug::ScopedCrashKey("swdh_not_handled_message_type", |
+ GetIPCMessageTypeAsString(message.type())); |
+ base::debug::ScopedCrashKey( |
+ "swdh_not_handled_worker_status", |
+ EmbeddedWorkerInstance::StatusToString(worker->status())); |
bad_message::ReceivedBadMessage(this, bad_message::SWDH_NOT_HANDLED); |
+ } |
} |
return handled; |