Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 2134623002: service worker: Add crash keys for OnMessageReceived crash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: crash_key Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/debug/crash_logging.h"
9 #include "base/logging.h" 10 #include "base/logging.h"
10 #include "base/macros.h" 11 #include "base/macros.h"
11 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
12 #include "base/profiler/scoped_tracker.h" 13 #include "base/profiler/scoped_tracker.h"
13 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
14 #include "base/threading/thread_task_runner_handle.h" 15 #include "base/threading/thread_task_runner_handle.h"
15 #include "base/trace_event/trace_event.h" 16 #include "base/trace_event/trace_event.h"
16 #include "content/browser/bad_message.h" 17 #include "content/browser/bad_message.h"
17 #include "content/browser/message_port_message_filter.h" 18 #include "content/browser/message_port_message_filter.h"
18 #include "content/browser/message_port_service.h" 19 #include "content/browser/message_port_service.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 79
79 bool CanGetRegistration(const GURL& document_url, 80 bool CanGetRegistration(const GURL& document_url,
80 const GURL& given_document_url) { 81 const GURL& given_document_url) {
81 DCHECK(document_url.is_valid()); 82 DCHECK(document_url.is_valid());
82 DCHECK(given_document_url.is_valid()); 83 DCHECK(given_document_url.is_valid());
83 return document_url.GetOrigin() == given_document_url.GetOrigin() && 84 return document_url.GetOrigin() == given_document_url.GetOrigin() &&
84 OriginCanAccessServiceWorkers(document_url) && 85 OriginCanAccessServiceWorkers(document_url) &&
85 OriginCanAccessServiceWorkers(given_document_url); 86 OriginCanAccessServiceWorkers(given_document_url);
86 } 87 }
87 88
89 std::string GetIPCMessageTypeAsString(uint32_t type) {
90 switch (type) {
91 case ServiceWorkerHostMsg_InstallEventFinished::ID:
92 return "ServiceWorkerHostMsg_InstallEventFinished";
93 case ServiceWorkerHostMsg_ActivateEventFinished::ID:
94 return "ServiceWorkerHostMsg_ActivateEventFinished";
95 case ServiceWorkerHostMsg_ExtendableMessageEventFinished::ID:
96 return "ServiceWorkerHostMsg_ExtendableMessageEventFinished";
97 case ServiceWorkerHostMsg_FetchEventResponse::ID:
98 return "ServiceWorkerHostMsg_FetchEventResponse";
99 case ServiceWorkerHostMsg_FetchEventFinished::ID:
100 return "ServiceWorkerHostMsg_FetchEventFinished";
101 case ServiceWorkerHostMsg_NotificationClickEventFinished::ID:
102 return "ServiceWorkerHostMsg_NotificationClickEventFinished";
103 case ServiceWorkerHostMsg_NotificationCloseEventFinished::ID:
104 return "ServiceWorkerHostMsg_NotificationCloseEventFinished";
105 case ServiceWorkerHostMsg_PushEventFinished::ID:
106 return "ServiceWorkerHostMsg_PushEventFinished";
107 case ServiceWorkerHostMsg_Pong::ID:
108 return "ServiceWorkerHostMsg_Pong";
109 case ServiceWorkerHostMsg_GetClient::ID:
110 return "ServiceWorkerHostMsg_GetClient";
111 case ServiceWorkerHostMsg_GetClients::ID:
112 return "ServiceWorkerHostMsg_GetClients";
113 case ServiceWorkerHostMsg_PostMessageToClient::ID:
114 return "ServiceWorkerHostMsg_PostMessageToClient";
115 case ServiceWorkerHostMsg_SetCachedMetadata::ID:
116 return "ServiceWorkerHostMsg_SetCachedMetadata";
117 case ServiceWorkerHostMsg_ClearCachedMetadata::ID:
118 return "ServiceWorkerHostMsg_ClearCachedMetadata";
119 case ServiceWorkerHostMsg_OpenWindow::ID:
120 return "ServiceWorkerHostMsg_OpenWindow";
121 case ServiceWorkerHostMsg_FocusClient::ID:
122 return "ServiceWorkerHostMsg_FocusClient";
123 case ServiceWorkerHostMsg_NavigateClient::ID:
124 return "ServiceWorkerHostMsg_NavigateClient";
125 case ServiceWorkerHostMsg_SkipWaiting::ID:
126 return "ServiceWorkerHostMsg_SkipWaiting";
127 case ServiceWorkerHostMsg_ClaimClients::ID:
128 return "ServiceWorkerHostMsg_ClaimClients";
129 case ServiceWorkerHostMsg_RegisterForeignFetchScopes::ID:
130 return "ServiceWorkerHostMsg_RegisterForeignFetchScopes";
131 }
132 return "Unknown";
133 }
134
88 } // namespace 135 } // namespace
89 136
90 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( 137 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost(
91 int render_process_id, 138 int render_process_id,
92 MessagePortMessageFilter* message_port_message_filter, 139 MessagePortMessageFilter* message_port_message_filter,
93 ResourceContext* resource_context) 140 ResourceContext* resource_context)
94 : BrowserMessageFilter(kFilteredMessageClasses, 141 : BrowserMessageFilter(kFilteredMessageClasses,
95 arraysize(kFilteredMessageClasses)), 142 arraysize(kFilteredMessageClasses)),
96 render_process_id_(render_process_id), 143 render_process_id_(render_process_id),
97 message_port_message_filter_(message_port_message_filter), 144 message_port_message_filter_(message_port_message_filter),
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 OnIncrementRegistrationRefCount) 247 OnIncrementRegistrationRefCount)
201 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementRegistrationRefCount, 248 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementRegistrationRefCount,
202 OnDecrementRegistrationRefCount) 249 OnDecrementRegistrationRefCount)
203 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_TerminateWorker, OnTerminateWorker) 250 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_TerminateWorker, OnTerminateWorker)
204 IPC_MESSAGE_UNHANDLED(handled = false) 251 IPC_MESSAGE_UNHANDLED(handled = false)
205 IPC_END_MESSAGE_MAP() 252 IPC_END_MESSAGE_MAP()
206 253
207 if (!handled && GetContext()) { 254 if (!handled && GetContext()) {
208 handled = GetContext()->embedded_worker_registry()->OnMessageReceived( 255 handled = GetContext()->embedded_worker_registry()->OnMessageReceived(
209 message, render_process_id_); 256 message, render_process_id_);
210 if (!handled) 257 if (!handled) {
258 // Temporary debugging for https://crbug.com/625040
259 EmbeddedWorkerInstance* worker =
260 GetContext()->embedded_worker_registry()->GetWorkerForMessage(
261 render_process_id_, message.routing_id());
262 base::debug::ScopedCrashKey("swdh_not_handled_message_type",
263 GetIPCMessageTypeAsString(message.type()));
264 base::debug::ScopedCrashKey(
265 "swdh_not_handled_worker_status",
266 EmbeddedWorkerInstance::StatusToString(worker->status()));
211 bad_message::ReceivedBadMessage(this, bad_message::SWDH_NOT_HANDLED); 267 bad_message::ReceivedBadMessage(this, bad_message::SWDH_NOT_HANDLED);
268 }
212 } 269 }
213 270
214 return handled; 271 return handled;
215 } 272 }
216 273
217 bool ServiceWorkerDispatcherHost::Send(IPC::Message* message) { 274 bool ServiceWorkerDispatcherHost::Send(IPC::Message* message) {
218 if (channel_ready_) { 275 if (channel_ready_) {
219 BrowserMessageFilter::Send(message); 276 BrowserMessageFilter::Send(message);
220 // Don't bother passing through Send()'s result: it's not reliable. 277 // Don't bother passing through Send()'s result: it's not reliable.
221 return true; 278 return true;
(...skipping 1179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 if (!handle) { 1458 if (!handle) {
1402 bad_message::ReceivedBadMessage(this, 1459 bad_message::ReceivedBadMessage(this,
1403 bad_message::SWDH_TERMINATE_BAD_HANDLE); 1460 bad_message::SWDH_TERMINATE_BAD_HANDLE);
1404 return; 1461 return;
1405 } 1462 }
1406 handle->version()->StopWorker( 1463 handle->version()->StopWorker(
1407 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 1464 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
1408 } 1465 }
1409 1466
1410 } // namespace content 1467 } // namespace content
OLDNEW
« chrome/common/crash_keys.cc ('K') | « content/browser/service_worker/embedded_worker_registry.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698