Changeset 249344 in webkit


Ignore:
Timestamp:
Aug 30, 2019 1:33:44 PM (5 years ago)
Author:
Ryan Haddad
Message:

Unreviewed, rolling out r249338.

Caused 500+ layout test failures on WK1

Reverted changeset:

"Add support for postMessage buffering between the service
worker and window"
https://bugs.webkit.org/show_bug.cgi?id=201169
https://trac.webkit.org/changeset/249338

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r249339 r249344  
     12019-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
    1142019-08-30  Wenson Hsieh  <wenson_hsieh@apple.com>
    215
  • trunk/LayoutTests/TestExpectations

    r249338 r249344  
    209209imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html [ Skip ]
    210210imported/w3c/web-platform-tests/service-workers/service-worker/multipart-image.https.html [ Skip ]
     211imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https.html [ Skip ]
    211212imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html [ Skip ]
    212213imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html [ Skip ]
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r249338 r249344  
     12019-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
    1142019-08-30  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https-expected.txt

    r249338 r249344  
    11
    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.
     2Harness Error (TIMEOUT), message = null
    73
     4TIMEOUT Messages from ServiceWorker to Client only received after DOMContentLoaded event. Test timed out
     5NOTRUN Messages from ServiceWorker to Client only received after calling startMessages().
     6NOTRUN Messages from ServiceWorker to Client only received after setting onmessage.
     7NOTRUN Microtasks run before dispatching messages after calling startMessages().
     8NOTRUN 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  
     1CONSOLE MESSAGE: line 21: TypeError: null is not an object (evaluating 'errorFrame.contentDocument.querySelector("#error-url").click')
    12
    23
  • trunk/LayoutTests/resources/testharnessreport.js

    r249338 r249344  
    9999        // from the page and therefore reduce the output.
    100100        setTimeout(function () {
    101             testRunner.forceImmediateCompletion();
     101            testRunner.notifyDone();
    102102        }, 0);
    103103    });
  • trunk/Source/WebCore/ChangeLog

    r249342 r249344  
     12019-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
    1142019-08-30  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/Source/WebCore/dom/Document.cpp

    r249338 r249344  
    194194#include "SelectorQuery.h"
    195195#include "ServiceWorkerClientData.h"
    196 #include "ServiceWorkerContainer.h"
    197196#include "ServiceWorkerProvider.h"
    198197#include "Settings.h"
     
    57105709    // Parser should have picked up all speculative preloads by now
    57115710    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 #endif
    57205711}
    57215712
  • trunk/Source/WebCore/dom/ScriptExecutionContext.cpp

    r249338 r249344  
    613613}
    614614
    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     } else
    622         navigator = &downcast<WorkerGlobalScope>(*this).navigator();
    623        
    624     return navigator ? &navigator->serviceWorker() : nullptr;
    625 }
    626 
    627615bool ScriptExecutionContext::postTaskTo(const DocumentOrWorkerIdentifier& contextIdentifier, WTF::Function<void(ScriptExecutionContext&)>&& task)
    628616{
  • trunk/Source/WebCore/dom/ScriptExecutionContext.h

    r249338 r249344  
    256256
    257257    ServiceWorkerContainer* serviceWorkerContainer();
    258     ServiceWorkerContainer* ensureServiceWorkerContainer();
    259258
    260259    WEBCORE_EXPORT static bool postTaskTo(const DocumentOrWorkerIdentifier&, WTF::Function<void(ScriptExecutionContext&)>&&);
  • trunk/Source/WebCore/workers/service/SWClientConnection.cpp

    r249338 r249344  
    126126        return;
    127127
    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    });
    130132}
    131133
  • trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp

    r249338 r249344  
    6565    : ActiveDOMObject(context)
    6666    , m_navigator(navigator)
    67     , m_messageQueue(*this)
    6867{
    6968    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();
    7469}
    7570
     
    384379void ServiceWorkerContainer::startMessages()
    385380{
    386     m_messageQueue.resume();
    387381}
    388382
     
    482476
    483477    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);
    486479}
    487480
     
    591584{
    592585    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();
    603586}
    604587
     
    654637    m_pendingPromises.clear();
    655638    m_readyPromise = nullptr;
    656     m_messageQueue.close();
    657639    auto jobMap = WTFMove(m_jobMap);
    658640    for (auto& ongoingJob : jobMap.values()) {
     
    699681}
    700682
    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 messages
    704     // automatically.
    705     if (eventListener->isAttribute() && eventType == eventNames().messageEvent)
    706         startMessages();
    707 
    708     return EventTargetWithInlineData::addEventListener(eventType, WTFMove(eventListener), options);
    709 }
    710 
    711683} // namespace WebCore
    712684
  • trunk/Source/WebCore/workers/service/ServiceWorkerContainer.h

    r249338 r249344  
    3131#include "DOMPromiseProxy.h"
    3232#include "EventTarget.h"
    33 #include "GenericEventQueue.h"
    3433#include "SWClientConnection.h"
    3534#include "SWServer.h"
     
    9291
    9392private:
    94     bool addEventListener(const AtomString& eventType, Ref<EventListener>&&, const AddEventListenerOptions& = { }) final;
    95 
    9693    void scheduleJob(std::unique_ptr<ServiceWorkerJob>&&);
    9794
     
    113110    SWClientConnection& ensureSWClientConnection();
    114111
    115     // ActiveDOMObject.
    116112    const char* activeDOMObjectName() const final;
    117113    bool canSuspendForDocumentSuspension() const final;
    118     void suspend(ReasonForSuspension) final;
    119     void resume() final;
    120    
    121114    ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
    122115    EventTargetInterface eventTargetInterface() const final { return ServiceWorkerContainerEventTargetInterfaceType; }
     
    162155    uint64_t m_lastOngoingSettledRegistrationIdentifier { 0 };
    163156    HashMap<uint64_t, ServiceWorkerRegistrationKey> m_ongoingSettledRegistrations;
    164     GenericEventQueue m_messageQueue;
    165157
    166158};
Note: See TracChangeset for help on using the changeset viewer.