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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 return true; | 157 return true; |
158 } | 158 } |
159 | 159 |
160 void WorkerMessagingProxy::postTaskToLoader(PassOwnPtr<ExecutionContextTask> tas
k) | 160 void WorkerMessagingProxy::postTaskToLoader(PassOwnPtr<ExecutionContextTask> tas
k) |
161 { | 161 { |
162 // FIXME: In case of nested workers, this should go directly to the root Doc
ument context. | 162 // FIXME: In case of nested workers, this should go directly to the root Doc
ument context. |
163 ASSERT(m_executionContext->isDocument()); | 163 ASSERT(m_executionContext->isDocument()); |
164 m_executionContext->postTask(task); | 164 m_executionContext->postTask(task); |
165 } | 165 } |
166 | 166 |
167 void WorkerMessagingProxy::reportException(const String& errorMessage, int lineN
umber, int columnNumber, const String& sourceURL) | 167 void WorkerMessagingProxy::reportException(const String& errorMessage, int lineN
umber, int columnNumber, const String& sourceURL, int exceptionId) |
168 { | 168 { |
169 if (!m_workerObject) | 169 if (!m_workerObject) |
170 return; | 170 return; |
171 | 171 |
172 // We don't bother checking the askedToTerminate() flag here, because except
ions should *always* be reported even if the thread is terminated. | 172 // We don't bother checking the askedToTerminate() flag here, because except
ions should *always* be reported even if the thread is terminated. |
173 // 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. | 173 // 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. |
174 | 174 |
175 RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sour
ceURL, lineNumber, columnNumber, nullptr); | 175 RefPtrWillBeRawPtr<ErrorEvent> event = ErrorEvent::create(errorMessage, sour
ceURL, lineNumber, columnNumber, nullptr); |
176 bool errorHandled = !m_workerObject->dispatchEvent(event); | 176 bool errorHandled = !m_workerObject->dispatchEvent(event); |
177 if (!errorHandled) | 177 |
178 m_executionContext->reportException(event, 0, nullptr, NotSharableCrossO
rigin); | 178 postTaskToWorkerGlobalScope(createCrossThreadTask(&WorkerGlobalScope::except
ionHandled, m_workerThread->workerGlobalScope(), exceptionId, errorHandled)); |
179 } | 179 } |
180 | 180 |
181 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) | 181 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) |
182 { | 182 { |
183 if (m_askedToTerminate) | 183 if (m_askedToTerminate) |
184 return; | 184 return; |
185 // FIXME: In case of nested workers, this should go directly to the root Doc
ument context. | 185 // FIXME: In case of nested workers, this should go directly to the root Doc
ument context. |
186 ASSERT(m_executionContext->isDocument()); | 186 ASSERT(m_executionContext->isDocument()); |
187 Document* document = toDocument(m_executionContext.get()); | 187 Document* document = toDocument(m_executionContext.get()); |
188 LocalFrame* frame = document->frame(); | 188 LocalFrame* frame = document->frame(); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 | 285 |
286 // FIXME: This need to be revisited when we support nested worker one day | 286 // FIXME: This need to be revisited when we support nested worker one day |
287 ASSERT(m_executionContext->isDocument()); | 287 ASSERT(m_executionContext->isDocument()); |
288 Document* document = toDocument(m_executionContext.get()); | 288 Document* document = toDocument(m_executionContext.get()); |
289 LocalFrame* frame = document->frame(); | 289 LocalFrame* frame = document->frame(); |
290 if (frame) | 290 if (frame) |
291 frame->console().adoptWorkerMessagesAfterTermination(this); | 291 frame->console().adoptWorkerMessagesAfterTermination(this); |
292 } | 292 } |
293 | 293 |
294 } // namespace blink | 294 } // namespace blink |
OLD | NEW |