Changeset 252209 in webkit
- Timestamp:
- Nov 7, 2019 3:16:07 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r252208 r252209 1 2019-11-07 Chris Dumez <cdumez@apple.com> 2 3 Port MessagePort to the HTML5 event loop 4 https://bugs.webkit.org/show_bug.cgi?id=203960 5 6 Reviewed by Ryosuke Niwa. 7 8 * dom/MessagePort.cpp: 9 (WebCore::MessagePort::MessagePort): 10 (WebCore::MessagePort::close): 11 (WebCore::MessagePort::dispatchMessages): 12 (WebCore::MessagePort::dispatchEvent): 13 * dom/MessagePort.h: 14 * dom/TaskSource.h: 15 1 16 2019-11-07 Antti Koivisto <antti@apple.com> 2 17 -
trunk/Source/WebCore/dom/MessagePort.cpp
r252056 r252209 99 99 , m_identifier(local) 100 100 , m_remoteIdentifier(remote) 101 , m_eventQueue(GenericEventQueue::create(*this))102 101 { 103 102 LOG(MessagePorts, "Created MessagePort %s (%p) in process %" PRIu64, m_identifier.logString().utf8().data(), this, Process::identifier().toUInt64()); … … 236 235 237 236 removeAllEventListeners(); 238 m_eventQueue->close();239 237 } 240 238 … … 278 276 return; 279 277 auto ports = MessagePort::entanglePorts(*m_scriptExecutionContext, WTFMove(message.transferredPorts)); 280 m_eventQueue->enqueueEvent(MessageEvent::create(WTFMove(ports), message.message.releaseNonNull())); 278 // Per specification, each MessagePort object has a task source called the port message queue. 279 queueTaskToDispatchEvent(*this, TaskSource::PostedMessageQueue, MessageEvent::create(WTFMove(ports), message.message.releaseNonNull())); 281 280 } 282 281 }; 283 282 284 283 MessagePortChannelProvider::fromContext(*m_scriptExecutionContext).takeAllMessagesForPort(m_identifier, WTFMove(messagesTakenHandler)); 284 } 285 286 void MessagePort::dispatchEvent(Event& event) 287 { 288 if (m_closed) 289 return; 290 291 EventTarget::dispatchEvent(event); 285 292 } 286 293 -
trunk/Source/WebCore/dom/MessagePort.h
r251425 r252209 30 30 #include "EventTarget.h" 31 31 #include "ExceptionOr.h" 32 #include "GenericEventQueue.h"33 32 #include "MessagePortChannel.h" 34 33 #include "MessagePortIdentifier.h" … … 97 96 void derefEventTarget() final { deref(); } 98 97 98 void dispatchEvent(Event&) final; 99 99 100 private: 100 101 explicit MessagePort(ScriptExecutionContext&, const MessagePortIdentifier& local, const MessagePortIdentifier& remote); … … 127 128 128 129 mutable std::atomic<unsigned> m_refCount { 1 }; 129 UniqueRef<GenericEventQueue> m_eventQueue;130 130 }; 131 131 -
trunk/Source/WebCore/dom/TaskSource.h
r252016 r252209 34 34 IdleTask, 35 35 Networking, 36 PostedMessageQueue, 36 37 UserInteraction 37 38 };
Note: See TracChangeset
for help on using the changeset viewer.