Timeline



Oct 19, 2019:

4:50 PM Changeset in webkit [251328] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

Flaky Test: fast/events/resize-subframe-in-rendering-update.html
https://bugs.webkit.org/show_bug.cgi?id=203140
<rdar://problem/56415948>

Reviewed by Wenson Hsieh.

Removed the assertion in setTimeout to avoid flakiness. There isn't a way to deterministically order
callbacks of setTimeout and requestAnimationFrame for this test for now.

  • fast/events/resize-subframe-in-rendering-update-expected.txt:
  • fast/events/resize-subframe-in-rendering-update.html:
4:41 PM Changeset in webkit [251327] by Chris Dumez
  • 9 edits
    2 adds in trunk

FileReader should not prevent entering the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203106

Reviewed by Geoffrey Garen.

Source/WebCore:

FileReader should not prevent entering the back/forward cache. To support this,
its implementation now uses a SuspendableTaskQueue to dispatch events.

Test: fast/files/file-reader-back-forward-cache.html

  • dom/ActiveDOMObject.cpp:

(WebCore::ActiveDOMObject::isAllowedToRunScript const):

  • dom/ActiveDOMObject.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):

  • fileapi/FileReader.cpp:

(WebCore::FileReader::FileReader):
(WebCore::FileReader::stop):
(WebCore::FileReader::hasPendingActivity const):
(WebCore::FileReader::readInternal):
(WebCore::FileReader::abort):
(WebCore::FileReader::didStartLoading):
(WebCore::FileReader::didReceiveData):
(WebCore::FileReader::didFinishLoading):
(WebCore::FileReader::didFail):
(WebCore::FileReader::fireEvent):

  • fileapi/FileReader.h:

LayoutTests:

Add layout test coverage.

  • TestExpectations:
  • fast/files/file-reader-back-forward-cache-expected.txt: Added.
  • fast/files/file-reader-back-forward-cache.html: Added.
12:56 PM Changeset in webkit [251326] by Adrian Perez de Castro
  • 12 edits in trunk/Source

[GTK][WPE] Fix non-unified builds after r250857
https://bugs.webkit.org/show_bug.cgi?id=203145

Reviewed by Carlos Garcia Campos.

Source/WebCore:

No new tests needed.

  • Modules/async-clipboard/ClipboardItem.cpp: Add missing inclusion of the Clipboard.h header.
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: Add missing inclusion of the

ClipboardItem.h header.

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp: Add missing inclusions of

the Clipboard.h, ClipboardItem.h, and JSDOMPromiseDeferred.h headers.

  • dom/AbstractEventLoop.h: Add missing inclusion of the wtf/RefCounted.h header.
  • dom/WindowEventLoop.h: Add missing inclusion of the DocumentIdentifier.h header.
  • dom/IdleCallbackController.h: Add missing forward-declaration for the Document class.
  • dom/RadioButtonGroups.h: Add needed inclusion of of the wtf/text/AtomStringHash.h header,

needed because AtomString is used as key for a HashMap; remove the (now unneeded) of the
wtf/Forward.h header.

  • page/WheelEventTestMonitor.cpp: Add missing inclusion of the wtf/OptionSet.h header.
  • rendering/style/ShadowData.cpp: Add missing inclusion of the wtf/text/TextStream.h header.

Source/WebKit:

  • UIProcess/WebProcessProxy.cpp: Add missing inclusion of the WebBackForwardCache.h header.
11:40 AM Changeset in webkit [251325] by Simon Fraser
  • 3 edits in trunk/Source/WTF

Add support to TextStream for dumping HashMap<> and HashSet<>
https://bugs.webkit.org/show_bug.cgi?id=202969

Reviewed by Dean Jackson.

Make it possible to output HashMap<> and HashSet<> to TextStream,
so long as key and value types are streamable. Also implement operator<<(char)
so that chars show as ASCII, rather than numbers.

  • wtf/text/TextStream.cpp:

(WTF::TextStream::operator<<):

  • wtf/text/TextStream.h:

(WTF::operator<<):

8:46 AM Changeset in webkit [251324] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview/Safari Technology Preview 94

Added a tag for Safari Technology Preview release 94.

8:41 AM Changeset in webkit [251323] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/iOS 13.1.3

Added a tag for iOS 13.1.3.

1:31 AM Changeset in webkit [251322] by rniwa@webkit.org
  • 11 edits
    4 adds in trunk

Integrate media query evaluation into HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203134
<rdar://problem/56396316>

Reviewed by Antti Koivisto.

Source/WebCore:

Moved the code to call media query listeners to HTML5 event loop's step to update the rendering:
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering

Tests: fast/media/mq-inverted-colors-live-update-for-listener.html

fast/media/mq-prefers-reduced-motion-live-update-for-listener.html

  • css/MediaQueryMatcher.cpp:

(WebCore::MediaQueryMatcher::evaluateAll): Renamed from styleResolverChanged.

  • css/MediaQueryMatcher.h:
  • dom/Document.cpp:

(WebCore::Document::updateElementsAffectedByMediaQueries): Split from evaluateMediaQueryList.
This function is still called right after each layout update so that picture element may start
requesting newly selected image resources without having to wait for a rendering update.
But this function will no longer execute arbitrary scripts.
(WebCore::Document::evaluateMediaQueriesAndReportChanges): Split from evaluateMediaQueryList.
Evaluates media query listeners.

  • dom/Document.h:
  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::setEmulatedMedia): Force the evaluation of media queries for now
but this code should really be scheduling a rendering update instead so added a FIXME.

  • page/Frame.cpp:

(WebCore::Frame::setPrinting): Evaluate media queries. We should consider invoking the full
algorithm to update the rendering here. e.g. intersection observer may add more contents.

  • page/Page.cpp:

(WebCore::Page::updateRendering): Call evaluateMediaQueriesAndReportChanges.

LayoutTests:

Added tests for listening to accessiblity related media queries without having any style rules
get affected by those media queries so that we can catch any future regressions. For now,
changing accessiblity settings seem to always schedule a rendering update so there is nothing to do
when these accessibility settings do change.

  • fast/media/media-query-list-07.html: Fixed the test to be compatible with new behavior.
  • fast/media/mq-inverted-colors-live-update-for-listener-expected.txt: Added.
  • fast/media/mq-inverted-colors-live-update-for-listener.html: Added.
  • fast/media/mq-prefers-reduced-motion-live-update-for-listener-expected.txt: Added.
  • fast/media/mq-prefers-reduced-motion-live-update-for-listener.html: Added.

Oct 18, 2019:

11:31 PM Changeset in webkit [251321] by ysuzuki@apple.com
  • 8 edits
    1 add in trunk

[JSC] DFG::CommonData modification by DFG reallyAdd should be guarded by CodeBlock's lock
https://bugs.webkit.org/show_bug.cgi?id=203177

Reviewed by Mark Lam.

JSTests:

  • stress/dfg-really-add-locking.js: Added.

Source/JavaScriptCore:

When doing DFG reallyAdd, DFG::JITCode is already set in CodeBlock and DFG::CommonData can be
reachable from CodeBlock. So concurrent collector can trace entries of DFG::CommonData while DFG reallyAdd
is modifying it. It would be possible that we install DFG::JITCode after performing DFG reallyAdd, but for now,
we just protect DFG reallyAdd's DFG::CommonData modification by CodeBlock's lock so that concurrent collector
does not trace them in a racy manner.

  • dfg/DFGDesiredGlobalProperties.cpp:

(JSC::DFG::DesiredGlobalProperties::reallyAdd):

  • dfg/DFGDesiredIdentifiers.cpp:

(JSC::DFG::DesiredIdentifiers::reallyAdd):

  • dfg/DFGDesiredTransitions.cpp:

(JSC::DFG::DesiredTransition::reallyAdd):

  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):
(JSC::DFG::SymbolTableAdaptor::add):
(JSC::DFG::FunctionExecutableAdaptor::add):
(JSC::DFG::AdaptiveStructureWatchpointAdaptor::add):

  • dfg/DFGDesiredWatchpoints.h:

(JSC::DFG::SetPointerAdaptor::add):

  • dfg/DFGDesiredWeakReferences.cpp:

(JSC::DFG::DesiredWeakReferences::reallyAdd):

10:48 PM Changeset in webkit [251320] by timothy_horton@apple.com
  • 11 edits
    2 adds in trunk/Source

macCatalyst: Cursor should send mouse events, not touch events
https://bugs.webkit.org/show_bug.cgi?id=203175
<rdar://problem/56321134>

Reviewed by Simon Fraser.

Source/WebCore:

  • dom/Element.cpp:

(WebCore::shouldIgnoreMouseEvent):
(WebCore::Element::dispatchMouseEvent):

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::reset):
Share more code between platforms that support touch events and platforms that don't;
we want to be able to dispatch pointer events that originate from mouse events
in macCatalyst despite touch events being enabled (by virtue of being iOS WebKit),
so un-ifdef that code.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:
  • Shared/NativeWebMouseEvent.h:
  • Shared/ios/NativeWebMouseEventIOS.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
Add a NativeWebMouseEvent constructor that doesn't actually wrap a native event,
for creating totally-synthetic events.

  • UIProcess/ios/WKMouseGestureRecognizer.h: Added.
  • UIProcess/ios/WKMouseGestureRecognizer.mm: Added.

(webEventModifiersForUIKeyModifierFlags):
(-[WKMouseGestureRecognizer initWithTarget:action:]):
(-[WKMouseGestureRecognizer setView:]):
(-[WKMouseGestureRecognizer lastMouseEvent]):
(-[WKMouseGestureRecognizer lastMouseLocation]):
(-[WKMouseGestureRecognizer mouseTouch]):
(-[WKMouseGestureRecognizer _wantsHoverEvents]):
(-[WKMouseGestureRecognizer reset]):
(-[WKMouseGestureRecognizer _shouldReceiveTouch:forEvent:recognizerView:]):
(-[WKMouseGestureRecognizer _shouldReceivePress:]):
(-[WKMouseGestureRecognizer createMouseEventWithType:]):
(-[WKMouseGestureRecognizer touchesBegan:withEvent:]):
(-[WKMouseGestureRecognizer touchesMoved:withEvent:]):
(-[WKMouseGestureRecognizer touchesEnded:withEvent:]):
(-[WKMouseGestureRecognizer touchesCancelled:withEvent:]):
(-[WKMouseGestureRecognizer _hoverEntered:withEvent:]):
(-[WKMouseGestureRecognizer _hoverMoved:withEvent:]):
(-[WKMouseGestureRecognizer _hoverExited:withEvent:]):
(-[WKMouseGestureRecognizer _hoverCancelled:withEvent:]):
(-[WKMouseGestureRecognizer locationInView:]):
(-[WKMouseGestureRecognizer canPreventGestureRecognizer:]):
(-[WKMouseGestureRecognizer canBePreventedByGestureRecognizer:]):
Instead of just using UIHoverGestureRecognizer, introduce a new gesture
recognizer that does what it did, but also supports cases where the button
is pressed (so, mousedown and mouseup instead of just mousemove),
and synthesizes mouse events for all state transitions. These events
should look roughly identical to what a non-macCatalyst app would get
in AppKit's mouseUp/mouseDown/mouseMoved NSResponder methods.

  • SourcesCocoa.txt:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView _showShareSheet:inRect:completionHandler:]):
(-[WKContentView _mouseGestureRecognizerChanged:]):
(webEventFlagsForUIKeyModifierFlags): Deleted.
(-[WKContentView _hoverGestureRecognizerChanged:]): Deleted.

  • WebKit.xcodeproj/project.pbxproj:

Make use of WKMouseGestureRecognizer to plumb the synthesized events directly
to the macOS-style "handleMouseEvent" codepath, instead of going through
the touch events path (and then subsequently generating synthetic clicks).
Also, ensure that other gesture recognizers ignore the mouse "touch" entirely
by returning NO in shouldReceiveTouch.

7:28 PM Changeset in webkit [251319] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Make it possible to query scrollbar pseudo-style without having a scrollbar
https://bugs.webkit.org/show_bug.cgi?id=203174

Reviewed by Tim Horton.

A future patch needs the ability to query scrollbar pseudo-style without having
a scrollbar, and it was ugly to pass a live RenderScrollbar into CSS style resolution
functions. Instead, pass in a pure-data object that has information about the scrollbar.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ruleMatches):

  • css/SelectorChecker.h:
  • css/SelectorCheckerTestFunctions.h:

(WebCore::scrollbarMatchesEnabledPseudoClass):
(WebCore::scrollbarMatchesDisabledPseudoClass):
(WebCore::scrollbarMatchesHoverPseudoClass):
(WebCore::scrollbarMatchesActivePseudoClass):
(WebCore::scrollbarMatchesHorizontalPseudoClass):
(WebCore::scrollbarMatchesVerticalPseudoClass):
(WebCore::scrollbarMatchesDecrementPseudoClass):
(WebCore::scrollbarMatchesIncrementPseudoClass):
(WebCore::scrollbarMatchesStartPseudoClass):
(WebCore::scrollbarMatchesEndPseudoClass):
(WebCore::scrollbarMatchesDoubleButtonPseudoClass):
(WebCore::scrollbarMatchesSingleButtonPseudoClass):
(WebCore::scrollbarMatchesNoButtonPseudoClass):
(WebCore::scrollbarMatchesCornerPresentPseudoClass):

  • css/StyleResolver.h:

(WebCore::PseudoStyleRequest::PseudoStyleRequest):

  • rendering/RenderScrollbar.cpp:

(WebCore::RenderScrollbar::getScrollbarPseudoStyle):

6:18 PM Changeset in webkit [251318] by commit-queue@webkit.org
  • 118 edits
    7 deletes in trunk

[SVG2]: Remove the SVGExternalResourcesRequired interface
https://bugs.webkit.org/show_bug.cgi?id=191293

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-10-18
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/svg/import/types-dom-04-b-manual.svg:

Use the preserveAlpha property of <feConvolveMatrix> element to test
SVGAnimatedBoolean.

Source/WebCore:

The spec page is: https://www.w3.org/TR/SVG/changes.html.

r251290 made externalResourcesRequired have no effect on firing the load
event. All the control was moved to SVGURIReference. This patch will remove
this interface entirely to conform with SVG2 specs and other browsers.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::SVGAElement):
(WebCore::SVGAElement::parseAttribute):
(WebCore::SVGAElement::svgAttributeChanged):

  • svg/SVGAElement.h:
  • svg/SVGAElement.idl:
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::SVGAnimationElement):
(WebCore::SVGAnimationElement::isSupportedAttribute):
(WebCore::SVGAnimationElement::parseAttribute):

  • svg/SVGAnimationElement.h:
  • svg/SVGAnimationElement.idl:
  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::SVGCircleElement):
(WebCore::SVGCircleElement::parseAttribute):
(WebCore::SVGCircleElement::svgAttributeChanged):

  • svg/SVGCircleElement.h:
  • svg/SVGCircleElement.idl:
  • svg/SVGClipPathElement.cpp:

(WebCore::SVGClipPathElement::SVGClipPathElement):
(WebCore::SVGClipPathElement::parseAttribute):
(WebCore::SVGClipPathElement::svgAttributeChanged):

  • svg/SVGClipPathElement.h:
  • svg/SVGClipPathElement.idl:
  • svg/SVGCursorElement.cpp:

(WebCore::SVGCursorElement::SVGCursorElement):
(WebCore::SVGCursorElement::parseAttribute):

  • svg/SVGCursorElement.h:
  • svg/SVGCursorElement.idl:
  • svg/SVGDefsElement.cpp:

(WebCore::SVGDefsElement::SVGDefsElement):

  • svg/SVGDefsElement.h:
  • svg/SVGDefsElement.idl:
  • svg/SVGEllipseElement.cpp:

(WebCore::SVGEllipseElement::SVGEllipseElement):
(WebCore::SVGEllipseElement::parseAttribute):
(WebCore::SVGEllipseElement::svgAttributeChanged):

  • svg/SVGEllipseElement.h:
  • svg/SVGEllipseElement.idl:
  • svg/SVGExternalResourcesRequired.cpp: Removed.
  • svg/SVGExternalResourcesRequired.h: Removed.
  • svg/SVGExternalResourcesRequired.idl: Removed.
  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::SVGFEImageElement):
(WebCore::SVGFEImageElement::parseAttribute):

  • svg/SVGFEImageElement.h:
  • svg/SVGFEImageElement.idl:
  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::SVGFilterElement):
(WebCore::SVGFilterElement::parseAttribute):
(WebCore::SVGFilterElement::svgAttributeChanged):

  • svg/SVGFilterElement.h:
  • svg/SVGFilterElement.idl:
  • svg/SVGFontElement.cpp:

(WebCore::SVGFontElement::SVGFontElement):

  • svg/SVGFontElement.h:
  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::SVGForeignObjectElement):
(WebCore::SVGForeignObjectElement::parseAttribute):
(WebCore::SVGForeignObjectElement::svgAttributeChanged):

  • svg/SVGForeignObjectElement.h:
  • svg/SVGForeignObjectElement.idl:
  • svg/SVGGElement.cpp:

(WebCore::SVGGElement::SVGGElement):
(WebCore::SVGGElement::parseAttribute): Deleted.
(WebCore::SVGGElement::svgAttributeChanged): Deleted.

  • svg/SVGGElement.h:
  • svg/SVGGElement.idl:
  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::parseAttribute):

  • svg/SVGGradientElement.h:
  • svg/SVGGradientElement.idl:
  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::SVGImageElement):
(WebCore::SVGImageElement::parseAttribute):
(WebCore::SVGImageElement::svgAttributeChanged):

  • svg/SVGImageElement.h:
  • svg/SVGImageElement.idl:
  • svg/SVGLineElement.cpp:

(WebCore::SVGLineElement::SVGLineElement):
(WebCore::SVGLineElement::parseAttribute):
(WebCore::SVGLineElement::svgAttributeChanged):

  • svg/SVGLineElement.h:
  • svg/SVGLineElement.idl:
  • svg/SVGMPathElement.cpp:

(WebCore::SVGMPathElement::SVGMPathElement):
(WebCore::SVGMPathElement::parseAttribute):
(WebCore::SVGMPathElement::svgAttributeChanged):

  • svg/SVGMPathElement.h:
  • svg/SVGMPathElement.idl:
  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::SVGMarkerElement):
(WebCore::SVGMarkerElement::parseAttribute):
(WebCore::SVGMarkerElement::svgAttributeChanged):

  • svg/SVGMarkerElement.h:
  • svg/SVGMarkerElement.idl:
  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::SVGMaskElement):
(WebCore::SVGMaskElement::parseAttribute):
(WebCore::SVGMaskElement::svgAttributeChanged):

  • svg/SVGMaskElement.h:
  • svg/SVGMaskElement.idl:
  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::SVGPathElement):
(WebCore::SVGPathElement::parseAttribute):
(WebCore::SVGPathElement::svgAttributeChanged):

  • svg/SVGPathElement.h:
  • svg/SVGPathElement.idl:
  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):

  • svg/SVGPatternElement.h:
  • svg/SVGPatternElement.idl:
  • svg/SVGPolyElement.cpp:

(WebCore::SVGPolyElement::SVGPolyElement):
(WebCore::SVGPolyElement::parseAttribute):
(WebCore::SVGPolyElement::svgAttributeChanged):

  • svg/SVGPolyElement.h:
  • svg/SVGPolygonElement.idl:
  • svg/SVGPolylineElement.idl:
  • svg/SVGRectElement.cpp:

(WebCore::SVGRectElement::SVGRectElement):
(WebCore::SVGRectElement::parseAttribute):
(WebCore::SVGRectElement::svgAttributeChanged):

  • svg/SVGRectElement.h:
  • svg/SVGRectElement.idl:
  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::SVGSVGElement):
(WebCore::SVGSVGElement::parseAttribute):
(WebCore::SVGSVGElement::svgAttributeChanged):

  • svg/SVGSVGElement.h:
  • svg/SVGSVGElement.idl:
  • svg/SVGScriptElement.cpp:

(WebCore::SVGScriptElement::SVGScriptElement):
(WebCore::SVGScriptElement::parseAttribute):
(WebCore::SVGScriptElement::svgAttributeChanged):

  • svg/SVGScriptElement.h:
  • svg/SVGScriptElement.idl:
  • svg/SVGSwitchElement.cpp:

(WebCore::SVGSwitchElement::SVGSwitchElement):

  • svg/SVGSwitchElement.h:
  • svg/SVGSwitchElement.idl:
  • svg/SVGSymbolElement.cpp:

(WebCore::SVGSymbolElement::SVGSymbolElement):
(WebCore::SVGSymbolElement::parseAttribute):
(WebCore::SVGSymbolElement::svgAttributeChanged): Deleted.

  • svg/SVGSymbolElement.h:
  • svg/SVGSymbolElement.idl:
  • svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::SVGTextContentElement):
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::svgAttributeChanged):

  • svg/SVGTextContentElement.h:
  • svg/SVGTextContentElement.idl:
  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::parseAttribute):
(WebCore::SVGUseElement::svgAttributeChanged):

  • svg/SVGUseElement.h:
  • svg/SVGUseElement.idl:
  • svg/SVGViewElement.cpp:

(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):
(WebCore::SVGViewElement::svgAttributeChanged):

  • svg/SVGViewElement.h:
  • svg/SVGViewElement.idl:

LayoutTests:

  • platform/gtk/TestExpectations:

The script-change-externalResourcesRequired-while-loading.svg has to be
removed and it was flaky on all platforms.

  • platform/gtk/imported/w3c/web-platform-tests/svg/import/types-dom-04-b-manual-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
  • platform/ios-simulator/imported/w3c/web-platform-tests/svg/import/types-dom-04-b-manual-expected.txt:
  • platform/ios/TestExpectations:
  • platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/svg/import/types-dom-04-b-manual-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
  • platform/win/TestExpectations:
  • platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/svg/import/types-dom-04-b-manual-expected.txt:
  • platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
  • svg/W3C-SVG-1.1-SE/types-dom-04-b.svg:

Use the preserveAlpha property of <feConvolveMatrix> element to test
SVGAnimatedBoolean.

  • svg/animations/animate-externalResourcesRequired-no-load-event-expected.txt: Removed.
  • svg/animations/animate-externalResourcesRequired-no-load-event.html: Removed.
  • svg/custom/path-domsubtreemodified-crash.html:
  • svg/dom/SVGAnimatedBoolean-expected.txt:
  • svg/dom/SVGAnimatedBoolean.html:

Use the preserveAlpha property of <feConvolveMatrix> element to test
SVGAnimatedBoolean.

  • svg/dom/SVGScriptElement/script-change-externalResourcesRequired-while-loading-expected.txt: Removed.
  • svg/dom/SVGScriptElement/script-change-externalResourcesRequired-while-loading.svg: Removed.
  • svg/dom/SVGScriptElement/script-load-and-error-events.svg:
  • svg/dom/SVGScriptElement/script-onerror-bubbling.svg:
  • svg/dom/SVGScriptElement/script-reexecution.svg:
  • svg/dynamic-updates/SVGUseElement-dom-href1-attr.html:
6:02 PM Changeset in webkit [251317] by jiewen_tan@apple.com
  • 22 edits
    1 copy
    1 move
    1 add in trunk

[WebAuthn] Warn users when no credentials are found
https://bugs.webkit.org/show_bug.cgi?id=203147
<rdar://problem/55931123>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch returns _WKWebAuthenticationPanelUpdateNoCredentialsFound to client via
-[_WKWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:] when either
CtapAuthenticator receives kCtap2ErrNoCredentials or U2fAuthenticator exhausts the
allow list.

This patch also enhances CtapAuthenticator::tryDowngrade to check if the CTAP command
can be converted to U2F commands to ensure kCtap2ErrNoCredentials is returned if it
is the case. Otherwise, after downgrading, U2fAuthenticator will return NotSupportedError
given it can't convert the commands.

  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/APIWebAuthenticationPanelClient.h:

(API::WebAuthenticationPanelClient::updatePanel const):

  • UIProcess/WebAuthentication/Authenticator.h:
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::authenticatorStatusUpdated):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient):
(WebKit::wkWebAuthenticationPanelUpdate):
(WebKit::WebAuthenticationPanelClient::updatePanel const):

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h: Renamed from Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationPanelFlags.h.
  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
(WebKit::CtapAuthenticator::tryDowngrade):

  • UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:

(WebKit::U2fAuthenticator::issueSignCommand):

  • WebKit.xcodeproj/project.pbxproj:

Tools:

Adds new tests for _WKWebAuthenticationPanelUpdateNoCredentialsFound.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-cancel.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-no-credentials.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-nfc.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-u2f-no-credentials.html: Added.

LayoutTests:

Adds new tests for CtapAuthenticator::tryDowngrade enhancement.

  • http/wpt/webauthn/public-key-credential-get-failure-hid.https-expected.txt:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https.html:
5:47 PM Changeset in webkit [251316] by Wenson Hsieh
  • 17 edits in trunk

[Clipboard API] Refactor Pasteboard::read() to take an optional item index
https://bugs.webkit.org/show_bug.cgi?id=203161

Reviewed by Tim Horton.

Source/WebCore:

Adds an optional itemIndex argument to Pasteboard::read(PasteboardPlainText&) and
Pasteboard::read(PasteboardWebContentReader&, WebContentReadingPolicy). See below for more details.

Tests: CopyHTML.ItemTypesWhenCopyingWebContent

PasteWebArchive.WebArchiveTypeIdentifier

  • editing/mac/EditorMac.mm:

(WebCore::Editor::dataSelectionForPasteboard):

Recognize "com.apple.webarchive" alongside "Apple Web Archive pasteboard type" when writing and reading from the
platform pasteboard on macOS. We add support for this here because the existing private type cannot be written
to an NSPasteboardItem, since it does not conform to a valid UTI format. Luckily, there already exists a UTI
that represents a web archive, so we can use it instead.

We need to write and read web archive data from NSPasteboardItem in order to support the case where there are
multiple items in the pasteboard that contain different web archive data.

  • platform/Pasteboard.h:
  • platform/StaticPasteboard.h:
  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::read):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):

Read the string from itemIndex if specified; otherwise, fall back to index 0. This could actually be fixed in
the future to scan all pasteboard items for a suitable string instead of falling back on the first item, but for
now, we maintain the existing behavior.

(WebCore::Pasteboard::readRespectingUTIFidelities):

If an itemIndex is specified, ignore all other item indices when looking for suitable content.

  • platform/libwpe/PasteboardLibWPE.cpp:

(WebCore::Pasteboard::read):

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::containsCompatibleContent const):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::write):
(WebCore::readStringAtPreferredItemIndex):
(WebCore::readBufferAtPreferredItemIndex):

Add helper methods to read strings and buffers from the pasteboard, at an optional itemIndex if specified.

(WebCore::Pasteboard::read):

Adopt the helper functions when reading plain text and web content, and respect the given itemIndex. To do
this, we need to read both legacy and modern types from the pasteboard, instead of just legacy types. This is
because NSPasteboardItem on macOS only accepts and provides data in the form of modern pasteboard types.

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):
(WebCore::PlatformPasteboard::readBuffer const):
(WebCore::PlatformPasteboard::readString const):

Fix these methods to accept platform pasteboard types instead of MIME types, to match the behavior of existing
readBuffer and readString methods in PlatformPasteboardIOS.

  • platform/win/PasteboardWin.cpp:

(WebCore::Pasteboard::read):

Source/WebKit:

  • Shared/mac/PasteboardTypes.mm:

(WebKit::PasteboardTypes::forEditing):
(WebKit::PasteboardTypes::forSelection):

Support "com.apple.webarchive" alongside the private "Apple Web Archive pasteboard type".

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setPromisedDataForImage):

Tools:

Add a couple of new API tests to verify that the web archive type identifier ("com.apple.webarchive") is (1)
written to the pasteboard when copying a rich text selection, and (2) is read when attempting to paste web
content.

  • TestWebKitAPI/Tests/WebKitCocoa/CopyHTML.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm:
5:44 PM Changeset in webkit [251315] by Devin Rousso
  • 11 edits in trunk/Source/WebCore

[ASAN] Fix WebGPU tests after r250258
https://bugs.webkit.org/show_bug.cgi?id=203133
<rdar://problem/56379008>

Reviewed by Joseph Pecoraro.

  • platform/graphics/gpu/GPUObjectBase.h:

(WebCore::GPUObjectBase::~GPUObjectBase): Added.
Add a default virtual destructor since this class class is the one that is RefCounted and
the WebGPUPipeline subclass is virtual.

  • Modules/webgpu/WebGPUPipeline.h:

(WebCore::WebGPUPipeline::scriptExecutionContext const): Deleted.

  • Modules/webgpu/WebGPUPipeline.cpp:

(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::contextDestroyed): Added.
Make WebGPUPipeline a subclass of ContextDestructionObserver so that the raw pointer to
the associated ScriptExecutionContext is properly cleared and isn't UAFd.

  • Modules/webgpu/WebGPUComputePipeline.h:
  • Modules/webgpu/WebGPUComputePipeline.cpp:

(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
(WebCore::WebGPUComputePipeline::cloneShaderModules):
(WebCore::WebGPUComputePipeline::recompile):

  • Modules/webgpu/WebGPURenderPipeline.h:
  • Modules/webgpu/WebGPURenderPipeline.cpp:

(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
(WebCore::WebGPURenderPipeline::cloneShaderModules):
(WebCore::WebGPURenderPipeline::recompile):

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createRenderPipeline):
(WebCore::WebGPUDevice::createComputePipeline):
Rework how Web Inspector preserves related shader modules so that there isn't as much wasted
space in the class layout, as we can use the RefPtr itself instead of an Optional.

  • Modules/webgpu/WebGPUBuffer.idl:

Now that GPUObjectBase has a virtual destructor, it has a vtable, which means that this
object also does and therefore cannot be marked with ImplementationLacksVTable.

  • inspector/InspectorShaderProgram.cpp:

(WebCore::shaderForType):
(WebCore::InspectorShaderProgram::requestShaderSource):
(WebCore::InspectorShaderProgram::updateShader):
(WebCore::InspectorShaderProgram::buildObjectForShaderProgram):

5:41 PM Changeset in webkit [251314] by russell_e@apple.com
  • 2 edits in trunk/LayoutTests

[ Mac Debug WK1 ] REGRESSION (r251262?): fast/scrolling/latching/scroll-select-bottom-test.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=203176

Unreviewed Test Gardening.

  • platform/mac-wk1/TestExpectations:
4:58 PM Changeset in webkit [251313] by russell_e@apple.com
  • 2 edits in trunk/LayoutTests

[ Mac WK1 ] REGRESSION (r251261): Layout Test inspector/console/webcore-logging.html is consistently Failing
https://bugs.webkit.org/show_bug.cgi?id=203173

Unreviewed Test Gardening.

  • platform/mac-wk1/TestExpectations:
4:55 PM Changeset in webkit [251312] by Jonathan Bedard
  • 5 edits in trunk/Tools

Python 3: Add support in webkitpy.common.watchlist
https://bugs.webkit.org/show_bug.cgi?id=202473

Reviewed by Dewei Zhu.

  • Scripts/test-webkitpy-python3: Add webkitpy.common.watchlist.
  • Scripts/webkitpy/common/watchlist/watchlist.py:

(WatchList.find_matching_definitions): Use items instead of iteritems.

  • Scripts/webkitpy/common/watchlist/watchlist_unittest.py:

(WatchListTest.test_filename_definition_no_matches): Back-slash needs to be escaped.
(WatchListTest.test_filename_definition): Ditto.
(WatchListTest.test_cc_rules_simple): Ditto.
(WatchListTest.test_cc_rules_complex): Ditto.
(WatchListTest.test_cc_and_message_rules_complex): Ditto.
(WatchListTest.test_cc_and_message_rules_no_matches): Ditto.
(WatchListTest.test_more_and_less_match): Ditto.
(WatchListTest.test_complex_match): Ditto.

  • Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:

(WatchListParserTest.test_bad_definition): Back-slash needs to be escaped.
(WatchListParserTest.test_bad_filename_regex): Ditto.
(WatchListParserTest.test_bad_more_regex): Ditto.
(WatchListParserTest.test_bad_match_type): Ditto.
(WatchListParserTest.test_match_type_typo): Ditto.
(WatchListParserTest.test_empty_cc_rule): Ditto.
(WatchListParserTest.test_cc_rule_with_invalid_email): Ditto.
(WatchListParserTest.test_cc_rule_with_secondary_email): Ditto.
(WatchListParserTest.test_empty_message_rule): Ditto.
(WatchListParserTest.test_unused_defintion): Ditto.
(WatchListParserTest.test_cc_rule_with_undefined_defintion_with_suggestion): Ditto.

4:46 PM Changeset in webkit [251311] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Layout Test inspector/layers/layers-for-node.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=203171

unreviewed test gardening

  • platform/mac/TestExpectations:
4:42 PM Changeset in webkit [251310] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Remove myself from the CMake watchlist
https://bugs.webkit.org/show_bug.cgi?id=203166

Patch by Raphael Kubo da Costa <rakuco@webkit.org> on 2019-10-18
Reviewed by Aakash Jain.

  • Scripts/webkitpy/common/config/watchlist:
4:36 PM Changeset in webkit [251309] by rniwa@webkit.org
  • 4 edits in trunk

[iOS] REGRESSION(r251269): fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html and fast/events/ios/rotation/layout-viewport-during-safari-type-rotation.html fail
https://bugs.webkit.org/show_bug.cgi?id=203162
<rdar://problem/56418459>

Reviewed by Simon Fraser.

Source/WebKit:

Synchronously update the rendering before the orientation change and other viewport size updates.

Otherwise, resize event will be dispatched in the middle of orientation animation,
and would result in non-determistic results.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):

LayoutTests:

Rebaselined the test now that the order of execution of orientationchange and resize events have changed.

  • fast/events/ios/rotation/layout-viewport-during-safari-type-rotation-expected.txt:
4:34 PM Changeset in webkit [251308] by rniwa@webkit.org
  • 4 edits
    1 add in trunk/Source/WebCore

Refactor AbstractEventLoop out of WindowEventLoop
https://bugs.webkit.org/show_bug.cgi?id=203136
<rdar://problem/56396749>

Reviewed by Antti Koivisto.

Extract AbstractEventLoop out of WindowEventLoop as a preparation for adding WorkerEventLoop.

Also replaced m_activeTaskCount with a boolean m_isScheduledToRun since it doesn't need to count.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/AbstractEventLoop.cpp: Added.
  • dom/AbstractEventLoop.h: Added.

(WebCore::AbstractEventLoop): Added.

  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::WindowEventLoop): Deleted. Use the default constructor in the header instead.
(WebCore::WindowEventLoop::queueTask):
(WebCore::WindowEventLoop::suspend):
(WebCore::WindowEventLoop::resume):
(WebCore::WindowEventLoop::scheduleToRunIfNeeded): Extracted out of queueTask.
(WebCore::WindowEventLoop::run):

  • dom/WindowEventLoop.h:
4:32 PM Changeset in webkit [251307] by ysuzuki@apple.com
  • 4 edits in trunk/Source

[JSC] Make ConcurrentJSLock Lock even if ENABLE_CONCURRENT_JS=OFF
https://bugs.webkit.org/show_bug.cgi?id=202892

Reviewed by Mark Lam.

Source/JavaScriptCore:

We are using ConcurrentJSLock to guard data structure against concurrent compilers.
But these data structures should be guarded by GC concurrent collector, so we are using this ConcurrentJSLock
to guard them against concurrent collector too.
The problem is that ENABLE(CONCURRENT_JS) relies on ENABLE(DFG_JIT). If we configure JSC with the options like,

ENABLE_DFG_JIT 0
ENABLE_FTL_JIT 0

Then, the built JSC becomes

ENABLE_CONCURRENT_JS 0
But, Concurrent GC is enabled.

This is wrong due to several reasons.

  1. Baseline JIT can produce JIT related data structures that are traced by concurrent collector. In the above options, these data structures are not guarded by lock.
  2. Baseline JIT also has concurrent JIT compiler. But ENABLE_CONCURRENT_JS does not reflect this.

In this patch, we fix two things.

  1. We should make ConcurrentJSLock always Lock. In 64bit environment we are supporting actively (including watchOS ARM64_32), we are enabling ENABLE(JIT) regardless of we are actually using JIT. So, anyway, this is already a Lock. Flipping these bits does not matter in 32bit architectures since they do not have concurrent compilers anyway. This makes things simpler: it is always a Lock. And concurrent collector can use it.
  2. We should make ENABLE(CONCURRENT_JS) ON when ENABLE(JIT) is true, to reflect the fact that Baseline JIT has concurrent compiler.
  • runtime/ConcurrentJSLock.h:

(JSC::ConcurrentJSLocker::ConcurrentJSLocker):

Source/WTF:

BaselineJIT also has concurrent compiler. ENABLE(CONCURRENT_JS) should not rely on ENABLE(DFG_JIT).
It should rely on ENABLE(JIT) instead.

  • wtf/Platform.h:
3:54 PM Changeset in webkit [251306] by Devin Rousso
  • 16 edits
    2 adds in trunk

Web Inspector: Elements: allow WebKit engineers to edit UserAgent shadow trees
https://bugs.webkit.org/show_bug.cgi?id=203159

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add setAllowEditingUserAgentShadowTrees command.

Source/WebCore:

Test: inspector/dom/setAllowEditingUserAgentShadowTrees.html

  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::assertEditableNode):
(WebCore::InspectorDOMAgent::setInspectedNode):
(WebCore::InspectorDOMAgent::setAllowEditingUserAgentShadowTrees): Added.

Source/WebInspectorUI:

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.initializeTarget):
(WI.DOMManager.supportsEditingUserAgentShadowTrees): Added.

  • UserInterface/Models/CSSStyleDeclaration.js:

(WI.CSSStyleDeclaration.prototype.get editable):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForDOMNode):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype.get editable):
(WI.DOMTreeElement.prototype._startEditingTarget):
(WI.DOMTreeElement.prototype.populateDOMNodeContextMenu):

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel):
(WI.GeneralStyleDetailsSidebarPanel.prototype._showPanel):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleNodeChanged): Added.

  • UserInterface/Views/StyleDetailsPanel.js:

(WI.StyleDetailsPanel.prototype.get supportsNewRule): Added.
(WI.StyleDetailsPanel.prototype.markAsNeedsRefresh):
(WI.StyleDetailsPanel.prototype.refresh):

  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:

(WI.SpreadsheetRulesStyleDetailsPanel.prototype.get supportsNewRule): Added.
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonClicked):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.newRuleButtonContextMenu):
Don't show the "Add Rule" button if the selected node is inside a UserAgent shadow tree.

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createEngineeringSettingsView):

LayoutTests:

  • inspector/dom/setAllowEditingUserAgentShadowTrees.html: Added.
  • inspector/dom/setAllowEditingUserAgentShadowTrees-expected.txt: Added.
3:45 PM Changeset in webkit [251305] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Document::m_closeAfterStyleRecalc is unnecessary
https://bugs.webkit.org/show_bug.cgi?id=203143

Reviewed by Antti Koivisto.

Removed the code to defer implicit close until the style recalc is done
since we call FrameLoader::checkCompleted asynchronously via a timer these days.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle):
(WebCore::Document::implicitClose):

  • dom/Document.h:
3:45 PM Changeset in webkit [251304] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

[iOS] "Unexpectedly Resumed" process assertion may cause us to get terminated
https://bugs.webkit.org/show_bug.cgi?id=203046
<rdar://problem/56179592>

Reviewed by Geoffrey Garen.

This patch implements the following to avoid getting terminated:

  1. Schedule the task to release the assertion on a background thread instead of the main thread so that we end up releasing the task even if the main thread is somehow hung.
  2. Add an invalidation handler to the process assertion which releases the assertion upon expiration.
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::processDidResume):

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::processTaskStateDidChange):

3:29 PM Changeset in webkit [251303] by dino@apple.com
  • 10 edits
    2 adds in trunk

texImage2D for a half-float texture only accepts null
https://bugs.webkit.org/show_bug.cgi?id=169999
<rdar://problem/31713571>

Reviewed by Simon Fraser.

Source/WebCore:

After we initially implemented this, the extension was
modified such that texImage2D could upload to half-float
from a Uint16 array.

Test: fast/canvas/webgl/oes-texture-half-float-uint16.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::validateArrayBufferType): Accept
Uint16.

LayoutTests:

Add a new test, and update the expected results of existing tests.

  • fast/canvas/webgl/oes-texture-half-float-uint16-expected.txt: Added.
  • fast/canvas/webgl/oes-texture-half-float-uint16.html: Added.
  • webgl/2.0.0/conformance/extensions/oes-texture-half-float-expected.txt:
  • webgl/2.0.0/conformance2/extensions/ext-color-buffer-float-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-new-formats-expected.txt:
3:27 PM Changeset in webkit [251302] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: $0 is shown for the wrong node when selecting elements in a user agent shadow tree
https://bugs.webkit.org/show_bug.cgi?id=203155

Reviewed by Matt Baker.

Rather than naively using the last selected node (from WI.TreeOutline), we should wait
to see if the inspected page's DOM agent allows the selected node to be used as the
inspected node, and if so then to show the $0.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.setInspectedNode):

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView):

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype._handleInspectedNodeChanged): Added.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li.inspected-node > span::after): Added.
(.tree-outline.dom:focus li.inspected-node.selected > span::after): Added.
(.tree-outline.dom.show-last-selected li.last-selected > span::after): Deleted.
(.tree-outline.dom.show-last-selected:focus li.last-selected > span::after): Deleted.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):

3:23 PM Changeset in webkit [251301] by dbates@webkit.org
  • 2 edits in trunk/LayoutTests

fast/events/ios/forward-delete-in-editable.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=203049
<rdar://problem/52969457>

Reviewed by Wenson Hsieh.

Now that <rdar://problem/45772078> is fixed we can write the test such that we check the test
result after we receive a DOM key up for the forward delete. Currently the test makes use of a
workaround that incorrectly assumes that the keyboard will call back into WebKit to perform the
forward deletion before the web process blur()s the field. This is not guaranteed to happen.
Instead wait until we receive a DOM key up for the delete key.

  • fast/events/ios/forward-delete-in-editable.html:
3:21 PM Changeset in webkit [251300] by dbates@webkit.org
  • 2 edits in trunk/LayoutTests

Layout Test http/tests/security/contentSecurityPolicy/iframe-allowed-when-loaded-via-javascript-url.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=202481
<rdar://problem/55916200>

Reviewed by Youenn Fablet.

Have the iframe's document call testRunner.notifyDone() instead of assuming that the document will
be loaded by the next turn of the event loop.

  • http/tests/security/contentSecurityPolicy/iframe-allowed-when-loaded-via-javascript-url.html:
3:16 PM Changeset in webkit [251299] by dbates@webkit.org
  • 4 edits in trunk

REGRESSION (r241747): [iOS] Adjust default SVG focus ring width to match width for HTML documents
https://bugs.webkit.org/show_bug.cgi?id=203011

Reviewed by Wenson Hsieh.

Source/WebCore:

Update default user agent stylesheet for SVG documents (i.e. .svg resources) to use the same 3px
outline width for focused elements as we do for HTML documents.

This makes the test imported/blink/svg/custom/focus-ring-2.svg pass on iOS.

  • css/svg.css:

LayoutTests:

Remove the test imported/blink/svg/custom/focus-ring-2.svg now that it passes, again.

  • platform/ios/TestExpectations:
3:00 PM Changeset in webkit [251298] by jer.noble@apple.com
  • 21 edits
    3 copies
    3 moves
    4 adds
    1 delete in trunk

Add experimental HDR MediaCapabilities support.
https://bugs.webkit.org/show_bug.cgi?id=203113

Reviewed by Eric Carlson.

Source/WebCore:

Tests: media/mediacapabilities/mock-decodingInfo-hdr.html

platform/mac/media/mediacapabilities/hevc-decodingInfo-hdr.html

Add support for MediaCapabilities.decodeInfo() HDR support detection.

Add new enum IDL types to MediaCapabilities and remove old unused ones. Add
mock implementation for HDR detection. Add Cocoa platform implementation.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediacapabilities/ColorGamut.idl:
  • Modules/mediacapabilities/HdrMetadataType.idl:
  • Modules/mediacapabilities/ScreenLuminance.h:
  • Modules/mediacapabilities/TransferFunction.idl:
  • Modules/mediacapabilities/VideoConfiguration.idl:
  • Scripts/GenerateSettings.rb:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/CodeGenerator.pm:

(WK_ucfirst):

  • bindings/scripts/CodeGeneratorJS.pm:

(ToMethodName):

  • page/Settings.yaml:
  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:

(WebCore::createMediaPlayerDecodingConfigurationCocoa):

  • platform/mediacapabilities/ColorGamut.h:
  • platform/mediacapabilities/HdrMetadataType.h:
  • platform/mediacapabilities/TransferFunction.h:
  • platform/mediacapabilities/VideoConfiguration.h:
  • platform/mock/MediaEngineConfigurationFactoryMock.cpp:

(WebCore::canDecodeMedia):
(WebCore::canEncodeMedia):

Source/WebKit:

Add experimental hdrMediaCapabilitiesEnabled preference.

  • Shared/WebPreferences.yaml:

LayoutTests:

  • media/mediacapabilities/mock-decodingInfo-alphaChannel-expected.txt:
  • media/mediacapabilities/mock-decodingInfo-hdr-expected.txt: Added.
  • media/mediacapabilities/mock-decodingInfo-hdr.html: Added.
  • platform/mac/media/mediacapabilities/hevc-decodingInfo-hdr-expected.txt: Added.
  • platform/mac/media/mediacapabilities/hevc-decodingInfo-hdr.html: Added.
2:33 PM Changeset in webkit [251297] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r251254): Elements: forced pseudo-class indicator isn't visible for selected nodes
https://bugs.webkit.org/show_bug.cgi?id=203158

Reviewed by Matt Baker.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li > :not(.selection-area)): Added.
(.tree-outline.dom li > span): Deleted.

2:30 PM Changeset in webkit [251296] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, remove an extraneous header import after r251279

Address a post-landing review comment.

  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:
1:55 PM Changeset in webkit [251295] by jiewen_tan@apple.com
  • 58 edits
    3 copies
    2 deletes in trunk

[WebAuthn] Implement AuthenticatorCancel
https://bugs.webkit.org/show_bug.cgi?id=191523
<rdar://problem/55920204>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by new tests in existing test files.

  • Modules/credentialmanagement/CredentialsContainer.cpp:

(WebCore::CredentialsContainer::get):
(WebCore::CredentialsContainer::isCreate):

  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):

  • Modules/webauthn/AuthenticatorCoordinator.h:
  • Modules/webauthn/AuthenticatorCoordinatorClient.cpp: Removed.
  • Modules/webauthn/AuthenticatorCoordinatorClient.h:
  • Modules/webauthn/PublicKeyCredential.cpp:

(WebCore::PublicKeyCredential::tryCreate):

  • Modules/webauthn/PublicKeyCredential.h:
  • Modules/webauthn/PublicKeyCredentialData.h:
  • Modules/webauthn/fido/DeviceRequestConverter.h:
  • Modules/webauthn/fido/FidoHidMessage.cpp:

(fido::FidoHidMessage::FidoHidMessage):

  • Modules/webauthn/fido/FidoHidPacket.cpp:

(fido::FidoHidInitPacket::getSerializedData const):
(fido::FidoHidContinuationPacket::getSerializedData const):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • testing/MockWebAuthenticationConfiguration.h:

(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::encode const):
(WebCore::MockWebAuthenticationConfiguration::HidConfiguration::decode):

  • testing/MockWebAuthenticationConfiguration.idl:

Adds a new option to test AuthenticatorCancel.

Source/WebKit:

This patch implement two ways to cancel a pending WebAuthn ceremony:
1) Via navigation activities. Activities include i) main frame navigation, ii) main frame reload,
iii) main frame destruction, iv) sub frame navigation, and v) sub frame destruction. All the above
activities will cancel any pending WebAuthn ceremony that is associated with the frame. To prove
the association, a GlobalFrameIdentifier is bridged into WebAuthenticationRequestData. Navigation
cancel is done in WebPageProxy::didStartProvisionalLoadForFrameShared, and destruction cancel is done
in WebProcessProxy::didDestroyFrame and WebPageProxy::resetState.
2) Via UI. This path is simply bridged -[_WKWebAuthenticationPanel cancel] into AuthenticatorManager.
Noted, this patch follows the spec to wait until time out to notify RPs.
References: i) Step 20 of https://www.w3.org/TR/webauthn/#createCredential, ii) Step 18 of
https://www.w3.org/TR/webauthn/#getAssertion

As for what the cancel actually does, it:
1) stops any HID/NFC scanning;
2) sends CTAPHID_CANCEL to any HID authenticators that have been added. Reference:
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#usb-hid-cancel
Sending CTAPHID_CANCEL, however, is not trivial. An abstract class FidoAuthenticator is crafted to
do this labor for both CtapAuthenticator and U2fAuthenticator during the time of destructions.
Noted: The CtapHidDriver is the only CtapDriver implements the cancel method. Since the message
is sent during state reset, lifecycle of the HidConenction and HidService which manage the underlying
IOHIDDeviceRef is very hard to hold. This is required for the regular async sender. Therefore,
HidConnection::sendSync is crafted to send the message synchronously to get rid of the tediousness
of managing those lifecycles.

P.S. Vector::grow doesn't initialize POD types. Therefore, this patch also appends it with memset
for FidoHidPacket.

P.S.S. This patch also simplifies AuthenticatorCoordinatorClient by: i) moving code from AuthenticatorCoordinatorClient
to WebAuthenticatorCoordinatorClient, and ii) using sendWithAsyncReply. The latter allows us to
get rid of the complex mechanism of ensuring the right reply is returned.

  • DerivedSources.make:
  • Sources.txt:
  • UIProcess/API/APIWebAuthenticationPanel.cpp:

(API::WebAuthenticationPanel::create):
(API::WebAuthenticationPanel::WebAuthenticationPanel):
(API::WebAuthenticationPanel::cancel const):

  • UIProcess/API/APIWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(-[_WKWebAuthenticationPanel cancel]):

  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::cancelRequest):
(WebKit::AuthenticatorManager::clearState):
(WebKit::AuthenticatorManager::runPanel):
(WebKit::AuthenticatorManager::resetState):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/HidConnection.h:

(WebKit::HidConnection::isInitialized const):
(WebKit::HidConnection::setIsInitialized):

  • UIProcess/WebAuthentication/Cocoa/HidConnection.mm:

(WebKit::HidConnection::~HidConnection):
(WebKit::HidConnection::initialize):
(WebKit::HidConnection::terminate):
(WebKit::HidConnection::sendSync):
(WebKit::HidConnection::send):
(WebKit::HidConnection::registerDataReceivedCallback):

  • UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:

(WebKit::MockHidConnection::initialize):
(WebKit::MockHidConnection::terminate):
(WebKit::MockHidConnection::sendSync):
(WebKit::MockHidConnection::send):
(WebKit::MockHidConnection::feedReports):

  • UIProcess/WebAuthentication/Mock/MockHidConnection.h:
  • UIProcess/WebAuthentication/WebAuthenticationRequestData.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:

(WebKit::WebAuthenticatorCoordinatorProxy::makeCredential):
(WebKit::WebAuthenticatorCoordinatorProxy::getAssertion):
(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):
(WebKit::WebAuthenticatorCoordinatorProxy::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebAuthenticatorCoordinatorProxy::requestReply): Deleted.

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::CtapAuthenticator):
(WebKit::CtapAuthenticator::makeCredential):
(WebKit::CtapAuthenticator::getAssertion):
(WebKit::CtapAuthenticator::tryDowngrade):

  • UIProcess/WebAuthentication/fido/CtapAuthenticator.h:
  • UIProcess/WebAuthentication/fido/CtapDriver.h:

(WebKit::CtapDriver::cancel):

  • UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:

(WebKit::CtapHidDriver::Worker::write):
(WebKit::CtapHidDriver::Worker::read):
(WebKit::CtapHidDriver::Worker::returnMessage):
(WebKit::CtapHidDriver::Worker::reset):
(WebKit::CtapHidDriver::Worker::cancel):
(WebKit::CtapHidDriver::continueAfterChannelAllocated):
(WebKit::CtapHidDriver::continueAfterResponseReceived):
(WebKit::CtapHidDriver::returnResponse):
(WebKit::CtapHidDriver::reset):
(WebKit::CtapHidDriver::cancel):

  • UIProcess/WebAuthentication/fido/CtapHidDriver.h:
  • UIProcess/WebAuthentication/fido/FidoAuthenticator.cpp: Copied from Source/WebKit/UIProcess/API/APIWebAuthenticationPanel.cpp.

(WebKit::FidoAuthenticator::FidoAuthenticator):
(WebKit::FidoAuthenticator::~FidoAuthenticator):
(WebKit::FidoAuthenticator::driver const):
(WebKit::FidoAuthenticator::releaseDriver):

  • UIProcess/WebAuthentication/fido/FidoAuthenticator.h: Copied from Source/WebKit/UIProcess/API/APIWebAuthenticationPanel.cpp.
  • UIProcess/WebAuthentication/fido/FidoService.cpp:

(WebKit::FidoService::continueAfterGetInfo):

  • UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:

(WebKit::U2fAuthenticator::U2fAuthenticator):
(WebKit::U2fAuthenticator::issueCommand):

  • UIProcess/WebAuthentication/fido/U2fAuthenticator.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::resetState):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didDestroyFrame):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebAuthenticatorCoordinator::WebAuthenticatorCoordinator):
(WebKit::WebAuthenticatorCoordinator::makeCredential):
(WebKit::WebAuthenticatorCoordinator::getAssertion):
(WebKit::WebAuthenticatorCoordinator::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebAuthenticatorCoordinator::~WebAuthenticatorCoordinator): Deleted.

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.h:
  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.messages.in: Removed.
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::fromCoreFrame):

  • WebProcess/WebPage/WebFrame.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelUIDelegate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid-cancel.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-nfc.html:
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion.html:

LayoutTests:

Modified one of the error message that is no longer emitted.

  • http/wpt/webauthn/public-key-credential-create-failure.https.html:
  • http/wpt/webauthn/public-key-credential-create-success-hid.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure.https.html:
  • http/wpt/webauthn/public-key-credential-get-success-hid.https.html:
12:44 PM Changeset in webkit [251294] by rniwa@webkit.org
  • 3 edits in trunk/LayoutTests

Flaky Test: fast/events/resize-subframe-in-rendering-update.html
https://bugs.webkit.org/show_bug.cgi?id=203140

Reviewed by Simon Fraser.

The flakiness was caused by the race condition between rAF and setTimeout. In many cases,
setTimeout was getting scheduled after the next rAF and prevented some assertions to run in time.

Fixed the flakiness by moving setTimeout to outside the setTimeout in which tests run so that
those assertions would always run.

Rebaselined the test since these assertions in setTimeout are now always included in the results.

  • fast/events/resize-subframe-in-rendering-update-expected.txt:
  • fast/events/resize-subframe-in-rendering-update.html:
12:18 PM Changeset in webkit [251293] by BJ Burg
  • 2 edits in trunk/Tools

Cleanup: Stop setting -ApplePersistenceIgnoreState when running debug Mac WebKit
https://bugs.webkit.org/show_bug.cgi?id=203156

Reviewed by Jonathan Bedard.

This is no longer needed. The new value has been supported since 2014.

  • Scripts/webkitdirs.pm:

(argumentsForRunAndDebugMacWebKitApp):

11:54 AM Changeset in webkit [251292] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Add TextStream dumping for BasicShape types
https://bugs.webkit.org/show_bug.cgi?id=203150

Reviewed by Zalan Bujtas.

Add dumping for the classes, and make the BasicShape enum an enum class.

  • css/BasicShapeFunctions.cpp:

(WebCore::valueForBasicShape):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createShape):

  • rendering/style/BasicShapes.cpp:

(WebCore::BasicShapeCircle::dump const):
(WebCore::BasicShapeEllipse::dump const):
(WebCore::BasicShapePolygon::dump const):
(WebCore::BasicShapePath::dump const):
(WebCore::BasicShapeInset::dump const):
(WebCore::operator<<):

  • rendering/style/BasicShapes.h:

(WebCore::BasicShapeCenterCoordinate::BasicShapeCenterCoordinate):

11:46 AM Changeset in webkit [251291] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

ElementRuleCollector function signature cleanups
https://bugs.webkit.org/show_bug.cgi?id=203153
<rdar://problem/56412684>

Unreviewed followup.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::transferMatchedRules):

Try to appease MSVC.

11:29 AM Changeset in webkit [251290] by commit-queue@webkit.org
  • 28 edits
    4 adds
    12 deletes in trunk

Load event must be fired only for the SVG structurally external elements and the outermost SVG element
https://bugs.webkit.org/show_bug.cgi?id=203044

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-10-18
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto-expected.txt:

The timeout issues are now fixed. webkit.org/b/202013 will fix the other
failures.

  • web-platform-tests/svg/images/20x20.png: Added.

Add an image which is referenced by these tests:

web-platform-tests/svg/import/styling-pres-02-f-manual.svg
web-platform-tests/svg/import/struct-use-01-t-manual.svg
web-platform-tests/svg/import/interact-events-02-b-manual.svg

  • web-platform-tests/svg/linking/scripted/href-script-element-expected.txt:

Source/WebCore:

The SVG1.1 spec for SVGLoad event is:

https://www.w3.org/TR/SVG11/interact.html

The SVG2 spec for the load event is:

https://www.w3.org/TR/SVG/changes.html#interact
https://www.w3.org/TR/SVG/interact.html

SVG2 removes the SVGExternalResourcesRequired interface. It also simplifies
the rules for firing the load event and made them consistent with the HTML
specs. The plan is to remove SVGExternalResourcesRequired in a following
patch. This patch makes SVGExternalResourcesRequired have no effect on the
load event firing rules. It moves all the functionalities to SVGURIReference
as a step towards removing the SVGExternalResourcesRequired interface.

Test: svg/custom/image-load-event.html

  • dom/Document.cpp:

(WebCore::Document::implicitClose):
Do not use the SVGLoad term. It has been removed from the specs.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::ScriptElement):

  • dom/ScriptElement.h:

(WebCore::ScriptElement::errorOccurred const):
(WebCore::ScriptElement::setErrorOccurred):
Add a method to track the occurrence of loading error. errorOccurred()

haveFiredLoadEvent() means no pending loading activity.
  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::dispatchLoadEventToOutermostSVGElements):
(WebCore::SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements): Deleted.

  • svg/SVGDocumentExtensions.h:

Do not use the SVGLoad term.

  • svg/SVGElement.cpp:

(WebCore::SVGElement::sendLoadEventIfPossible):
(WebCore::SVGElement::loadEventTimerFired):
(WebCore::SVGElement::loadEventTimer):
(WebCore::SVGElement::finishParsingChildren):
(WebCore::SVGElement::sendSVGLoadEventIfPossible): Deleted.
(WebCore::SVGElement::sendSVGLoadEventIfPossibleAsynchronously): Deleted.
(WebCore::SVGElement::svgLoadEventTimerFired): Deleted.
(WebCore::SVGElement::svgLoadEventTimer): Deleted.

  • svg/SVGElement.h:

finishParsingChildren() won't fire 'load' event anymore. The 'load' event
will be fired explicitly for the outermost SVG element from Document::implicitClose().

  • svg/SVGExternalResourcesRequired.cpp:

(WebCore::SVGExternalResourcesRequired::svgAttributeChanged):
(WebCore::SVGExternalResourcesRequired::dispatchLoadEvent): Deleted.
(WebCore::SVGExternalResourcesRequired::insertedIntoDocument): Deleted.
(WebCore::SVGExternalResourcesRequired::finishParsingChildren): Deleted.
(WebCore::SVGExternalResourcesRequired::haveLoadedRequiredResources const): Deleted.

  • svg/SVGExternalResourcesRequired.h:

(WebCore::SVGExternalResourcesRequired::setHaveFiredLoadEvent): Deleted.
(WebCore::SVGExternalResourcesRequired::isParserInserted const): Deleted.
(WebCore::SVGExternalResourcesRequired::haveFiredLoadEvent const): Deleted.

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::haveLoadedRequiredResources):

  • svg/SVGImageLoader.cpp:

(WebCore::SVGImageLoader::dispatchLoadEvent):
The value of externalResourcesRequired() no longer controls firing the
'load' event.

  • svg/SVGScriptElement.cpp:

(WebCore::SVGScriptElement::SVGScriptElement):
(WebCore::SVGScriptElement::insertedIntoAncestor):
(WebCore::SVGScriptElement::dispatchErrorEvent):
(WebCore::SVGScriptElement::finishParsingChildren): Deleted.

  • svg/SVGScriptElement.h:

dispatchErrorEvent() is now a virtual function. Let SVGScriptElement
overrides it so it can track when the loader finishes its activity.

  • svg/SVGStyleElement.cpp:

(WebCore::SVGStyleElement::SVGStyleElement):

  • svg/SVGStyleElement.h:
  • svg/SVGURIReference.cpp:

(WebCore::SVGURIReference::contextElement const):
(WebCore::SVGURIReference::parseAttribute):
(WebCore::SVGURIReference::haveLoadedRequiredResources const):
(WebCore::SVGURIReference::dispatchLoadEvent):

  • svg/SVGURIReference.h:

(WebCore::SVGURIReference::haveFiredLoadEvent const):
(WebCore::SVGURIReference::setHaveFiredLoadEvent):
(WebCore::SVGURIReference::errorOccurred const):
(WebCore::SVGURIReference::setErrorOccurred):
SVGURIReference will decide whether the 'load' event can be fired or not.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::SVGUseElement):
(WebCore::SVGUseElement::insertedIntoAncestor):
(WebCore::SVGUseElement::notifyFinished):
(WebCore::SVGUseElement::finishParsingChildren): Deleted.
(WebCore::SVGUseElement::isValid const): Deleted.
(WebCore::SVGUseElement::haveLoadedRequiredResources): Deleted.
(WebCore::SVGUseElement::setHaveFiredLoadEvent): Deleted.
(WebCore::SVGUseElement::haveFiredLoadEvent const): Deleted.
(WebCore::SVGUseElement::svgLoadEventTimer): Deleted.

  • svg/SVGUseElement.h:

SVGUseElement needs to track firing the load event or error occurrence
the same way SVGImageElement and SVGScriptElement do.

LayoutTests:

  • fast/dom/crash-moving-subtree-between-documents.html:
  • fast/dom/focus-style-resolution.html:
  • fast/html/marquee-reparent-check.html:

The SVGElement element should not fire "load" event. Set the HTML <body>
element's "onload" event handler to be the function which was set to the
SVGElement's "onload" event handler.

  • svg/custom/image-load-event-expected.html: Added.
  • svg/custom/image-load-event.html: Added.

Images with external resources or data URIs must fire load events once
the data is loaded or decoded.

  • svg/custom/loadevents-async-expected.txt: Removed.
  • svg/custom/loadevents-async.html: Removed.
  • svg/custom/loadevents-capturing-expected.txt: Removed.
  • svg/custom/loadevents-capturing.svg: Removed.
  • svg/custom/loadevents-externalresourcesrequired-displaynone-expected.txt: Removed.
  • svg/custom/loadevents-externalresourcesrequired-displaynone.svg: Removed.
  • svg/custom/loadevents-externalresourcesrequired-expected.txt: Removed.
  • svg/custom/loadevents-externalresourcesrequired.svg: Removed.
  • svg/custom/loadevents-normal-displaynone-expected.txt: Removed.
  • svg/custom/loadevents-normal-displaynone.svg: Removed.
  • svg/custom/loadevents-normal-expected.txt: Removed.
  • svg/custom/loadevents-normal.svg: Removed.

These tests were implementing the SVG1.1 SVGLoad event interactivity:
https://www.w3.org/TR/SVG11/interact.html where every SVG element had to
fire the SVGLoad event once it parsed its closing tag. SVG structurally
external elements were firing load events when the corresponding external
resources had finished loading but only if externalResourcesRequired = true.

  • svg/dom/SVGScriptElement/script-load-and-error-events.svg:

This test had two wrong assumptions:
1) The SVG structurally external element fires a load event when parsing
the children finishes. Then they may fire another load or error event if
externalResourcesRequired = true.
2) The outermost SVG element will not fire its load event unless all the
children fires their load events correctly.

11:08 AM Changeset in webkit [251289] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

ElementRuleCollector function signature cleanups
https://bugs.webkit.org/show_bug.cgi?id=203153

Reviewed by Zalan Bujtas.

Many functions in ElementRuleCollector take repetitive arguments that can be removed:

  • Make includeEmptyRules argument a class member
  • Remove RuleRange argument, update the ranges in rule transfer step.
  • css/ElementRuleCollector.cpp:

(WebCore::MatchRequest::MatchRequest):
(WebCore::ElementRuleCollector::addMatchedRule):
(WebCore::ElementRuleCollector::collectMatchingRules):
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):
(WebCore::ElementRuleCollector::transferMatchedRules):
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchesAnyAuthorRules):
(WebCore::ElementRuleCollector::collectMatchingAuthorRules):
(WebCore::ElementRuleCollector::matchAuthorShadowPseudoElementRules):
(WebCore::ElementRuleCollector::matchHostPseudoClassRules):
(WebCore::ElementRuleCollector::matchSlottedPseudoElementRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRules):
(WebCore::ElementRuleCollector::matchPartPseudoElementRulesForScope):
(WebCore::ElementRuleCollector::collectMatchingShadowPseudoElementRules):
(WebCore::ElementRuleCollector::collectSlottedPseudoElementRulesForSlot):
(WebCore::ElementRuleCollector::matchUserRules):
(WebCore::ElementRuleCollector::matchUARules):
(WebCore::ElementRuleCollector::collectMatchingRulesForList):
(WebCore::ElementRuleCollector::matchAllRules):
(WebCore::ElementRuleCollector::hasAnyMatchingRules):

  • css/ElementRuleCollector.h:

(WebCore::ElementRuleCollector::setIncludeEmptyRules):
(WebCore::ElementRuleCollector::transferMatchedRules):

Range update happens now here based on the supplied argument.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):

10:35 AM Changeset in webkit [251288] by russell_e@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r251262): Layout Test scrollingcoordinator/ios/non-stable-viewport-scroll.html is a Flaky Failure
https://bugs.webkit.org/show_bug.cgi?id=203157

Unreviewed Test Gardening.

  • platform/ios-simulator-wk2/TestExpectations: Marked

scrollingcoordinator/ios/non-stable-viewport-scroll.html as flaky

9:58 AM Changeset in webkit [251287] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[iOS] Layout Test http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html is frequently failing or timing out (198185)
https://bugs.webkit.org/show_bug.cgi?id=198185
<rdar://problem/51074251>

Patch by Kate Cheney <Kate Cheney> on 2019-10-18
Reviewed by Youenn Fablet.

Fixes a flaky failure caused by test results being checked before data
records have finished processing. This patch uses a callback to
ensure data processing has finished before continuing.

  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:
  • platform/ios-wk2/TestExpectations:
9:28 AM Changeset in webkit [251286] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: Layout Test webgl/many-contexts.html is a flaky timeout on Mojave
https://bugs.webkit.org/show_bug.cgi?id=198867

Unreviewed test gardening

  • platform/mac/TestExpectations:
9:20 AM Changeset in webkit [251285] by Antti Koivisto
  • 9 edits in trunk

[CSS Shadow Parts] :part rules should be able to override style attribute
https://bugs.webkit.org/show_bug.cgi?id=202919

Reviewed by Zalan Bujtas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-shadow-parts/simple-inline-expected.txt:

Source/WebCore:

Element inline style was simply appended to the matching declaration list and not sorted with the rest of the author style.
This used to work because before CSS Shadow Parts feature inline style would always win.

Fixing this involves refactoring the rule collection code to remove this assumption.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::addMatchedRule):

Both initialize and update ranges here.

(WebCore::ElementRuleCollector::clearMatchedRules):
(WebCore::ElementRuleCollector::addElementStyleProperties):

Both initialize and update ranges here.

(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):

Split out transfering to a separate function.

(WebCore::ElementRuleCollector::transferMatchedRules):

Add a parameter to limit transfer to rules from a scope.

(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchesAnyAuthorRules):

Replace hasMatchedRules() with a more specific function. This can use collectMatchingAuthorRules and avoids unnecessary sorting step.

(WebCore::ElementRuleCollector::collectMatchingAuthorRules):

Split out collecting the rules from matchAuthorRules. Like other collect functions, this doesn't do any sorting.

(WebCore::ElementRuleCollector::matchAllRules):

Add element inline style before transfering rules from the containing host scope.

(WebCore::ElementRuleCollector::addElementInlineStyleProperties):

Factor adding inline style into a function.

9:14 AM Changeset in webkit [251284] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Include horizontal spacing when checking for the extra horizontal space
https://bugs.webkit.org/show_bug.cgi?id=203154
<rdar://problem/56408032>

Reviewed by Antti Koivisto.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):

9:12 AM Changeset in webkit [251283] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Fix table's total horizontal spacing computation
https://bugs.webkit.org/show_bug.cgi?id=203151
<rdar://problem/56406930>

Reviewed by Antti Koivisto.

The horizontal spacing value sets the gaps between

  1. first column and the left edge of the table's content box
  2. between 2 columns
  3. last column and the right edge of the table's content box

In case of 'n' columns, the number of gaps is 'n + 1'.

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::totalHorizontalSpacing const):

9:11 AM Changeset in webkit [251282] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][TFC] Cache table's width constraint values.
https://bugs.webkit.org/show_bug.cgi?id=203135
<rdar://problem/56396352>

Reviewed by Antti Koivisto.

This patch ensures that when computedIntrinsicWidthConstraints is called from both the preferred width and the actual layout codepaths during a layout frame, we don't
end up building up the grid twice.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):

  • layout/tableformatting/TableGrid.cpp:

(WebCore::Layout::TableGrid::widthConstraints):
(WebCore::Layout::TableGrid::widthConstraints const): Deleted.

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::hasComputedWidthConstraints const):

9:09 AM Changeset in webkit [251281] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][BFC] TableFormattingContext::computedIntrinsicWidthConstraints should not expect a valid containing block's width
https://bugs.webkit.org/show_bug.cgi?id=203131
<rdar://problem/56394676>

Reviewed by Antti Koivisto.

When TableFormattingContext::computedIntrinsicWidthConstraints is called by the preferred width computation (<div style="float: left"><table>)
the containing block's width is not yet set (it gets computed based on the preferred width) so computedIntrinsicWidthConstraints should not be relying
on it. Let's move that logic out to TableFormattingContext::layoutInFlowContent() where it belongs.

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraHorizontalSpace):
(WebCore::Layout::TableFormattingContext::computedTableWidth): Deleted.
(WebCore::Layout::TableFormattingContext::distributeExtraHorizontalSpace): Deleted.

  • layout/tableformatting/TableFormattingContext.h:
7:54 AM Changeset in webkit [251280] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Fix block level formatting root inflow box height computation
https://bugs.webkit.org/show_bug.cgi?id=203085
<rdar://problem/56372306>

Reviewed by Antti Koivisto.

Section 10.6.7 (https://www.w3.org/TR/CSS22/visudet.html#root-height) defines the height computation for block level formatting context roots.
We already use it for floats, out-of-flow and block level boxes when overflow computes to not "visible".
This patch makes generic in-flow non-replaced BFC roots (e.g. principal block container box for <table>) compute their heights according to 10.6.7.

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

7:24 AM Changeset in webkit [251279] by Wenson Hsieh
  • 27 edits
    1 copy
    6 adds in trunk

[Clipboard API] Support navigator.clipboard.read()
https://bugs.webkit.org/show_bug.cgi?id=203021

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline a web platform test, now that Clipboard.read() no longer immediately rejects.

  • web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https-expected.txt:

Source/WebCore:

Add support for navigator.clipboard.read(), which returns a promise that resolves to a list of ClipboardItems.
See below for more details.

Tests: editing/async-clipboard/clipboard-change-data-while-reading.html

editing/async-clipboard/clipboard-read-basic.html

  • Modules/async-clipboard/Clipboard.cpp:

(WebCore::Clipboard::read):

Implement read(). This makes two calls to the platform pasteboard: the first to get the current change count,
and if the change count is different from the changeCount used for the last read() call (or there are no
existing clipboard items being tracked), then we request pasteboard item information for all items on the
pasteboard, and use this information to create new clipboard items. Otherwise, if the changeCount is still valid
for the current list of clipboard items, simply return these clipboard items.

If the changeCount ends up being different in between the initial changeCount request and when the pasteboard
item information is received, we immediately bail with a NotAllowedError. The new layout test
clipboard-change-data-while-reading.html exercises this scenario.

(WebCore::Clipboard::getType):
(WebCore::Clipboard::frame const):

  • Modules/async-clipboard/Clipboard.h:
  • Modules/async-clipboard/ClipboardItem.cpp:

(WebCore::ClipboardItem::blobFromString):
(WebCore::ClipboardItem::ClipboardItem):
(WebCore::ClipboardItem::create):
(WebCore::ClipboardItem::navigator):

Refactor this so that each clipboard item itself has a WeakPtr to its Navigator. This avoids having to follow
the weak pointer to the Clipboard to get to the Clipboard's navigator during garbage collection when computing
reachability from opaque roots, since this may happen on a background (GC) thread.

(WebCore::ClipboardItem::clipboard):

  • Modules/async-clipboard/ClipboardItem.h:
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::ClipboardItemBindingsDataSource::getType):
(WebCore::blobFromString): Deleted.

Move this to ClipboardItem, and make it a static method.

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp:

(WebCore::ClipboardItemPasteboardDataSource::ClipboardItemPasteboardDataSource):
(WebCore::ClipboardItemPasteboardDataSource::getType):

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.h:

Move a couple of member variables (index and changeCount) out of ClipboardItem. Instead of having each
ClipboardItem keep track of this information, have the Clipboard that owns the ClipboardItem keep this
information. This means that reading data from ClipboardItem will (in a future patch) work by having the item
ask its Clipboard object to read data on its behalf.

  • platform/Pasteboard.cpp:

(WebCore::Pasteboard::allPasteboardItemInfo const):
(WebCore::Pasteboard::pasteboardItemInfo const):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::readBuffer):
(WebCore::Pasteboard::readURL):

Add some null checks to handle the case where there is no pasteboard strategy.

Tools:

Make adjustments to WebKitTestRunner and DumpRenderTree to support the new layout tests. See below for more
details.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
  • DumpRenderTree/mac/DumpRenderTreePasteboard.mm:

(-[LocalPasteboard pasteboardItems]):

Fixes an existing issue with the mock NSPasteboard used for layout tests. Currently, our logic for converting
the contents of the platform pasteboard to NSPasteboardItem simply writes the pasteboard data as-is to
NSPasteboardItems. However, these pasteboard types may be legacy pasteboard types, in which case
NSPasteboardItem will simply handle the call to -setData:forType: as a no-op. AppKit has logic in this
scenario to canonicalize these legacy pasteboard types to their modern counterparts, but this is absent in
DumpRenderTreePasteboard and WebKitTestRunnerPasteboard.

Address this by teaching the mock pasteboards to convert legacy types to modern types when generating platform
pasteboard items.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::copyText):

Add a new UIScriptController method to write a string to the platform pasteboard. This patch adds support for
this new testing hook on macOS and iOS, in WebKit2 (WebKitTestRunner).

  • TestRunnerShared/mac/NSPasteboardAdditions.h: Copied from Tools/WebKitTestRunner/mac/UIScriptControllerMac.h.
  • TestRunnerShared/mac/NSPasteboardAdditions.mm: Added.

(+[NSPasteboard _modernPasteboardType:]):

Add a helper to convert legacy pasteboard types (and dynamic UTIs that map to legacy pasteboard types) to
modern pasteboard types, suitable for writing to NSPasteboardItems on macOS.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::copyText):

  • WebKitTestRunner/mac/UIScriptControllerMac.h:
  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::copyText):

  • WebKitTestRunner/mac/WebKitTestRunnerPasteboard.mm:

Apply the same fix for WebKitTestRunner's mock NSPasteboard.

(-[LocalPasteboard _clearContentsWithoutUpdatingChangeCount]):
(-[LocalPasteboard clearContents]):

Make -clearContents clear out all the contents on the mock pasteboard, instead of crashing in AppKit.

(-[LocalPasteboard declareTypes:owner:]):
(-[LocalPasteboard pasteboardItems]):

LayoutTests:

  • editing/async-clipboard/clipboard-change-data-while-reading-expected.txt: Added.
  • editing/async-clipboard/clipboard-change-data-while-reading.html: Added.

Add a new layout test to verify that if the platform pasteboard changes in the middle of a DOM paste access
request, the promise returned by Clipboard.read() should reject, and the page should not receive any clipboard
items.

  • editing/async-clipboard/clipboard-read-basic-expected.txt: Added.
  • editing/async-clipboard/clipboard-read-basic.html: Added.

Add a new layout test to exercise Clipboard.read(). Since we don't support reading data from clipboard items
yet, this only checks the types of each pasteboard item. This test additionally ensures that the ClipboardItems
returned from the API are the same between calls to Clipboard.read() if the data hasn't changed.

  • editing/async-clipboard/resources/async-clipboard-helpers.js:

(writeToClipboardUsingDataTransfer):

Add a new helper to synchronously write data to the clipboard using execCommand and DataTransfer API.

(async.triggerProgrammaticPaste):

Add a new helper to trigger programmatic paste by activating the given element or location. Also receives an
array of options (which, for now, just supports a single option to change the pasteboard when granting DOM paste
access).

  • platform/ios-wk1/TestExpectations: Skip clipboard-change-data-while-reading.html for now in WebKit1.
  • platform/mac-wk1/TestExpectations: Skip clipboard-change-data-while-reading.html for now in WebKit1.
  • platform/win/TestExpectations: Skip the new layout tests on Windows for now.
3:40 AM Changeset in webkit [251278] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

Avoid crashes on GCC-compiled binaries by avoiding a use-after-move
that's the result of differring call conventions.

Rubber-stamped by Carlos Garcia Campos.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startFetch): Copy the SW identifier from
the ServiceWorkerFetchTask before it's moved into the lambda.

1:35 AM Changeset in webkit [251277] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Update libwebrtc third-party abseilcpp to M78
https://bugs.webkit.org/show_bug.cgi?id=202726
<rdar://problem/56147823>

Unreviewed.

  • Source/third_party/abseil-cpp/absl/strings/string_view.h:

(absl::string_view::CheckLengthInternal):
Build fix for debug bots.

1:29 AM Changeset in webkit [251276] by Fujii Hironori
  • 2 edits in trunk/Source/JavaScriptCore

[Clang][Windows] Options.cpp(317,25): error: no matching function for call to 'optionTypeSpecificIndex'
https://bugs.webkit.org/show_bug.cgi?id=203142

Unreviewed build fix

clang-cl reported a compilation error for MSVC bug workaround code of optionTypeSpecificIndex.

runtime\Options.cpp(294,12): error: variables defined in a constexpr function must be initialized

size_t index;


  • runtime/Options.cpp:

(JSC::optionTypeSpecificIndex): Initialize the variable 'index'.

Oct 17, 2019:

10:01 PM Changeset in webkit [251275] by Chris Dumez
  • 6 edits in trunk

Don't put pages that have not reached the non-visually empty layout milestone in the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203108
<rdar://problem/56375671>

Reviewed by Geoff Garen.

Source/WebCore:

We don't want to go back to a visually empty page on back/forward navigation.

  • history/BackForwardCache.cpp:

(WebCore::canCacheFrame):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::visuallyEmptyKey):

  • page/DiagnosticLoggingKeys.h:

LayoutTests:

  • http/tests/navigation/page-cache-pending-load.html:

Tweak test to add the stylesheet to the body instead of the head since a document
with a pending stylesheet before the body qualifies as visually empty. The test
would be flaky otherwise.

9:35 PM Changeset in webkit [251274] by mark.lam@apple.com
  • 7 edits
    1 add in trunk

Add missing checks after calls to the sameValue() JSValue comparator.
https://bugs.webkit.org/show_bug.cgi?id=203126
<rdar://problem/56366561>

Reviewed by Saam Barati.

JSTests:

  • stress/validate-exception-check-in-proxy-object-put.js: Added.

Source/JavaScriptCore:

  • runtime/JSFunction.cpp:

(JSC::JSFunction::defineOwnProperty):

  • runtime/JSObject.cpp:

(JSC::JSObject::defineOwnIndexedProperty):
(JSC::validateAndApplyPropertyDescriptor):

  • runtime/PropertyDescriptor.cpp:

(JSC::PropertyDescriptor::equalTo const):

  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::performPut):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::defineOwnProperty):

9:24 PM Changeset in webkit [251273] by Simon Fraser
  • 11 edits
    5 copies
    2 moves
    3 adds in trunk

Only include "deep color" in layer tree dumps if a tests requests it
https://bugs.webkit.org/show_bug.cgi?id=203125

Reviewed by Tim Horton.
Source/WebCore:

Layer tree dumping tests can fail when run on different devices because the "deep color"
property on layers is device-dependent. Stop dumping this by default, and have one test
that sets the bit. iphone-7 is the only device we test that has deep color support.

Tests: compositing/contents-format/deep-color-backing-store.html

compositing/contents-format/ipad/deep-color-backing-store.html
compositing/contents-format/iphone-7/deep-color-backing-store.html

  • page/Frame.h:
  • platform/graphics/GraphicsLayerClient.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerTreeAsText):

  • testing/Internals.cpp:

(WebCore::toLayerTreeFlags):

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

LayoutTests:

  • TestExpectations:
  • compositing/contents-format/deep-color-backing-store-expected.txt: Copied from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color-expected.txt.
  • compositing/contents-format/deep-color-backing-store.html: Copied from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color.html.
  • compositing/contents-format/ipad/deep-color-backing-store-expected.txt: Copied from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color-expected.txt.
  • compositing/contents-format/ipad/deep-color-backing-store.html: Copied from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color.html.
  • compositing/contents-format/iphone-7/deep-color-backing-store-expected.txt: Copied from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color-expected.txt.
  • compositing/contents-format/iphone-7/deep-color-backing-store.html: Renamed from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color.html.
  • platform/ipad/TestExpectations:
  • platform/iphone-7/TestExpectations: Added.
  • platform/mac-wk1/compositing/contents-format/deep-color-backing-store-expected.txt: Renamed from LayoutTests/platform/iphone-7/tiled-drawing/compositing-layers-deep-color-expected.txt.
7:27 PM Changeset in webkit [251272] by Simon Fraser
  • 6 edits in trunk/LayoutTests

REGRESSION (r243347) Layout tests fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on* are flakey
https://bugs.webkit.org/show_bug.cgi?id=203122
rdar://problem/50058173

Reviewed by Wenson Hsieh.

Rewrite these tests to wait for scrolling to finish, since the overflow is now accelerated and we need
to wait for momentum to end.

Also have them use UIHelper, factoring a function to work with overflow as well as document scroll.

  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt:
  • fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html:
  • resources/ui-helper.js:

(window.UIHelper.callFunctionAndWaitForEvent):
(window.UIHelper.callFunctionAndWaitForScrollToFinish):
(window.UIHelper.callFunctionAndWaitForTargetScrollToFinish.return.new.Promise):
(window.UIHelper.callFunctionAndWaitForTargetScrollToFinish):
(window.UIHelper.callFunctionAndWaitForScrollToFinish.return.new.Promise): Deleted.

5:42 PM Changeset in webkit [251271] by sbarati@apple.com
  • 4 edits
    1 add in trunk

GetByVal and PutByVal on ArrayStorage need to use the same AbstractHeap
https://bugs.webkit.org/show_bug.cgi?id=203124
<rdar://problem/55988183>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/licm-array-storage-get-and-put-by-val.js: Added.

(assert):
(foo):

Source/JavaScriptCore:

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

5:29 PM Changeset in webkit [251270] by dino@apple.com
  • 3 edits
    5 adds in trunk

ctx.font = "" asserts in CSS parser
https://bugs.webkit.org/show_bug.cgi?id=203127
<rdar://problem/56391016>

Reviewed by Devin Rousso.

Source/WebCore:

The HTML specification says:
"values that cannot be parsed as CSS font values are ignored", so
return early if we get an empty string, otherwise the CSS parser
will assert. This was the only case I could find where we sidestepped
most of the parsing infrastructure and injected a raw string.

Test: http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::setFont):

LayoutTests:

Copy the updated test from my WPT pull request. Once this
is merged into WPT, we won't need this version.

  • http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid-expected.txt: Added.
  • http/wpt/2dcontext/text-styles/2d.text.font.parse.invalid.html: Added.
  • http/wpt/resources/canvas-tests.css: Added.
  • http/wpt/resources/canvas-tests.js: Added.
5:15 PM Changeset in webkit [251269] by rniwa@webkit.org
  • 9 edits
    2 adds in trunk

Integrate resize event with HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=202964

Reviewed by Geoffrey Garen.

Source/WebCore:

Dispatch resize events in "run the resize steps" during the "update the rendering":
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering

Exisitng code in WebCore which was dispatching or scheduling dispatching of resize events now simply sets
a flag on document and schedules a rendering update. In Page::updateRendering, we fire resize events on
any documents with this flag set.

Test: fast/events/resize-subframe-in-rendering-update.html

  • dom/Document.cpp:

(WebCore::Document::setNeedsDOMWindowResizeEvent): Added.
(WebCore::Document::setNeedsVisualViewportResize): Added.
(WebCore::Document::runResizeSteps): Added. https://drafts.csswg.org/cssom-view/#run-the-resize-steps

  • dom/Document.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::resizeTo const):

  • page/FrameView.cpp:

(WebCore::FrameView::sendResizeEventIfNeeded): Now sets m_needsDOMWindowResizeEvent on Document instead of
enqueuing a resize event.

  • page/Page.cpp:

(WebCore::Page::updateRendering): Call runResizeSteps on each document.
(WebCore::Page::collectDocuments): Added.

  • page/Page.h:
  • page/VisualViewport.cpp:

(WebCore::VisualViewport::enqueueResizeEvent):

LayoutTests:

Added a regression test and fixed an existing test to work with the new behavior.

  • fast/events/resize-subframe-in-rendering-update-expected.txt: Added.
  • fast/events/resize-subframe-in-rendering-update.html: Added.
  • fast/shadow-dom/trusted-event-scoped-flags.html:
5:02 PM Changeset in webkit [251268] by Basuke Suzuki
  • 2 edits in trunk/Source/bmalloc

[bmalloc] Bug fix for wait time when it's in mini mode.
https://bugs.webkit.org/show_bug.cgi?id=203121

Reviewed by Yusuke Suzuki.

Since r243144, m_waitTime is never changed on mini mode.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::threadRunLoop):

4:42 PM Changeset in webkit [251267] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Unreviewed, rolling out r251255.

This is causing the existing back/forward tests to be flaky

Reverted changeset:

"Don't put pages that have not reached the non-visually empty
layout milestone in the back/forward cache"
https://bugs.webkit.org/show_bug.cgi?id=203108
https://trac.webkit.org/changeset/251255

4:38 PM Changeset in webkit [251266] by timothy_horton@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

Land a missing test baseline

  • fast/forms/ios/inputmode-none-with-hardware-keyboard-expected.txt: Added.
3:53 PM Changeset in webkit [251265] by sbarati@apple.com
  • 3 edits
    1 add in trunk/PerformanceTests

Have a CLI version of JetStream 2 to run on watchOS
https://bugs.webkit.org/show_bug.cgi?id=202998
<rdar://problem/56208554>

Reviewed by Tadeu Zagallo.

This patch adds a CLI version of JS2 to run on watchOS. We run most subtests
from the browser version of JS2, but skip a few tests that are particularly
long running, like WSL and some of WTB. We also don't run the Wasm tests
as we don't JIT on watchOS. Each test runs for fewer iterations in the watch
version. 15 is the default iteration count. This benchmark runs in 7 minutes on
a Series 4 watch.

  • JetStream2/JetStreamDriver.js:

(getIterationCount):
(getWorstCaseCount):
(Driver.prototype.async.start):
(Driver.prototype.resultsJSON):
(Driver.prototype.dumpJSONResultsIfNeeded):
(Driver.prototype.async.reportScoreToRunBenchmarkRunner):
(DefaultBenchmark):

  • JetStream2/RexBench/UniPoker/benchmark.js:

(Benchmark.prototype.validate):
(Benchmark):

  • JetStream2/watch-cli.js: Added.
3:45 PM Changeset in webkit [251264] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Harden capacity checks in DFG::LocalCSEPhase::SmallMap.
https://bugs.webkit.org/show_bug.cgi?id=203123
<rdar://problem/56339943>

Change addPure() and addImpure() to use RELEASE_ASSERT in their capacity checks.

Reviewed by Keith Miller.

  • dfg/DFGCSEPhase.cpp:
3:18 PM Changeset in webkit [251263] by mark.lam@apple.com
  • 60 edits in trunk

Use constexpr in more places and remove some unnecessary external linkage.
https://bugs.webkit.org/show_bug.cgi?id=203115

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • API/JSWrapperMap.mm:
  • heap/MarkedBlock.cpp:
  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace):

  • inspector/ScriptCallStack.h:
  • interpreter/CLoopStack.h:
  • interpreter/CallFrame.h:
  • interpreter/ShadowChicken.h:
  • jit/AssemblyHelpers.cpp:

(JSC::emitRandomThunkImpl):

  • jit/GPRInfo.cpp:
  • jit/GPRInfo.h:
  • jit/JIT.h:
  • jit/PCToCodeOriginMap.cpp:
  • jit/SpecializedThunkJIT.h:
  • jit/ThunkGenerators.cpp:

(JSC::roundThunkGenerator):

  • jit/UnusedPointer.h:
  • llint/LLIntData.h:
  • llint/LLIntPCRanges.h:
  • parser/Lexer.h:
  • parser/Nodes.h:
  • runtime/CodeCache.cpp:
  • runtime/CodeCache.h:
  • runtime/ErrorInstance.h:
  • runtime/JSAsyncFunction.h:
  • runtime/JSAsyncGeneratorFunction.h:
  • runtime/JSBoundFunction.h:
  • runtime/JSCallee.h:
  • runtime/JSFunction.h:
  • runtime/JSGeneratorFunction.h:
  • runtime/JSNativeStdFunction.h:
  • runtime/JSRunLoopTimer.cpp:

(): Deleted.

  • runtime/JSRunLoopTimer.h:
  • runtime/ProxyObject.h:
  • runtime/Watchdog.cpp:

(): Deleted.

  • runtime/Watchdog.h:
  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyFunctionBase.h:
  • wasm/js/WebAssemblyWrapperFunction.h:

Source/WebCore:

No new tests because this patch adds no new functionality.

  • html/track/TextTrackCueGeneric.cpp:
  • html/track/VTTCue.cpp:
  • page/EventHandler.cpp:

(WebCore::SyntheticTouchPoint::SyntheticTouchPoint):

  • page/FrameTree.h:
  • page/scrolling/ScrollingMomentumCalculator.cpp:

(WebCore::projectedInertialScrollDistance):

  • platform/graphics/FontTaggedSettings.h:
  • platform/graphics/Region.cpp:
  • platform/graphics/filters/FELighting.cpp:
  • rendering/TableLayout.h:
  • rendering/svg/SVGRenderingContext.h:

Source/WebKit:

  • UIProcess/API/APIContentRuleListStore.h:
  • WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm:

Source/WTF:

Also removed unused lockSpinLimit in Threading.h.

  • wtf/MD5.h:
  • wtf/SHA1.h:
  • wtf/StackBounds.h:
  • wtf/Threading.h:

Tools:

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/IsNavigationActionTrusted.mm:
3:15 PM Changeset in webkit [251262] by Simon Fraser
  • 12 edits in trunk

[ Mojave+ ] Layout Test compositing/fixed-with-main-thread-scrolling.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=198757

Reviewed by Tim Horton.

Source/WebCore:

WheelEventTestMonitor depends on "deferral reasons" getting added and removed, such that there is always
at least one reason active until scrolling quiesces.

WheelEventTestMonitor made the incorrect assumption that every call into ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent()
would result in a scroll change making it to the main thread, so it would defer "ScrollingThreadSyncNeeded" there,
and rely on AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll() to remove that deferral reason.
That assumption is wrong, because wheel events may coalesce, or have no impact on scroll position if already scrolled
to the max/min extent (e.g. when rubber banding).

Fix by adding a new "HandlingWheelEvent" deferral reason for the duration that the scrolling thread is processing an wheel event,
and then having ScrollingThreadSyncNeeded just represent the phase where any resulting scroll is being sent to the UI process.
These phases should always overlap.

This required moving isMonitoringWheelEvents() from the root scrolling node to the ScrollingTree.

  • page/WheelEventTestMonitor.cpp:

(WebCore::operator<<):

  • page/WheelEventTestMonitor.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::isMonitoringWheelEvents const):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::deferWheelEventTestCompletionForReason const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::removeWheelEventTestCompletionDeferralForReason const):

LayoutTests:

Remove expectation for compositing/fixed-with-main-thread-scrolling.html.

  • platform/mac-wk2/TestExpectations:
3:05 PM Changeset in webkit [251261] by sihui_liu@apple.com
  • 10 edits in trunk

Using version 1 CFRunloopSource for faster task dispatch
https://bugs.webkit.org/show_bug.cgi?id=202874

Reviewed by Geoffrey Garen.

Source/WTF:

We used CFRunLoopWakeUp to wake up runloop to process source, which seems to be slow according to profiling. To
avoid calling CFRunLoopWakeUp, we should use version 1 CFRunloopSource instead of version 0. This patch brings
about 15% speedup for test PerformanceTests/IndexedDB/basic/objectstore-get.html.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::initializeWebRunLoop):
(WTF::RunLoop::web):

  • wtf/RunLoop.h:
  • wtf/cf/RunLoopCF.cpp:

(WTF::RunLoop::performWork):
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::wakeUp):

  • wtf/cocoa/MainThreadCocoa.mm:

(WTF::initializeMainThreadPlatform):
(WTF::scheduleDispatchFunctionsOnMainThread):
(WTF::initializeWebThread):
(-[JSWTFMainThreadCaller call]): Deleted.

Tools:

Fix a flaky test.

  • TestWebKitAPI/Tests/WebKit/getUserMedia.html:

LayoutTests:

Fix a flaky test.

  • inspector/css/pseudo-creation-expected.txt:
  • inspector/css/pseudo-creation.html:
2:44 PM Changeset in webkit [251260] by Adrian Perez de Castro
  • 2 edits in trunk/PerformanceTests

[Linux] Avoid usage of <sys/sysctl.h> in MallocBench
https://bugs.webkit.org/show_bug.cgi?id=203109

Reviewed by Carlos Alberto Lopez Perez.

  • MallocBench/MallocBench/CPUCount.cpp: Only include <sys/sysctl.h> if

the sysctl() function will be used.

2:39 PM Changeset in webkit [251259] by Jonathan Bedard
  • 4 edits in trunk/Tools

Python 3: Add support in webkitpy.common.net.buildbot
https://bugs.webkit.org/show_bug.cgi?id=202466

Reviewed by Stephanie Lewis.

  • Scripts/test-webkitpy-python3: Add webkitpy.common.net.buildbot to the test list.
  • Scripts/webkitpy/common/net/buildbot/buildbot.py:

(Builder.url_encoded_name): Call compatible urllib quote.
(Builder.revision_build_pairs_with_results): Convert iterator to list before returning.
(Build.results_url): Call compatible urllib quote.
(BuildBot._parse_last_build_cell):renderContents needs to be decoded in Python 3.
(BuildBot._parse_current_build_cell): BeautifulSoup and bs4 render breaks differently.
(BuildBot._fetch_build_dictionary): Call compatible urllib quote.

  • Scripts/webkitpy/common/net/regressionwindow.py:

(RegressionWindow.revisions): Convert range(...) to list.

2:22 PM Changeset in webkit [251258] by rniwa@webkit.org
  • 6 edits
    4 adds in trunk

Make requestIdleCallback suspendable
https://bugs.webkit.org/show_bug.cgi?id=203023

Reviewed by Chris Dumez.

Source/WebCore:

Make requestIdleCallback suspendable by making WindowEventLoop itself suspendable.
Because WindowEventLoop can be shared across documents, we don't want to make it an ActiveDOMObject.

Instead, we would make CachedFrameBase::restore and CachedFrame manually invoke suspend & resume.

Test: requestidlecallback/requestidlecallback-in-page-cache.html

  • dom/Document.h:

(WebCore::Document::eventLoopIfExists): Added. This should probably go away once most of the event loop
is implemented since we're almost always going to have this object then.

  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::queueTask): Because m_tasks may contain tasks of suspended documents,
we check m_activeTaskCount, which is only positive when there is a task for non-suspended documents,
to decide whether we schedule a callback or not.
(WebCore::WindowEventLoop::suspend): Added. No-op for now.
(WebCore::WindowEventLoop::resume): Added. Schedule a callback if there is a task associated with
this document.
(WebCore::WindowEventLoop::run): Skip a task for a suspended document, and add it back to m_tasks along
with other tasks that got scheduled by running the current working set of tasks.

  • dom/WindowEventLoop.h:
  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):

LayoutTests:

  • requestidlecallback/requestidlecallback-in-page-cache-expected.txt: Added.
  • requestidlecallback/requestidlecallback-in-page-cache.html: Added.
  • requestidlecallback/resources: Added.
  • requestidlecallback/resources/page-cache-helper.html: Added.
2:20 PM Changeset in webkit [251257] by Brent Fulgham
  • 2 edits in trunk/Source/JavaScriptCore

Build fix for newer versions of MSVC.

Rubber stamped by Mark Lam.

Some versions of MSVC optimize the inline optimization of
index away, triggering an uninitialized variable error. This
change avoids this problem.

  • runtime/Options.cpp:

(JSC::optionTypeSpecificIndex):

2:02 PM Changeset in webkit [251256] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] status bubbles should show details from all the builds in case build is retried
https://bugs.webkit.org/show_bug.cgi?id=203117

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._build_bubble): Display messages from all the builds (including retried builds) for a patch on a queue.
(StatusBubble._steps_messages_from_multiple_builds): Method to generate status using information from all the retried builds.
(StatusBubble.get_all_builds_for_queue): Method to get all the builds instead of just the latest one.
(StatusBubble.get_latest_build_for_queue): Modified to use the new get_all_builds_for_queue() method.

1:31 PM Changeset in webkit [251255] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Don't put pages that have not reached the non-visually empty layout milestone in the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=203108

Reviewed by Geoffrey Garen.

We don't want to go back to a visually empty page on back/forward navigation.

  • history/BackForwardCache.cpp:

(WebCore::canCacheFrame):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::visuallyEmptyKey):

  • page/DiagnosticLoggingKeys.h:
1:21 PM Changeset in webkit [251254] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: selection shouldn't be dimmed by shadow trees
https://bugs.webkit.org/show_bug.cgi?id=203057

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li .selection-area):
(.tree-outline.dom li > span): Added.
Don't force the .selection-area to be behind (z-index: -1;) the rest of the content, as
that also puts it behind any background-color. Instead, we should make all the content in
every WI.DOMTreeElement be above (z-index: 1;) the rest of the content, including the
.selection-area and any parent's background-color.

12:23 PM Changeset in webkit [251253] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/LayoutTests/imported/w3c

Remove duplicate MathML tests
https://bugs.webkit.org/show_bug.cgi?id=202979

Patch by Rob Buis <rbuis@igalia.com> on 2019-10-17
Reviewed by Frédéric Wang.

Commit r251187 removed operators/mo-form-fallback-expected.html by
accident, add it again.

  • web-platform-tests/mathml/presentation-markup/operators/mo-form-fallback-expected.html: Added.
12:21 PM Changeset in webkit [251252] by commit-queue@webkit.org
  • 14 edits
    2 adds in trunk

transform-box: content-box, stroke-box missing
https://bugs.webkit.org/show_bug.cgi?id=201892

Patch by Dirk Schulze <krit@webkit.org> on 2019-10-17
Reviewed by Simon Fraser.

Source/WebCore:

Added the keywords content-box and stroke-box to the
transform-box CSS property.
Those keywords were added to the spec after the implementation
in WebKit.

Test: transforms/transform-box.html

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator TransformBox const):

  • css/CSSProperties.json:
  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):

  • rendering/RenderLayer.cpp:

(WebCore::computeReferenceBox):
(WebCore::transformBoxToCSSBoxType):
(WebCore::RenderLayer::currentTransform const):

  • rendering/style/RenderStyleConstants.h:
  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const):

LayoutTests:

  • fast/css/transform-box-parsing.html:
  • svg/transforms/svg-transform-box-expected.html:
  • svg/transforms/svg-transform-box.html:
  • transforms/transform-box-expected.html: Added.
  • transforms/transform-box.html: Added.
12:06 PM Changeset in webkit [251251] by Simon Fraser
  • 4 edits in trunk/LayoutTests

[iOS Sim] Layout Test scrollingcoordinator/ios/ui-scroll-fixed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196612
rdar://problem/49612867

Reviewed by Antti Koivisto.

This test hit a really obscure bug where a combination of an immediate scroll, and
an ancestor reposition left the layer position of a position:fixed layer unchanged.
The position of this layer in the UI process had been previously modified by
the scrolling tree for the scroll, but because the WebContent-side mutations left
the actual position unchanged, we'd never apply a new position via a commit, so left
the layer in the wrong location.

Removing the m_wasScrolledByDelegatedScrollingSincePreviousCommit check in ScrollingTree::applyLayerPositionsAfterCommit()
fixes this, but has perf implications. Alternative fixes require complex state tracking.
Since this is so hard to hit with noisy user scrolling, just change the test to avoid
the perfect storm of scrolls and offsets.

  • platform/ios-simulator-wk2/TestExpectations:
  • scrollingcoordinator/ios/ui-scroll-fixed-expected.html:
  • scrollingcoordinator/ios/ui-scroll-fixed.html:
11:49 AM Changeset in webkit [251250] by emilio
  • 2 edits in trunk/Tools

[GTK] Explicitly use Python 2 in jhbuild-wrapper
https://bugs.webkit.org/show_bug.cgi?id=202790

Reviewed by Adrian Perez de Castro.

jhbuildutils.py requires Python 2 for the moment, so using just
python fails in distros where Python 3 is the default.

  • jhbuild/jhbuild-wrapper:
11:19 AM Changeset in webkit [251249] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

SincResampler does not need to create a new AudioBus for each consumeSource call
https://bugs.webkit.org/show_bug.cgi?id=202983

Reviewed by Eric Carlson.

Allocate an internal AudioBus once and for all.
No observable change of behavior.

  • platform/audio/SincResampler.cpp:

(WebCore::SincResampler::consumeSource):

  • platform/audio/SincResampler.h:
11:18 AM Changeset in webkit [251248] by youenn@apple.com
  • 1 edit
    23 adds in trunk/Source/ThirdParty/libwebrtc

Add libwebrtc third-party pfft
https://bugs.webkit.org/show_bug.cgi?id=202733

Reviewed by Eric Carlson.

Initial check-in of pfft which is now used in libwebrtc.

  • Source/third_party/pffft: Added.
11:15 AM Changeset in webkit [251247] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Unreviewed, rolling out r251231.

This test is still very flakey on all platforms.

Reverted changeset:

"[GStreamer] media/video-seek-after-end.html is no longer
flakey"
https://bugs.webkit.org/show_bug.cgi?id=203079
https://trac.webkit.org/changeset/251231

11:13 AM Changeset in webkit [251246] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Unreviewed, rolling out r251245.

Addressing this issue differently

Reverted changeset:

"Marking media/video-seek-after-end.html as failing"
https://bugs.webkit.org/show_bug.cgi?id=203111
https://trac.webkit.org/changeset/251245

10:52 AM Changeset in webkit [251245] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Marking media/video-seek-after-end.html as failing
https://bugs.webkit.org/show_bug.cgi?id=203111

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:35 AM Changeset in webkit [251244] by Chris Dumez
  • 115 edits in trunk/Source/WebCore

Deprecate ActiveDOMObject::canSuspendForDocumentSuspension()
https://bugs.webkit.org/show_bug.cgi?id=203086

Reviewed by Geoffrey Garen.

Rename ActiveDOMObject::canSuspendForDocumentSuspension() to shouldPreventEnteringBackForwardCache_DEPRECATED()
to make it clear that no new overrides should be added and that it is no longer OK to prevent the page from
entering the back/forward cache. Also provide a default implementation that returns false so that well-behaved
classes no longer need to override this.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::ApplePaySession::canSuspendForDocumentSuspension const): Deleted.

  • Modules/applepay/ApplePaySession.h:
  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::canSuspendForDocumentSuspension const): Deleted.

  • Modules/cache/DOMCache.h:
  • Modules/cache/DOMCacheStorage.cpp:

(WebCore::DOMCacheStorage::canSuspendForDocumentSuspension const): Deleted.

  • Modules/cache/DOMCacheStorage.h:
  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaKeySession::canSuspendForDocumentSuspension const): Deleted.

  • Modules/encryptedmedia/MediaKeySession.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:

(WebCore::WebKitMediaKeySession::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::WebKitMediaKeySession::canSuspendForDocumentSuspension const): Deleted.

  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
  • Modules/entriesapi/FileSystemDirectoryReader.cpp:

(WebCore::FileSystemDirectoryReader::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileSystemDirectoryReader::canSuspendForDocumentSuspension const): Deleted.

  • Modules/entriesapi/FileSystemDirectoryReader.h:
  • Modules/entriesapi/FileSystemEntry.cpp:

(WebCore::FileSystemEntry::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileSystemEntry::canSuspendForDocumentSuspension const): Deleted.

  • Modules/entriesapi/FileSystemEntry.h:
  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FetchRequest::canSuspendForDocumentSuspension const): Deleted.

  • Modules/fetch/FetchRequest.h:
  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FetchResponse::canSuspendForDocumentSuspension const): Deleted.

  • Modules/fetch/FetchResponse.h:
  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::page const):
(WebCore::Geolocation::canSuspendForDocumentSuspension const): Deleted.

  • Modules/geolocation/Geolocation.h:
  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::canSuspendForDocumentSuspension const): Deleted.

  • Modules/indexeddb/IDBDatabase.h:
  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::canSuspendForDocumentSuspension const): Deleted.

  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::canSuspendForDocumentSuspension const): Deleted.

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::canSuspendForDocumentSuspension const): Deleted.

  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::canSuspendForDocumentSuspension const): Deleted.

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaRecorder::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediasource/SourceBuffer.h:
  • Modules/mediasource/SourceBufferList.cpp:

(WebCore::SourceBufferList::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediasource/SourceBufferList.h:
  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaStream::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::MediaStreamTrack::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/RTCDTMFSender.cpp:

(WebCore::RTCDTMFSender::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::RTCDTMFSender::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/RTCDTMFSender.h:
  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::RTCPeerConnection::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::UserMediaRequest::canSuspendForDocumentSuspension const): Deleted.

  • Modules/mediastream/UserMediaRequest.h:
  • Modules/notifications/Notification.cpp:

(WebCore::Notification::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::Notification::canSuspendForDocumentSuspension const): Deleted.

  • Modules/notifications/Notification.h:
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::PaymentRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::PaymentRequest::canSuspendForDocumentSuspension const): Deleted.

  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentResponse.cpp:

(WebCore::PaymentResponse::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::PaymentResponse::canSuspendForDocumentSuspension const): Deleted.

  • Modules/paymentrequest/PaymentResponse.h:
  • Modules/pictureinpicture/PictureInPictureWindow.cpp:

(WebCore::PictureInPictureWindow::canSuspendForDocumentSuspension const): Deleted.

  • Modules/pictureinpicture/PictureInPictureWindow.h:
  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::AudioContext::canSuspendForDocumentSuspension const): Deleted.

  • Modules/webaudio/AudioContext.h:
  • Modules/webdatabase/DatabaseContext.cpp:

(WebCore::DatabaseContext::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::DatabaseContext::canSuspendForDocumentSuspension const): Deleted.

  • Modules/webdatabase/DatabaseContext.h:
  • Modules/webgpu/GPUCanvasContext.h:
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::canSuspendForDocumentSuspension const): Deleted.

  • Modules/websockets/WebSocket.h:
  • Modules/webvr/VRDisplay.cpp:

(WebCore::VRDisplay::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::VRDisplay::canSuspendForDocumentSuspension const): Deleted.

  • Modules/webvr/VRDisplay.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::WebAnimation::canSuspendForDocumentSuspension const): Deleted.

  • animation/WebAnimation.h:
  • css/FontFaceSet.cpp:

(WebCore::FontFaceSet::canSuspendForDocumentSuspension const): Deleted.

  • css/FontFaceSet.h:
  • dom/ActiveDOMObject.h:
  • dom/GenericEventQueue.cpp:

(WebCore::GenericEventQueueBase<T>::canSuspendForDocumentSuspension const): Deleted.

  • dom/GenericEventQueue.h:
  • dom/MessagePort.cpp:

(WebCore::MessagePort::canSuspendForDocumentSuspension const): Deleted.

  • dom/MessagePort.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::canSuspendActiveDOMObjectsForDocumentSuspension):

  • fileapi/FileReader.cpp:

(WebCore::FileReader::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::FileReader::canSuspendForDocumentSuspension const): Deleted.

  • fileapi/FileReader.h:
  • html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::canSuspendForDocumentSuspension const): Deleted.

  • html/HTMLMarqueeElement.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canSuspendForDocumentSuspension const): Deleted.

  • html/HTMLMediaElement.h:
  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::canSuspendForDocumentSuspension const): Deleted.

  • html/HTMLSourceElement.h:
  • html/ImageBitmap.cpp:
  • html/PublicURLManager.cpp:

(WebCore::PublicURLManager::canSuspendForDocumentSuspension const): Deleted.

  • html/PublicURLManager.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::canSuspendForDocumentSuspension const): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
  • html/track/TrackListBase.cpp:

(WebCore::TrackListBase::canSuspendForDocumentSuspension const): Deleted.

  • html/track/TrackListBase.h:
  • page/EventSource.cpp:

(WebCore::EventSource::canSuspendForDocumentSuspension const): Deleted.

  • page/EventSource.h:
  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::canSuspendForDocumentSuspension const): Deleted.

  • page/IntersectionObserver.h:
  • page/ResizeObserver.cpp:

(WebCore::ResizeObserver::canSuspendForDocumentSuspension const): Deleted.

  • page/ResizeObserver.h:
  • page/SuspendableTimer.cpp:

(WebCore::SuspendableTimerBase::canSuspendForDocumentSuspension const): Deleted.

  • page/SuspendableTimer.h:
  • platform/SuspendableTaskQueue.cpp:

(WebCore::SuspendableTaskQueue::canSuspendForDocumentSuspension const): Deleted.

  • platform/SuspendableTaskQueue.h:
  • testing/Internals.cpp:
  • workers/Worker.cpp:

(WebCore::Worker::canSuspendForDocumentSuspension const): Deleted.

  • workers/Worker.h:
  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::canSuspendForDocumentSuspension const): Deleted.

  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::canSuspendForDocumentSuspension const): Deleted.

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::canSuspendForDocumentSuspension const): Deleted.

  • workers/service/ServiceWorkerRegistration.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::shouldPreventEnteringBackForwardCache_DEPRECATED const):
(WebCore::XMLHttpRequest::canSuspendForDocumentSuspension const): Deleted.

  • xml/XMLHttpRequest.h:
10:08 AM Changeset in webkit [251243] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][TFC] Table formatting context accesses geometry information from parent BFC
https://bugs.webkit.org/show_bug.cgi?id=203082
<rdar://problem/56370827>

Reviewed by Antti Koivisto.

Tables are wrapped in a 2 level formatting context structure. A <table> element initiates a block formatting context for its principal table box
where the caption and the table content live. It also initiates a table wrapper box which establishes the table formatting context.
In many cases the TFC needs access to the parent (generated) BFC.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::geometryForBox const):

  • layout/FormattingContext.h:
  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedTableWidth):

10:02 AM Changeset in webkit [251242] by Simon Fraser
  • 7 edits in trunk/LayoutTests

Two fast/scrolling/ios/touch-scroll* tests failing in iOS 13
https://bugs.webkit.org/show_bug.cgi?id=203070
rdar://problem/51756254

Reviewed by Wenson Hsieh.

For some reason the uiController.dragFromPointToPoint() in these tests was too long
to trigger scrolling (maybe an OS change). Fix them to use UIHelper and a shorter
duration, and also to not be sensitive to the exact distance scrolled.

  • fast/scrolling/ios/touch-scroll-pointer-events-none-expected.txt:
  • fast/scrolling/ios/touch-scroll-pointer-events-none.html:
  • fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt:
  • fast/scrolling/ios/touch-scroll-visibility-hidden.html:
  • platform/ios-wk2/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.dragFromPointToPoint):

9:52 AM Changeset in webkit [251241] by Simon Fraser
  • 2 edits
    2 adds in trunk/LayoutTests

REGRESSION (r245483) [iPad Simulator] 2 Layout tests fast/scrolling/ios/overflow-scroll-inherited.html fast/scrolling/ios/overflow-scrolling-touch-enabled-stacking.html are failing
https://bugs.webkit.org/show_bug.cgi?id=203069
rdar://problem/51868813

Reviewed by Zalan Bujtas.

Add new result for overflow-scroll-inherited.html, since -webkit-overflow-scrolling:touch is a no-op
on iPad on iOS 13.

We can't have different image references for different devices, so keep overflow-scrolling-touch-enabled-stacking.html
as an image failure.

  • platform/ipad-12/fast/scrolling/ios/overflow-scroll-inherited-expected.txt: Added.
  • platform/ipad/TestExpectations:
  • platform/ipad/fast/scrolling/ios/overflow-scroll-inherited-expected.txt: Added.
9:46 AM Changeset in webkit [251240] by mmaxfield@apple.com
  • 3 edits
    1 add
    3 deletes in trunk/LayoutTests

Make fast/text/font-cursive-italic-cjk.html more robust
https://bugs.webkit.org/show_bug.cgi?id=203072

Reviewed by Alexey Proskuryakov.

Instead of naming STKaiti by name, we can just use an -expected-mismatch test.

  • fast/text/font-cursive-italic-cjk-2-expected.html: Removed.
  • fast/text/font-cursive-italic-cjk-2.html: Removed.
  • fast/text/font-cursive-italic-cjk-expected-mismatch.html: Added.
  • fast/text/font-cursive-italic-cjk-expected.html: Removed.
  • fast/text/font-cursive-italic-cjk.html:
  • platform/mac/TestExpectations:
9:38 AM Changeset in webkit [251239] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][Painting] Add support for image/background image painting
https://bugs.webkit.org/show_bug.cgi?id=203054
<rdar://problem/56347733>

Reviewed by Antti Koivisto.

In addition to image rendering, this patch also addresses various run/decoration painting issues.

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintBoxDecoration):
(WebCore::Display::paintInlineContent):
(WebCore::Display::absoluteDisplayBox):
(WebCore::Display::paintBoxDecorationAndChildren):
(WebCore::Display::Painter::paint):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::setImage):
(WebCore::Display::Run::image const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):

  • layout/layouttree/LayoutReplaced.h:

(WebCore::Layout::Replaced::setCachedImage):
(WebCore::Layout::Replaced::cachedImage const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

9:28 AM Changeset in webkit [251238] by Alan Bujtas
  • 11 edits in trunk/Source/WebCore

[LFC][IFC] Add Display::Run/LineBox mapping
https://bugs.webkit.org/show_bug.cgi?id=203051
<rdar://problem/56342487>

Reviewed by Antti Koivisto.

Mapping enables us to paint baseline aligned runs on the current line. This is temporary until after we figure out the final run/line structure.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addInlineRun):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::alignContentVertically):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::displayRun const):
(WebCore::Layout::Line::Run::logicalRect const):
(WebCore::Layout::Line::Run::adjustLogicalTop):
(WebCore::Layout::Line::Run::moveVertically):
(WebCore::Layout::Line::Run::moveHorizontally):
(WebCore::Layout::Line::Run::expand):

  • layout/inlineformatting/InlineLineBox.h:
  • layout/inlineformatting/InlineLineLayout.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

9:24 AM Changeset in webkit [251237] by commit-queue@webkit.org
  • 4 edits in trunk/Source

[Web Animations] Enable the Web Animations JavaScript API by default
https://bugs.webkit.org/show_bug.cgi?id=203075

Patch by Antoine Quint <Antoine Quint> on 2019-10-17
Reviewed by Antti Koivisto.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:
9:04 AM Changeset in webkit [251236] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix watchOS and tvOS builds after r251224

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::shouldTreatAtLeastOneTypeAsFile):

Move the shouldTreatAtLeastOneTypeAsFile helper function out of the PASTEBOARD_SUPPORTS_ITEM_PROVIDERS
section, and into generic iOS-family code so that it can be used in pasteboardMayContainFilePaths.

8:47 AM Changeset in webkit [251235] by clopez@igalia.com
  • 2 edits in trunk/PerformanceTests

[GTK] Perf test IndexedDB/basic/index-cursor-delete.html timeouts
https://bugs.webkit.org/show_bug.cgi?id=203083

Unreviewed gardening.

  • Skipped: Skip a test that is timing out on the GTK perf bot.
8:14 AM Changeset in webkit [251234] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Check values of variables before extracting index in perl
https://bugs.webkit.org/show_bug.cgi?id=202333

Patch by Paulo Matos <Paulo Matos> on 2019-10-17
Reviewed by Jonathan Bedard.

If compiler doesn't properly report the host and target it was
compiled for, lacking better information we just go ahead and assume
there is no cross compilation involved.

  • Scripts/webkitdirs.pm:

(isCrossCompilation):

8:08 AM Changeset in webkit [251233] by Pablo Saavedra
  • 1 edit
    1 add in trunk/Tools

Add a driver for MiniBrowser running with WPE for
benchmark_runner
https://bugs.webkit.org/show_bug.cgi?id=202994

Reviewed by Žan Doberšek.

  • Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py: Added.

(WPEMiniBrowserDriver):
(WPEMiniBrowserDriver.launch_url):
(WPEMiniBrowserDriver.launch_driver):

7:51 AM Changeset in webkit [251232] by clopez@igalia.com
  • 2 edits in trunk/Tools

run-buildbot-test: sqlalchemy exception when upgrading the database
https://bugs.webkit.org/show_bug.cgi?id=202927

Reviewed by Adrian Perez de Castro.

Update the version of sqlalchemy-migrate for pip used for the test.
That fixes the exception when upgrading the database.

  • BuildSlaveSupport/build.webkit.org-config/run-buildbot-test.py:
4:28 AM Changeset in webkit [251231] by cturner@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer] media/video-seek-after-end.html is no longer flakey
https://bugs.webkit.org/show_bug.cgi?id=203079

Unreviewed test gardening

3:29 AM Changeset in webkit [251230] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

MultiChannelResampler does not need to recreate a ChannelProvider for every process call
https://bugs.webkit.org/show_bug.cgi?id=202982

Reviewed by Eric Carlson.

We no longer allocate a new ChannelProvider for every process call.
No observable change of behavior.

  • platform/audio/MultiChannelResampler.cpp:

(WebCore::MultiChannelResampler::ChannelProvider::ChannelProvider):
(WebCore::MultiChannelResampler::ChannelProvider::setProvider):
(WebCore::MultiChannelResampler::MultiChannelResampler):
(WebCore::MultiChannelResampler::process):

  • platform/audio/MultiChannelResampler.h:
2:05 AM Changeset in webkit [251229] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network: updates when toggling resource caching should be sent to every connected target
https://bugs.webkit.org/show_bug.cgi?id=203025

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Main.js:

(WI._resourceCachingDisabledSettingChanged):

1:12 AM Changeset in webkit [251228] by clopez@igalia.com
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] File and Directory Entries API is not enabled
https://bugs.webkit.org/show_bug.cgi?id=202796

Reviewed by Adrian Perez de Castro.

Enable by default the DirectoryUpload runtime setting that is
used to enable the APIs of the File and Directory Entries API.

Enable also the DataTransferItemsEnabled runtime setting that
exposes the DataTransferItem API. This makes the manual tests
available at https://w3c-test.org/entries-api mostly pass on
platform GTK (those tests need also the DataTransferItem API
to enable the drag-and-drop).

The bug <https://webkit.org/b/98940> for DataTransferItem API
remains open because the layout test editing/pasteboard/data-transfer-items.html
is still not passing completely. However other manual tests for
DataTransferItem pass after enabling it.

  • Shared/WebPreferencesDefaultValues.h:
1:00 AM Changeset in webkit [251227] by Devin Rousso
  • 238 edits
    7 copies
    3 moves
    23 adds
    5 deletes in trunk

Web Inspector: rework frontend agent construction to allow commands/events to be controlled by the related target's type
https://bugs.webkit.org/show_bug.cgi?id=200384
<rdar://problem/53850352>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/scripts/codegen/generate_js_backend_commands.py:

(JSBackendCommandsGenerator.generate_domain):
(JSBackendCommandsGenerator.generate_domain.generate_parameter_object):

  • inspector/scripts/codegen/models.py:

(validate_target_types): Added.
(Protocol.parse_domain):
(Protocol.parse_command):
(Protocol.parse_event):
(Domain.init):
(Domains):
(Command.init):
(Event.init):

  • inspector/protocol/ApplicationCache.json:
  • inspector/protocol/Audit.json:
  • inspector/protocol/CPUProfiler.json:
  • inspector/protocol/CSS.json:
  • inspector/protocol/Canvas.json:
  • inspector/protocol/Console.json:
  • inspector/protocol/DOM.json:
  • inspector/protocol/DOMDebugger.json:
  • inspector/protocol/DOMStorage.json:
  • inspector/protocol/Database.json:
  • inspector/protocol/Debugger.json:
  • inspector/protocol/Heap.json:
  • inspector/protocol/IndexedDB.json:
  • inspector/protocol/Inspector.json:
  • inspector/protocol/LayerTree.json:
  • inspector/protocol/Memory.json:
  • inspector/protocol/Network.json:
  • inspector/protocol/Page.json:
  • inspector/protocol/Recording.json:
  • inspector/protocol/Runtime.json:
  • inspector/protocol/ScriptProfiler.json:
  • inspector/protocol/Security.json:
  • inspector/protocol/ServiceWorker.json:
  • inspector/protocol/Target.json:
  • inspector/protocol/Timeline.json:
  • inspector/protocol/Worker.json:

Add debuggableTypes and targetTypes arrays to domains/commands/events that are used when
generating InspectorBackendCommands.js for more accurate compatibility checks.

  • inspector/InspectorTarget.h:
  • inspector/agents/InspectorTargetAgent.h:
  • inspector/agents/InspectorTargetAgent.cpp:

(Inspector::targetTypeToProtocolType):
(Inspector::InspectorTargetAgent::exists): Deleted.
Remove Target.exists now that the frontend can do proper feature checking.

  • inspector/remote/RemoteControllableTarget.h:
  • inspector/remote/RemoteInspectionTarget.h:
  • inspector/remote/RemoteInspectorConstants.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::listingForInspectionTarget const):

  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::listingForInspectionTarget const):

  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::listingForInspectionTarget const):
Split the Web debuggable type into Page (WebCore::Page) and WebPage (WebKit::WebPageProxy).

  • inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result:
  • inspector/scripts/tests/generic/command-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/domain-availability.json: Removed.
  • inspector/scripts/tests/generic/domain-debuggableTypes.json: Added.
  • inspector/scripts/tests/generic/domain-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/domain-targetTypes.json: Added.
  • inspector/scripts/tests/generic/event-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/expected/command-targetType-matching-domain-debuggableType.json-result: Added.
  • inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/generic/expected/domain-debuggableTypes.json-result: Added.
  • inspector/scripts/tests/generic/expected/domain-targetType-matching-domain-debuggableType.json-result: Added.
  • inspector/scripts/tests/generic/expected/domain-targetTypes.json-result: Added.
  • inspector/scripts/tests/generic/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/event-targetType-matching-domain-debuggableType.json-result: Added.
  • inspector/scripts/tests/generic/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/generic/expected/fail-on-command-targetType-matching-domain-debuggableType.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-command-targetTypes-type.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-command-targetTypes-value.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-domain-availability-type.json-error: Removed.
  • inspector/scripts/tests/generic/expected/fail-on-domain-availability-value.json-error: Removed.
  • inspector/scripts/tests/generic/expected/fail-on-domain-availability.json-error: Removed.
  • inspector/scripts/tests/generic/expected/fail-on-domain-debuggableTypes-type.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-domain-debuggableTypes-value.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-domain-targetType-matching-domain-debuggableType.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-domain-targetTypes-type.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-domain-targetTypes-value.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-event-targetType-matching-domain-debuggableType.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-event-targetTypes-type.json-error: Added.
  • inspector/scripts/tests/generic/expected/fail-on-event-targetTypes-value.json-error: Added.
  • inspector/scripts/tests/generic/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
  • inspector/scripts/tests/generic/expected/version.json-result:
  • inspector/scripts/tests/generic/fail-on-command-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/fail-on-command-targetTypes-type.json: Added.
  • inspector/scripts/tests/generic/fail-on-command-targetTypes-value.json: Added.
  • inspector/scripts/tests/generic/fail-on-domain-debuggableTypes-type.json: Added.
  • inspector/scripts/tests/generic/fail-on-domain-debuggableTypes-value.json: Added.
  • inspector/scripts/tests/generic/fail-on-domain-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/fail-on-domain-targetTypes-type.json: Added.
  • inspector/scripts/tests/generic/fail-on-domain-targetTypes-value.json: Added.
  • inspector/scripts/tests/generic/fail-on-event-targetType-matching-domain-debuggableType.json: Added.
  • inspector/scripts/tests/generic/fail-on-event-targetTypes-type.json: Added.
  • inspector/scripts/tests/generic/fail-on-event-targetTypes-value.json: Added.
  • inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result:

Update test results, as well as added new tests for debuggableTypes and targetTypes.

Source/WebCore:

  • inspector/InspectorFrontendClient.h:

(WebCore::InspectorFrontendClient::backendCommandsURL): Deleted.
(WebCore::InspectorFrontendClient::debuggableType): Deleted.

  • inspector/InspectorFrontendClientLocal.h:
  • page/PageDebuggable.h:

(WebCore::PageDebuggable::type const):

  • testing/Internals.cpp:

(WebCore::InspectorStubFrontend::debuggableType const): Added.
Split the Web debuggable type into Page (WebCore::Page) and WebPage (WebKit::WebPageProxy).

Source/WebInspectorUI:

InspectorBackend.domains.${domain} isn't a truly valid way to feature check, as it
indicates what's supported by the WebKit framework underlying whatever's currently being
inspected, not what the current inspection target supports.

As an example, inspecting an iOS JSContext will still show InspectorBackend.domains.DOM
as the DOMAgent is supported by WebKit, even though JSContexts have no concept of the
DOM. In this example, however, window.DOMAgent would NOT exist, as the availability
check for the DOM domain wouldn't pass, meaning that the agent never gets connected.

In order to do proper feature checking, InspectorBackend.domains needs to be accurate
depending on the debuggable type. Furthermore, each target underneath that debuggable needs
to be able to "choose" what commands/events are supported based on that target's type.

This patch modifies how InspectorBackendCommands.js ties into InspectorBackend. Rather
than directly creating an InspectorBackend.Agent for each domain, we now create more of a
"blueprint" of the domain, and wait to actually create an InspectorBackend.Agent until we
have a WI.Target (and therefore an InspectorBackend.Connection). Each "concept" of the
protocol now directly maps to an object.

  • InspectorBackend.Domain
  • InspectorBackend.Command
  • InspectorBackend.Event
  • InspectorBackend.Dispatcher

When a WI.Target is created, it gets the list of InspectorBackend.Domain that support
that WI.Target's type (specified in the protocol JSON files) and generates an
InspectorBackend.Agent for each, which in turn generates an InspectorBackend.Callable
for each supported InspectorBackend.Command and instantiates InspectorBackend.Dispatcher.

Activating a InspectorBackend.Domain means it's visible for InspectorBackend feature
checking. This must be done this way for older ITML backends that will still appear as
"JSContext" targets and therefore go through the "extra domains" path. Ideally, the process
of registering a domain should be enough to activate it. <https://webkit.org/b/201150>

Feature checking can now only be done via hasDomain, hasCommand, and hasEvent on
InspectorBackend or a specific WI.Target, and there are different implications for each:

  • InspectorBackend.hasDomain(DOM) asks whether the DOM domain is supported by the current debuggable, but says nothing about whether any WI.Target support DOM.
  • target.hasDomain("DOM") asks whether the given target supports DOM, which is limited by InspectorBackend.hasDomain("DOM").

Now that InspectorBackend.Agent is only created by a WI.Target, it's no longer valid to
write window.DOMAgent, as there is no "global" agent. All protocol logic _must_ go through
a WI.Target. <https://webkit.org/b/201149>

Debuggable Types:

  • JavaScript (JSC::JSGlobalObject)
  • Page (WebCore::Page)
  • ServiceWorker (WebCore::ServiceWorkerThreadProxy)
  • WebPage (WebKit::WebPageProxy)

Target Types:

  • JavaScript (direct connection)
  • Page (multi-target connection to any Worker)
  • ServiceWorker (direct connection)
  • WebPage (multi-target connection to 1+ Page)
  • Worker (direct connection, only available for Page debuggables)
  • UserInterface/Base/DebuggableType.js:
  • UserInterface/Base/TargetType.js: Copied from Source/WebInspectorUI/UserInterface/Base/DebuggableType.js.
  • UserInterface/Protocol/Connection.js:
  • UserInterface/Protocol/InspectorBackend.js:
  • UserInterface/Protocol/ApplicationCacheObserver.js:
  • UserInterface/Protocol/CPUProfilerObserver.js:
  • UserInterface/Protocol/CSSObserver.js:
  • UserInterface/Protocol/CanvasObserver.js:
  • UserInterface/Protocol/ConsoleObserver.js:
  • UserInterface/Protocol/DOMObserver.js:
  • UserInterface/Protocol/DOMStorageObserver.js:
  • UserInterface/Protocol/DatabaseObserver.js:
  • UserInterface/Protocol/DebuggerObserver.js:
  • UserInterface/Protocol/HeapObserver.js:
  • UserInterface/Protocol/InspectorObserver.js:
  • UserInterface/Protocol/LayerTreeObserver.js:
  • UserInterface/Protocol/MemoryObserver.js:
  • UserInterface/Protocol/NetworkObserver.js:
  • UserInterface/Protocol/PageObserver.js:
  • UserInterface/Protocol/RuntimeObserver.js:
  • UserInterface/Protocol/ScriptProfilerObserver.js:
  • UserInterface/Protocol/TargetObserver.js:
  • UserInterface/Protocol/TimelineObserver.js:
  • UserInterface/Protocol/WorkerObserver.js:

All observers now extend from InspectorBackend.Dispatcher and have a separate instance for
each InspectorBackend.Agent, each having their own _target.

  • UserInterface/Protocol/Target.js:
  • UserInterface/Protocol/DirectBackendTarget.js:
  • UserInterface/Protocol/JavaScriptContextTarget.js: Removed.
  • UserInterface/Protocol/MultiplexingBackendTarget.js:
  • UserInterface/Protocol/PageTarget.js:
  • UserInterface/Protocol/WorkerTarget.js:

Agents are now created per-target instead of copied from the "global" list. This means that
agents can have a different set of commands/events depending on the associated target.

  • UserInterface/Base/Main.js:
  • UserInterface/Base/Utilities.js:
  • UserInterface/Controllers/AppController.js:
  • UserInterface/Controllers/AppControllerBase.js:
  • UserInterface/Controllers/ApplicationCacheManager.js:
  • UserInterface/Controllers/AuditManager.js:
  • UserInterface/Controllers/BreakpointPopoverController.js:
  • UserInterface/Controllers/CSSManager.js:
  • UserInterface/Controllers/CanvasManager.js:
  • UserInterface/Controllers/ConsoleManager.js:
  • UserInterface/Controllers/DOMDebuggerManager.js:
  • UserInterface/Controllers/DOMManager.js:
  • UserInterface/Controllers/DOMStorageManager.js:
  • UserInterface/Controllers/DatabaseManager.js:
  • UserInterface/Controllers/DebuggerManager.js:
  • UserInterface/Controllers/HeapManager.js:
  • UserInterface/Controllers/IndexedDBManager.js:
  • UserInterface/Controllers/JavaScriptLogViewController.js:
  • UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
  • UserInterface/Controllers/LayerTreeManager.js:
  • UserInterface/Controllers/MemoryManager.js:
  • UserInterface/Controllers/NetworkManager.js:
  • UserInterface/Controllers/RuntimeManager.js:
  • UserInterface/Controllers/TargetManager.js:
  • UserInterface/Controllers/TimelineManager.js:
  • UserInterface/Controllers/WorkerManager.js:
  • UserInterface/Main.html:
  • UserInterface/Models/AuditTestBase.js:
  • UserInterface/Models/AuditTestCase.js:
  • UserInterface/Models/AuditTestCaseResult.js:
  • UserInterface/Models/CPUInstrument.js:
  • UserInterface/Models/CPUTimelineRecord.js:
  • UserInterface/Models/CSSCompletions.js:
  • UserInterface/Models/CSSStyleSheet.js:
  • UserInterface/Models/Canvas.js:
  • UserInterface/Models/DOMNode.js:
  • UserInterface/Models/DOMNodeStyles.js:
  • UserInterface/Models/DOMStorageObject.js:
  • UserInterface/Models/DOMTree.js:
  • UserInterface/Models/DatabaseObject.js:
  • UserInterface/Models/FPSInstrument.js:
  • UserInterface/Models/GarbageCollection.js:
  • UserInterface/Models/HeapAllocationsInstrument.js:
  • UserInterface/Models/Instrument.js:
  • UserInterface/Models/MediaInstrument.js:
  • UserInterface/Models/MemoryInstrument.js:
  • UserInterface/Models/MemoryPressureEvent.js:
  • UserInterface/Models/MemoryTimelineRecord.js:
  • UserInterface/Models/Recording.js:
  • UserInterface/Models/Resource.js:
  • UserInterface/Models/ScriptInstrument.js:
  • UserInterface/Models/ScriptSyntaxTree.js:
  • UserInterface/Models/ScriptTimelineRecord.js:
  • UserInterface/Models/ShaderProgram.js:
  • UserInterface/Models/SourceMapResource.js:
  • UserInterface/Models/TimelineRecording.js:
  • UserInterface/Protocol/RemoteObject.js:
  • UserInterface/Test.html:
  • UserInterface/Test/FrontendTestHarness.js:
  • UserInterface/Test/Test.js:
  • UserInterface/Test/TestAppController.js:
  • UserInterface/Views/AuditNavigationSidebarPanel.js:
  • UserInterface/Views/AuditTabContentView.js:
  • UserInterface/Views/CanvasTabContentView.js:
  • UserInterface/Views/ContextMenuUtilities.js:
  • UserInterface/Views/CookieStorageContentView.js:
  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
  • UserInterface/Views/DOMTreeContentView.js:
  • UserInterface/Views/ElementsTabContentView.js:
  • UserInterface/Views/IndexedDatabaseDetailsSidebarPanel.js:
  • UserInterface/Views/Layers3DContentView.js:
  • UserInterface/Views/LayersTabContentView.js:
  • UserInterface/Views/LayoutTimelineView.js:
  • UserInterface/Views/LogContentView.js:
  • UserInterface/Views/NetworkTabContentView.js:
  • UserInterface/Views/NetworkTableContentView.js:
  • UserInterface/Views/NetworkTimelineView.js:
  • UserInterface/Views/ObjectTreeView.js:
  • UserInterface/Views/QuickConsole.js:
  • UserInterface/Views/ResourceDetailsSidebarPanel.js:
  • UserInterface/Views/ScriptClusterTimelineView.js:
  • UserInterface/Views/ScriptDetailsTimelineView.js:
  • UserInterface/Views/ScriptTreeElement.js:
  • UserInterface/Views/SearchSidebarPanel.js:
  • UserInterface/Views/SearchTabContentView.js:
  • UserInterface/Views/SettingsTabContentView.js:
  • UserInterface/Views/SourceCodeTextEditor.js:
  • UserInterface/Views/SourcesNavigationSidebarPanel.js:
  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
  • UserInterface/Views/SpreadsheetStyleProperty.js:
  • UserInterface/Views/StorageTabContentView.js:
  • UserInterface/Views/TimelineRecordingContentView.js:
  • UserInterface/Views/TimelineTabContentView.js:
  • UserInterface/Views/Toolbar.js:
  • UserInterface/Views/WebSocketContentView.js:
  • UserInterface/Views/WorkerTreeElement.js:

Replace all instances of window.DomainAgent with target.DomainAgent, where target is
either derived from an associated model object or WI.assumingMainTarget().
Split the WI.DebuggableType.Web debuggable type into WI.DebuggableType.Page (WebCore::Page)
and WI.DebuggableType.WebPage (WebKit::WebPageProxy).

  • UserInterface/Protocol/Legacy/*:
  • Versions/*:

Update protocol files for older versions of iOS.

  • .eslintrc:
  • Localizations/en.lproj/localizedStrings.js:

Source/WebKit:

  • WebProcess/WebPage/RemoteWebInspectorUI.h:

(WebKit::WebInspectorUI::backendCommandsURL const): Added.
(WebKit::WebInspectorUI::debuggableType const): Added.
(WebKit::WebInspectorUI::backendCommandsURL): Deleted.
(WebKit::WebInspectorUI::debuggableType): Deleted.

  • WebProcess/WebPage/WebInspectorUI.h:

(WebKit::WebInspectorUI::backendCommandsURL const): Added.
(WebKit::WebInspectorUI::debuggableType const): Added.

  • UIProcess/WebPageDebuggable.h:

(WebKit::WebPageDebuggable::type const):

  • UIProcess/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::RemoteInspectorClient):

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(debuggableTypeString):
Split the Web debuggable type into Page (WebCore::Page) and WebPage (WebKit::WebPageProxy).

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebInspectorClient.h:

(WebInspectorFrontendClient::debuggableType const): Added.
Split the Web debuggable type into Page (WebCore::Page) and WebPage (WebKit::WebPageProxy).

Source/WebKitLegacy/win:

  • WebCoreSupport/WebInspectorClient.h:

(WebInspectorFrontendClient::debuggableType const): Added.
Split the Web debuggable type into Page (WebCore::Page) and WebPage (WebKit::WebPageProxy).

LayoutTests:

  • inspector/canvas/requestShaderSource-webgl.html:
  • inspector/canvas/updateShader-webgl:
  • inspector/page/overrideSetting.html:
  • inspector/page/overrideSetting-ICECandidateFilteringEnabled.html:
  • inspector/page/overrideSetting-MockCaptureDevicesEnabled.html:
  • inspector/runtime/parse.html:

Replace all instances of DomainAgent.Enum with InspectorBackend.domains.Domain.Enum.

  • inspector/audit/run.html:
  • inspector/audit/version.html:
  • inspector/recording/version.html:

Use new InspectorBackend methods.

  • inspector/unit-tests/target-manager.html:
  • inspector/unit-tests/target-manager-expected.txt:
  • inspector/worker/console-basic.html:
  • inspector/worker/debugger-pause.html:
  • inspector/worker/debugger-scripts.html:
  • inspector/worker/debugger-shared-breakpoint.html:
  • inspector/worker/resources-in-worker.html:
  • inspector/worker/resources/dom-debugger-utilities.js:
  • inspector/worker/runtime-basic.html:
  • http/tests/inspector/worker/blob-script-with-cross-domain-imported-scripts.html:

Replace WI.Target.Type with WI.TargetType.

  • inspector/dom/inspect.html:
  • inspector/dom/inspect-expected.txt:

Rewrite test since faking events from the backend now requires a target.

  • inspector/unit-tests/set-utilities.html:
  • inspector/unit-tests/set-utilities-expected.txt:

Add tests for Set.prototype.addAll.

Oct 16, 2019:

10:45 PM Changeset in webkit [251226] by mark.lam@apple.com
  • 9 edits
    1 delete in trunk/Source/JavaScriptCore

Reduce the amount of memory needed to store Options.
https://bugs.webkit.org/show_bug.cgi?id=202105

Reviewed by Yusuke Suzuki.

The size of the JSC::Config needed to store the Options is now reduced to 4K
instead of 16K, enabled by constexpr template magic.

  1. Instead of all options in a large array of OptionEntry (which is a union of all the option types), we now have separate arrays for each of the types of options. For example,

Removed g_jscConfig.options[].
Added g_jscConfig.typeBoolOptions[].
Added g_jscConfig.typeInt32Options[].
Added g_jscConfig.typeDoubleOptions[].
...

We used to find the storage for the option using g_jscConfig.options[Options::ID].
We now find the storage for each type of option using
g_jscConfig.options[optionTypeSpecificIndex<OptionTypeID, OptionID>()]. For
example, Options::useJIT() used to be implemented as:

inline bool& Options::useJIT()
{

return g_jscConfig.options[Options::useJITID];

}

... which is now replaced with:

inline bool& Options::useJIT()
{

return g_jscConfig.typeBoolOptions[optionTypeSpecificIndex<OptionTypeID::Bool, OptionID::useJIT>()];

}

MSVC has a bug where it cannot handle very large source files: see
https://developercommunity.visualstudio.com/content/problem/653301/fatal-error-c1002-compiler-is-out-of-heap-space-in.html.
This bug prevents this patch from building on MSVC. To workaround this bug,
we don't inline the Options accessors when COMPILER(MSVC). This prevents MSVC
from having to parse the large body of template code code to used to implement
the inline accessors in every file that #include "Options.h".

Also add the @no-unify attribute to Options.cpp (where we put the accessors)
so that it doesn't trigger the MSVC bug also.

  1. Introduce the optionTypeSpecificIndex() constexpr template function for computing the index of each option in their respective type specific options array.
  1. Introduce OptionTypes, OptionTypeID, and OptionID.

The OptionTypes namespace replaces OptionEntry as the container of option types.
The OptionID enum class replaces Options::ID.
The OptionTypeID enum class is new and is used together with OptionID in

constexpr templates to compute the typeSpecificIndex of options.

  1. Removed the OptionEntry struct and OptionEntry.h. After (1), this struct is only used in the Option class. We just moved the union of option types (that OptionEntry embeds) into the Option class.

Moved class OptionRange into OptionsList.h.

  1. Removed the large OptionEntry arrays from JSC::Config. Added type specific options arrays. Also ordered these arrays to maximize compactness and minimize internal fragmentation.
  1. Changed scaleJITPolicy() to go directly to g_jscConfig.typeInt32Options[] instead of going through the Option wrapper object. This allows us to simplify things and make the Option class a read only interface of options.
  1. Changed Options::initialize() to only compute the option default value once. The default value specified in the OptionsList may not always be a constant. Sometimes, it is a function call.
  1. The Option class now only gives read only access to the options.

The Option class' role is to provide an interface for reading an option at any
given OptionID without first knowing about the type of the specific option.
It is useful for iterating options, and is currently only used by
Options::dumpOption().

Technically, we could merge all the Option class code into its single client.
We opted not to do this because the amount of code is non-trivial, and the
Option class does a good job of encapsulating this functionality.

  • API/glib/JSCOptions.cpp:

(jscOptionsSetValue):
(jscOptionsGetValue):
(jsc_options_foreach):
(jsc_options_get_option_group):

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/JSCConfig.h:
  • runtime/OptionEntry.h: Removed.
  • runtime/Options.cpp:

(JSC::Options::isAvailable):
(JSC::overrideOptionWithHeuristic):
(JSC::optionTypeSpecificIndex):
(JSC::scaleJITPolicy):
(JSC::recomputeDependentOptions):
(JSC::Options::initialize):
(JSC::Options::setOptionWithoutAlias):
(JSC::Options::dumpAllOptions):
(JSC::Options::dumpOption):
(JSC::Option::Option):
(JSC::Option::defaultOption const):
(JSC::Option::dump const):
(JSC::Option::operator== const):

  • runtime/Options.h:

(JSC::Option::id const):
(JSC::Option::name const):
(JSC::Option::description const):
(JSC::Option::type const):
(JSC::Option::availability const):
(JSC::Option::isOverridden const):
(JSC::Option::Option):
(JSC::Option::idIndex const):
(JSC::optionTypeSpecificIndex):
(JSC::Option::defaultOption const): Deleted.
(JSC::Option::boolVal): Deleted.
(JSC::Option::unsignedVal): Deleted.
(JSC::Option::doubleVal): Deleted.
(JSC::Option::int32Val): Deleted.
(JSC::Option::optionRangeVal): Deleted.
(JSC::Option::optionStringVal): Deleted.
(JSC::Option::gcLogLevelVal): Deleted.

  • runtime/OptionsList.h:

(JSC::OptionRange::operator= ):
(JSC::OptionRange::rangeString const):
(JSC::countNumberOfJSCOptionsOfType):

8:03 PM Changeset in webkit [251225] by Chris Dumez
  • 2 edits in trunk/Source/WebKitLegacy/mac

Unreviewed, fix iOS Debug build after r251220.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

7:59 PM Changeset in webkit [251224] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[Clipboard API] [iOS] Refactor logic for suppressing URL data when the pasteboard may contain files
https://bugs.webkit.org/show_bug.cgi?id=203065

Reviewed by Tim Horton.

Platform-specific pasteboard refactoring before tackling webkit.org/b/203021. See below for details. No new
tests, as there is no change in behavior.

  • platform/Pasteboard.h:

(WebCore::Pasteboard::changeCount const):

Add a stub for Pasteboard::changeCount() on non-Cocoa platforms.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):

Move this helper function farther up the file, so it can be used in more places.

(WebCore::webSafeTypes):

Add a separate helper to compute the list of web-safe MIME types (for instance, "text/plain") given a list of
platform types, and a function to determine whether to avoid exposing a given URL to the DOM.

(WebCore::shouldTreatAtLeastOneTypeAsFile):

Split this out into a separate helper function, so that it can be invoked when determining whether a given
NSItemProvider is suspected to contain file paths. In the case where we're getting the full list of types that
are safe for the DOM to read, we want to pass in the entire pasteboard object and iterate through all of the
available types in search for something that could feasibly accompany a file URL.

In the case of computing the web-safe types per item, we only have an item provider, in which case we only
iterate through the types in that NSItemProvider. See call sites below for examples.

(WebCore::PlatformPasteboard::informationForItemAtIndex):

Invoke the new webSafeTypes helper method.

(WebCore::pasteboardMayContainFilePaths):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):

Invoke the new webSafeTypes helper method.

7:45 PM Changeset in webkit [251223] by aestes@apple.com
  • 2 edits in trunk/Tools

[Quick Look] Test that legacy web views load previews before deciding content policy
https://bugs.webkit.org/show_bug.cgi?id=202971

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:

(-[QuickLookLegacyDelegate webView:decidePolicyForMIMEType:request:frame:decisionListener:]):
(TEST):
(-[QuickLookFrameLoadDelegate webView:didFinishLoadForFrame:]): Deleted.

7:42 PM Changeset in webkit [251222] by emilio
  • 2 edits in trunk/Source/WebKit

Pass network cache directory in WebsiteDataStore::parameters() for non-Cocoa platforms.
https://bugs.webkit.org/show_bug.cgi?id=203043

This was causing various errors in the network process that were
visible in debug builds.

Reviewed by Alex Christensen.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

6:53 PM Changeset in webkit [251221] by Brent Fulgham
  • 3 edits in trunk/Source/WebCore

[FTW] Correct radial gradient handling of various radius orderings
https://bugs.webkit.org/show_bug.cgi?id=202815

Reviewed by Per Arne Vollan.

Revise the 'generateGradient' implementation to recognize that the
radius arguments might not be in increasing order. Direct2D's
implementation does expect this, so we need to swap order and
revise the gradient range to match.

Drive-by fix: Stop building unused image decoders if building with
the Apple stack.

  • PlatformFTW.cmake: Stop building unused image decoders.
  • platform/graphics/win/GradientDirect2D.cpp:

(WebCore::Gradient::generateGradient):

6:44 PM Changeset in webkit [251220] by Chris Dumez
  • 296 edits
    2 moves in trunk

Rename PageCache to BackForwardCache
https://bugs.webkit.org/show_bug.cgi?id=203048

Reviewed by Alex Christensen.

Rename PageCache to BackForwardCache for clarity and consistency with the UIProcess's WebBackForwardCache.

Source/WebCore:

  • Modules/geolocation/Geolocation.cpp:

(WebCore::Geolocation::suspend):

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::canSuspendForDocumentSuspension const):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::suspend):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::suspend):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::canSuspendForDocumentSuspension const):

  • bindings/js/WindowProxy.cpp:

(WebCore::WindowProxy::clearJSWindowProxiesNotMatchingDOMWindow):

  • bindings/js/WindowProxy.h:
  • dom/ActiveDOMObject.h:
  • dom/Document.cpp:

(WebCore::Document::~Document):
(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::needsStyleRecalc const):
(WebCore::Document::invalidateMatchedPropertiesCacheAndForceStyleRecalc):
(WebCore::Document::createRenderTree):
(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::attachToCachedFrame):
(WebCore::Document::detachFromCachedFrame):
(WebCore::Document::prepareForDestruction):
(WebCore::Document::adjustFocusedNodeOnNodeRemoval):
(WebCore::Document::setFocusedElement):
(WebCore::Document::takeDOMWindowFrom):
(WebCore::Document::setBackForwardCacheState):
(WebCore::Document::suspend):
(WebCore::Document::resume):
(WebCore::Document::topDocument const):

  • dom/Document.h:

(WebCore::Document::backForwardCacheState const):

  • dom/FullscreenManager.cpp:

(WebCore::FullscreenManager::willEnterFullscreen):
(WebCore::FullscreenManager::didEnterFullscreen):
(WebCore::FullscreenManager::willExitFullscreen):
(WebCore::FullscreenManager::didExitFullscreen):

  • dom/FullscreenManager.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):

  • history/BackForwardCache.cpp: Renamed from Source/WebCore/history/PageCache.cpp.

(WebCore::logBackForwardCacheFailureDiagnosticMessage):
(WebCore::canCacheFrame):
(WebCore::canCachePage):
(WebCore::BackForwardCache::singleton):
(WebCore::BackForwardCache::BackForwardCache):
(WebCore::BackForwardCache::dump const):
(WebCore::BackForwardCache::canCache const):
(WebCore::BackForwardCache::pruneToSizeNow):
(WebCore::BackForwardCache::setMaxSize):
(WebCore::BackForwardCache::frameCount const):
(WebCore::BackForwardCache::markPagesForDeviceOrPageScaleChanged):
(WebCore::BackForwardCache::markPagesForContentsSizeChanged):
(WebCore::BackForwardCache::markPagesForCaptionPreferencesChanged):
(WebCore::setBackForwardCacheState):
(WebCore::BackForwardCache::addIfCacheable):
(WebCore::BackForwardCache::take):
(WebCore::BackForwardCache::removeAllItemsForPage):
(WebCore::BackForwardCache::get):
(WebCore::BackForwardCache::remove):
(WebCore::BackForwardCache::prune):

  • history/BackForwardCache.h: Renamed from Source/WebCore/history/PageCache.h.
  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):
(WebCore::CachedFrame::clear):
(WebCore::CachedFrame::destroy):

  • history/CachedFramePlatformData.h:
  • history/HistoryItem.cpp:

(WebCore::HistoryItem::setCachedPage):
(WebCore::HistoryItem::setURL):

  • history/HistoryItem.h:

(WebCore::HistoryItem::isInBackForwardCache const):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::suspend):
(WebCore::HTMLMediaElement::resume):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::createElementRenderer):

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::suspend):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::autoplayPermitted const):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::addSubresourceLoader):

  • loader/DocumentLoader.h:
  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::closeURL):
(WebCore::FrameLoader::clear):
(WebCore::FrameLoader::stopAllLoaders):
(WebCore::FrameLoader::stopForBackForwardCache):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::open):
(WebCore::FrameLoader::frameDetached):
(WebCore::FrameLoader::detachFromParent):
(WebCore::FrameLoader::receivedMainResourceError):
(WebCore::FrameLoader::shouldPerformFragmentNavigation):
(WebCore::FrameLoader::dispatchUnloadEvents):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
(WebCore::FrameLoader::loadDifferentDocumentItem):

  • loader/FrameLoader.h:
  • loader/FrameLoaderClient.h:
  • loader/HistoryController.cpp:

(WebCore::HistoryController::saveScrollPositionAndViewStateToItem):
(WebCore::HistoryController::restoreScrollPositionAndViewState):
(WebCore::HistoryController::invalidateCurrentItemCachedPage):
(WebCore::HistoryController::updateForReload):

  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::canCacheInBackForwardCache):

  • loader/appcache/ApplicationCacheHost.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::suspendForBackForwardCache):
(WebCore::DOMWindow::resumeFromBackForwardCache):
(WebCore::DOMWindow::decrementScrollEventListenersCount):

  • page/DOMWindow.h:
  • page/DOMWindowExtension.cpp:

(WebCore::DOMWindowExtension::suspendForBackForwardCache):
(WebCore::DOMWindowExtension::resumeFromBackForwardCache):

  • page/DOMWindowExtension.h:
  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::backForwardCacheKey):
(WebCore::DiagnosticLoggingKeys::backForwardCacheFailureKey):

  • page/DiagnosticLoggingKeys.h:
  • page/EventSource.cpp:

(WebCore::EventSource::scheduleReconnect):
(WebCore::EventSource::didReceiveResponse):
(WebCore::EventSource::didReceiveData):
(WebCore::EventSource::didFinishLoading):
(WebCore::EventSource::didFail):
(WebCore::EventSource::abortConnectionAttempt):
(WebCore::EventSource::suspend):
(WebCore::EventSource::resume):
(WebCore::EventSource::dispatchMessageEvent):

  • page/EventSource.h:
  • page/Frame.cpp:

(WebCore::Frame::setView):
(WebCore::Frame::setDocument):
(WebCore::Frame::willDetachPage):

  • page/FrameView.cpp:

(WebCore::FrameView::didRestoreFromBackForwardCache):
(WebCore::FrameView::setContentsSize):

  • page/FrameView.h:
  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layout):
(WebCore::FrameViewLayoutContext::scheduleLayout):

  • page/MemoryRelease.cpp:

(WebCore::releaseCriticalMemory):
(WebCore::releaseMemory):

  • page/MemoryRelease.h:
  • page/Page.cpp:

(WebCore::Page::~Page):
(WebCore::Page::setViewScaleFactor):
(WebCore::Page::setDeviceScaleFactor):

  • page/Page.h:
  • page/PageGroup.cpp:

(WebCore::PageGroup::captionPreferencesChanged):

  • page/PerformanceLogging.cpp:

(WebCore::PerformanceLogging::memoryUsageStatistics):

  • page/Settings.yaml:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::usesBackForwardCacheChanged):

  • page/SettingsBase.h:
  • page/animation/AnimationBase.cpp:

(WebCore::AnimationBase::setNeedsStyleRecalc):

  • page/animation/CSSAnimationController.cpp:

(WebCore::CSSAnimationControllerPrivate::updateAnimations):
(WebCore::CSSAnimationControllerPrivate::addElementChangeToDispatch):
(WebCore::CSSAnimationController::cancelAnimations):
(WebCore::CSSAnimationController::updateAnimations):

  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::sendTransitionEvent):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::sendAnimationEvent):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintIntoLayer):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
(WebCore::RenderLayerCompositor::didAddScrollingLayer):

  • rendering/RenderLayerCompositor.h:
  • rendering/RenderObject.h:
  • rendering/SimpleLineLayoutCoverage.cpp:

(WebCore::SimpleLineLayout::collectNonEmptyLeafRenderBlockFlowsForCurrentPage):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::createAnimatedElementUpdate):

  • testing/Internals.cpp:

(WebCore::Internals::clearBackForwardCache):
(WebCore::Internals::backForwardCacheSize const):
(WebCore::Internals::preventDocumentForEnteringBackForwardCache):

  • testing/Internals.h:
  • testing/Internals.idl:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::suspend):

Source/WebKit:

  • Shared/CacheModel.cpp:

(WebKit::calculateMemoryCacheSizes):

  • Shared/CacheModel.h:
  • Shared/WebPreferences.yaml:
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::willGoToBackForwardListItem):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetPageCacheEnabled):
(WKPreferencesGetPageCacheEnabled):
(WKPreferencesSetPageCacheSupportsPlugins):
(WKPreferencesGetPageCacheSupportsPlugins):

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setUsesPageCache:]):
(-[WKPreferences _usesPageCache]):
(-[WKPreferences _setPageCacheSupportsPlugins:]):
(-[WKPreferences _pageCacheSupportsPlugins]):

  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration pageCacheEnabled]):
(-[_WKProcessPoolConfiguration setPageCacheEnabled:]):

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_get_enable_page_cache):
(webkit_settings_set_enable_page_cache):

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::didReceiveServerRedirectForProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError):
(WebKit::NavigationState::NavigationClient::didCommitNavigation):
(WebKit::NavigationState::NavigationClient::didFinishDocumentLoad):
(WebKit::NavigationState::NavigationClient::didFinishNavigation):
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError):
(WebKit::NavigationState::NavigationClient::didSameDocumentNavigation):

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::shouldUseBackForwardCache const):
(WebKit::WebPageProxy::willGoToBackForwardListItem):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::updateBackForwardCacheCapacity):

  • WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:

(WKBundleBackForwardListItemIsInBackForwardCache):

  • WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.h:
  • WebProcess/WebCoreSupport/SessionStateConversion.cpp:

(WebKit::toBackForwardListItemState):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::WebFrameLoaderClient):
(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):
(WebKit::WebFrameLoaderClient::transitionToCommittedFromCachedFrame):
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
(WebKit::WebFrameLoaderClient::didRestoreFromBackForwardCache):
(WebKit::WebFrameLoaderClient::createPlugin):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:

(WebKit::WebFrameLoaderClient::forceLayoutOnRestoreFromBackForwardCache):

  • WebProcess/WebPage/VisitedLinkTableController.cpp:
  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::removeItem):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::suspendForProcessSwap):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setCacheModel):
(WebKit::WebProcess::deleteWebsiteData):
(WebKit::WebProcess::setBackForwardCacheCapacity):
(WebKit::WebProcess::clearCachedPage):

  • WebProcess/WebProcess.h:

Source/WebKitLegacy/ios:

  • WebView/WebUIKitDelegate.h:

Source/WebKitLegacy/mac:

  • History/BackForwardList.mm:

(BackForwardList::addItem):
(BackForwardList::setCapacity):

  • History/WebBackForwardList.mm:

(-[WebBackForwardList pageCacheSize]):

  • History/WebHistoryItem.mm:
  • History/WebHistoryItemPrivate.h:
  • Misc/WebCache.mm:
  • Misc/WebCoreStatistics.mm:

(+[WebCoreStatistics cachedPageCount]):
(+[WebCoreStatistics cachedFrameCount]):

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::forceLayoutOnRestoreFromBackForwardCache):
(WebFrameLoaderClient::didRestoreFromBackForwardCache):

  • WebCoreSupport/WebVisitedLinkStore.mm:
  • WebView/WebHTMLView.mm:

(-[WebHTMLView layoutToMinimumPageWidth:height:originalPageWidth:originalPageHeight:maximumShrinkRatio:adjustingViewSize:]):
(-[WebHTMLView setNeedsLayout:]):
(-[WebHTMLView setNeedsToApplyStyles:]):

  • WebView/WebView.mm:

(-[WebView _close]):
(-[WebView _preferencesChanged:]):
(+[WebView _setCacheModel:]):

Source/WebKitLegacy/win:

  • BackForwardList.cpp:

(BackForwardList::addItem):
(BackForwardList::setCapacity):

  • WebCoreStatistics.cpp:

(WebCoreStatistics::cachedPageCount):
(WebCoreStatistics::cachedFrameCount):

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::didRestoreFromBackForwardCache):

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebVisitedLinkStore.cpp:
  • WebFrame.cpp:

(WebFrame::accessible const):

  • WebView.cpp:

(WebView::setCacheModel):
(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/TestOptions.cpp:

(TestOptions::TestOptions):

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/TestRunner.cpp:

(overridePreferenceCallback):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):
(setWebPreferencesForTestOptions):

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionNoCache.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionNoCache_Bundle.cpp:

(TestWebKitAPI::DOMWindowExtensionNoCache::willDisconnectDOMWindowExtensionFromGlobalObject):
(TestWebKitAPI::DOMWindowExtensionNoCache::didReconnectDOMWindowExtensionToGlobalObject):

  • TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp:

(TestWebKitAPI::DidRemoveFrameFromHiearchyInBackForwardCacheTest::DidRemoveFrameFromHiearchyInBackForwardCacheTest):
(TestWebKitAPI::DidRemoveFrameFromHiearchyInBackForwardCacheTest::didCreatePage):

  • TestWebKitAPI/Tests/WebKit/LayoutMilestonesWithAllContentInFrame.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::overridePreference):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

  • lldb/lldb_webkit.py:

(WebCoreFrame_SummaryProvider):
(WebCoreDocument_SummaryProvider):
(WebCoreDocumentProvider.page_cache_state):

LayoutTests:

  • animations/resume-after-page-cache.html:
  • compositing/accelerated-layers-after-back.html:
  • compositing/iframes/page-cache-layer-tree.html:
  • compositing/page-cache-back-crash.html:
  • compositing/show-composited-iframe-on-back-button.html:
  • editing/mac/input/unconfirmed-text-navigation-with-page-cache.html:
  • fast/canvas/webgl/canvas-webgl-page-cache.html:
  • fast/css/fontloader-page-cache.html:
  • fast/dom/DeviceMotion/no-page-cache.html:
  • fast/dom/DeviceOrientation/event-after-navigation.html:
  • fast/dom/DeviceOrientation/no-page-cache.html:
  • fast/dom/Window/timer-resume-on-navigation-back.html:
  • fast/events/onunload-back-to-page-cache.html:
  • fast/events/pagehide-timeout.html:
  • fast/events/pagehide-xhr-open.html:
  • fast/events/pageshow-pagehide-on-back-cached-with-frames.html:
  • fast/events/pageshow-pagehide-on-back-cached.html:
  • fast/events/suspend-timers.html:
  • fast/forms/autocomplete-off-with-default-value-does-not-clear.html:
  • fast/frames/frame-crash-with-page-cache.html:
  • fast/frames/frame-unload-navigate-and-setTimeout-assert-fail.html:
  • fast/frames/page-hide-document-open.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts-via-style-update.html:
  • fast/frames/restoring-page-cache-should-not-run-scripts.html:
  • fast/harness/page-cache-crash-on-data-urls.html:
  • fast/harness/use-page-cache.html:
  • fast/history/back-from-page-with-focused-iframe.html:
  • fast/history/go-back-to-iframe-with-plugin.html:
  • fast/history/go-back-to-object-subframe.html:
  • fast/history/history-back-while-pdf-in-pagecache.html:
  • fast/history/page-cache-MessagePort-pending-message.html:
  • fast/history/page-cache-after-window-open.html:
  • fast/history/page-cache-back-navigation-crash.html:
  • fast/history/page-cache-clearing-expected.txt:
  • fast/history/page-cache-clearing.html:
  • fast/history/page-cache-closed-audiocontext.html:
  • fast/history/page-cache-createImageBitmap.html:
  • fast/history/page-cache-createObjectURL-using-open-panel.html:
  • fast/history/page-cache-createObjectURL.html:
  • fast/history/page-cache-destroy-document.html:
  • fast/history/page-cache-element-state-focused.html:
  • fast/history/page-cache-execute-script-during-restore.html:
  • fast/history/page-cache-geolocation-active-oneshot.html:
  • fast/history/page-cache-geolocation-active-watcher.html:
  • fast/history/page-cache-geolocation.html:
  • fast/history/page-cache-iframe-js-url.html:
  • fast/history/page-cache-indexed-closed-db.html:
  • fast/history/page-cache-indexed-opened-db.html:
  • fast/history/page-cache-media-source-closed-2.html:
  • fast/history/page-cache-media-source-closed.html:
  • fast/history/page-cache-media-source-opened.html:
  • fast/history/page-cache-navigate-during-restore.html:
  • fast/history/page-cache-notification-non-suspendable.html:
  • fast/history/page-cache-notification-suspendable.html:
  • fast/history/page-cache-removed-source-buffer.html:
  • fast/history/page-cache-running-audiocontext.html:
  • fast/history/page-cache-subframes-with-provisional-load.html:
  • fast/history/page-cache-suspended-audiocontext.html:
  • fast/history/page-cache-webdatabase-no-transaction-db.html:
  • fast/history/page-cache-webdatabase-pending-transaction.html:
  • fast/history/page-cache-with-opener.html:
  • fast/history/pagehide-remove-iframe-crash.html:
  • fast/history/resources/page-cache-window-with-iframe.html:
  • fast/history/resources/page-cache-window-with-opener.html:
  • fast/history/timed-refresh-in-cached-frame.html:
  • fast/images/animated-gif-restored-from-bfcache.html:
  • fast/loader/frames-with-unload-handlers-in-page-cache.html:
  • fast/loader/image-in-page-cache.html:
  • fast/loader/input-element-page-cache-crash.html:
  • fast/loader/navigate-with-new-target-after-back-forward-navigation.html:
  • fast/loader/navigate-with-post-to-new-target-after-back-forward-navigation.html:
  • fast/loader/scroll-position-restored-on-back.html:
  • fast/loader/stateobjects/no-popstate-when-back-to-stateless-entry-with-page-cache.html:
  • fast/loader/stateobjects/popstate-fires-with-page-cache.html:
  • fast/loader/unschedule-relayout-after-unload.html:
  • fast/loader/window-properties-restored-from-page-cache.html:
  • fast/mediastream/RTCPeerConnection-page-cache.html:
  • fast/overflow/horizontal-scroll-after-back.html:
  • fast/scrolling/iframe-scrollable-after-back.html:
  • fast/scrolling/ios/scroll-events-back-forward-after-pageshow.html:
  • fast/scrolling/ios/scroll-events-back-forward.html:
  • fast/scrolling/ios/touch-scroll-back-forward.html:
  • fast/scrolling/overflow-scrollable-after-back.html:
  • fast/scrolling/page-cache-back-overflow-scroll-restore.html:
  • fast/text-autosizing/ios/text-autosizing-after-back.html:
  • fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html:
  • fast/viewport/viewport-128.html:
  • fast/workers/worker-page-cache.html:
  • http/tests/cache/display-image-unset-allows-cached-image-load.html:
  • http/tests/eventsource/eventsource-page-cache-connected.html:
  • http/tests/eventsource/eventsource-page-cache-connecting.html:
  • http/tests/loading/main-resource-delegates-on-back-navigation.html:
  • http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html:
  • http/tests/loading/unfinished-main-resource-back-to-cached-page-callbacks.html:
  • http/tests/media/reload-after-dialog.html:
  • http/tests/navigation/go-back-to-error-page.html:
  • http/tests/navigation/https-in-page-cache.html:
  • http/tests/navigation/https-no-store-subframe-in-page-cache.html:
  • http/tests/navigation/image-load-in-pagehide-handler.html:
  • http/tests/navigation/page-cache-domcache-pending-promise.html:
  • http/tests/navigation/page-cache-domcachestorage-pending-promise.html:
  • http/tests/navigation/page-cache-failed-xhr.html:
  • http/tests/navigation/page-cache-fontfaceset.html:
  • http/tests/navigation/page-cache-fragment-referrer.html:
  • http/tests/navigation/page-cache-iframe-no-current-historyItem.html:
  • http/tests/navigation/page-cache-iframe-provisional-load-async-delegates.html:
  • http/tests/navigation/page-cache-iframe-provisional-load.html:
  • http/tests/navigation/page-cache-pending-image-load-cache-partition.html:
  • http/tests/navigation/page-cache-pending-image-load.html:
  • http/tests/navigation/page-cache-pending-load.html:
  • http/tests/navigation/page-cache-pending-ping-load-cross-origin.html:
  • http/tests/navigation/page-cache-pending-ping-load-same-origin.html:
  • http/tests/navigation/page-cache-requestAnimationFrame.html:
  • http/tests/navigation/page-cache-xhr-in-pagehide.html:
  • http/tests/navigation/page-cache-xhr.html:
  • http/tests/navigation/resources/https-in-page-cache-3.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load.html:
  • http/tests/navigation/subframe-pagehide-handler-starts-load2.html:
  • http/tests/security/cross-origin-window-open-insert-script.html:
  • http/tests/security/cross-origin-window-open-javascript-url.html:
  • http/tests/security/navigate-when-restoring-cached-page.html:
  • http/tests/security/xss-DENIED-click-and-form-submission-from-inactive-domwindow.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2-pson.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window2.html:
  • http/tests/security/xss-DENIED-script-inject-into-inactive-window3.html:
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html:
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html:
  • http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html:
  • http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html:
  • http/tests/workers/service/page-cache-service-worker-pending-promise.https.html:
  • http/tests/workers/service/page-caching.html:
  • http/wpt/beacon/support/sendBeacon-onpagehide-window.html:
  • legacy-animation-engine/animations/resume-after-page-cache.html:
  • loader/go-back-cached-main-resource.html:
  • loader/go-back-to-different-window-size.html:
  • media/crash-closing-page-with-media-as-plugin-fallback.html:
  • media/media-source/media-source-page-cache.html:
  • media/restore-from-page-cache.html:
  • platform/ios/ios/fixed/fixed-back-forward.html:
  • plugins/crash-restoring-plugin-page-from-page-cache.html:
  • plugins/frameset-with-plugin-frame.html:
  • plugins/netscape-plugin-page-cache-works.html:
  • storage/indexeddb/IDBRequest-page-cache.html:
  • storage/indexeddb/IDBTransaction-page-cache.html:
  • swipe/basic-cached-back-swipe.html:
  • swipe/main-frame-pinning-requirement.html:
  • swipe/pushState-cached-back-swipe.html:
  • swipe/pushState-programmatic-back-while-swiping-crash.html:
  • swipe/pushstate-with-manual-scrollrestoration.html:
  • tiled-drawing/scrolling/null-parent-back-crash.html:
  • tiled-drawing/tiled-drawing-scroll-position-page-cache-restoration.html:
  • webrtc/datachannel/datachannel-page-cache-send.html:
  • webrtc/datachannel/datachannel-page-cache.html:
5:36 PM Changeset in webkit [251219] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Remove ubiquity client rule from sandbox
https://bugs.webkit.org/show_bug.cgi?id=201347

Reviewed by Brent Fulgham.

This rule is most likely not needed, since we have already blocked all of its associated mach services,
and no issues have been reported.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
5:15 PM Changeset in webkit [251218] by timothy_horton@apple.com
  • 3 edits
    1 add in trunk

iOS: inputmode=none is not respected with a hardware keyboard attached
https://bugs.webkit.org/show_bug.cgi?id=203061

Reviewed by Daniel Bates.

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shouldShowAutomaticKeyboardUI]):
We can resolve this FIXME, as the underlying bug was fixed in <rdar://problem/52706523>.
This now means that we will respect inputmode=none even when a hardware
keyboard is attached, significantly improving the experience on sites that use it
by avoiding an intermittent input bar.

LayoutTests:

  • fast/forms/ios/inputmode-none-with-hardware-keyboard.html: Added.

Clone inputmode-none.html to inputmode-none-with-hardware-keyboard.html
and remove the line to faux-detach the hardware keyboard.

4:39 PM Changeset in webkit [251217] by Alan Coon
  • 1 copy in tags/Safari-608.3.10.1.4

Tag Safari-608.3.10.1.4.

4:01 PM Changeset in webkit [251216] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Remove send-signal from mach-lookup rule
https://bugs.webkit.org/show_bug.cgi?id=201203

Reviewed by Brent Fulgham.

The send-signal can be removed, since crashes have not been reported from this rule.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
3:49 PM Changeset in webkit [251215] by dino@apple.com
  • 3 edits
    1 move
    2 adds in trunk/Source/WebKit

Add Swift modulemap for WebKit Private APIs
https://bugs.webkit.org/show_bug.cgi?id=203059

Reviewed by Tim Horton.

Provide a Swift modulemap for WebKit_Private, and
ensure WKPreferencesPrivate.h is exposed.

Renamed OSX.modulemap to macOS.modulemap while here.

  • Configurations/WebKit.xcconfig:
  • Modules/iOS.private.modulemap: Added.
  • Modules/macOS.modulemap: Renamed from Source/WebKit/Modules/OSX.modulemap.
  • Modules/macOS.private.modulemap: Added.
  • Shared/API/Cocoa/WebKitPrivate.h: Include WKPreferencesPrivate.h.
3:47 PM Changeset in webkit [251214] by Jonathan Bedard
  • 4 edits in trunk/Tools

Python 3: Add support in webkitpy.common.net.bugzilla
https://bugs.webkit.org/show_bug.cgi?id=202468

Reviewed by Stephanie Lewis.

Make the irc library we use Python 3 compatible.

  • Scripts/test-webkitpy-python3: Add webkitpy.common.net.bugzilla to the test list.
  • Scripts/webkitpy/thirdparty/irc/ircbot.py: Use full import paths.
  • Scripts/webkitpy/thirdparty/irc/irclib.py: Fix exceptions, printing for Python 3.

(Connection._get_socket):
(ServerConnection.connect):
(ServerConnection.process_data):
(ServerConnection.disconnect):
(ServerConnection.send_raw):
(DCCConnection.connect):
(DCCConnection.listen):
(DCCConnection.disconnect):
(DCCConnection.process_data):
(DCCConnection.privmsg):

3:38 PM Changeset in webkit [251213] by wilander@apple.com
  • 37 edits
    4 adds in trunk

Resource Load Statistics (experimental): Block all third-party cookies on websites without prior user interaction
https://bugs.webkit.org/show_bug.cgi?id=203017
<rdar://problem/56262708>

Reviewed by Alex Christensen.

Source/WebCore:

NetworkStorageSession::shouldBlockCookies() now checks if the first-party website has
received user interaction and if not, blocks all third-party cookies, regardless of the
status of those third-party domains (prevalent or not).

Bundled cleanup task: Remove the two month old feature flag for NSURLSession switching.

Tests: http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html

http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction.html

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setIsITPSessionSwitchingEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::isITPSessionSwitchingEnabled const): Deleted.

  • page/Settings.yaml:
  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::hasHadUserInteractionAsFirstParty const):
(WebCore::NetworkStorageSession::shouldBlockCookies const):
(WebCore::NetworkStorageSession::setDomainsWithUserInteractionAsFirstParty):

  • platform/network/NetworkStorageSession.h:

(WebCore::NetworkStorageSession::setIsThirdPartyCookieBlockingOnSitesWithoutUserInteractionEnabled):

Source/WebKit:

This enhancement is off by default and controlled by an internal feature flag.

The functional change is in WebCore::NetworkStorageSession::shouldBlockCookies() which is
called from:

  • NetworkDataTaskCocoa::NetworkDataTaskCocoa()
  • NetworkDataTaskCocoa::willPerformHTTPRedirection

shouldBlockCookies() now checks if the first-party website has received user interaction
and if not, blocks all third-party cookies, regardless of the status of those third-party
domains (prevalent or not).

The changes to ResourceLoadStatisticsDatabaseStore and ResourceLoadStatisticsMemoryStore
are about communicating which domains have received user interaction (prevalent or not)
to the network storage session so that it can enforce the new restriction.

The C API change and piping through the WebsiteDataStore is test infrastructure.

Bundled cleanup task: Remove the two month old feature flag for NSURLSession switching.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::CompletionHandler<void):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::clear):
(WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

(WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setShouldBlockThirdPartyCookiesForTesting):

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::setResourceLoadStatisticsLogTestingEvent):
(WebKit::NetworkSession::shouldIsolateSessionsForPrevalentTopFrames const): Deleted.

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):
(WKWebsiteDataStoreStatisticsResetToConsistentState):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setShouldBlockThirdPartyCookiesForTesting):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

These changes are test infrastructure to be able to toggle the function
through testRunner.setStatisticsShouldBlockThirdPartyCookies().

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsShouldBlockThirdPartyCookies):
(WTR::TestRunner::statisticsCallDidSetShouldBlockThirdPartyCookiesCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsShouldBlockThirdPartyCookies):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::didSetShouldBlockThirdPartyCookies):

  • WebKitTestRunner/TestInvocation.h:

LayoutTests:

  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database-expected.txt: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-expected.txt: Added.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction.html: Added.
3:16 PM Changeset in webkit [251212] by commit-queue@webkit.org
  • 12 edits in trunk

WKWebsiteDataStoreStatisticsResetToConsistentState() should call store.setUseITPDatabase(false)
https://bugs.webkit.org/show_bug.cgi?id=203020
<rdar://problem/56314484>

Patch by Kate Cheney <Kate Cheney> on 2019-10-16
Reviewed by Chris Dumez.

Source/WebKit:

The resourceLoadStatisticsStore should be reset between tests to use
a memory store, and any test that needs to use the database store
can use the setUseITPDatabase function.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setUseITPDatabase):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetUseITPDatabase):
(WKWebsiteDataStoreStatisticsResetToConsistentState):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setUseITPDatabase):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setUseITPDatabase):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Added a completion handler to setUseITPDatabase() to avoid race
conditions.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setUseITPDatabase):

3:01 PM Changeset in webkit [251211] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Add style and text content to Display::Run
https://bugs.webkit.org/show_bug.cgi?id=203045
<rdar://problem/56340105>

Reviewed by Antti Koivisto.

Painting Display::Runs requires style and text content. Currently there's no mapping structure to connect Display::Runs to Display::Boxes to access style and content.

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::content const):
(WebCore::Display::Run::style const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::expand):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::expand):

2:52 PM Changeset in webkit [251210] by Alan Coon
  • 25 edits
    13 deletes in tags/Safari-609.1.7

Revert r250540. rdar://problem/56306218

2:51 PM Changeset in webkit [251209] by keith_miller@apple.com
  • 3 edits
    1 add in trunk

Move assert in Wasm::Plan::fail.
https://bugs.webkit.org/show_bug.cgi?id=203052

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/wasm-plan-fail-bad-error-message-assert.js: Added.

(Binary):
(Binary.prototype.trunc_buffer):
(Binary.prototype.emit_leb_u):
(Binary.prototype.emit_u32v):
(Binary.prototype.emit_bytes):
(Binary.prototype.emit_header):
(f_576):
(
f_587):

Source/JavaScriptCore:

Since we changed how Wasm::Plan interacts with the streaming
parser it's possible for the streaming parser to call fail with no
error message (because the corresponding Wasm::Plan already
failed). This patch moves an erroneous assert so it no longer
trips when this happens.

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::fail):

2:49 PM Changeset in webkit [251208] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

checkConsistency in Air O0 should only run when validation is enabled
https://bugs.webkit.org/show_bug.cgi?id=203050

Reviewed by Saam Barati.

I resued the validateGraph and validateGraphAtEachPhase options
because adding a new option and threading it through all our
testing infrastructure didn't seem worthwhile for this.

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::checkConsistency):

2:24 PM Changeset in webkit [251207] by Simon Fraser
  • 8 edits
    1 add in trunk/Source/WebCore

Add dumping for BorderData and StyleBackgroundData
https://bugs.webkit.org/show_bug.cgi?id=203038

Reviewed by Zalan Bujtas.

As part of adding dumping for all RenderStyle data, add dumping support for
BorderData and StyleBackgroundData.

For large classes it's beneficial to avoid dumping default values; those classes
get a dump() function that can take an argument to say whether values which are default
should be printed.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/LengthSize.h:

(WebCore::LengthSize::isZero const):

  • rendering/style/BorderData.cpp: Added.

(WebCore::operator<<):
(WebCore::BorderData::dump const):

  • rendering/style/BorderData.h:
  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleBackgroundData.cpp:

(WebCore::StyleBackgroundData::dump const):
(WebCore::operator<<):

  • rendering/style/StyleBackgroundData.h:
2:14 PM Changeset in webkit [251206] by Alan Coon
  • 3 edits in branches/safari-608.3.10.1-branch/Source/WebCore

Cherry-pick r251188. rdar://problem/56340800

WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
https://bugs.webkit.org/show_bug.cgi?id=202930
<rdar://problem/56006776>

Reviewed by Eric Carlson.

Source/WebCore:

There is a time where the bus channel number and audio source channel numbers may be different.
In case the bus channel number is less than the audio source channel number, initialization of
the WebAudioBufferList might not be fully done.
In that case, output silence and return early.
Reduce the number of frames to process based on the number of frames the output audio bus plans to process.

Partially covered by new API test (this a race so we cannot reproduce the crash easily).

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::process): Make sure to process the number of frames the output bus expect.
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: (WebCore::WebAudioSourceProviderAVFObjC::provideInput):

Tools:

Add a test that has an audio track that goes from 1 to 2 channels while being piped to a WebAudio pipeline.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (-[GUMMessageHandler userContentController:didReceiveScriptMessage:]): (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/getUserMedia-webaudio.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251188 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:09 PM Changeset in webkit [251205] by Alan Coon
  • 7 edits in branches/safari-608.3.10.1-branch/Source

Versioning.

1:54 PM Changeset in webkit [251204] by Chris Dumez
  • 9 edits in trunk/Source

Source/WebCore:
[WK2] Handle back/forward cache entry expiration in the UIProcess instead of the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=203034
<rdar://problem/56332453>

Reviewed by Antti Koivisto.

Use Seconds type for backForwardCacheExpirationInterval setting instead of
double, for clarity.

  • history/CachedPage.cpp:

(WebCore::CachedPage::CachedPage):
(WebCore::CachedPage::hasExpired const):

  • page/Settings.yaml:

Source/WebKit:
[WK2] Handle back/forward cache entry expiration in the UIProcess instead of the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=203034
<rdar://problem/56332453>

Reviewed by Antti Koivisto.

Handle back/forward cache entry expiration in the UIProcess instead of the WebProcess,
now that back/forward cache management is done in the UIProcess.

  • UIProcess/WebBackForwardCacheEntry.cpp:

(WebKit::WebBackForwardCacheEntry::WebBackForwardCacheEntry):
(WebKit::WebBackForwardCacheEntry::takeSuspendedPage):
(WebKit::WebBackForwardCacheEntry::expirationTimerFired):

  • UIProcess/WebBackForwardCacheEntry.h:

Add a Timer to WebBackForwardCacheEntry to make the entry expire after 30 minutes, which is what used
to happen on WebContent process side. One difference in behavior is that when the entry expires we
now remove it from the cache right away to free-up memory, instead of simply refusing to use it later
on.

  • WebProcess/WebPage/WebPage.cpp:

Disable back forward cache expiration in the WebContent process when using modern
WebKit.

Source/WebKitLegacy/mac:
[WK2] Move back/forward cache entry expiration from the WebProcess to the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=203034
<rdar://problem/56332453>

Reviewed by Antti Koivisto.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

1:49 PM Changeset in webkit [251203] by Alan Coon
  • 1 copy in tags/Safari-608.3.10.10.1

Tag Safari-608.3.10.10.1.

1:47 PM Changeset in webkit [251202] by Alan Coon
  • 4 edits in branches/safari-608.3.10.10-branch

Cherry-pick r251188. rdar://problem/56340800

WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
https://bugs.webkit.org/show_bug.cgi?id=202930
<rdar://problem/56006776>

Reviewed by Eric Carlson.

Source/WebCore:

There is a time where the bus channel number and audio source channel numbers may be different.
In case the bus channel number is less than the audio source channel number, initialization of
the WebAudioBufferList might not be fully done.
In that case, output silence and return early.
Reduce the number of frames to process based on the number of frames the output audio bus plans to process.

Partially covered by new API test (this a race so we cannot reproduce the crash easily).

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::process): Make sure to process the number of frames the output bus expect.
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: (WebCore::WebAudioSourceProviderAVFObjC::provideInput):

Tools:

Add a test that has an audio track that goes from 1 to 2 channels while being piped to a WebAudio pipeline.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (-[GUMMessageHandler userContentController:didReceiveScriptMessage:]): (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/getUserMedia-webaudio.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251188 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:44 PM Changeset in webkit [251201] by Alan Coon
  • 5 edits
    1 delete in branches/safari-608.3.10.10-branch

Revert "Cherry-pick r251188. rdar://problem/56340800"

This reverts commit 251199.

1:32 PM Changeset in webkit [251200] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Fix various vertical alignment issues.
https://bugs.webkit.org/show_bug.cgi?id=203041

Reviewed by Antti Koivisto.

This patch fixes both regular inline box and inline-block baseline aligment. It also addresses a few related vertical positioning issues.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::alignContentVertically):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendHardLineBreak):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
(WebCore::Layout::Line::inlineItemContentHeight const):

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::resetDescent):
(WebCore::Layout::LineBox::setLogicalHeightIfGreater):
(WebCore::Layout::LineBox::setBaselineOffsetIfGreater):
(WebCore::Layout::LineBox::setAscentIfGreater):
(WebCore::Layout::LineBox::setDescentIfGreater):
(WebCore::Layout::LineBox::resetBaseline):
(WebCore::Layout::LineBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::baseline): Deleted.
(WebCore::Layout::LineBox::setBaselineOffset): Deleted.
(WebCore::Layout::LineBox::Baseline::setAscentIfGreater): Deleted.
(WebCore::Layout::LineBox::Baseline::setDescentIfGreater): Deleted.

1:30 PM Changeset in webkit [251199] by Alan Coon
  • 5 edits
    1 add in branches/safari-608.3.10.10-branch

Cherry-pick r251188. rdar://problem/56340800

WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
https://bugs.webkit.org/show_bug.cgi?id=202930
<rdar://problem/56006776>

Reviewed by Eric Carlson.

Source/WebCore:

There is a time where the bus channel number and audio source channel numbers may be different.
In case the bus channel number is less than the audio source channel number, initialization of
the WebAudioBufferList might not be fully done.
In that case, output silence and return early.
Reduce the number of frames to process based on the number of frames the output audio bus plans to process.

Partially covered by new API test (this a race so we cannot reproduce the crash easily).

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp: (WebCore::MediaStreamAudioSourceNode::process): Make sure to process the number of frames the output bus expect.
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm: (WebCore::WebAudioSourceProviderAVFObjC::provideInput):

Tools:

Add a test that has an audio track that goes from 1 to 2 channels while being piped to a WebAudio pipeline.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (-[GUMMessageHandler userContentController:didReceiveScriptMessage:]): (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/getUserMedia-webaudio.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251188 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:06 PM Changeset in webkit [251198] by Alan Coon
  • 7 edits in branches/safari-608.3.10.10-branch/Source

Versioning.

12:53 PM Changeset in webkit [251197] by Alan Coon
  • 1 copy in branches/safari-608.3.10.10-branch

New branch.

12:50 PM Changeset in webkit [251196] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

Invalid instruction generated for ARM_THUMB2 in llint
https://bugs.webkit.org/show_bug.cgi?id=202844

Reviewed by Saam Barati.

Do not allow instruction execution to reach OSR return label on ARMv7.
Currently we are seeing the instruction execution hitting a .word directive in
the instruction stream and segfaulting. There are two words used to represent a
global label which was generated as part of the work on OSR Exit to LLInt work
(r250806). The double word generation only occurs in ARMv7 and therefore only here
the segfault manifests itself.

  • llint/LowLevelInterpreter.asm:
12:22 PM Changeset in webkit [251195] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

[iOS] Stop terminating the prewarmed process on application suspension
https://bugs.webkit.org/show_bug.cgi?id=203033

Reviewed by Alex Christensen.

Stop terminating the prewarmed process on application suspension. Having no prewarmed process when the
application resumes means the next cross-site load will be significantly slower. If the system needs
memory, this process can be jetsammed.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::applicationIsAboutToSuspend):

11:24 AM Changeset in webkit [251194] by Chris Dumez
  • 21 edits in trunk/Source

Drop unused WKPageSetResourceCachingDisabled() SPI
https://bugs.webkit.org/show_bug.cgi?id=203035

Reviewed by Alex Christensen.

Source/WebCore:

  • history/PageCache.cpp:

(WebCore::canCachePage):
(WebCore::PageCache::take):
(WebCore::PageCache::get):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerShouldUsePersistentCache const):

  • inspector/agents/page/PageNetworkAgent.cpp:

(WebCore::PageNetworkAgent::setResourceCachingDisabled):

  • inspector/agents/worker/WorkerNetworkAgent.cpp:

(WebCore::WorkerNetworkAgent::setResourceCachingDisabled):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::subresourceCachePolicy const):
(WebCore::FrameLoader::addExtraFieldsToRequest):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::cachePolicy const):

  • page/Page.h:

(WebCore::Page::isResourceCachingDisabledByWebInspector const):
(WebCore::Page::setResourceCachingDisabledByWebInspector):
(WebCore::Page::isResourceCachingDisabled const): Deleted.
(WebCore::Page::setResourceCachingDisabled): Deleted.
(WebCore::Page::setResourceCachingDisabledOverride): Deleted.

  • workers/WorkerDebuggerProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::setResourceCachingDisabledByWebInspector):
(WebCore::WorkerMessagingProxy::setResourceCachingDisabled): Deleted.

  • workers/WorkerMessagingProxy.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::setResourceCachingDisabledByWebInspector):
(WebCore::ServiceWorkerThreadProxy::setResourceCachingDisabled): Deleted.

  • workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetResourceCachingDisabled): Deleted.
(WKPageSetResourceCachingDisabled): Deleted.

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setResourceCachingDisabled): Deleted.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isResourceCachingDisabled const): Deleted.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setResourceCachingDisabled): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
11:15 AM Changeset in webkit [251193] by Fujii Hironori
  • 9 edits in trunk

DumpRenderTree should clear WTFLogChannelState::OnWithAccumulation state set by testRunner.accummulateLogsForChannel
https://bugs.webkit.org/show_bug.cgi?id=203024

Reviewed by Alex Christensen.

Source/WebCore:

  • platform/LogInitialization.h:
  • platform/Logging.cpp:

(WebCore::clearAllLogChannelsToAccumulate): Added.

  • platform/Logging.h:
  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::clearAllLogChannelsToAccumulate): Added.

  • testing/js/WebCoreTestSupport.h:

Tools:

If a test case calls testRunner.accummulateLogsForChannel("IndexedDB"),
all subsequent IndexedDB tests also dump the log.
This is unnecessarily bloating DumpRenderTree log because
DumpRenderTree is run with --debug-rwt-logging switch on Buildbot.

Add a function to clear WTFLogChannelState::OnWithAccumulation
state, and call it for every test execution.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebViewToConsistentStateBeforeTesting):
Call WebCoreTestSupport::clearAllLogChannelsToAccumulate.

10:37 AM Changeset in webkit [251192] by Wenson Hsieh
  • 2 edits in trunk/Tools

Remove an API test workaround that is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=203037

Reviewed by Tim Horton.

This worked around <rdar://problem/51510554> by avoiding codepaths that resulted in failure to read dropped
content from NSItemProviders on iOS. <rdar://problem/51510554> is fixed in iOS 13, so we can remove this hack.

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView initWithFrame:configuration:addToWindow:]):
(applyWorkaroundToAllowWritingAttributedStringsToItemProviders): Deleted.

10:26 AM Changeset in webkit [251191] by Pablo Saavedra
  • 1 edit
    1 add in trunk/Tools

[Tools] Add a driver for cog for benchmark_runner.py
https://bugs.webkit.org/show_bug.cgi?id=202995

Reviewed by Žan Doberšek.

  • Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py: Added.

(CogBrowserDriver):
(CogBrowserDriver.launch_url):
(CogBrowserDriver.launch_driver):
(CogFdoBrowserDriver):
(CogFdoBrowserDriver.launch_url):

10:12 AM Changeset in webkit [251190] by Wenson Hsieh
  • 4 edits in trunk/Source

Unreviewed, fix the internal macOS 10.13 and 10.14 builds after r251171

Source/WebKit:

  • Platform/spi/mac/ApplicationServicesSPI.h: Guard SPI declarations that use AXClientType with HAVE(AX_CLIENT_TYPE).

Source/WTF:

  • wtf/Platform.h: Add a HAVE() macro for AXClientType, which is only available on macOS 10.15+ SDKs.
10:07 AM Changeset in webkit [251189] by russell_e@apple.com
  • 2 edits in trunk/LayoutTests

Correct TestExpectations from r251119.
https://bugs.webkit.org/show_bug.cgi?id=202826

Unreviewed Test Gardening.

  • platform/ios/TestExpectations:
9:48 AM Changeset in webkit [251188] by youenn@apple.com
  • 6 edits
    1 add in trunk

WebAudioSourceProviderAVFObjC::provideInput should set its WebAudioBufferList parameters correctly
https://bugs.webkit.org/show_bug.cgi?id=202930
<rdar://problem/56006776>

Reviewed by Eric Carlson.

Source/WebCore:

There is a time where the bus channel number and audio source channel numbers may be different.
In case the bus channel number is less than the audio source channel number, initialization of
the WebAudioBufferList might not be fully done.
In that case, output silence and return early.
Reduce the number of frames to process based on the number of frames the output audio bus plans to process.

Partially covered by new API test (this a race so we cannot reproduce the crash easily).

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::process):
Make sure to process the number of frames the output bus expect.

  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:

(WebCore::WebAudioSourceProviderAVFObjC::provideInput):

Tools:

Add a test that has an audio track that goes from 1 to 2 channels while being piped to a WebAudio pipeline.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(-[GUMMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/getUserMedia-webaudio.html: Added.
7:43 AM Changeset in webkit [251187] by commit-queue@webkit.org
  • 1 edit
    7 deletes in trunk/LayoutTests

Remove duplicate MathML tests
https://bugs.webkit.org/show_bug.cgi?id=202979

Patch by Rob Buis <rbuis@igalia.com> on 2019-10-16
Reviewed by Frédéric Wang.

Remove mo-form-dynamic.html, this got imported
as presentation-markup/operators/mo-form-dynamic.html.

Remove mo-form-minus-plus.html, this got imported
as presentation-markup/operators/mo-form-minus-plus.html.

Remove mo-form-fallback.html, this got imported
as presentation-markup/operators/mo-form-fallback.html.

  • mathml/presentation/mo-form-dynamic-expected.html: Removed.
  • mathml/presentation/mo-form-dynamic-expected.html: Removed.
  • mathml/presentation/mo-form-dynamic.html: Removed.
  • mathml/presentation/mo-form-fallback-expected.html: Removed.
  • mathml/presentation/mo-form-fallback.html: Removed.
  • mathml/presentation/mo-form-minus-plus-expected.html: Removed.
  • mathml/presentation/mo-form-minus-plus.html: Removed.
6:27 AM Changeset in webkit [251186] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][TFC] TableFormattingContext::distributeExtraHorizontalSpace should not ignore fixed width columns
https://bugs.webkit.org/show_bug.cgi?id=203010

Reviewed by Antti Koivisto.

Fixed width columns (e.g. <col width=100px>) don't participate in the extra horizontal space distribution.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computedTableWidth):
(WebCore::Layout::TableFormattingContext::distributeExtraHorizontalSpace):
(WebCore::Layout::TableFormattingContext::distributeAvailableWidth): Deleted.

  • layout/tableformatting/TableFormattingContext.h:
  • layout/tableformatting/TableGrid.cpp:

(WebCore::Layout::TableGrid::Column::hasFixedWidth const):
(WebCore::Layout::TableGrid::widthConstraints const):

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::totalHorizontalSpacing const):
(WebCore::Layout::TableGrid::columnsContext const):

3:57 AM Changeset in webkit [251185] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK][WPE] ASSERTION FAILED: blob in SQLiteStatement.cpp(163) : int WebCore::SQLiteStatement::bindBlob()
https://bugs.webkit.org/show_bug.cgi?id=202976

Reviewed by Adrian Perez de Castro.

This is because IconDatabases passes a nullptr blob to store emtpty icons. sqlite3_bind_blob() allows nullptr as
blob, so we shouldn't assert.

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::bindBlob): Update the assert to only fail when blob is nullptr and size > 0.

2:47 AM Changeset in webkit [251184] by Antti Koivisto
  • 2 edits
    2 adds in trunk/LayoutTests/imported/w3c

[CSS Shadow Parts] Import css/css-shadow-parts/simple-inline.html WPT
https://bugs.webkit.org/show_bug.cgi?id=203029

Reviewed by Adrian Perez de Castro.

  • web-platform-tests/css/css-shadow-parts/simple-inline-expected.txt: Added.
  • web-platform-tests/css/css-shadow-parts/simple-inline.html: Added.
  • web-platform-tests/css/css-shadow-parts/w3c-import.log:
2:11 AM Changeset in webkit [251183] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for Windows ports
https://bugs.webkit.org/show_bug.cgi?id=203016
<rdar://problem/56317774>

  • page/DOMTimer.h: Added WEBCORE_EXPORT to ~DOMTimer().
2:00 AM Changeset in webkit [251182] by clopez@igalia.com
  • 4 edits in trunk

image/apng not recognized in source tag
https://bugs.webkit.org/show_bug.cgi?id=202785

Reviewed by Dean Jackson.

Source/WebCore:

Add image/apng as supported mime type for images on Mac/iOS and
on all the other platforms that enable apng support.

This fixes the test imported/w3c/web-platform-tests/apng/supported-in-source-type.html

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::supportedImageMIMETypes):

LayoutTests:

  • TestExpectations: Remove test imported/w3c/web-platform-tests/apng/supported-in-source-type.html

from the list of expected failures.

12:36 AM Changeset in webkit [251181] by Carlos Garcia Campos
  • 57 edits
    5 copies
    5 adds in trunk

[GTK][WPE] Add user messages API
https://bugs.webkit.org/show_bug.cgi?id=202847

Reviewed by Adrian Perez de Castro.

Source/WebCore/platform/gtk/po:

  • POTFILES.in: Add new files containing translatable strings.

Source/WebKit:

We have never exposed an API to send/receive messages to/from Web extensions, to allow applications use their own
IPC. Now, with PSON enabled, it's a lot more difficult to implement the custom IPC on the application side,
because applications need to keep track of all the web processes launched, and the changes of web process in the
web view to send the messages to the right extension. That's already done internally by WebKit, so it would be
easier to provide a simple API so that apps don't need to worry about the web process being used. This patch adds
WebKitUserMessage, a simple message API consisting on a message name, parameters and file descriptors. Messages
can be sent from a WebKitWebContext to all the WebKitWebExtensions, or from a WebKitWebExtension to its
WebKitWebContext, or from a WebKitWebView to its WebKitWebPage (and vice versa).

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • Shared/API/glib/WebKitUserMessage.cpp: Added.

(webkitUserMessageDispose):
(webkitUserMessageGetProperty):
(webkitUserMessageSetProperty):
(webkit_user_message_class_init):
(webkitUserMessageCreate):
(webkitUserMessageGetMessage):
(webkit_user_message_new):
(webkit_user_message_new_with_fd_list):
(webkit_user_message_get_name):
(webkit_user_message_get_parameters):
(webkit_user_message_get_fd_list):
(webkit_user_message_send_reply):

  • Shared/API/glib/WebKitUserMessagePrivate.h: Added.
  • Shared/glib/ArgumentCodersGLib.cpp: Added.

(IPC::encode):
(IPC::decode):

  • Shared/glib/ArgumentCodersGLib.h: Added.
  • Shared/glib/UserMessage.cpp: Added.

(WebKit::UserMessage::encode const):
(WebKit::UserMessage::decode):

  • Shared/glib/UserMessage.h: Added.

(WebKit::UserMessage::UserMessage):

  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextConstructed):
(webkit_web_context_class_init):
(webkit_web_context_send_message_to_all_extensions):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_class_init):
(webkitWebViewDidReceiveUserMessage):
(webkit_web_view_send_message_to_page):
(webkit_web_view_send_message_to_page_finish):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitUserMessage.h: Added.
  • UIProcess/API/gtk/WebKitWebContext.h:
  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
  • UIProcess/API/gtk/webkit2.h:
  • UIProcess/API/wpe/APIViewClient.h:

(API::ViewClient::didReceiveUserMessage):

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::sendMessageToWebView):

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::didReceiveUserMessage):

  • UIProcess/API/wpe/WPEView.h:
  • UIProcess/API/wpe/WebKitUserMessage.h: Added.
  • UIProcess/API/wpe/WebKitWebContext.h:
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/API/wpe/docs/wpe-docs.sgml:
  • UIProcess/API/wpe/webkit.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • UIProcess/glib/WebProcessProxyGLib.cpp:

(WebKit::WebProcessProxy::sendMessageToWebContextWithReply):
(WebKit::WebProcessProxy::sendMessageToWebContext):

  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::sendMessageToWebViewWithReply):
(WebKit::WebPageProxy::sendMessageToWebView):

  • UIProcess/wpe/WebPageProxyWPE.cpp:

(WebKit::WebPageProxy::sendMessageToWebViewWithReply):
(WebKit::WebPageProxy::sendMessageToWebView):

  • WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h:

(WebKit::WebKitExtensionManager::extension const):

  • WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:

(webkitWebExtensionDidReceiveUserMessage):
(webkit_web_extension_send_message_to_context):
(webkit_web_extension_send_message_to_context_finish):

  • WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h:
  • WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(webkit_web_page_class_init):
(webkitWebPageDidReceiveUserMessage):
(webkit_web_page_send_message_to_view):
(webkit_web_page_send_message_to_view_finish):

  • WebProcess/InjectedBundle/API/glib/WebKitWebPagePrivate.h:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.h:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:
  • WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h:
  • WebProcess/InjectedBundle/API/wpe/WebKitWebExtension.h:
  • WebProcess/InjectedBundle/API/wpe/WebKitWebPage.h:
  • WebProcess/InjectedBundle/API/wpe/docs/wpe-webextensions-1.0-sections.txt:
  • WebProcess/InjectedBundle/API/wpe/webkit-web-extension.h:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/glib/WebPageGLib.cpp: Added.

(WebKit::WebPage::sendMessageToWebExtensionWithReply):
(WebKit::WebPage::sendMessageToWebExtension):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/glib/WebProcessGLib.cpp:

(WebKit::WebProcess::sendMessageToWebExtension):

Tools:

Add a test to check the new API.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:

(UserMessageTest::webViewUserMessageReceivedCallback):
(UserMessageTest::webContextUserMessageReceivedCallback):
(UserMessageTest::UserMessageTest):
(UserMessageTest::~UserMessageTest):
(UserMessageTest::sendMessage):
(UserMessageTest::sendMedssageToAllExtensions):
(UserMessageTest::viewUserMessageReceived):
(UserMessageTest::contextUserMessageReceived):
(UserMessageTest::waitUntilViewMessageReceived):
(UserMessageTest::waitUntilContextMessageReceived):
(readFileDescritpor):
(testWebExtensionUserMessages):
(beforeAll):

  • TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:

(documentLoadedCallback):
(pageMessageReceivedCallback):
(pageCreatedCallback):
(extensionMessageReceivedCallback):
(webkit_web_extension_initialize_with_user_data):

12:36 AM Changeset in webkit [251180] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fix GCC warning on MIPS about dead variable metadata
https://bugs.webkit.org/show_bug.cgi?id=202987

Patch by Paulo Matos <pmatos@linki.tools> on 2019-10-16
Reviewed by Keith Miller.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_internal_field):

Oct 15, 2019:

10:39 PM Changeset in webkit [251179] by Wenson Hsieh
  • 5 edits
    1 move in trunk/Source/WebKit

Fix the internal macOS build after r251171
https://bugs.webkit.org/show_bug.cgi?id=203022

Reviewed by Dan Bernstein.

Attempts to include <HIServices/AccessibilityPriv.h> in WebKit result in:

`
fatal error: 'HIServices/AccessibilityPriv.h' file not found
`

At least on macOS 10.15, it appears that HIServices.framework exists within the ApplicationServices framework.
To fix this build error, we can instead turn AccessibilityPrivSPI.h into an SPI header for ApplicationServices,
ApplicationServicesSPI.h, and use it in several places where we currently directly import <ApplicationServices/
ApplicationServicesPriv.h>.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

Bring some more constants that were defined in the !USE(APPLE_INTERNAL_SDK) case into the ApplicationServices
SPI header.

  • Platform/spi/mac/ApplicationServicesSPI.h: Renamed from Source/WebKit/Platform/spi/mac/AccessibilityPrivSPI.h.
  • Shared/mac/AuxiliaryProcessMac.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
9:01 PM Changeset in webkit [251178] by mark.lam@apple.com
  • 5 edits
    2 adds in trunk

operationSwitchCharWithUnknownKeyType failed to handle OOME when resolving rope string.
https://bugs.webkit.org/show_bug.cgi?id=202312
<rdar://problem/55782280>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings.js: Added.
  • stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings2.js: Added.
  • stress/switch-on-char-llint-rope.js:
  • Changed this test to make a new rope string for each iterations. Otherwise, the rope will get resolved, and subsequent tiers will not be testing with a rope.

Source/JavaScriptCore:

operationSwitchCharWithUnknownKeyType() can only dispatch to a case handler
if the key string is of length 1. All other cases should dispatch to the default
handler. This patch also adds the missing OOME check.

Also fixed a bug in SpeculativeJIT::emitSwitchCharStringJump() where the slow
path rope resolution was returning after the length check. It needs to return to
the point before the length check.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):

  • jit/JITOperations.cpp:
7:32 PM Changeset in webkit [251177] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

adoptRef DOMTimer in install instead of its constructor
https://bugs.webkit.org/show_bug.cgi?id=203016

Reviewed by Simon Fraser.

Moved the code to add DOMTimer to ScriptExecutionContext's map to DOMTimer::install
instead of its constructor so that we can adoptRef there instead for clarity & simplicity.

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::addTimeout):

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::DOMTimer):
(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):

7:08 PM Changeset in webkit [251176] by commit-queue@webkit.org
  • 4 edits in trunk

REGRESSION (~244100) [Mac WK2 Debug] Layout Test http/tests/resourceLoadStatistics/prune-statistics.html is a flaky failure (197285)
https://bugs.webkit.org/show_bug.cgi?id=197285
<rdar://problem/50208370>

Patch by Kate Cheney <Kate Cheney> on 2019-10-15
Reviewed by Chris Dumez.

Source/WebKit:

This patch fixes a flaky failure which was being caused by other
resourceLoadStatistics tests scheduling processing checks which
were called during execution of prune-statistics.html.
Now, any pending processing checks are cancelled between tests.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):

LayoutTests:

Remove a "skipped" expectation for a previously flaky test that should
be fixed by this patch.

  • platform/mac-wk2/TestExpectations:
7:06 PM Changeset in webkit [251175] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

editing/async-clipboard/clipboard-item-basic.html is a flaky failure on macOS and iOS
https://bugs.webkit.org/show_bug.cgi?id=203015

Reviewed by Tim Horton.

This test, for the most part, finishes and dumps its final output before a couple of (intentionally) rejected
promises finish and log their uncaught rejections to the console. In the case where we lose this race and the
console messages happen earlier, we end up with a text diff failure.

Avoid this issue by making sure that we catch these promise rejections.

  • editing/async-clipboard/clipboard-item-basic.html:

Also give this test a tiny bit more variety, by making one of the promises reject immediately, while the other
still waits for a short delay (50 ms).

6:49 PM Changeset in webkit [251174] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

[iOS] Maintain the last Back/Forward cache entry when the application gets suspended
https://bugs.webkit.org/show_bug.cgi?id=203014

Reviewed by Geoffrey Garen.

Previously, we would clear all back/forward cache entries when the application is about to
be suspended. This means that we would lose fast-back when coming back to the application.
To be memory-friendly but maintain the fast-back when coming back to the application, we now
maintain the last back/forward cache entry when the application gets suspended.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::applicationIsAboutToSuspend):
(WebKit::WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend):

  • UIProcess/WebBackForwardCache.cpp:

(WebKit::WebBackForwardCache::pruneToSize):

  • UIProcess/WebBackForwardCache.h:
  • UIProcess/WebProcessPool.h:
  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKProcessAssertionBackgroundTaskManager init]):
(-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
A WebProcess no longer clears its PageCache on suspension on iOS. We let the UIProcess's
back/forward cache control when PageCache entries should get destroyed. The back/forward
cache will properly wake up a suspended process to clear one of its PageCache entries if
needed.

6:27 PM Changeset in webkit [251173] by Simon Fraser
  • 9 edits in trunk/Source/WebCore

ScrollingTreeScrollingNodeDelegateMac::stretchAmount() should not have side effects
https://bugs.webkit.org/show_bug.cgi?id=203009

Reviewed by Dean Jackson.

Calling ScrollingTreeScrollingNodeDelegateMac::stretchAmount() had the side effect of calling
setMainFrameIsRubberBanding() on the scrolling tree.

Remove this badness and replace it by modifying updateMainFramePinState() (which is called every time
the scroll position changes) to also compute if we're rubber-banding.

Also make a bunch of methods on ScrollControllerClient const, which makes it clear that
they don't have side effects.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinAndRubberbandState):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinState): Deleted.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsHorizontalStretching const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsVerticalStretching const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollHorizontally const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollVertically const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::shouldRubberBandInDirection const):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::isAlreadyPinnedInDirectionOfGesture): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsHorizontalStretching): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::allowsVerticalStretching): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::stretchAmount): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::pinnedInDirection): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollHorizontally): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::canScrollVertically): Deleted.
(WebCore::ScrollingTreeScrollingNodeDelegateMac::shouldRubberBandInDirection): Deleted.

  • platform/cocoa/ScrollController.h:
  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::shouldForwardWheelEventsToParent const):
(WebCore::ScrollAnimatorMac::pinnedInDirection const):
(WebCore::ScrollAnimatorMac::isAlreadyPinnedInDirectionOfGesture const):
(WebCore::ScrollAnimatorMac::allowsVerticalStretching const):
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching const):
(WebCore::ScrollAnimatorMac::stretchAmount const):
(WebCore::ScrollAnimatorMac::canScrollHorizontally const):
(WebCore::ScrollAnimatorMac::canScrollVertically const):
(WebCore::ScrollAnimatorMac::shouldRubberBandInDirection const):
(WebCore::ScrollAnimatorMac::shouldForwardWheelEventsToParent): Deleted.
(WebCore::ScrollAnimatorMac::pinnedInDirection): Deleted.
(WebCore::ScrollAnimatorMac::isAlreadyPinnedInDirectionOfGesture): Deleted.
(WebCore::ScrollAnimatorMac::allowsVerticalStretching): Deleted.
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching): Deleted.
(WebCore::ScrollAnimatorMac::stretchAmount): Deleted.
(WebCore::ScrollAnimatorMac::canScrollHorizontally): Deleted.
(WebCore::ScrollAnimatorMac::canScrollVertically): Deleted.
(WebCore::ScrollAnimatorMac::shouldRubberBandInDirection): Deleted.

  • platform/mock/ScrollAnimatorMock.h:
6:04 PM Changeset in webkit [251172] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

WheelEventTestMonitor doesn't need to be threadsafe
https://bugs.webkit.org/show_bug.cgi?id=203012

Reviewed by Dean Jackson.

WheelEventTestMonitor is only called on the main thread, so doesn't need a lock to protect
m_deferCompletionReasons, and add main thread assertions.

  • page/WheelEventTestMonitor.cpp:

(WebCore::WheelEventTestMonitor::clearAllTestDeferrals):
(WebCore::WheelEventTestMonitor::setTestCallbackAndStartNotificationTimer):
(WebCore::WheelEventTestMonitor::deferForReason):
(WebCore::WheelEventTestMonitor::removeDeferralForReason):
(WebCore::WheelEventTestMonitor::triggerTestTimerFired):

  • page/WheelEventTestMonitor.h:
5:27 PM Changeset in webkit [251171] by commit-queue@webkit.org
  • 11 edits in trunk/Source

AX: Make AXIsolatedTree compile again
https://bugs.webkit.org/show_bug.cgi?id=202702
<rdar://problem/56084968>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-10-15
Reviewed by Joanmarie Diggs.

Re-submitting r251045 with a fix for internal builds.

Source/WebCore:

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::createIsolatedAccessibilityTreeHierarchy):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::treePageCache):
(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::applyPendingChanges):
(WebCore::AXIsolatedTree::initializePageTreeForID): Deleted.
(WebCore::AXIsolatedTree::setInitialRequestInProgress): Deleted.

  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/isolatedtree/AXIsolatedTreeNode.cpp:

(WebCore::AXIsolatedTreeNode::setTreeIdentifier):
(WebCore::AXIsolatedTreeNode::rectAttributeValue const):

  • accessibility/isolatedtree/AXIsolatedTreeNode.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertToNSArray):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper childrenVectorArray]):

Source/WebKit:

  • Platform/spi/mac/AccessibilityPrivSPI.h:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:

(-[WKAccessibilityWebPageObjectBase isolatedTreeRootObject]):

5:01 PM Changeset in webkit [251170] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: prevent source mapped resources from being blackboxed
https://bugs.webkit.org/show_bug.cgi?id=203007

Reviewed by Matt Baker.

Since source mapped resources are entirely a frontend concept, it doesn't make sense to
allow them to be blackboxed.

  • UserInterface/Models/SourceMapResource.js:

(WI.SourceMapResource.prototype.get supportsScriptBlackboxing):

4:40 PM Changeset in webkit [251169] by Brent Fulgham
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Unreviewed build fix after r251018

  • PlatformFTW.cmake: Add missing dxgi library.
4:39 PM Changeset in webkit [251168] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert CSSRule selectorText setter to setSelectorText method because it's asynchronous
https://bugs.webkit.org/show_bug.cgi?id=202840

Reviewed by Matt Baker.

  • UserInterface/Models/CSSRule.js:

(WI.CSSRule.prototype.setSelectorText):
(WI.CSSRule.prototype._selectorRejected):
(WI.CSSRule.prototype._selectorResolved):
Remove WI.CSSRule.Event.SelectorChanged event and since it wasn't used anywhere else.

(WI.CSSRule):
(WI.CSSRule.prototype.set selectorText): Deleted.
(WI.CSSRule.prototype.setSelectorText): Added.
(WI.CSSRule.prototype._selectorRejected): Deleted.
(WI.CSSRule.Event.SelectorChanged): Deleted.
Remove {valid: ...} object since it wasn't used.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidCommit):

4:20 PM Changeset in webkit [251167] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Improve summary for WebKitPerl Tests build step
https://bugs.webkit.org/show_bug.cgi?id=203006

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(RunWebKitPerlTests.getResultSummary): Override method to customize summary.

  • BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.
4:17 PM Changeset in webkit [251166] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Webview's drawing area may stay frozen on cross-site back/forward navigation
https://bugs.webkit.org/show_bug.cgi?id=203004

Reviewed by Tim Horton.

Whenever the UIScene becomes foreground / background, the WebPageProxy notifies its currently associated
WebPage in the committed WebProcess so that it can freeze / unfreeze its layer tree with the
BackgroundApplication reason. The issue is that if a WebPage gets suspended on cross-site navigation
(because the UIScene is in the background when the load commits), then the suspended WebPage kept its
a BackgroundApplication freeze. When the UIScene becomes foreground, the WebPage only notifies its
committed page so the suspended page keeps its BackgroundApplication freeze still. If the user now
navigates back, it will restore the suspended WebPage and the view will stay frozen.

To address the issue, we now have the WebPage drop its BackgroundApplication freeze reason, whenever
it transitions from committed to suspended.

  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView didMoveToWindow]):
Fix logging, [self isBackground] needs to be called *after* _applicationStateTracker has been
initialized, or it will return YES unconditionally.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setIsSuspended):

3:54 PM Changeset in webkit [251165] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

[iOS] Crash in WebCore::DOMWindow::incrementScrollEventListenersCount
https://bugs.webkit.org/show_bug.cgi?id=202878

Unreviewed. Addressed Darin's post-commit review comment.

  • dom/Node.cpp:

(WebCore::tryAddEventListener):

3:43 PM Changeset in webkit [251164] by Chris Dumez
  • 32 edits in trunk/Source

[macOS] Simplify main thread initialization
https://bugs.webkit.org/show_bug.cgi?id=203001

Reviewed by Geoff Garen.

Source/WebCore:

  • bridge/objc/WebScriptObject.mm:

(+[WebScriptObject initialize]):

  • platform/cocoa/SharedBufferCocoa.mm:

(+[WebCoreSharedBufferData initialize]):

Source/WebKitLegacy/mac:

  • History/WebBackForwardList.mm:

(+[WebBackForwardList initialize]):

  • History/WebHistoryItem.mm:

(+[WebHistoryItem initialize]):

  • Misc/WebCache.mm:

(+[WebCache initialize]):

  • Misc/WebElementDictionary.mm:

(+[WebElementDictionary initialize]):

  • Misc/WebIconDatabase.mm:
  • Misc/WebStringTruncator.mm:

(+[WebStringTruncator initialize]):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(+[WebHostedNetscapePluginView initialize]):

  • Plugins/WebBaseNetscapePluginView.mm:
  • Plugins/WebBasePluginPackage.mm:

(+[WebBasePluginPackage initialize]):

  • Plugins/WebNetscapePluginView.mm:

(+[WebNetscapePluginView initialize]):

  • WebCoreSupport/WebEditorClient.mm:

(+[WebUndoStep initialize]):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(+[WebFramePolicyListener initialize]):

  • WebView/WebArchive.mm:

(+[WebArchivePrivate initialize]):

  • WebView/WebDataSource.mm:

(+[WebDataSource initialize]):

  • WebView/WebHTMLView.mm:

(+[WebHTMLViewPrivate initialize]):
(+[WebHTMLView initialize]):

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

  • WebView/WebResource.mm:

(+[WebResourcePrivate initialize]):

  • WebView/WebTextIterator.mm:

(+[WebTextIteratorPrivate initialize]):

  • WebView/WebView.mm:

(+[WebView initialize]):

  • WebView/WebViewData.mm:

(+[WebViewPrivate initialize]):

Source/WTF:

Simplify main thread initialization on macOS by always using pthread main as main thread.
The complexity is now isolated to the USE(WEB_THREAD) code path.

This patch also adds a debug assertion in WTF::initializeWebThreadPlatform() to make sure
it gets called on the actual main thread. In release, it will log a fault message indicating
it was called on the wrong thread.

  • wtf/MainThread.cpp:
  • wtf/MainThread.h:
  • wtf/RefCounted.h:

(WTF::RefCountedBase::RefCountedBase):
(WTF::RefCountedBase::applyRefDerefThreadingCheck const):

  • wtf/cocoa/MainThreadCocoa.mm:

(WTF::initializeMainThreadPlatform):
(WTF::scheduleDispatchFunctionsOnMainThread):
(WTF::initializeWebThreadPlatform):
(WTF::canAccessThreadLocalDataForThread):
(WTF::isMainThread):

  • wtf/generic/MainThreadGeneric.cpp:
  • wtf/text/cf/StringImplCF.cpp:

(WTF::StringImpl::createCFString):

  • wtf/win/MainThreadWin.cpp:
3:36 PM Changeset in webkit [251163] by clopez@igalia.com
  • 4 edits
    7 adds in trunk/LayoutTests

Import apng testcases from WPT.
https://bugs.webkit.org/show_bug.cgi?id=202783

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Import apng tests from WTP.

  • resources/import-expectations.json:
  • web-platform-tests/apng/META.yml: Added.
  • web-platform-tests/apng/animated-png-timeout-expected.html: Added.
  • web-platform-tests/apng/animated-png-timeout.html: Added.
  • web-platform-tests/apng/supported-in-source-type-expected.txt: Added.
  • web-platform-tests/apng/supported-in-source-type.html: Added.
  • web-platform-tests/apng/w3c-import.log: Added.

LayoutTests:

Import apng tests from WTP

has a fix and the other would pass once the support for reftest-wait
is implemented in the tooling.

3:33 PM Changeset in webkit [251162] by Alan Coon
  • 1 copy in tags/Safari-608.3.10.0.3

Tag Safari-608.3.10.0.3.

3:24 PM Changeset in webkit [251161] by zhifei_fang@apple.com
  • 3 edits
    1 add in trunk/Tools

Tool to mark jsc test skip/enable
https://bugs.webkit.org/show_bug.cgi?id=202063

Reviewed by Keith Miller.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
3:06 PM Changeset in webkit [251160] by commit-queue@webkit.org
  • 46 edits
    33 adds in trunk

[Picture-in-Picture Web API] Implement HTMLVideoElement.requestPictureInPicture() / Document.exitPictureInPicture()
https://bugs.webkit.org/show_bug.cgi?id=201024

Patch by Peng Liu <Peng Liu> on 2019-10-15
Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Import wpt/picture-in-picture.

  • resources/import-expectations.json:
  • web-platform-tests/picture-in-picture/META.yml: Added.
  • web-platform-tests/picture-in-picture/css-selector.html: Added.
  • web-platform-tests/picture-in-picture/disable-picture-in-picture.html: Added.
  • web-platform-tests/picture-in-picture/enter-picture-in-picture.html: Added.
  • web-platform-tests/picture-in-picture/exit-picture-in-picture.html: Added.
  • web-platform-tests/picture-in-picture/idlharness.window.html: Added.
  • web-platform-tests/picture-in-picture/idlharness.window.js: Added.
  • web-platform-tests/picture-in-picture/leave-picture-in-picture.html: Added.
  • web-platform-tests/picture-in-picture/mediastream.html: Added.
  • web-platform-tests/picture-in-picture/picture-in-picture-element.html: Added.
  • web-platform-tests/picture-in-picture/picture-in-picture-window.html: Added.
  • web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html: Added.
  • web-platform-tests/picture-in-picture/request-picture-in-picture.html: Added.
  • web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js: Added.

(loadVideo):
(async.requestPictureInPictureWithTrustedClick):

  • web-platform-tests/picture-in-picture/resources/w3c-import.log: Added.
  • web-platform-tests/picture-in-picture/shadow-dom.html: Added.
  • web-platform-tests/picture-in-picture/w3c-import.log: Added.

Source/JavaScriptCore:

Add configurations for Picture-in-Picture API.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Implement the support to enter and exit PiP mode with the Picture-in-Picture API.
Majority work of this patch was done by Carlos Eduardo Ramalho <cadubentzen@gmail.com>.

Also, fix a build error of Modules/webaudio/OfflineAudioContext.cpp because of this patch (due to unified build).

Tests: imported/w3c/web-platform-tests/picture-in-picture/css-selector.html

imported/w3c/web-platform-tests/picture-in-picture/disable-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/enter-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/exit-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/idlharness.window.html
imported/w3c/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/mediastream.html
imported/w3c/web-platform-tests/picture-in-picture/picture-in-picture-element.html
imported/w3c/web-platform-tests/picture-in-picture/picture-in-picture-window.html
imported/w3c/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html
imported/w3c/web-platform-tests/picture-in-picture/request-picture-in-picture.html
imported/w3c/web-platform-tests/picture-in-picture/shadow-dom.html

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/pictureinpicture/DocumentPictureInPicture.cpp: Added.

(WebCore::DocumentPictureInPicture::exitPictureInPicture):
(WebCore::DocumentPictureInPicture::from):

  • Modules/pictureinpicture/DocumentPictureInPicture.h: Added.

(WebCore::DocumentPictureInPicture::pictureInPictureEnabled):
(WebCore::DocumentPictureInPicture::supplementName):

  • Modules/pictureinpicture/DocumentPictureInPicture.idl: Added.
  • Modules/pictureinpicture/EnterPictureInPictureEvent.cpp: Added.

(WebCore::EnterPictureInPictureEvent::create):
(WebCore::EnterPictureInPictureEvent::EnterPictureInPictureEvent):

  • Modules/pictureinpicture/EnterPictureInPictureEvent.h: Added.
  • Modules/pictureinpicture/EnterPictureInPictureEvent.idl: Added.
  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp: Added.

(WebCore::HTMLVideoElementPictureInPicture::HTMLVideoElementPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::~HTMLVideoElementPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::from):
(WebCore::HTMLVideoElementPictureInPicture::requestPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::autoPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::setAutoPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::disablePictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::setDisablePictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::exitPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didEnterPictureInPicture):
(WebCore::HTMLVideoElementPictureInPicture::didExitPictureInPicture):

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.h: Added.

(WebCore::HTMLVideoElementPictureInPicture::supplementName):

  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl: Added.
  • Modules/pictureinpicture/PictureInPictureWindow.cpp: Added.

(WebCore::PictureInPictureWindow::create):
(WebCore::PictureInPictureWindow::PictureInPictureWindow):
(WebCore::PictureInPictureWindow::activeDOMObjectName const):
(WebCore::PictureInPictureWindow::canSuspendForDocumentSuspension const):
(WebCore::PictureInPictureWindow::eventTargetInterface const):
(WebCore::PictureInPictureWindow::scriptExecutionContext const):

  • Modules/pictureinpicture/PictureInPictureWindow.h: Added.
  • Modules/pictureinpicture/PictureInPictureWindow.idl: Added.
  • Modules/webaudio/OfflineAudioContext.cpp:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/Document.cpp:

(WebCore::Document::pictureInPictureElement const):
(WebCore::Document::setPictureInPictureElement):

  • dom/Document.h:
  • dom/DocumentOrShadowRoot.idl:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::pictureInPictureElement const):

  • dom/ShadowRoot.h:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::fullscreenModeChanged):
(WebCore::HTMLVideoElement::setPictureInPictureObserver):

  • html/HTMLVideoElement.h:
  • page/Settings.yaml:
  • platform/PictureInPictureObserver.h: Added.

(WebCore::PictureInPictureObserver::~PictureInPictureObserver):

  • testing/InternalSettings.h:

Source/WebCore/PAL:

Add configurations for the Picture-in-Picture API.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

Add configurations for Picture-in-Picture API and add a preference option for it.

  • Configurations/FeatureDefines.xcconfig:
  • Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

Add configurations for Picture-in-Picture API and also a preference option for it.

  • Configurations/FeatureDefines.xcconfig:
  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences pictureInPictureAPIEnabled]):
(-[WebPreferences setPictureInPictureAPIEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Tools:

Add configurations for Picture-in-Picture API and enable it in the test runner.

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setPictureInPictureAPIEnabled):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

Skip imported/w3c/web-platform-tests/picture-in-picture because of http://webkit.org/b/202617.

2:29 PM Changeset in webkit [251159] by Simon Fraser
  • 4 edits
    1 add in trunk/Source/WebCore

Add TextStream dumping for ThemeTypes enums
https://bugs.webkit.org/show_bug.cgi?id=202972

Reviewed by Dean Jackson.

Make ControlPart, SelectionPart, ThemeFont and ThemeColor dumpable.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/ThemeTypes.cpp: Added.

(WebCore::operator<<):

  • platform/ThemeTypes.h:
2:18 PM Changeset in webkit [251158] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Add dumping for Animation and AnimationList
https://bugs.webkit.org/show_bug.cgi?id=202973

Reviewed by Dean Jackson.

Make Animation, AnimationList and related enums dumpable.

  • platform/animation/Animation.cpp:

(WebCore::operator<<):

  • platform/animation/Animation.h:
  • platform/animation/AnimationList.cpp:

(WebCore::operator<<):

  • platform/animation/AnimationList.h:
2:16 PM Changeset in webkit [251157] by dino@apple.com
  • 2 edits in trunk/LayoutTests

Layout test fast/events/touch/ios/passive-by-default-on-document-and-window.html is a flaky failure on Internal iOS Testers
https://bugs.webkit.org/show_bug.cgi?id=202858
<rdar://51829520>

Update expected results.

  • fast/events/touch/ios/passive-by-default-on-document-and-window-expected.txt:
2:06 PM Changeset in webkit [251156] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Don't mutate a NinePieceImage to create a mask default image
https://bugs.webkit.org/show_bug.cgi?id=202967

Reviewed by Dean Jackson.

For every StyleRareNonInheritedData, the maskBoxImage undergoes copy-on-write
via maskBoxImage.setMaskDefaults(). Fix by giving NinePieceImage a constructor
argument that cna make the mask flavor of image.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertBorderMask):
(WebCore::StyleBuilderConverter::convertReflection):

  • rendering/style/NinePieceImage.cpp:

(WebCore::NinePieceImage::defaultMaskData):
(WebCore::NinePieceImage::NinePieceImage):

  • rendering/style/NinePieceImage.h:

(WebCore::NinePieceImage::setMaskDefaults): Deleted.

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):

  • rendering/style/StyleReflection.h:

(WebCore::StyleReflection::StyleReflection):

1:54 PM Changeset in webkit [251155] by youenn@apple.com
  • 7 edits in trunk/Source

Move headers to keep from a HTTPHeaderNameSet to an OptionSet
https://bugs.webkit.org/show_bug.cgi?id=202977

Reviewed by Anders Carlsson.

Source/WebCore:

Covered by existing tests.
New representation is smaller and more efficient to process.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::httpHeadersToKeepFromCleaning):
(WebCore::cleanHTTPRequestHeadersForAccessControl):

  • loader/CrossOriginAccessControl.h:

(WebCore::cleanHTTPRequestHeadersForAccessControl): Deleted.

  • loader/ResourceLoaderOptions.h:

Source/WebKit:

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
1:45 PM Changeset in webkit [251154] by jiewen_tan@apple.com
  • 5 edits in trunk

[WebAuthn] Rename -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:] to -[WKUIDelegatePrivate _webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=202564
<rdar://problem/55974027>

Reviewed by Brent Fulgham.

Source/WebKit:

Rename the SPI to a proper SPI style.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::runWebAuthenticationPanel):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelUIDelegate _webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]):
(-[TestWebAuthenticationPanelUIDelegate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]): Deleted.

1:29 PM Changeset in webkit [251153] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Use python 3 compatible way to represent octal in buildbot code
https://bugs.webkit.org/show_bug.cgi?id=202999

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/buildbot.tac:
  • BuildSlaveSupport/ews-build/steps.py:
1:13 PM Changeset in webkit [251152] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Scheduling a service worker job in server should wait for finishing the registration import
https://bugs.webkit.org/show_bug.cgi?id=202975

Reviewed by Chris Dumez.

  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::scheduleJobInServer):
We should not schedule a job until the registrations are fully imported.
Covered by ServiceWorkerBasic API test flakily hitting debug asserts.

12:29 PM Changeset in webkit [251151] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][TFC] Use <col> to adjust the preferred column width.
https://bugs.webkit.org/show_bug.cgi?id=202997
<rdar://problem/56300345>

Reviewed by Antti Koivisto.

The <col> elment can set the preferred width on the table column. Let's take these values into account while computing the preferred width for columns.

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):

  • layout/tableformatting/TableFormattingContext.h:
  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::computedColumnWidth const):

  • layout/tableformatting/TableGrid.h:

(WebCore::Layout::TableGrid::Column::columnBox const):

12:13 PM Changeset in webkit [251150] by Jonathan Bedard
  • 2 edits in trunk/Tools

results.webkit.org: Add os version to various unix ports
https://bugs.webkit.org/show_bug.cgi?id=202955

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.init): Use platform.release() to defined the os_version.

11:38 AM Changeset in webkit [251149] by Wenson Hsieh
  • 22 edits in trunk

REGRESSION: editing/async-clipboard/clipboard-interfaces.html is failing in WebKit1
https://bugs.webkit.org/show_bug.cgi?id=202940
<rdar://problem/56262298>

Reviewed by Ryosuke Niwa.

Source/WebKitLegacy/win:

Add support for the asyncClipboardAPIEnabled feature flag in legacy WebKit on Windows.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::asyncClipboardAPIEnabled):
(WebPreferences::setAsyncClipboardAPIEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

Add some plumbing to support the async clipboard API experimental test option in Windows.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setWebPreferencesForTestOptions):

LayoutTests:

  • editing/async-clipboard/clipboard-interfaces.html:
  • editing/async-clipboard/clipboard-item-basic.html:
  • editing/async-clipboard/clipboard-wrapper-stays-alive.html:

Tweak a few layout tests to actually turn the experimental feature on (this previously worked because
experimental feature flags are already on by default in WebKit2).

  • platform/ios-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:

Unskip and unmark these layout tests as failing in WebKit1 on iOS, macOS, and Windows.

11:21 AM Changeset in webkit [251148] by jiewen_tan@apple.com
  • 3 edits
    2 adds in trunk/Tools

[WebAuthn] Write more tests for _WKWebAuthenticationPanel
https://bugs.webkit.org/show_bug.cgi?id=202565
<rdar://problem/55974128>

Reviewed by Brent Fulgham.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:dismissWebAuthenticationPanelWithResult:]):
(-[TestWebAuthenticationPanelUIDelegate init]):
(-[TestWebAuthenticationPanelUIDelegate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-hid.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-nfc.html: Added.
10:31 AM Changeset in webkit [251147] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][TFC] Add support for colgroup/col
https://bugs.webkit.org/show_bug.cgi?id=202991
<rdar://problem/56294715>

Reviewed by Antti Koivisto.

This patch sets up the column context when <colgroup> is present. This is in preparation for using <col>'s width to adjust the preferred width on table columns.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::ensureTableGrid):

  • layout/tableformatting/TableGrid.cpp:

(WebCore::Layout::TableGrid::Column::Column):
(WebCore::Layout::TableGrid::ColumnsContext::addColumn):

  • layout/tableformatting/TableGrid.h:
10:19 AM Changeset in webkit [251146] by achristensen@apple.com
  • 21 edits
    2 deletes in trunk/Source

Unreviewed, rolling out r251138.

Broke API tests

Reverted changeset:

"Pass CORS-enabled schemes through WebProcess instead of
having them NetworkProcess-global"
https://bugs.webkit.org/show_bug.cgi?id=202891
https://trac.webkit.org/changeset/251138

10:16 AM Changeset in webkit [251145] by dino@apple.com
  • 3 edits in trunk/LayoutTests

Reset maxCanvasPixelMemory between tests
https://bugs.webkit.org/show_bug.cgi?id=202941
<rdar://problem/56260865>

Attempt to fix flakiness.

  • fast/canvas/canvas-too-large-to-draw-expected.txt:
  • fast/canvas/canvas-too-large-to-draw.html:
10:15 AM Changeset in webkit [251144] by Devin Rousso
  • 14 edits in trunk/Source/WebInspectorUI

Web Inspector: Local Resource Overrides: automatically create an image/font local override when dragging content over a non-overridden resource
https://bugs.webkit.org/show_bug.cgi?id=202957

Reviewed by Joseph Pecoraro.

Since non-text resources aren't editable, some users of local resource overrides kept trying
to drag image/font files over the actual resource content view (not the local override),
which didn't do anything. Rather than having to click "Create Local Override" and then do a
drag/drop, we should support the "shorter" workflow of drag/drop over the actual resource.

  • UserInterface/Base/FileUtilities.js:

(WI.FileUtilities.import): Added.
(WI.FileUtilities.importText):
(WI.FileUtilities.importJSON):
(WI.FileUtilities.importData): Added.
(WI.FileUtilities.async readText):
(WI.FileUtilities.async readJSON):
(WI.FileUtilities.async readData): Added.
(WI.FileUtilities.async _read): Added.
Create utility functions for importing non-text content as data.
Drive-by: fix a bug in the import* functions where the callback would be bound on the

first call, meaning that since the <input> was cached for all calls, we'd only
ever use the first callback in subsequent calls.

  • UserInterface/Views/DropZoneView.js:

(WI.DropZoneView):
(WI.DropZoneView.prototype.set text): Added.
Support the text content of the drop zone changing after it's initialized.

  • UserInterface/Views/FontResourceContentView.js:

(WI.FontResourceContentView):
(WI.FontResourceContentView.prototype.contentAvailable):
(WI.FontResourceContentView.prototype.dropZoneHandleDragEnter): Added.
(WI.FontResourceContentView.prototype.dropZoneHandleDrop):
(WI.FontResourceContentView.prototype._handleLocalResourceContentDidChange): Added.

  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView):
(WI.ImageResourceContentView.prototype.contentAvailable):
(WI.ImageResourceContentView.prototype.dropZoneHandleDragEnter): Added.
(WI.ImageResourceContentView.prototype.dropZoneHandleDrop):
(WI.ImageResourceContentView.prototype._handleLocalResourceContentDidChange): Added.
Support drag/drop on non-override image/font content views, which will create/update the
local resource override for that resource.

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView):
(WI.ResourceContentView.prototype.get navigationItems):
(WI.ResourceContentView.prototype._handleImportLocalResourceOverride): Added.
When viewing a local resource override, add an "Import" navigation item for non-drag/drop
updating of the contents of the local resource override. This is also exposed for text-based
local resource overrides, since drag/drop inserts the contents of the file (if it's text),
which attempts to determine whether the dropped file is text or data based on the MIME type.

  • UserInterface/Views/AuditNavigationSidebarPanel.js:

(WI.AuditNavigationSidebarPanel.prototype._handleImportButtonNavigationItemClicked):

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype._handleImportButtonNavigationItemClicked):

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel.prototype._handleImportButtonNavigationItemClicked):

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._importHAR):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView.prototype._importButtonNavigationItemClicked):
Explicitly allow multiple files to be imported at the same time.

  • UserInterface/Base/BlobUtilities.js:

(WI.BlobUtilities.blobForContent):
Drive-by: remove extra base64Encoded argument when calling decodeBase64ToBlob, which

caused SVG-based image local resource overrides to show a broken image when
closing and reopening Web Inspector.

  • Localizations/en.lproj/localizedStrings.js:
10:10 AM Changeset in webkit [251143] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

9:56 AM Changeset in webkit [251142] by Chris Dumez
  • 8 edits
    1 copy in trunk/Source

Stop using inheritance for WebBackForwardCacheEntry
https://bugs.webkit.org/show_bug.cgi?id=202989

Reviewed by Alex Christensen.

Source/WebCore:

  • history/BackForwardItemIdentifier.h:

(WebCore::BackForwardItemIdentifier::operator bool const):

Source/WebKit:

Stop using inheritance for WebBackForwardCacheEntry. This simplifies the code a bit.

  • Sources.txt:
  • UIProcess/WebBackForwardCache.cpp:

(WebKit::WebBackForwardCache::addEntry):
(): Deleted.

  • UIProcess/WebBackForwardCacheEntry.cpp: Copied from Source/WebKit/UIProcess/WebBackForwardCacheEntry.h.

(WebKit::WebBackForwardCacheEntry::WebBackForwardCacheEntry):
(WebKit::WebBackForwardCacheEntry::~WebBackForwardCacheEntry):
(WebKit::WebBackForwardCacheEntry::takeSuspendedPage):
(WebKit::WebBackForwardCacheEntry::process const):

  • UIProcess/WebBackForwardCacheEntry.h:

(WebKit::WebBackForwardCacheEntry::suspendedPage const):
(WebKit::WebBackForwardCacheEntry::processIdentifier const):
(WebKit::WebBackForwardCacheEntry::WebBackForwardCacheEntry): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
9:42 AM Changeset in webkit [251141] by Alan Coon
  • 2 edits in branches/safari-608.3.10.0-branch/Source/WebKit

Cherry-pick r250773. rdar://problem/56271907

WebPageProxy::updatePlayingMediaDidChange should protect from a null m_userMediaPermissionRequestManager
https://bugs.webkit.org/show_bug.cgi?id=202628
<rdar://problem/55935091>

Reviewed by Eric Carlson.

On process swap on navigation or process crash, m_userMediaPermissionRequestManager is made null.
At the same time, the media state is set back to not playing.
Future calls of updatePlayingMediaDidChange should not have any capture state change until getUserMedia/getDisplayMedia
is called, which would create m_userMediaPermissionRequestManager.
But this assumption is not always true given that the media state is computed as process-wide in MediaStreamTrack::captureState on iOS.
The above behavior is fixed as part of https://bugs.webkit.org/show_bug.cgi?id=202627.
Since the call to updatePlayingMediaDidChange is triggered straight from IPC, it should not be trusted and a null check should be added.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updatePlayingMediaDidChange):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250773 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:40 AM Changeset in webkit [251140] by Alan Coon
  • 7 edits in branches/safari-608.3.10.0-branch/Source

Versioning.

9:35 AM Changeset in webkit [251139] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Interpreter: Don't assert that reference is nonnull
https://bugs.webkit.org/show_bug.cgi?id=202986

Patch by Angelos Oikonomopoulos <aoikonomopoulos@igalia.com> on 2019-10-15
Reviewed by Keith Miller.

G++ 9.2 can assume that the address of a reference is nonnull and
emits multiple warnings to that effect in --debug builds.

  • interpreter/FrameTracers.h:

(JSC::NativeCallFrameTracer::NativeCallFrameTracer):

9:09 AM Changeset in webkit [251138] by achristensen@apple.com
  • 23 edits
    2 adds in trunk

Pass CORS-enabled schemes through WebProcess instead of having them NetworkProcess-global
https://bugs.webkit.org/show_bug.cgi?id=202891

Reviewed by Youenn Fablet.

Source/WebCore:

  • platform/LegacySchemeRegistry.cpp:

(WebCore::LegacySchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):
(WebCore::LegacySchemeRegistry::allURLSchemesRegisteredAsCORSEnabled):

  • platform/LegacySchemeRegistry.h:

Source/WebKit:

No change in behavior. Now the LegacySchemeRegistry is not used as much in the NetworkProcess, a step towards no use at all.
This functionality is currently only available through the glib API webkit_security_manager_register_uri_scheme_as_cors_enabled
but it has been requested in bug 201180 and bug 199064.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::registerURLSchemesAsCORSEnabled):

  • NetworkProcess/NetworkConnectionToWebProcess.h:

(WebKit::NetworkConnectionToWebProcess::schemeRegistry):

  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkLoadChecker.cpp:

(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):

  • NetworkProcess/NetworkLoadChecker.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):

  • NetworkProcess/NetworkSchemeRegistry.cpp: Added.

(WebKit::NetworkSchemeRegistry::registerURLSchemeAsCORSEnabled):
(WebKit::NetworkSchemeRegistry::shouldTreatURLSchemeAsCORSEnabled):

  • NetworkProcess/NetworkSchemeRegistry.h: Added.

(WebKit::NetworkSchemeRegistry::create):

  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::PingLoad):
Use nullptr, indicating that the PingLoad constructor that is used in ad click attribution should not check the custom scheme registry.
This is Ok because ad click attribution is only used for HTTP family schemes.
(WebKit::m_blobFiles):

  • NetworkProcess/PingLoad.h:
  • Sources.txt:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::registerURLSchemeAsCORSEnabled):
(WebKit::WebProcess::ensureNetworkProcessConnection):
(WebKit::WebProcess::registerURLSchemeAsCORSEnabled const): Deleted.

  • WebProcess/WebProcess.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

(-[SWMessageHandlerWithExpectedMessage userContentController:didReceiveScriptMessage:]):
Use EXPECT_WK_STREQ so I can see what is going on on EWS.

8:09 AM Changeset in webkit [251137] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC] Adjust computed width value when box sizing is border-box
https://bugs.webkit.org/show_bug.cgi?id=202966
<rdar://problem/56277954>

Reviewed by Antti Koivisto.

box-sizing: border-box; means the width value sets the size of the border box (and not the content box).

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedContentWidth const):
(WebCore::Layout::FormattingContext::Geometry::computedMinWidth const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxWidth const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):

8:03 AM Changeset in webkit [251136] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][TFC] Add <col> element's width attribute value to Layout::Box rare data
https://bugs.webkit.org/show_bug.cgi?id=202988
<rdar://problem/56291048>

Reviewed by Antti Koivisto.

Sadly RenderStyle does not have this value.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::setColumnWidth):
(WebCore::Layout::Box::columnWidth const):

  • layout/layouttree/LayoutBox.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):
(WebCore::Layout::outputLayoutBox):

7:47 AM Changeset in webkit [251135] by Alan Bujtas
  • 18 edits in trunk/Source/WebCore

[LFC] Adjust computed height value when box sizing is border-box
https://bugs.webkit.org/show_bug.cgi?id=202965
<rdar://problem/56276771>

Reviewed by Antti Koivisto.

box-sizing: border-box; means the height value sets the size of the border box (and not the content box).

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::computedContentHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::displayBoxForLayoutBox):

  • layout/LayoutUnits.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeWidthAndMargin):
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

  • layout/blockformatting/BlockFormattingContextQuirks.cpp:

(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):

  • layout/displaytree/DisplayBox.cpp:

(WebCore::Display::Box::Box):
(WebCore::Display::Box::Style::Style): Deleted.

  • layout/displaytree/DisplayBox.h:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutTableCellBox):

  • layout/tableformatting/TableFormattingContext.h:
  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::tableCellHeightAndMargin const):

7:30 AM Changeset in webkit [251134] by Wenson Hsieh
  • 11 edits
    4 copies
    5 adds in trunk

[Clipboard API] Implement getType() for ClipboardItems created from bindings
https://bugs.webkit.org/show_bug.cgi?id=202943

Reviewed by Tim Horton.

Source/WebCore:

Adds basic support for ClipboardItem.getType(), in the case where the ClipboardItems are created by the page. To
achieve this, we introduce ClipboardItemDataSource, which represents the data source backing a given clipboard
item. This backing may either consist of a list of types and their corresponding DOMPromises (for ClipboardItems
that come from the page), or may consist of a list of items that will ask the platformr pasteboard for their
data (to be supported in a future patch).

See below for more details.

Test: editing/async-clipboard/clipboard-item-basic.html

  • Modules/async-clipboard/Clipboard.h:
  • Modules/async-clipboard/ClipboardItem.cpp:

(WebCore::clipboardItemPresentationStyle):
(WebCore::ClipboardItem::ClipboardItem):

Pass in the parent Clipboard object for ClipboardItems that are backed by the platform pasteboard (which are
returned by Clipboard.read()). (Note that this doesn't make any difference until this codepath is actually
exercised when we add support for Clipboard.read()).

(WebCore::ClipboardItem::create):
(WebCore::ClipboardItem::types const):
(WebCore::ClipboardItem::getType):

Plumb types() and getType() to the clipboard item's datasource.

(WebCore::ClipboardItem::navigator):

Make navigator() return the parent Clipboard object's navigator.

  • Modules/async-clipboard/ClipboardItem.h:
  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: Added.

(WebCore::blobFromString):
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemBindingsDataSource):

Store the given list of types and DOM promises.

(WebCore::ClipboardItemBindingsDataSource::types const):
(WebCore::ClipboardItemBindingsDataSource::getType):

Implement getType() by finding the matching promised type in the item's array of types, and waiting for the
promise to either resolve or reject. If the promise resolves to either a string or blob, we deliver the result
back to the page by resolving the promise returned by getType(). Otherwise, we reject it.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.h:
  • Modules/async-clipboard/ClipboardItemDataSource.h:

(WebCore::ClipboardItemDataSource::ClipboardItemDataSource):

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.cpp:

Add a stub implementation of a clipboard item data source that is backed by data in the platform pasteboard. In
a future patch, this will implement getType() by calling out to the platform pasteboard.

(WebCore::ClipboardItemPasteboardDataSource::ClipboardItemPasteboardDataSource):
(WebCore::ClipboardItemPasteboardDataSource::types const):
(WebCore::ClipboardItemPasteboardDataSource::getType):

  • Modules/async-clipboard/ClipboardItemPasteboardDataSource.h:
  • Modules/mediastream/RTCRtpReceiver.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:

Unrelated build fixes, due to changes in unified source groupings.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/network/mac/UTIUtilities.mm:

More build fixes, due to changes in unified source groupings.

LayoutTests:

Add a new layout test to verify that we can create and ask ClipboardItems for data. Exercises the following
corner cases:

  • Promise rejection when returning item data.
  • Resolving promises to incorrect data types.
  • Setting types to custom strings (including emojis and non-ASCII characters).
  • Returning values with emojis and non-ASCII characters.
  • Resolving promises using both Blobs and DOMStrings.
  • Delayed promise rejection/resolution (using setTimeout).
  • editing/async-clipboard/clipboard-item-basic-expected.txt: Added.
  • editing/async-clipboard/clipboard-item-basic.html: Added.
  • editing/async-clipboard/resources/async-clipboard-helpers.js: Added.

Add a resource file with some helper functions for creating blobs, and loading images and text from blobs.

  • platform/win/TestExpectations:

Temporarily mark a test as failing; I'll fix this and some other failing tests in a followup. See
<https://webkit.org/b/202940>.

6:45 AM Changeset in webkit [251133] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add support for text-transform: uppercase/lowercase
https://bugs.webkit.org/show_bug.cgi?id=202968
<rdar://problem/56278141>

Reviewed by Antti Koivisto.

The text content on the layout box should be in its final state (This might change if we actually need the original content for some reason though).

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::applyTextTransform):
(WebCore::Layout::TreeBuilder::createLayoutBox):

5:20 AM Changeset in webkit [251132] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Fix several GTK tests in /WebKit2Gtk/TestUIClient crashing since r241988

Source/WebKit:

Show a warning message and return nullptr from WebKitWebView::create if the new web view is not related to the
given one. Also make it clear in the documentation that the new web view should be related to the given one.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_class_init):
(webkitWebViewCreateNewPage):

Tools:

This was not caused by r241988, but revealed the existing bug. We were not creating the new WebKitWebView in
UIClientTest with the related WebKitWebView. Since r241988, the new WebPageProxy drawing area is passed to
creationParameters(), but it's nullptr because the WebPageProxy hasn't been initialized yet. When using related
views, the new WebPageProxy is already initialized because it has running processes on creation.

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewCreateNavigationData):

4:01 AM Changeset in webkit [251131] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

Unreviewed. Fix GTK test /WebKit2Gtk/TestWebViewEditor

It's failing since we delay the web process launch until the first load. Load about:blank in the test
constructor to fix it.

  • TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:
3:39 AM Changeset in webkit [251130] by commit-queue@webkit.org
  • 1 edit
    18 deletes in trunk/LayoutTests

Remove duplicate MathML tests
https://bugs.webkit.org/show_bug.cgi?id=202979

Patch by Rob Buis <rbuis@igalia.com> on 2019-10-15
Reviewed by Frédéric Wang.

Remove mo-paint-lspace-rspace.html, this got imported
as presentation-markup/operators/mo-paint-lspace-rspace.html.

Remove mo-movablelimits.html, this got imported
as presentation-markup/operators/mo-movablelimits.html.

Remove mo-movablelimits-dynamic.html, this got imported as
presentation-markup/operators/mo-movablelimits-dynamic.html.

Remove mo-movablelimits-default.html, this got imported as
presentation-markup/operators/mo-movablelimits-default.html.

Remove direction.html, this got imported as
presentation-markup/direction/direction.html.

Remove direction-token.html, this got imported as
presentation-markup/direction/direction-token.html.

Remove direction-overall.html, this got imported as
presentation-markup/direction/direction-overall.html.

Remove inferred-mrow-baseline.html, this got imported as
presentation-markup/mrow/inferred-mrow-baseline.html.

Remove inferred-mrow-stretchy.html, this got imported as
presentation-markup/mrow/inferred-mrow-stretchy.html.

  • mathml/presentation/direction-expected.html: Removed.
  • mathml/presentation/direction-overall-expected.html: Removed.
  • mathml/presentation/direction-overall.html: Removed.
  • mathml/presentation/direction-token-expected.html: Removed.
  • mathml/presentation/direction-token.html: Removed.
  • mathml/presentation/direction.html: Removed.
  • mathml/presentation/inferred-mrow-baseline-expected.txt: Removed.
  • mathml/presentation/inferred-mrow-baseline.html: Removed.
  • mathml/presentation/inferred-mrow-stretchy-expected.txt: Removed.
  • mathml/presentation/inferred-mrow-stretchy.html: Removed.
  • mathml/presentation/mo-movablelimits-default-expected.html: Removed.
  • mathml/presentation/mo-movablelimits-default.html: Removed.
  • mathml/presentation/mo-movablelimits-dynamic-expected.html: Removed.
  • mathml/presentation/mo-movablelimits-dynamic.html: Removed.
  • mathml/presentation/mo-movablelimits-expected.html: Removed.
  • mathml/presentation/mo-movablelimits.html: Removed.
  • mathml/presentation/mo-paint-lspace-rspace-expected.html: Removed.
  • mathml/presentation/mo-paint-lspace-rspace.html: Removed.
3:37 AM Changeset in webkit [251129] by Carlos Garcia Campos
  • 6 edits in trunk

Unreviewed. Fix GTK test /webkit/Authentication/authentication-storage after r249962

Source/WebKit:

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewHandleAuthenticationChallenge): Do not use webkit_settings_get_enable_private_browsing().

Tools:

The test was still using the legacy private browsing API that is a no-op since r249962. This partch updates the
test to use a ephemeral WebView instead.

  • TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp:

(EphemeralAuthenticationTest::setup):
(EphemeralAuthenticationTest::teardown):
(testWebViewAuthenticationEphemeral):
(testWebViewAuthenticationStorage):
(beforeAll):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:

(WebViewTest::initializeWebView):

  • TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:
3:12 AM Changeset in webkit [251128] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Fix GTK test /webkit/WebKitSettings/webkit-settings after r249962.

Source/WebKit:

Legacy private browsing was removed in r249962, so webkit_settings_set_enable_private_browsing() is now no-op.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webKitSettingsSetProperty): Only call webkit_settings_set_enable_private_browsing() when trying to enable it.
(webkit_settings_set_enable_private_browsing): Show a warning to let users know that it does nothing now.

Tools:

Stop testing WebKitSettings:enable-private-browsing.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp:

(testWebKitSettings):

2:11 AM Changeset in webkit [251127] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] WebKitWebContext should identify web views by their WebPageProxy identifier
https://bugs.webkit.org/show_bug.cgi?id=202924

Reviewed by Adrian Perez de Castro.

Instead of the WebPage identifier, since it maps WebPageProxy to WebKitWebView.

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextCreatePageForWebView):
(webkitWebContextWebViewDestroyed):
(webkitWebContextGetWebViewForPage):

1:59 AM Changeset in webkit [251126] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Handle service worker loads through NetworkResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=202309

Unreviewed.
Fix !ENABLE(SERVICE_WORKER) builds.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
(WebKit::NetworkResourceLoader::serviceWorkerDidNotHandle):

1:43 AM Changeset in webkit [251125] by aboya@igalia.com
  • 2 edits in trunk/Tools

gdb webkit.py: Fix iterator error in Python3
https://bugs.webkit.org/show_bug.cgi?id=202926

Reviewed by Jonathan Bedard.

Some distros use Python3 for gdb, so the script needs to be compatible with both versions for it to work.

  • gdb/webkit.py:

(WTFVectorPrinter.Iterator.next):

Note: See TracTimeline for information about the timeline view.