|
| 1 | +2019-11-19 Ryosuke Niwa < [email protected]> |
| 2 | + |
| 3 | + MicrotaskQueue should be accessed via EventLoop |
| 4 | + https://bugs.webkit.org/show_bug.cgi?id=204397 |
| 5 | + |
| 6 | + Reviewed by Antti Koivisto. |
| 7 | + |
| 8 | + This patch refactors the existing code so that a microtask is always queued via EventLoopTaskGroup. |
| 9 | + It preserves all other (broken) semantics and behavior like all origins sharing a single microtask queue. |
| 10 | + |
| 11 | + The singleton MicrotaskQueue for the main thread has been moved from MicrotaskQueue::mainThreadQueue |
| 12 | + to WindowEventLoop, and an instance of MicrotaskQueue for each worker has been moved from WorkerGlobalScope |
| 13 | + to WorkerEventLoop. |
| 14 | + |
| 15 | + * animation/DocumentTimeline.cpp: |
| 16 | + (WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): |
| 17 | + * animation/WebAnimation.cpp: |
| 18 | + (WebCore::WebAnimation::updateFinishedState): |
| 19 | + * bindings/js/JSDOMGlobalObjectTask.cpp: |
| 20 | + (WebCore::JSGlobalObjectTask::JSGlobalObjectTask): |
| 21 | + * bindings/js/JSDOMWindowBase.cpp: |
| 22 | + (WebCore::JSDOMWindowBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. |
| 23 | + * bindings/js/JSDOMWindowBase.h: |
| 24 | + * bindings/js/JSExecState.cpp: |
| 25 | + (WebCore::JSExecState::didLeaveScriptContext): |
| 26 | + * bindings/js/JSRemoteDOMWindowBase.cpp: |
| 27 | + * bindings/js/JSWorkerGlobalScopeBase.cpp: |
| 28 | + (WebCore::JSWorkerGlobalScopeBase::queueMicrotaskToEventLoop): Renamed from queueTaskToEventLoop. |
| 29 | + * bindings/js/JSWorkerGlobalScopeBase.h: |
| 30 | + * bindings/js/JSWorkletGlobalScopeBase.cpp: |
| 31 | + * bindings/js/JSWorkletGlobalScopeBase.h: |
| 32 | + * dom/CustomElementReactionQueue.cpp: |
| 33 | + (WebCore::BackupElementQueueMicrotask): Deleted. |
| 34 | + (WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue): |
| 35 | + (WebCore::CustomElementReactionQueue::ensureBackupQueue): |
| 36 | + * dom/CustomElementReactionQueue.h: |
| 37 | + * dom/Document.cpp: |
| 38 | + (WebCore::Document::finishedParsing): |
| 39 | + * dom/DocumentStorageAccess.cpp: |
| 40 | + (WebCore::DocumentStorageAccess::requestStorageAccess): |
| 41 | + * dom/EventLoop.cpp: |
| 42 | + (WebCore::EventLoop::queueMicrotask): Added. |
| 43 | + (WebCore::EventLoop::performMicrotaskCheckpoint): Added. |
| 44 | + (WebCore::EventLoopTaskGroup::queueMicrotaskCallback): Added. |
| 45 | + (WebCore::EventLoopTaskGroup::queueMicrotask): Added. |
| 46 | + (WebCore::EventLoopTaskGroup::performMicrotaskCheckpoint): Added. |
| 47 | + * dom/EventLoop.h: |
| 48 | + (WebCore::EventLoopTaskGroup::microtaskQueue): |
| 49 | + * dom/Microtasks.cpp: |
| 50 | + (WebCore::MicrotaskQueue::mainThreadQueue): Deleted. |
| 51 | + (WebCore::MicrotaskQueue::contextQueue): Deleted. |
| 52 | + * dom/Microtasks.h: |
| 53 | + * dom/MutationObserver.cpp: |
| 54 | + (WebCore::MutationObserverMicrotask): Deleted. |
| 55 | + (WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Made this a member function |
| 56 | + so that it can call notifyMutationObservers in its lambda. |
| 57 | + (WebCore::MutationObserver::enqueueMutationRecord): |
| 58 | + (WebCore::MutationObserver::enqueueSlotChangeEvent): |
| 59 | + (WebCore::MutationObserver::setHasTransientRegistration): |
| 60 | + * dom/MutationObserver.h: |
| 61 | + * dom/MutationObserverRegistration.cpp: |
| 62 | + (WebCore::MutationObserverRegistration::observedSubtreeNodeWillDetach): |
| 63 | + * dom/WindowEventLoop.cpp: |
| 64 | + (WebCore::WindowEventLoop::microtaskQueue): |
| 65 | + * dom/WindowEventLoop.h: |
| 66 | + * html/parser/HTMLDocumentParser.cpp: |
| 67 | + (WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): |
| 68 | + * html/parser/HTMLScriptRunner.cpp: |
| 69 | + (WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): |
| 70 | + (WebCore::HTMLScriptRunner::runScript): |
| 71 | + * inspector/agents/InspectorCanvasAgent.cpp: |
| 72 | + (WebCore::InspectorCanvasAgent::recordCanvasAction): |
| 73 | + * testing/Internals.cpp: |
| 74 | + (WebCore::Internals::queueMicroTask): |
| 75 | + * workers/WorkerEventLoop.cpp: |
| 76 | + (WebCore::WorkerEventLoop::~WorkerEventLoop): |
| 77 | + (WebCore::WorkerEventLoop::microtaskQueue): |
| 78 | + (WebCore::WorkerEventLoop::clearMicrotaskQueue): |
| 79 | + * workers/WorkerEventLoop.h: |
| 80 | + * workers/WorkerGlobalScope.cpp: |
| 81 | + (WebCore::WorkerGlobalScope::WorkerGlobalScope): |
| 82 | + (WebCore::WorkerGlobalScope::prepareForTermination): |
| 83 | + * workers/WorkerGlobalScope.h: |
| 84 | + (WebCore::WorkerGlobalScope::microtaskQueue const): Deleted. |
| 85 | + |
1 | 86 | 2019-11-20 Wenson Hsieh < [email protected]> |
2 | 87 |
|
3 | 88 | Unreviewed, remove an unnecessary null check after r252561 |
|
0 commit comments