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 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 // exceptions should *always* be reported even if the thread is terminated. | 169 // exceptions should *always* be reported even if the thread is terminated. |
170 // This is intentionally different than the behavior in MessageWorkerTask, | 170 // This is intentionally different than the behavior in MessageWorkerTask, |
171 // because terminated workers no longer deliver messages (section 4.6 of the | 171 // because terminated workers no longer deliver messages (section 4.6 of the |
172 // WebWorker spec), but they do report exceptions. | 172 // WebWorker spec), but they do report exceptions. |
173 | 173 |
174 ErrorEvent* event = | 174 ErrorEvent* event = |
175 ErrorEvent::Create(error_message, location->Clone(), nullptr); | 175 ErrorEvent::Create(error_message, location->Clone(), nullptr); |
176 if (worker_object_->DispatchEvent(event) != DispatchEventResult::kNotCanceled) | 176 if (worker_object_->DispatchEvent(event) != DispatchEventResult::kNotCanceled) |
177 return; | 177 return; |
178 | 178 |
179 PostTaskToWorkerGlobalScope( | 179 // The HTML spec requires to queue an error event using the DOM manipulation |
180 BLINK_FROM_HERE, | 180 // task source. |
181 CrossThreadBind(&InProcessWorkerObjectProxy::ProcessUnhandledException, | 181 // https://html.spec.whatwg.org/multipage/workers.html#runtime-script-errors-2 |
182 CrossThreadUnretained(worker_object_proxy_.get()), | 182 TaskRunnerHelper::Get(TaskType::kDOMManipulation, GetWorkerThread()) |
183 exception_id, CrossThreadUnretained(GetWorkerThread()))); | 183 ->PostTask(BLINK_FROM_HERE, |
| 184 CrossThreadBind( |
| 185 &InProcessWorkerObjectProxy::ProcessUnhandledException, |
| 186 CrossThreadUnretained(worker_object_proxy_.get()), |
| 187 exception_id, CrossThreadUnretained(GetWorkerThread()))); |
184 } | 188 } |
185 | 189 |
186 void InProcessWorkerMessagingProxy::WorkerThreadCreated() { | 190 void InProcessWorkerMessagingProxy::WorkerThreadCreated() { |
187 DCHECK(IsParentContextThread()); | 191 DCHECK(IsParentContextThread()); |
188 ThreadedMessagingProxyBase::WorkerThreadCreated(); | 192 ThreadedMessagingProxyBase::WorkerThreadCreated(); |
189 | 193 |
190 // Worker initialization means a pending activity. | 194 // Worker initialization means a pending activity. |
191 worker_global_scope_has_pending_activity_ = true; | 195 worker_global_scope_has_pending_activity_ = true; |
192 | 196 |
193 DCHECK_EQ(0u, unconfirmed_message_count_); | 197 DCHECK_EQ(0u, unconfirmed_message_count_); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 } | 241 } |
238 | 242 |
239 bool InProcessWorkerMessagingProxy::HasPendingActivity() const { | 243 bool InProcessWorkerMessagingProxy::HasPendingActivity() const { |
240 DCHECK(IsParentContextThread()); | 244 DCHECK(IsParentContextThread()); |
241 if (AskedToTerminate()) | 245 if (AskedToTerminate()) |
242 return false; | 246 return false; |
243 return worker_global_scope_has_pending_activity_; | 247 return worker_global_scope_has_pending_activity_; |
244 } | 248 } |
245 | 249 |
246 } // namespace blink | 250 } // namespace blink |
OLD | NEW |