Changeset 248676 in webkit


Ignore:
Timestamp:
Aug 14, 2019 10:21:15 AM (5 years ago)
Author:
youenn@apple.com
Message:

Update Worker::notifyFinished to not use emptySessionID
https://bugs.webkit.org/show_bug.cgi?id=200710

Reviewed by Alex Christensen.

No change of behavior.

Exit early if context is gone since we should not dispatch events or create worker.
Make sure to unset pending activity using a ScopeExit.

  • workers/Worker.cpp:

(WebCore::Worker::notifyFinished):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r248671 r248676  
     12019-08-14  Youenn Fablet  <youenn@apple.com>
     2
     3        Update Worker::notifyFinished to not use emptySessionID
     4        https://bugs.webkit.org/show_bug.cgi?id=200710
     5
     6        Reviewed by Alex Christensen.
     7
     8        No change of behavior.
     9
     10        Exit early if context is gone since we should not dispatch events or create worker.
     11        Make sure to unset pending activity using a ScopeExit.
     12
     13        * workers/Worker.cpp:
     14        (WebCore::Worker::notifyFinished):
     15
    1162019-08-14  Zalan Bujtas  <zalan@apple.com>
    217
  • trunk/Source/WebCore/workers/Worker.cpp

    r248668 r248676  
    4444#include <wtf/MainThread.h>
    4545#include <wtf/NeverDestroyed.h>
     46#include <wtf/Scope.h>
    4647
    4748namespace WebCore {
     
    182183void Worker::notifyFinished()
    183184{
     185    auto clearLoader = makeScopeExit([this] {
     186        m_scriptLoader = nullptr;
     187        unsetPendingActivity(*this);
     188    });
     189
    184190    auto* context = scriptExecutionContext();
    185     PAL::SessionID sessionID = context ? context->sessionID() : PAL::SessionID::emptySessionID();
    186 
    187     if (m_scriptLoader->failed() || !sessionID.isValid())
     191    if (!context)
     192        return;
     193
     194    if (m_scriptLoader->failed()) {
    188195        dispatchEvent(Event::create(eventNames().errorEvent, Event::CanBubble::No, Event::IsCancelable::Yes));
    189     else {
    190         bool isOnline = platformStrategies()->loaderStrategy()->isOnLine();
    191         const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders = m_contentSecurityPolicyResponseHeaders ? m_contentSecurityPolicyResponseHeaders.value() : scriptExecutionContext()->contentSecurityPolicy()->responseHeaders();
    192         m_contextProxy.startWorkerGlobalScope(m_scriptLoader->url(), m_name, scriptExecutionContext()->userAgent(m_scriptLoader->url()), isOnline, m_scriptLoader->script(), contentSecurityPolicyResponseHeaders, m_shouldBypassMainWorldContentSecurityPolicy, m_workerCreationTime, m_runtimeFlags, sessionID);
    193         InspectorInstrumentation::scriptImported(*scriptExecutionContext(), m_scriptLoader->identifier(), m_scriptLoader->script());
     196        return;
    194197    }
    195     m_scriptLoader = nullptr;
    196 
    197     unsetPendingActivity(*this);
     198
     199    bool isOnline = platformStrategies()->loaderStrategy()->isOnLine();
     200    const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders = m_contentSecurityPolicyResponseHeaders ? m_contentSecurityPolicyResponseHeaders.value() : context->contentSecurityPolicy()->responseHeaders();
     201    m_contextProxy.startWorkerGlobalScope(m_scriptLoader->url(), m_name, context->userAgent(m_scriptLoader->url()), isOnline, m_scriptLoader->script(), contentSecurityPolicyResponseHeaders, m_shouldBypassMainWorldContentSecurityPolicy, m_workerCreationTime, m_runtimeFlags, context->sessionID());
     202    InspectorInstrumentation::scriptImported(*context, m_scriptLoader->identifier(), m_scriptLoader->script());
    198203}
    199204
Note: See TracChangeset for help on using the changeset viewer.