Changeset 249344 in webkit
- Timestamp:
- Aug 30, 2019 1:33:44 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r249339 r249344 1 2019-08-30 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r249338. 4 5 Caused 500+ layout test failures on WK1 6 7 Reverted changeset: 8 9 "Add support for postMessage buffering between the service 10 worker and window" 11 https://bugs.webkit.org/show_bug.cgi?id=201169 12 https://trac.webkit.org/changeset/249338 13 1 14 2019-08-30 Wenson Hsieh <wenson_hsieh@apple.com> 2 15 -
trunk/LayoutTests/TestExpectations
r249338 r249344 209 209 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html [ Skip ] 210 210 imported/w3c/web-platform-tests/service-workers/service-worker/multipart-image.https.html [ Skip ] 211 imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https.html [ Skip ] 211 212 imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html [ Skip ] 212 213 imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html [ Skip ] -
trunk/LayoutTests/imported/w3c/ChangeLog
r249338 r249344 1 2019-08-30 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r249338. 4 5 Caused 500+ layout test failures on WK1 6 7 Reverted changeset: 8 9 "Add support for postMessage buffering between the service 10 worker and window" 11 https://bugs.webkit.org/show_bug.cgi?id=201169 12 https://trac.webkit.org/changeset/249338 13 1 14 2019-08-30 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https-expected.txt
r249338 r249344 1 1 2 PASS Messages from ServiceWorker to Client only received after DOMContentLoaded event. 3 PASS Messages from ServiceWorker to Client only received after calling startMessages(). 4 PASS Messages from ServiceWorker to Client only received after setting onmessage. 5 PASS Microtasks run before dispatching messages after calling startMessages(). 6 PASS Microtasks run before dispatching messages after setting onmessage. 2 Harness Error (TIMEOUT), message = null 7 3 4 TIMEOUT Messages from ServiceWorker to Client only received after DOMContentLoaded event. Test timed out 5 NOTRUN Messages from ServiceWorker to Client only received after calling startMessages(). 6 NOTRUN Messages from ServiceWorker to Client only received after setting onmessage. 7 NOTRUN Microtasks run before dispatching messages after calling startMessages(). 8 NOTRUN Microtasks run before dispatching messages after setting onmessage. 9 -
trunk/LayoutTests/platform/win/http/wpt/html/semantics/text-level-semantics/the-a-element/a-download-click-404-expected.txt
r249338 r249344 1 CONSOLE MESSAGE: line 21: TypeError: null is not an object (evaluating 'errorFrame.contentDocument.querySelector("#error-url").click') 1 2 2 3 -
trunk/LayoutTests/resources/testharnessreport.js
r249338 r249344 99 99 // from the page and therefore reduce the output. 100 100 setTimeout(function () { 101 testRunner. forceImmediateCompletion();101 testRunner.notifyDone(); 102 102 }, 0); 103 103 }); -
trunk/Source/WebCore/ChangeLog
r249342 r249344 1 2019-08-30 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r249338. 4 5 Caused 500+ layout test failures on WK1 6 7 Reverted changeset: 8 9 "Add support for postMessage buffering between the service 10 worker and window" 11 https://bugs.webkit.org/show_bug.cgi?id=201169 12 https://trac.webkit.org/changeset/249338 13 1 14 2019-08-30 Alex Christensen <achristensen@webkit.org> 2 15 -
trunk/Source/WebCore/dom/Document.cpp
r249338 r249344 194 194 #include "SelectorQuery.h" 195 195 #include "ServiceWorkerClientData.h" 196 #include "ServiceWorkerContainer.h"197 196 #include "ServiceWorkerProvider.h" 198 197 #include "Settings.h" … … 5710 5709 // Parser should have picked up all speculative preloads by now 5711 5710 m_cachedResourceLoader->clearPreloads(CachedResourceLoader::ClearPreloadsMode::ClearSpeculativePreloads); 5712 5713 #if ENABLE(SERVICE_WORKER)5714 if (RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled()) {5715 // Stop queuing service worker client messages now that the DOMContentLoaded event has been fired.5716 if (auto* serviceWorkerContainer = this->serviceWorkerContainer())5717 serviceWorkerContainer->startMessages();5718 }5719 #endif5720 5711 } 5721 5712 -
trunk/Source/WebCore/dom/ScriptExecutionContext.cpp
r249338 r249344 613 613 } 614 614 615 ServiceWorkerContainer* ScriptExecutionContext::ensureServiceWorkerContainer()616 {617 NavigatorBase* navigator = nullptr;618 if (is<Document>(*this)) {619 if (auto* window = downcast<Document>(*this).domWindow())620 navigator = &window->navigator();621 } else622 navigator = &downcast<WorkerGlobalScope>(*this).navigator();623 624 return navigator ? &navigator->serviceWorker() : nullptr;625 }626 627 615 bool ScriptExecutionContext::postTaskTo(const DocumentOrWorkerIdentifier& contextIdentifier, WTF::Function<void(ScriptExecutionContext&)>&& task) 628 616 { -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r249338 r249344 256 256 257 257 ServiceWorkerContainer* serviceWorkerContainer(); 258 ServiceWorkerContainer* ensureServiceWorkerContainer();259 258 260 259 WEBCORE_EXPORT static bool postTaskTo(const DocumentOrWorkerIdentifier&, WTF::Function<void(ScriptExecutionContext&)>&&); -
trunk/Source/WebCore/workers/service/SWClientConnection.cpp
r249338 r249344 126 126 return; 127 127 128 if (auto* container = destinationDocument->ensureServiceWorkerContainer()) 129 container->postMessage(WTFMove(message), WTFMove(sourceData), WTFMove(sourceOrigin)); 128 destinationDocument->postTask([message = WTFMove(message), sourceData = WTFMove(sourceData), sourceOrigin = WTFMove(sourceOrigin)](auto& context) mutable { 129 if (auto* container = context.serviceWorkerContainer()) 130 container->postMessage(WTFMove(message), WTFMove(sourceData), WTFMove(sourceOrigin)); 131 }); 130 132 } 131 133 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp
r249338 r249344 65 65 : ActiveDOMObject(context) 66 66 , m_navigator(navigator) 67 , m_messageQueue(*this)68 67 { 69 68 suspendIfNeeded(); 70 71 // We should queue messages until the DOMContentLoaded event has fired or startMessages() has been called.72 if (is<Document>(context) && downcast<Document>(*context).parsing())73 m_messageQueue.suspend();74 69 } 75 70 … … 384 379 void ServiceWorkerContainer::startMessages() 385 380 { 386 m_messageQueue.resume();387 381 } 388 382 … … 482 476 483 477 auto messageEvent = MessageEvent::create(MessagePort::entanglePorts(context, WTFMove(message.transferredPorts)), message.message.releaseNonNull(), sourceOrigin, { }, WTFMove(source)); 484 485 m_messageQueue.enqueueEvent(WTFMove(messageEvent)); 478 dispatchEvent(messageEvent); 486 479 } 487 480 … … 591 584 { 592 585 return !hasPendingActivity(); 593 }594 595 void ServiceWorkerContainer::suspend(ReasonForSuspension)596 {597 m_messageQueue.suspend();598 }599 600 void ServiceWorkerContainer::resume()601 {602 m_messageQueue.resume();603 586 } 604 587 … … 654 637 m_pendingPromises.clear(); 655 638 m_readyPromise = nullptr; 656 m_messageQueue.close();657 639 auto jobMap = WTFMove(m_jobMap); 658 640 for (auto& ongoingJob : jobMap.values()) { … … 699 681 } 700 682 701 bool ServiceWorkerContainer::addEventListener(const AtomString& eventType, Ref<EventListener>&& eventListener, const AddEventListenerOptions& options)702 {703 // Setting the onmessage EventHandler attribute on the ServiceWorkerContainer should start the messages704 // automatically.705 if (eventListener->isAttribute() && eventType == eventNames().messageEvent)706 startMessages();707 708 return EventTargetWithInlineData::addEventListener(eventType, WTFMove(eventListener), options);709 }710 711 683 } // namespace WebCore 712 684 -
trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h
r249338 r249344 31 31 #include "DOMPromiseProxy.h" 32 32 #include "EventTarget.h" 33 #include "GenericEventQueue.h"34 33 #include "SWClientConnection.h" 35 34 #include "SWServer.h" … … 92 91 93 92 private: 94 bool addEventListener(const AtomString& eventType, Ref<EventListener>&&, const AddEventListenerOptions& = { }) final;95 96 93 void scheduleJob(std::unique_ptr<ServiceWorkerJob>&&); 97 94 … … 113 110 SWClientConnection& ensureSWClientConnection(); 114 111 115 // ActiveDOMObject.116 112 const char* activeDOMObjectName() const final; 117 113 bool canSuspendForDocumentSuspension() const final; 118 void suspend(ReasonForSuspension) final;119 void resume() final;120 121 114 ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); } 122 115 EventTargetInterface eventTargetInterface() const final { return ServiceWorkerContainerEventTargetInterfaceType; } … … 162 155 uint64_t m_lastOngoingSettledRegistrationIdentifier { 0 }; 163 156 HashMap<uint64_t, ServiceWorkerRegistrationKey> m_ongoingSettledRegistrations; 164 GenericEventQueue m_messageQueue;165 157 166 158 };
Note: See TracChangeset
for help on using the changeset viewer.