Changeset 252206 in webkit
- Timestamp:
- Nov 7, 2019 2:36:45 PM (4 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r252205 r252206 1 2019-11-07 Chris Dumez <cdumez@apple.com> 2 3 Port ServiceWorkerContainer to the HTML5 event loop 4 https://bugs.webkit.org/show_bug.cgi?id=203963 5 6 Reviewed by Ryosuke Niwa. 7 8 * workers/service/ServiceWorkerContainer.cpp: 9 (WebCore::ServiceWorkerContainer::ServiceWorkerContainer): 10 (WebCore::ServiceWorkerContainer::startMessages): 11 (WebCore::ServiceWorkerContainer::postMessage): 12 * workers/service/ServiceWorkerContainer.h: 13 1 14 2019-11-06 Ryosuke Niwa <rniwa@webkit.org> 2 15 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp
r251999 r252206 74 74 : ActiveDOMObject(context) 75 75 , m_navigator(navigator) 76 , m_messageQueue(GenericEventQueue::create(*this))77 76 { 78 77 suspendIfNeeded(); … … 80 79 // We should queue messages until the DOMContentLoaded event has fired or startMessages() has been called. 81 80 if (is<Document>(context) && downcast<Document>(*context).parsing()) 82 m_ messageQueue->setPaused(true);81 m_shouldDeferMessageEvents = true; 83 82 } 84 83 … … 315 314 void ServiceWorkerContainer::startMessages() 316 315 { 317 m_messageQueue->setPaused(false); 316 m_shouldDeferMessageEvents = false; 317 auto deferredMessageEvents = WTFMove(m_deferredMessageEvents); 318 for (auto& messageEvent : deferredMessageEvents) 319 queueTaskToDispatchEvent(*this, TaskSource::DOMManipulation, WTFMove(messageEvent)); 318 320 } 319 321 … … 405 407 406 408 auto messageEvent = MessageEvent::create(MessagePort::entanglePorts(context, WTFMove(message.transferredPorts)), message.message.releaseNonNull(), sourceOrigin, { }, WTFMove(source)); 407 408 m_messageQueue->enqueueEvent(WTFMove(messageEvent)); 409 if (m_shouldDeferMessageEvents) 410 m_deferredMessageEvents.append(WTFMove(messageEvent)); 411 else { 412 ASSERT(m_deferredMessageEvents.isEmpty()); 413 queueTaskToDispatchEvent(*this, TaskSource::DOMManipulation, WTFMove(messageEvent)); 414 } 409 415 } 410 416 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h
r252036 r252206 30 30 #include "ActiveDOMObject.h" 31 31 #include "EventTarget.h" 32 #include "GenericEventQueue.h"33 32 #include "IDLTypes.h" 34 33 #include "SWClientConnection.h" … … 143 142 uint64_t m_lastOngoingSettledRegistrationIdentifier { 0 }; 144 143 HashMap<uint64_t, ServiceWorkerRegistrationKey> m_ongoingSettledRegistrations; 145 UniqueRef<GenericEventQueue> m_messageQueue; 144 bool m_shouldDeferMessageEvents { false }; 145 Vector<Ref<Event>> m_deferredMessageEvents; 146 146 }; 147 147
Note: See TracChangeset
for help on using the changeset viewer.