Changeset 248676 in webkit
- Timestamp:
- Aug 14, 2019 10:21:15 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r248671 r248676 1 2019-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 1 16 2019-08-14 Zalan Bujtas <zalan@apple.com> 2 17 -
trunk/Source/WebCore/workers/Worker.cpp
r248668 r248676 44 44 #include <wtf/MainThread.h> 45 45 #include <wtf/NeverDestroyed.h> 46 #include <wtf/Scope.h> 46 47 47 48 namespace WebCore { … … 182 183 void Worker::notifyFinished() 183 184 { 185 auto clearLoader = makeScopeExit([this] { 186 m_scriptLoader = nullptr; 187 unsetPendingActivity(*this); 188 }); 189 184 190 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()) { 188 195 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; 194 197 } 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()); 198 203 } 199 204
Note: See TracChangeset
for help on using the changeset viewer.