⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Aug 5, 2018:

11:43 PM Changeset in webkit [234587] by commit-queue@webkit.org
  • 4 edits in trunk

[GTK][WPE] Fetch tests assert in SubresourceLoader::didReceiveResponse()
https://bugs.webkit.org/show_bug.cgi?id=188163

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-05
Reviewed by Frédéric Wang.

Source/WebCore:

Fetch in manual redirect mode uses didReceiveResponse instead of
willSendRequestInternal, so update the ASSERT.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse):

LayoutTests:

Unskip since this will not crash in Debug anymore.

  • platform/wpe/TestExpectations:
9:37 PM Changeset in webkit [234586] by Yusuke Suzuki
  • 253 edits
    1 copy
    3 moves
    6 adds in trunk

Add support for microtasks in workers
https://bugs.webkit.org/show_bug.cgi?id=188246

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

This test is wrong[1,2]. It starts failing since our worker starts using correct microtask queues.

[1]: https://github.com/web-platform-tests/wpt/pull/8936
[2]: https://github.com/w3c/ServiceWorker/issues/1213#issuecomment-342640579

  • web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https-expected.txt:

Source/WebCore:

This patch adds the microtask mechanism to workers. To adopt the existing microtask mechanism from the main thread,
we extend JSMainThreadExecState for non-main-threads. We rename it to JSExecState, and store stacked
ExecState* data in thread local storage in ThreadGlobalData instead of a static variable s_mainThreadState.

We add MicrotaskQueue to WorkerGlobalScope since each worker has its own thread and it should have its
own microtask queue.

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMGlobalObjectTask.cpp:
  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::queueTaskToEventLoop):
Queue a microtask to MicrotaskQueue instead of posting a macrotask.

(WebCore::JSDOMWindowMicrotaskCallback::create): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::call): Deleted.
(WebCore::JSDOMWindowMicrotaskCallback::JSDOMWindowMicrotaskCallback): Deleted.
(): Deleted.
Extract JSDOMWindowMicrotaskCallback as JSMicrotaskCallback and create a new file for it.

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSExecState.cpp: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.cpp.

(WebCore::JSExecState::didLeaveScriptContext):
If we are in a main thread, we consume main thread microtask queue. If we are in worker thread,
we consume a microtask queue per worker.

(WebCore::functionCallHandlerFromAnyThread):
(WebCore::evaluateHandlerFromAnyThread):

  • bindings/js/JSExecState.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecState.h.

(WebCore::JSExecState::currentState):
(WebCore::JSExecState::call):
(WebCore::JSExecState::evaluate):
(WebCore::JSExecState::profiledCall):
(WebCore::JSExecState::profiledEvaluate):
(WebCore::JSExecState::runTask):
(WebCore::JSExecState::loadModule):
(WebCore::JSExecState::linkAndEvaluateModule):
(WebCore::JSExecState::JSExecState):
(WebCore::JSExecState::~JSExecState):
(WebCore::JSExecState::setCurrentState):
Store and load ExecState in thread local storage, ThreadGlobalData. This allows us to use it for workers.

(WebCore::JSMainThreadNullState::JSMainThreadNullState):
(WebCore::JSMainThreadNullState::~JSMainThreadNullState):
We keep this name "JSMainThreadNullState" since CustomElementReactionStack should be stick to the main thread.
And this class is only used in the main thread.

  • bindings/js/JSExecStateInstrumentation.h: Renamed from Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h.

(WebCore::JSExecState::instrumentFunctionInternal):
(WebCore::JSExecState::instrumentFunctionCall):
(WebCore::JSExecState::instrumentFunctionConstruct):

  • bindings/js/JSMicrotaskCallback.h: Copied from Source/WebKitLegacy/mac/DOM/DOMHTMLBaseElement.mm.

(WebCore::JSMicrotaskCallback::create):
(WebCore::JSMicrotaskCallback::call):
(WebCore::JSMicrotaskCallback::JSMicrotaskCallback):

  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::JSWorkerGlobalScopeBase::queueTaskToEventLoop):

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::executeFunctionInContext):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::evaluateInWorld):
(WebCore::ScriptController::loadModuleScriptInWorld):
(WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld):
(WebCore::ScriptController::canAccessFromCurrentOrigin):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::evaluate):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject evaluateWebScript:]):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::compileShader):
(WebCore::WebGLRenderingContextBase::printToConsole):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::buildAction):

  • inspector/InspectorController.cpp:
  • inspector/InspectorFrontendHost.cpp:
  • inspector/TimelineRecordFactory.cpp:

(WebCore::TimelineRecordFactory::createGenericRecord):

  • inspector/WorkerInspectorController.cpp:
  • inspector/agents/InspectorCanvasAgent.cpp:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildInitiatorObject):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

  • platform/ThreadGlobalData.h:

(WebCore::ThreadGlobalData::ThreadGlobalData::currentState const):
(WebCore::ThreadGlobalData::ThreadGlobalData::setCurrentState):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::removeMicrotaskQueue):

  • workers/WorkerGlobalScope.h:

(WebCore::WorkerGlobalScope::microtaskQueue const):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::stop):

  • workers/service/ExtendableEvent.cpp:

(WebCore::ExtendableEvent::addExtendLifetimePromise):
When dispatching an "install" event from service worker, we first create an event,
dispatch it, and set a handler which is called when a pending promise count becomes zero.
However, the old code checked pending promise count in a queued microtask. It worked
previously because microtask is actually a macrotask in the service worker. So this check
is done after a handler is set. But this patch introduces real microtask, and this check
happens before a handler is set because dispatching an event can exhaust microtask queue.
According to the spec, this check should not be done in microtask[1]. We make this checking
part as a macrotask. We note that algorithm noted as FIXMEs should be done in this
microtask while the checking part should not be done.

[1]: https://w3c.github.io/ServiceWorker/#installation-algorithm

Source/WebKit:

Rename JSMainThreadExecState.h to JSExecState.h.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeGtk.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathNSResolver.cpp:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:

Source/WebKitLegacy/mac:

Rename JSMainThreadExecState.h to JSExecState.h.

  • DOM/DOMAttr.mm:
  • DOM/DOMBlob.mm:
  • DOM/DOMCDATASection.mm:
  • DOM/DOMCSSCharsetRule.mm:
  • DOM/DOMCSSFontFaceRule.mm:
  • DOM/DOMCSSImportRule.mm:
  • DOM/DOMCSSMediaRule.mm:
  • DOM/DOMCSSPageRule.mm:
  • DOM/DOMCSSPrimitiveValue.mm:
  • DOM/DOMCSSRule.mm:
  • DOM/DOMCSSRuleList.mm:
  • DOM/DOMCSSStyleDeclaration.mm:
  • DOM/DOMCSSStyleRule.mm:
  • DOM/DOMCSSStyleSheet.mm:
  • DOM/DOMCSSUnknownRule.mm:
  • DOM/DOMCSSValue.mm:
  • DOM/DOMCSSValueList.mm:
  • DOM/DOMCharacterData.mm:
  • DOM/DOMComment.mm:
  • DOM/DOMCounter.mm:
  • DOM/DOMDocument.mm:
  • DOM/DOMDocumentFragment.mm:
  • DOM/DOMDocumentType.mm:
  • DOM/DOMElement.mm:
  • DOM/DOMEvent.mm:
  • DOM/DOMFile.mm:
  • DOM/DOMFileList.mm:
  • DOM/DOMHTML.mm:
  • DOM/DOMHTMLAnchorElement.mm:
  • DOM/DOMHTMLAppletElement.mm:
  • DOM/DOMHTMLAreaElement.mm:
  • DOM/DOMHTMLBRElement.mm:
  • DOM/DOMHTMLBaseElement.mm:
  • DOM/DOMHTMLBaseFontElement.mm:
  • DOM/DOMHTMLBodyElement.mm:
  • DOM/DOMHTMLButtonElement.mm:
  • DOM/DOMHTMLCanvasElement.mm:
  • DOM/DOMHTMLCollection.mm:
  • DOM/DOMHTMLDListElement.mm:
  • DOM/DOMHTMLDirectoryElement.mm:
  • DOM/DOMHTMLDivElement.mm:
  • DOM/DOMHTMLDocument.mm:
  • DOM/DOMHTMLElement.mm:
  • DOM/DOMHTMLEmbedElement.mm:
  • DOM/DOMHTMLFieldSetElement.mm:
  • DOM/DOMHTMLFontElement.mm:
  • DOM/DOMHTMLFormElement.mm:
  • DOM/DOMHTMLFrameElement.mm:
  • DOM/DOMHTMLFrameSetElement.mm:
  • DOM/DOMHTMLHRElement.mm:
  • DOM/DOMHTMLHeadElement.mm:
  • DOM/DOMHTMLHeadingElement.mm:
  • DOM/DOMHTMLHtmlElement.mm:
  • DOM/DOMHTMLIFrameElement.mm:
  • DOM/DOMHTMLImageElement.mm:
  • DOM/DOMHTMLInputElement.mm:
  • DOM/DOMHTMLLIElement.mm:
  • DOM/DOMHTMLLabelElement.mm:
  • DOM/DOMHTMLLegendElement.mm:
  • DOM/DOMHTMLLinkElement.mm:
  • DOM/DOMHTMLMapElement.mm:
  • DOM/DOMHTMLMarqueeElement.mm:
  • DOM/DOMHTMLMediaElement.mm:
  • DOM/DOMHTMLMenuElement.mm:
  • DOM/DOMHTMLMetaElement.mm:
  • DOM/DOMHTMLModElement.mm:
  • DOM/DOMHTMLOListElement.mm:
  • DOM/DOMHTMLObjectElement.mm:
  • DOM/DOMHTMLOptGroupElement.mm:
  • DOM/DOMHTMLOptionElement.mm:
  • DOM/DOMHTMLOptionsCollection.mm:
  • DOM/DOMHTMLParagraphElement.mm:
  • DOM/DOMHTMLParamElement.mm:
  • DOM/DOMHTMLPreElement.mm:
  • DOM/DOMHTMLQuoteElement.mm:
  • DOM/DOMHTMLScriptElement.mm:
  • DOM/DOMHTMLSelectElement.mm:
  • DOM/DOMHTMLStyleElement.mm:
  • DOM/DOMHTMLTableCaptionElement.mm:
  • DOM/DOMHTMLTableCellElement.mm:
  • DOM/DOMHTMLTableColElement.mm:
  • DOM/DOMHTMLTableElement.mm:
  • DOM/DOMHTMLTableRowElement.mm:
  • DOM/DOMHTMLTableSectionElement.mm:
  • DOM/DOMHTMLTextAreaElement.mm:
  • DOM/DOMHTMLTitleElement.mm:
  • DOM/DOMHTMLUListElement.mm:
  • DOM/DOMHTMLVideoElement.mm:
  • DOM/DOMImplementation.mm:
  • DOM/DOMKeyboardEvent.mm:
  • DOM/DOMMediaError.mm:
  • DOM/DOMMediaList.mm:
  • DOM/DOMMouseEvent.mm:
  • DOM/DOMMutationEvent.mm:
  • DOM/DOMNamedNodeMap.mm:
  • DOM/DOMNode.mm:
  • DOM/DOMNodeIterator.mm:
  • DOM/DOMNodeList.mm:
  • DOM/DOMOverflowEvent.mm:
  • DOM/DOMProcessingInstruction.mm:
  • DOM/DOMProgressEvent.mm:
  • DOM/DOMRGBColor.mm:
  • DOM/DOMRange.mm:
  • DOM/DOMRect.mm:
  • DOM/DOMStyleSheet.mm:
  • DOM/DOMStyleSheetList.mm:
  • DOM/DOMText.mm:
  • DOM/DOMTextEvent.mm:
  • DOM/DOMTimeRanges.mm:
  • DOM/DOMTokenList.mm:
  • DOM/DOMTreeWalker.mm:
  • DOM/DOMUIEvent.mm:
  • DOM/DOMWheelEvent.mm:
  • DOM/DOMXPathExpression.mm:
  • DOM/DOMXPathResult.mm:
  • DOM/ObjCEventListener.mm:

LayoutTests:

  • http/wpt/workers/microtasks.any-expected.txt: Added.
  • http/wpt/workers/microtasks.any.html: Added.
  • http/wpt/workers/microtasks.any.js: Added.

(promise_test):

  • http/wpt/workers/microtasks.any.worker-expected.txt: Added.
  • http/wpt/workers/microtasks.any.worker.html: Added.
5:44 PM Changeset in webkit [234585] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Properties set on window.customElements can disappear due to GC
https://bugs.webkit.org/show_bug.cgi?id=172575

Lexicologically sort the IDL attributes per Darin's comment.

  • dom/CustomElementRegistry.idl:
4:19 PM Changeset in webkit [234584] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] contentHeightForFormattingContextRoot uses the wrong coordinate system to compute the height.
https://bugs.webkit.org/show_bug.cgi?id=188319

Reviewed by Antti Koivisto.

Display::Box::marginBox() is in the coordinate system of the box itself (8px top margin translates to y = -8px).
What we need instead to compute the content height is the top/bottom position in the containing block's coordinate system (rect and rectWithMargin).

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::contentHeightForFormattingContextRoot):

3:10 AM Changeset in webkit [234583] by Ms2ger@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Remove unsound assertions in MediaPlayerPrivateGStreamerBase.
https://bugs.webkit.org/show_bug.cgi?id=188162

Reviewed by Philippe Normand.

These assertions sometimes fail, and there's a runtime check right
after them anyway.

Tests: fast/canvas/webgl/texImage2D-video-flipY-false.html

fast/canvas/webgl/texImage2D-video-flipY-true.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

2:26 AM Changeset in webkit [234582] by Philippe Normand
  • 15 edits
    15 adds in trunk

[MediaCapabilities] Platform integration
https://bugs.webkit.org/show_bug.cgi?id=187850

Reviewed by Eric Carlson.

Source/WebCore:

Mock platform support for the MediaCapabilities specification.

Test: media/mediacapabilities/mock-decodingInfo.html

media/mediacapabilities/mock-encodingInfo.html

  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):

  • Modules/mediacapabilities/MediaCapabilitiesInfo.h:

(WebCore::MediaCapabilitiesInfo::create):

  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • PlatformWPE.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediacapabilities/MediaEngineConfiguration.cpp: Added.

(WebCore::MediaEngineVideoConfiguration::MediaEngineVideoConfiguration):
(WebCore::MediaEngineAudioConfiguration::MediaEngineAudioConfiguration):
(WebCore::MediaEngineConfiguration::MediaEngineConfiguration):

  • platform/mediacapabilities/MediaEngineConfiguration.h: Added.

(WebCore::MediaEngineVideoConfiguration::create):
(WebCore::MediaEngineVideoConfiguration::contentType const):
(WebCore::MediaEngineVideoConfiguration::size const):
(WebCore::MediaEngineVideoConfiguration::bitrate const):
(WebCore::MediaEngineVideoConfiguration::framerate const):
(WebCore::MediaEngineAudioConfiguration::create):
(WebCore::MediaEngineAudioConfiguration::contentType const):
(WebCore::MediaEngineAudioConfiguration::channels const):
(WebCore::MediaEngineAudioConfiguration::bitrate const):
(WebCore::MediaEngineAudioConfiguration::samplerate const):
(WebCore::MediaEngineConfiguration::audioConfiguration const):
(WebCore::MediaEngineConfiguration::videoConfiguration const):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp: Added.

(WebCore::mockEnabled):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::enableMock):
(WebCore::MediaEngineConfigurationFactory::disableMock):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h: Added.
  • platform/mediacapabilities/MediaEngineDecodingConfiguration.h: Added.

(WebCore::MediaEngineDecodingConfiguration::MediaEngineDecodingConfiguration):
(WebCore::MediaEngineDecodingConfiguration::canDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::canPowerEfficientlyDecodeMedia):
(WebCore::MediaEngineDecodingConfiguration::decodingType const):

  • platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Added.

(WebCore::MediaEngineEncodingConfiguration::MediaEngineEncodingConfiguration):
(WebCore::MediaEngineEncodingConfiguration::canEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::canPowerEfficientlyEncodeMedia):
(WebCore::MediaEngineEncodingConfiguration::encodingType const):

  • platform/mock/MediaEngineDecodingConfigurationMock.cpp: Added.

(WebCore::MediaEngineDecodingConfigurationMock::canDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canSmoothlyDecodeMedia):
(WebCore::MediaEngineDecodingConfigurationMock::canPowerEfficientlyDecodeMedia):

  • platform/mock/MediaEngineDecodingConfigurationMock.h: Added.
  • platform/mock/MediaEngineEncodingConfigurationMock.cpp: Added.

(WebCore::MediaEngineEncodingConfigurationMock::canEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canSmoothlyEncodeMedia):
(WebCore::MediaEngineEncodingConfigurationMock::canPowerEfficientlyEncodeMedia):

  • platform/mock/MediaEngineEncodingConfigurationMock.h: Added.
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::enableMockMediaCapabilities):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Mock tests for the MediaCapabilities specification.

  • media/mediacapabilities/mock-decodingInfo-expected.txt: Added.
  • media/mediacapabilities/mock-decodingInfo.html: Added.
  • media/mediacapabilities/mock-encodingInfo-expected.txt: Added.
  • media/mediacapabilities/mock-encodingInfo.html: Added.
  • media/video-test.js:

(checkMediaCapabilitiesInfo):

Aug 4, 2018:

3:57 PM Changeset in webkit [234581] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Make WebCore::Timer more space-efficient
https://bugs.webkit.org/show_bug.cgi?id=187455

Reviewed by Brent Fulgham.

Steal a bit from m_heapIndex for m_wasDeleted to eliminate padding in Timer.
This reduces the size of Document, which has 8 Timers, from 3360 to 3296 bytes (saving 64 bytes).

  • platform/Timer.cpp:

(WebCore::TimerBase::TimerBase):

  • platform/Timer.h:
1:07 PM Changeset in webkit [234580] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r208953): TemplateObjectDescriptor constructor calculates m_hash on use-after-move variable
<https://webkit.org/b/188331>

Reviewed by Yusuke Suzuki.

  • runtime/TemplateObjectDescriptor.h:

(JSC::TemplateObjectDescriptor::TemplateObjectDescriptor):
Use m_rawstrings instead of rawStrings to calculate hash.

10:38 AM Changeset in webkit [234579] by Simon Fraser
  • 1 edit in trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

Sort the WebCore project file

2:02 AM Changeset in webkit [234578] by rniwa@webkit.org
  • 6 edits
    2 adds in trunk

Properties set on window.customElements can disappear due to GC
https://bugs.webkit.org/show_bug.cgi?id=172575
<rdar://problem/32440668>

Reviewed by Saam Barati.

Source/WebCore:

Fixed the bug that JS wrapper of CustomElementsRegistry can erroneously get collected during GC
by keeping it alive as long as the global object is alive.

Test: fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html

  • dom/CustomElementRegistry.cpp:

(WebCore::CustomElementRegistry::create):
(WebCore::CustomElementRegistry::CustomElementRegistry):

  • dom/CustomElementRegistry.h:

(WebCore::CustomElementRegistry): Make this inherited from ContextDestructionObserver.

  • dom/CustomElementRegistry.idl: Set GenerateIsReachable=ImplScriptExecutionContext in IDL. This will

make CustomElementRegistry reachable from the global object.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::ensureCustomElementRegistry):

LayoutTests:

Added a regression test.

  • fast/custom-elements/custom-element-registry-wrapper-should-stay-alive-expected.txt: Added.
  • fast/custom-elements/custom-element-registry-wrapper-should-stay-alive.html: Added.
Note: See TracTimeline for information about the timeline view.