OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * Copyright (C) 2009 Google Inc. All Rights Reserved. | 3 * Copyright (C) 2009 Google Inc. All Rights Reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 } | 159 } |
160 | 160 |
161 void WorkerMessagingProxy::reportException(const String& errorMessage, int lineN
umber, int columnNumber, const String& sourceURL) | 161 void WorkerMessagingProxy::reportException(const String& errorMessage, int lineN
umber, int columnNumber, const String& sourceURL) |
162 { | 162 { |
163 if (!m_workerObject) | 163 if (!m_workerObject) |
164 return; | 164 return; |
165 | 165 |
166 // We don't bother checking the askedToTerminate() flag here, because except
ions should *always* be reported even if the thread is terminated. | 166 // We don't bother checking the askedToTerminate() flag here, because except
ions should *always* be reported even if the thread is terminated. |
167 // This is intentionally different than the behavior in MessageWorkerTask, b
ecause terminated workers no longer deliver messages (section 4.6 of the WebWork
er spec), but they do report exceptions. | 167 // This is intentionally different than the behavior in MessageWorkerTask, b
ecause terminated workers no longer deliver messages (section 4.6 of the WebWork
er spec), but they do report exceptions. |
168 | 168 |
169 RefPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, lineN
umber, columnNumber, 0); | 169 RefPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sourceURL, lineN
umber, columnNumber, nullptr); |
170 bool errorHandled = !m_workerObject->dispatchEvent(event); | 170 bool errorHandled = !m_workerObject->dispatchEvent(event); |
171 if (!errorHandled) | 171 if (!errorHandled) |
172 m_executionContext->reportException(event, 0, NotSharableCrossOrigin); | 172 m_executionContext->reportException(event, nullptr, NotSharableCrossOrig
in); |
173 } | 173 } |
174 | 174 |
175 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) | 175 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) |
176 { | 176 { |
177 if (m_askedToTerminate) | 177 if (m_askedToTerminate) |
178 return; | 178 return; |
179 m_executionContext->addConsoleMessage(source, level, message, sourceURL, lin
eNumber); | 179 m_executionContext->addConsoleMessage(source, level, message, sourceURL, lin
eNumber); |
180 } | 180 } |
181 | 181 |
182 void WorkerMessagingProxy::workerThreadCreated(PassRefPtr<DedicatedWorkerThread>
workerThread) | 182 void WorkerMessagingProxy::workerThreadCreated(PassRefPtr<DedicatedWorkerThread>
workerThread) |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 return; | 251 return; |
252 m_workerThread->runLoop().postDebuggerTask(createCallbackTask(dispatchOnInsp
ectorBackendTask, String(message))); | 252 m_workerThread->runLoop().postDebuggerTask(createCallbackTask(dispatchOnInsp
ectorBackendTask, String(message))); |
253 WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(m_workerThread.ge
t()); | 253 WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(m_workerThread.ge
t()); |
254 } | 254 } |
255 | 255 |
256 void WorkerMessagingProxy::workerGlobalScopeDestroyed() | 256 void WorkerMessagingProxy::workerGlobalScopeDestroyed() |
257 { | 257 { |
258 // This method is always the last to be performed, so the proxy is not neede
d for communication | 258 // This method is always the last to be performed, so the proxy is not neede
d for communication |
259 // in either side any more. However, the Worker object may still exist, and
it assumes that the proxy exists, too. | 259 // in either side any more. However, the Worker object may still exist, and
it assumes that the proxy exists, too. |
260 m_askedToTerminate = true; | 260 m_askedToTerminate = true; |
261 m_workerThread = 0; | 261 m_workerThread = nullptr; |
262 | 262 |
263 InspectorInstrumentation::workerGlobalScopeTerminated(m_executionContext.get
(), this); | 263 InspectorInstrumentation::workerGlobalScopeTerminated(m_executionContext.get
(), this); |
264 | 264 |
265 if (m_mayBeDestroyed) | 265 if (m_mayBeDestroyed) |
266 delete this; | 266 delete this; |
267 } | 267 } |
268 | 268 |
269 void WorkerMessagingProxy::terminateWorkerGlobalScope() | 269 void WorkerMessagingProxy::terminateWorkerGlobalScope() |
270 { | 270 { |
271 if (m_askedToTerminate) | 271 if (m_askedToTerminate) |
(...skipping 25 matching lines...) Expand all Loading... |
297 { | 297 { |
298 m_workerThreadHadPendingActivity = hasPendingActivity; | 298 m_workerThreadHadPendingActivity = hasPendingActivity; |
299 } | 299 } |
300 | 300 |
301 bool WorkerMessagingProxy::hasPendingActivity() const | 301 bool WorkerMessagingProxy::hasPendingActivity() const |
302 { | 302 { |
303 return (m_unconfirmedMessageCount || m_workerThreadHadPendingActivity) && !m
_askedToTerminate; | 303 return (m_unconfirmedMessageCount || m_workerThreadHadPendingActivity) && !m
_askedToTerminate; |
304 } | 304 } |
305 | 305 |
306 } // namespace WebCore | 306 } // namespace WebCore |
OLD | NEW |