Timeline



Sep 23, 2020:

11:15 PM Changeset in webkit [267519] by Ross Kirsling
  • 9 edits
    1 add in trunk

%ArrayIteratorPrototype%.next must check for detached buffers
https://bugs.webkit.org/show_bug.cgi?id=216904

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/detach-buffer-during-iteration.js: Added.
  • test262/expectations.yaml:

Mark two test cases as passing.

Source/JavaScriptCore:

Per https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next:

  1. If a has a TypedArrayName? internal slot, then
    1. If IsDetachedBuffer(a.ViewedArrayBuffer?) is true, throw a TypeError exception.
  • builtins/ArrayIteratorPrototype.js:

(next):

  • builtins/BuiltinNames.h:
  • bytecode/LinkTimeConstant.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::typedArrayViewPrivateFuncIsNeutered):

  • runtime/JSTypedArrayViewPrototype.h:
10:59 PM Changeset in webkit [267518] by ysuzuki@apple.com
  • 18 edits in trunk/Source/JavaScriptCore

[JSC] Simply some of template-specialized host functions by defining each function
https://bugs.webkit.org/show_bug.cgi?id=216907

Reviewed by Saam Barati.

This makes automatically-registering these functions in JIT-caging easy.

  • API/APICallbackFunction.h:

(JSC::APICallbackFunction::callImpl):
(JSC::APICallbackFunction::constructImpl):
(JSC::APICallbackFunction::call): Deleted.
(JSC::APICallbackFunction::construct): Deleted.

  • API/JSCallbackConstructor.cpp:

(JSC::constructJSCallbackConstructor):
(JSC::JSCallbackConstructor::getConstructData):

  • API/JSCallbackFunction.cpp:

(JSC::callJSCallbackFunction):
(JSC::JSCallbackFunction::JSCallbackFunction):

  • API/ObjCCallbackFunction.mm:

(JSC::callObjCCallbackFunction):
(JSC::constructObjCCallbackFunction):
(JSC::ObjCCallbackFunction::ObjCCallbackFunction):

  • API/glib/JSCCallbackFunction.cpp:

(JSC::callJSCCallbackFunction):
(JSC::constructJSCCallbackFunction):
(JSC::JSCCallbackFunction::JSCCallbackFunction):

  • dfg/DFGOperations.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jsc.cpp:

(accessorMakeMasquerader):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::JSGenericArrayBufferConstructor<sharingMode>::JSGenericArrayBufferConstructor):
(JSC::JSGenericArrayBufferConstructor<sharingMode>::constructImpl):
(JSC::constructArrayBuffer):
(JSC::constructSharedArrayBuffer):
(JSC::JSGenericArrayBufferConstructor<sharingMode>::constructArrayBuffer): Deleted.

  • runtime/JSArrayBufferConstructor.h:
  • runtime/JSCustomGetterSetterFunction.cpp:

(JSC::customGetterSetterFunctionCall):
(JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall): Deleted.

  • runtime/JSCustomGetterSetterFunction.h:
  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor<errorType>::constructImpl):
(JSC::NativeErrorConstructor<errorType>::callImpl):
(JSC::callEvalError):
(JSC::constructEvalError):
(JSC::callRangeError):
(JSC::constructRangeError):
(JSC::callReferenceError):
(JSC::constructReferenceError):
(JSC::callSyntaxError):
(JSC::constructSyntaxError):
(JSC::callTypeError):
(JSC::constructTypeError):
(JSC::callURIError):
(JSC::constructURIError):
(JSC::callFunction):
(JSC::constructFunction):
(JSC::NativeErrorConstructor<errorType>::NativeErrorConstructor):
(JSC::NativeErrorConstructorBase::finishCreation):
(JSC::NativeErrorConstructor<errorType>::constructNativeErrorConstructor): Deleted.
(JSC::NativeErrorConstructor<errorType>::callNativeErrorConstructor): Deleted.

  • runtime/NativeErrorConstructor.h:
  • runtime/RegExpConstructor.cpp:

(JSC::regExpConstructorDollarImpl):
(JSC::regExpConstructorDollar1):
(JSC::regExpConstructorDollar2):
(JSC::regExpConstructorDollar3):
(JSC::regExpConstructorDollar4):
(JSC::regExpConstructorDollar5):
(JSC::regExpConstructorDollar6):
(JSC::regExpConstructorDollar7):
(JSC::regExpConstructorDollar8):
(JSC::regExpConstructorDollar9):
(JSC::regExpConstructorInput):
(JSC::regExpConstructorMultiline):
(JSC::regExpConstructorLastMatch):
(JSC::regExpConstructorLastParen):
(JSC::regExpConstructorLeftContext):
(JSC::regExpConstructorRightContext):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
(JSC::regExpConstructorDollar): Deleted.

  • tools/JSDollarVM.cpp:
9:33 PM Changeset in webkit [267517] by Antti Koivisto
  • 3 edits in trunk/Tools

[Windows] Ignore render tree dump based results on Windows
https://bugs.webkit.org/show_bug.cgi?id=209897

Reviewed by Darin Adler.

Render tree dumps are port specific and so difficult to maintain. They are mostly very old and
have been superseded by more modern ref and text dump tests. They rarely reveal any port specific bugs.

This patch adds --ignore-render-tree-dump-results option to run-webkit-tests and enables it by
default on Apple Windows port.

With the option set the render tree dump tests are still run (so crashes are detected) but their
output is treated as if it always passed. Missing results are not written to disk.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner._compare_text):

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):
(_set_up_derived_options):

8:36 PM Changeset in webkit [267516] by Peng Liu
  • 18 edits in trunk/Source

Add feature flags for GPU Process features
https://bugs.webkit.org/show_bug.cgi?id=216901

Reviewed by Tim Horton.

Source/WebCore:

Rename useGPUProcessForMedia to useGPUProcessForMediaEnabled.

No new tests since no functional changes.

  • page/Settings.yaml:

Source/WebKit:

Add feature flags for the following GPU Process features:

  • 2D canvas in GPU process
  • WebGL in GPU process
  • DOM rendering in GPU Process

Also, clean up some related feature/function names.

  • FeatureFlags/WebKit.plist:

Add keys for the GPU process features and sort all keys.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultUseGPUProcessForCanvasRenderingEnabled):
(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):
(WebKit::defaultUseGPUProcessForMediaEnabled):
(WebKit::defaultUseGPUProcessForWebGLEnabled):
(WebKit::defaultCaptureAudioInGPUProcessEnabled):
(WebKit::defaultCaptureVideoInGPUProcessEnabled):
(WebKit::defaultWebRTCCodecsInGPUProcess):
(WebKit::defaultUseGPUProcessForMedia): Deleted.
(WebKit::defaultRenderCanvasInGPUProcessEnabled): Deleted.

  • Shared/WebPreferencesDefaultValues.h:
  • Shared/WebPreferencesInternal.yaml:

Add preferences and corresponding default values.

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
Rename useGPUProcessForMedia to useGPUProcessForMediaEnabled.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):
Use useGPUProcessForCanvasRenderingEnabled instead of renderCanvasInGPUProcessEnabled.

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::updatePreferences):
Use useGPUProcessForMediaEnabled instead of useGPUProcessForMedia.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains): Ditto.
(WebKit::WebPage::updatePreferences): Ditto.

Source/WebKitLegacy/mac:

Minor cleanups.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences useGPUProcessForMediaEnabled]):
(-[WebPreferences setUseGPUProcessForMediaEnabled:]):
(-[WebPreferences useGPUProcessForMedia]): Deleted.
(-[WebPreferences setUseGPUProcessForMedia:]): Deleted.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

8:15 PM Changeset in webkit [267515] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][Integration] Line layout logic should consult LayoutState whether remove trailing letter spacing.
https://bugs.webkit.org/show_bug.cgi?id=216905

Reviewed by Sam Weinig.

This is in preparation for completely moving away from the RuntimeEnabledFeatures check.

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::shouldIgnoreTrailingLetterSpacing const):

  • layout/LayoutState.h:
  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Line):
(WebCore::Layout::Line::appendTextContent):

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):

7:46 PM Changeset in webkit [267514] by Alexey Shvayka
  • 9 edits
    58 adds in trunk

Update Array.prototype.sort to be consistent with tightened spec
https://bugs.webkit.org/show_bug.cgi?id=202582

Reviewed by Yusuke Suzuki and Keith Miller.

JSTests:

Provided microbenchmarks test receivers that are half-sorted: 50% of their
items and item pairs (to accomodate merge sort) are at the right place.

Arrays of multiple sizes (8/24/64 items) are tested with both userland
and default comparator (to cover bucket sort).

  • ChakraCore/test/Array/array_sort.baseline-jsc: Fix typo in error message.
  • microbenchmarks/array-prototype-sort-large-array-comparator.js: Added.
  • microbenchmarks/array-prototype-sort-large-array.js: Added.
  • microbenchmarks/array-prototype-sort-medium-array-comparator.js: Added.
  • microbenchmarks/array-prototype-sort-medium-array.js: Added.
  • microbenchmarks/array-prototype-sort-small-array-comparator.js: Added.
  • microbenchmarks/array-prototype-sort-small-array.js: Added.
  • mozilla/js1_5/Array/regress-157652.js: Skip sorting sparse array of UINT_MAX size.
  • stress/regress-188577.js: Replace sort() with unshift() and refactor.

Source/JavaScriptCore:

This patch implements the spec change [1] that reduces amount of cases resulting
in an implementation-defined sort order, aligning JSC with V8 and SpiderMonkey.

To achieve this, we collect all existing non-undefined receiver elements to a
temporary array, sort it, and write back sorted items, followed by undefined
values and holes.

This change is proven to be web-compatible (shipping since Chrome 76) and neutral
on peak memory consumption in the wild.

Although we can unobservably detect sparse receivers, we can't avoid creating a
temporary array for common case since userland comparators may throw; string
sorting won't measurably benefit from this, only increasing code complexity.

This change uses @putByValDirect unless the spec requires Set?, avoids using
closure variables, and adds a few drive-by optimizations, resulting in ~22%
faster string sorting and 13% speed-up for userland comparators.
Dromaeo/jslib is neutral.

[1]: https://github.com/tc39/ecma262/pull/1585

  • builtins/ArrayPrototype.js:

(sort.stringComparator):
Optimization #1: replace char-by-char comparison loop with > operator, aligning
JSC with V8 and SpiderMonkey. This semantically equivalent change alone is a ~15%
progression for string sort.

(sort.compact):
(sort.commit):
Optimization #2: copy large non-numeric arrays in a loop rather than @appendMemcpy.
Using the latter unconditionally regresses provided microbenchmarks.

(sort.merge):
Optimization #3: replace typeof check and negation with strict equality.

(sort.mergeSort):
Optimization #4: always return sorted array instead of copying, even if it's the buffer.
Tweak: create the buffer with correct length.

(sort.bucketSort):
Optimization #5: avoid emitting 2 extra get_by_val ops by saving bucket lookup to a variable.
Tweak: create new bucket via array literal.

(sort): Fix typo in error message.
(sort.compactSparse): Deleted.
(sort.compactSlow): Deleted.
(sort.comparatorSort): Deleted.
(sort.stringSort): Deleted.

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):
Remove @Object.@getPrototypeOf as it's now unused and we have @getPrototypeOf intrinsic anyway.

LayoutTests:

While adding new LayoutTests for JS-only features is undesirable, it's a
quick-and-dirty way to import the tests [1] and fix the call count/order
of observable operations via debug() and text expectations.

The tests are imported into LayoutTests/js/dom instead of LayoutTests/js for
run-javascriptcore-tests to ignore them as they require array-sort-harness.js.

These files will be removed shortly in favor of thorough test262 coverage,
which is required for the proposal [2] to be merged.

[1]: https://gist.github.com/szuend/05ae15b4e1329b264ab4c9a1cda09242
[2]: https://github.com/tc39/ecma262/pull/1585

  • TestExpectations: Mark a test as slow.
  • js/dom/array-sort-*-expected.txt: Added.
  • js/dom/array-sort-*.html: Added.
  • js/dom/script-tests/array-sort-*.js: Added.
  • js/resources/array-sort-harness.js: Added.
7:34 PM Changeset in webkit [267513] by Alan Coon
  • 1 copy in tags/Safari-610.2.6.1.5

Tag Safari-610.2.6.1.5.

6:36 PM Changeset in webkit [267512] by ysuzuki@apple.com
  • 1 edit
    3 moves in trunk/LayoutTests

Unreviewed, we should put it under js/dom since it is not usable in JSC shell
https://bugs.webkit.org/show_bug.cgi?id=216851

  • js/dom/script-tests/transform-stream.js: Renamed from LayoutTests/js/script-tests/transform-stream.js.
  • js/dom/transform-stream-expected.txt: Renamed from LayoutTests/js/transform-stream-expected.txt.
  • js/dom/transform-stream.html: Renamed from LayoutTests/js/transform-stream.html.
5:22 PM Changeset in webkit [267511] by Matt Lewis
  • 2 edits in trunk/Tools

Unreviewed config fix.

  • BuildSlaveSupport/build.webkit.org-config/config.json: Fixing random unicode character.
4:41 PM Changeset in webkit [267510] by Matt Lewis
  • 5 edits
    12 adds in trunk/Tools

Update iOS, watchOS and tvOS builders and tester with new SDKs
https://bugs.webkit.org/show_bug.cgi?id=216658

Reviewed by Jonathan Bedard.

Bumped the versions on iOS, tvOS, and watchOS in config, dashboard and main CSS. Also, added the updated
images for the queues.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Device.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Device@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Simulator.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS14Simulator@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14Simulator.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/TvOS14Simulator@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOS7.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOS7@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOSSimulator7.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/WatchOSSimulator7@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:

(table.queue-grid tr.platform.ios-simulator-14 img.logo):
(table.queue-grid tr.platform.ios-14 img.logo):
(table.queue-grid tr.platform.tvos-simulator-14 img.logo):
(table.queue-grid tr.platform.tvos-14 img.logo):
(table.queue-grid tr.platform.watchos-simulator-7 img.logo):
(table.queue-grid tr.platform.watchos-7 img.logo):
(table.queue-grid tr.platform.ios-simulator-13 img.logo): Deleted.
(table.queue-grid tr.platform.ios-13 img.logo): Deleted.
(table.queue-grid tr.platform.tvos-simulator-13 img.logo): Deleted.
(table.queue-grid tr.platform.tvos-13 img.logo): Deleted.
(table.queue-grid tr.platform.watchos-simulator-6 img.logo): Deleted.
(table.queue-grid tr.platform.watchos-6 img.logo): Deleted.

  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:
4:39 PM Changeset in webkit [267509] by Simon Fraser
  • 10 edits
    13 copies
    4 adds
    2 deletes in trunk/Source/WebCore

[LFC Display] Add the beginnings of a CSS display box hierarchy and CSS painter
https://bugs.webkit.org/show_bug.cgi?id=216752

Reviewed by Zalan Bujtas.

Add some Display::Box subclasses to display/css, a Display::Tree class to own the
display tree, and a DisplayTreeBuilder. Also add css/DisplayCSSPainter which is
the beginnings of a class that knows how to paint a CSS stacking context.

This code other than DisplayCSSPainter is deliberately vague about how much is
CSS specific. It's likely that some box classes will be shared with SVG painting.

  • CMakeLists.txt:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayLayerController.cpp:

(WebCore::Display::LayerController::RootLayerClient::paintContents):
(WebCore::Display::LayerController::RootLayerClient::deviceScaleFactor const):
(WebCore::Display::LayerController::prepareForDisplay):
(WebCore::Display::LayerController::ensureRootLayer):
(WebCore::Display::LayerController::updateRootLayerGeometry):

  • display/DisplayLayerController.h:
  • display/DisplayTree.cpp: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::Tree::Tree):

  • display/DisplayTree.h: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::Tree::rootBox const):

  • display/DisplayTreeBuilder.cpp: Added.

(WebCore::Display::TreeBuilder::TreeBuilder):
(WebCore::Display::TreeBuilder::build const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):
(WebCore::Display::TreeBuilder::displayBoxForRootBox const):
(WebCore::Display::TreeBuilder::displayBoxForLayoutBox const):
(WebCore::Display::outputDisplayBox):
(WebCore::Display::outputDisplayTree):
(WebCore::Display::showDisplayTree):

  • display/DisplayTreeBuilder.h: Copied from Source/WebCore/display/DisplayView.h.
  • display/DisplayView.cpp:

(WebCore::Display::View::prepareForDisplay):
(WebCore::Display::View::deviceScaleFactor const):

  • display/DisplayView.h:
  • display/css/DisplayBox.cpp: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::Box::Box):
(WebCore::Display::Box::setNextSibling):
(WebCore::Display::Box::debugDescription const):

  • display/css/DisplayBox.h: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::Box::Box):
(WebCore::Display::Box::style const):
(WebCore::Display::Box::borderBoxFrame const):
(WebCore::Display::Box::isContainerBox const):
(WebCore::Display::Box::isImageBox const):
(WebCore::Display::Box::isReplacedBox const):
(WebCore::Display::Box::nextSibling const):

  • display/css/DisplayCSSPainter.cpp: Added.

(WebCore::Display::CSSPainter::paintBoxDecorations):
(WebCore::Display::CSSPainter::paintBoxContent):
(WebCore::Display::CSSPainter::paintBox):
(WebCore::Display::CSSPainter::recursivePaintDescendants):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::isStackingContextPaintingBoundary):
(WebCore::Display::CSSPainter::recursiveCollectLayers):
(WebCore::Display::CSSPainter::paintTree):

  • display/css/DisplayCSSPainter.h: Copied from Source/WebCore/display/DisplayView.h.
  • display/css/DisplayContainerBox.cpp: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ContainerBox::ContainerBox):
(WebCore::Display::ContainerBox::setFirstChild):
(WebCore::Display::ContainerBox::debugDescription const):

  • display/css/DisplayContainerBox.h: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ContainerBox::firstChild const):

  • display/css/DisplayImageBox.cpp: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ImageBox::ImageBox):
(WebCore::Display::ImageBox::setImage):
(WebCore::Display::ImageBox::debugDescription const):

  • display/css/DisplayImageBox.h: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ImageBox::image const):

  • display/css/DisplayReplacedBox.cpp: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ReplacedBox::ReplacedBox):

  • display/css/DisplayReplacedBox.h: Copied from Source/WebCore/display/DisplayView.h.

(WebCore::Display::ReplacedBox::replacedContentRect const):

  • display/css/DisplayStyle.cpp: Copied from Source/WebCore/display/DisplayView.cpp.

(WebCore::Display::Style::Style):
(WebCore::Display::Style::hasBackground const):
(WebCore::Display::Style::hasVisibleBorder const):

  • display/css/DisplayStyle.h: Added.

(WebCore::Display::Style::backgroundColor const):
(WebCore::Display::Style::hasBackgroundImage const):
(WebCore::Display::Style::borderLeft const):
(WebCore::Display::Style::borderRight const):
(WebCore::Display::Style::borderTop const):
(WebCore::Display::Style::borderBottom const):
(WebCore::Display::Style::zIndex const):
(WebCore::Display::Style::isStackingContext const):
(WebCore::Display::Style::isPositioned const):
(WebCore::Display::Style::isFloating const):
(WebCore::Display::Style::participatesInZOrderSorting const):
(WebCore::Display::Style::setIsPositioned):
(WebCore::Display::Style::setIsFloating):

  • layout/displaytree/DisplayBox.cpp: Removed.
  • layout/displaytree/DisplayBox.h: Removed.
  • layout/layouttree/LayoutIterator.h: Unified sources build fix.
4:28 PM Changeset in webkit [267508] by Jonathan Bedard
  • 3 edits in trunk/Tools

webkitpy: Make sw_vers the source of truth for the MacOS version
https://bugs.webkit.org/show_bug.cgi?id=216903
<rdar://problem/69462735>

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.init): Use sw_vers instead of platform.mac_ver().

  • Scripts/webkitpy/common/system/platforminfo_unittest.py:

(fake_executive): Set a valid return value for sw_vers by default.

4:25 PM Changeset in webkit [267507] by Chris Dumez
  • 4 edits
    2 copies
    2 adds in trunk

web audio api outputs silence for 302 redirected resource in safari
https://bugs.webkit.org/show_bug.cgi?id=214932
<rdar://problem/66300050>

Reviewed by Darin Adler.

Source/WebCore:

If the resource is redirected to another origin, treat it as tainted only if the crossorigin attribute
is not set. This is done for consistency with Blink:

The new behavior also seems to match Firefox.

Tests: http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html

http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html

  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::wouldTaintOrigin):

LayoutTests:

Add layout test coverage. Update existing test to reflect the fact that the frequency returned by
the AnalyserNode is -Infinity when input is silent, not minDecibels (this has changed fairly
recently).

  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect-expected.txt: Added.
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html: Copied from LayoutTests/http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html.
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect-expected.txt: Added.
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html: Copied from LayoutTests/http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html.
4:06 PM Changeset in webkit [267506] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

[iOS] Update fast/text/opticalFontWithTextStyle.html for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=215667

Unreviewed test gardening.

  • platform/ios/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt:
4:06 PM Changeset in webkit [267505] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Use less explicit ref() / deref() calls in WebAudio code
https://bugs.webkit.org/show_bug.cgi?id=216894

Reviewed by Darin Adler.

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::clearPendingActivity):
(WebCore::BaseAudioContext::makePendingActivity):

  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::setFormat):
(WebCore::MediaElementAudioSourceNode::process):

  • Modules/webaudio/MediaElementAudioSourceNode.h:
  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::createMediaPlayer):

3:48 PM Changeset in webkit [267504] by Chris Dumez
  • 131 edits
    5 deletes in trunk

Turn off the legacy prefixed WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=216886

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/webaudio/historical-expected.txt:

Rebaseline test that is now passing.

Source/WebCore:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioBufferSourceNode.idl:

Make sure legacy constants get unexposed if the PrefixedWebAudio setting is disabled.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):
(GetRuntimeEnabledStaticProperties):

  • bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:

(WebCore::JSTestConditionalIncludesConstructor::initializeProperties):
(WebCore::JSTestConditionalIncludesPrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySettingConstructor::prototypeForStructure):
(WebCore::JSTestEnabledBySettingConstructor::initializeProperties):
(WebCore::JSTestEnabledBySettingPrototype::finishCreation):

  • bindings/scripts/test/TestEnabledBySetting.idl:

Add support for using [EnabledBySetting=X] on constants.

Source/WebKit:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

  • Shared/WebPreferencesInternal.yaml:

Source/WebKitLegacy/mac:

Turn off the legacy prefixed WebAudio API, now that the modern unprefixed API has been enabled
in r267488.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

LayoutTests:

Port existing layout tests from the prefixed WebAudio API to the new
unprefixed version.

  • fast/history/page-cache-closed-audiocontext.html:
  • fast/history/page-cache-running-audiocontext.html:
  • fast/history/page-cache-suspended-audiocontext.html:
  • fast/mediastream/getUserMedia-webaudio.html:
  • fast/mediastream/media-devices-enumerate-devices.html:
  • fast/mediastream/mediastreamtrack-audio-clone.html:
  • fast/mediastream/mock-media-source-webaudio.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html:
  • http/wpt/mediarecorder/MediaRecorder-onremovetrack.html:
  • http/wpt/webaudio/resources/audiocontext-stopped-iframe.html:
  • platform/ios/webaudio/realtimeanalyser-fft-sizing-expected.txt:
  • resources/testharnessreport.js:
  • webaudio/analyser-exception.html:
  • webaudio/audiobuffer-crash-expected.txt:
  • webaudio/audiobuffer-crash.html:
  • webaudio/audiobuffer-expected.txt:
  • webaudio/audiobuffer-neuter.html:
  • webaudio/audiobuffer.html:
  • webaudio/audiobuffersource-channels-expected.txt:
  • webaudio/audiobuffersource-channels.html:
  • webaudio/audiobuffersource-ended.html:
  • webaudio/audiobuffersource-multi-channels.html:
  • webaudio/audiobuffersource-negative-playbackrate-interpolated-loop.html:
  • webaudio/audiobuffersource-negative-playbackrate-interpolated.html:
  • webaudio/audiobuffersource-negative-playbackrate-loop.html:
  • webaudio/audiobuffersource-negative-playbackrate.html:
  • webaudio/audiobuffersource-not-gced-until-ended.html:
  • webaudio/audiobuffersource-playbackState-expected.txt: Removed.
  • webaudio/audiobuffersource-playbackState.html: Removed.
  • webaudio/audiobuffersource-playbackrate.html:
  • webaudio/audiobuffersource-start.html:
  • webaudio/audiobuffersource.html:
  • webaudio/audiobuffersourcenode-legacy-api-expected.txt:
  • webaudio/audiobuffersourcenode-legacy-api.html:
  • webaudio/audiochannelmerger-basic.html:
  • webaudio/audiochannelmerger-stereo.html:
  • webaudio/audiochannelsplitter.html:
  • webaudio/audiocontext-promise-throwing-expected.txt:
  • webaudio/audiocontext-promise-throwing.html:
  • webaudio/audiocontext-promise.html:
  • webaudio/audiocontext-restriction-audiobuffersourcenode-start.html:
  • webaudio/audiocontext-restriction.html:
  • webaudio/audiocontext-state-interrupted.html:
  • webaudio/audiocontext-state.html:
  • webaudio/audionode-connect-order.html:
  • webaudio/audionode.html:
  • webaudio/audioparam-connect-audioratesignal.html:
  • webaudio/audioparam-summingjunction.html:
  • webaudio/audioprocessingevent.html:
  • webaudio/automatic-pull-node.html:
  • webaudio/convolution-mono-mono.html:
  • webaudio/convolver-channels.html:
  • webaudio/convolver-setBuffer-different-samplerate.html:
  • webaudio/convolver-setBuffer-null.html:
  • webaudio/createMediaStreamSource-null-expected.txt:
  • webaudio/createMediaStreamSource-null.html:
  • webaudio/decode-audio-data-basic-expected.txt:
  • webaudio/decode-audio-data-basic.html:
  • webaudio/decode-audio-data-too-short.html:
  • webaudio/delaynode-max-default-delay.html:
  • webaudio/delaynode-max-nondefault-delay.html:
  • webaudio/delaynode-maxdelay.html:
  • webaudio/delaynode-maxdelaylimit.html:
  • webaudio/delaynode-scheduling.html:
  • webaudio/delaynode.html:
  • webaudio/distance-exponential.html:
  • webaudio/distance-inverse.html:
  • webaudio/distance-linear.html:
  • webaudio/dynamicscompressor-basic.html:
  • webaudio/finished-audio-buffer-source-nodes-should-be-collectable.html:
  • webaudio/gain-basic.html:
  • webaudio/gain.html:
  • webaudio/mediaelementaudiosourcenode-expected.txt:
  • webaudio/mediaelementaudiosourcenode-gc.html:
  • webaudio/mediaelementaudiosourcenode.html:
  • webaudio/mixing.html:
  • webaudio/offlineaudiocontext-gc.html:
  • webaudio/offlineaudiocontext-restriction.html:
  • webaudio/oscillatornode-legacy-api-expected.txt:
  • webaudio/oscillatornode-legacy-api.html:
  • webaudio/page-canstartmedia.html:
  • webaudio/panner-equalpower-stereo.html:
  • webaudio/panner-equalpower.html:
  • webaudio/prefixed-pannernode-basic-expected.txt: Removed.
  • webaudio/prefixed-pannernode-basic.html: Removed.
  • webaudio/realtimeanalyser-fft-sizing-expected.txt:
  • webaudio/realtimeanalyser-fft-sizing.html:
  • webaudio/resources/audio-codec-test.js:

(runDecodingTest):

  • webaudio/resources/audiobuffersource-ended-detached-frame-iframe.html:
  • webaudio/resources/audioparam-testing-legacy.js:

(createAudioGraphAndTest):

  • webaudio/resources/compatibility.js: Removed.
  • webaudio/resources/javascriptaudionode-testing.js:

(runJSNodeTest):

  • webaudio/resources/oscillator-testing-legacy.js:

(generateExponentialOscillatorSweep):

  • webaudio/sample-accurate-scheduling.html:
  • webaudio/silence-after-playback.html:
  • webaudio/silent-audio-interrupted-in-background.html:
  • webaudio/stereo2mono-down-mixing.html:
  • webaudio/test-basic.html:
  • webaudio/up-mixing-mono-51.html:
  • webaudio/up-mixing-mono-stereo.html:
  • webaudio/up-mixing-stereo-51.html:
  • webaudio/waveshaper.html:
  • webaudio/web-audio-is-playing.html:
  • webaudio/webaudio-gc.html:
  • webaudio/webkitofflineaudiocontext-startRendering-crash-expected.txt:
  • webaudio/webkitofflineaudiocontext-startRendering-crash.html:
  • webrtc/audio-peer-connection-g722.html:
  • webrtc/audio-peer-connection-webaudio.html:
  • webrtc/clone-audio-track.html:
  • webrtc/getUserMedia-webaudio-autoplay.html:
  • webrtc/peer-connection-audio-mute.html:
  • webrtc/peer-connection-audio-mute2.html:
  • webrtc/peer-connection-createMediaStreamDestination.html:
  • webrtc/peer-connection-remote-audio-mute.html:
  • webrtc/peer-connection-remote-audio-mute2.html:
  • webrtc/routines.js:
3:31 PM Changeset in webkit [267503] by Oriol Brufau
  • 11 edits in trunk

[css-grid] Clear the override width for computing percent margins
https://bugs.webkit.org/show_bug.cgi?id=209461

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Update test expectations.

The 2 grid-items-percentage-paddings tests are now expected to have some
failures because of bug 191964. In fact they were already failing before
this patch, as can be seen in wpt.fyi:
https://wpt.fyi/results/css/css-grid/grid-items?q=grid-items-percentage-paddings-vertical-%20-002.html
It's just that the bug that is being fixed made the test runner think
that the tests were passing, probably some racy condition or such.

  • web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt:

Source/WebCore:

When calculating the min-content contribution of a grid item of an auto
sized grid track we must consider the grid item's margin. When the grid
item's area is indefinite, a percent margin is resolved to zero.
However, when performing a relayout, the percent margin may be solved
against the previously computed grid area, since the grid item has
already an OverrideContainingBlockLogicalWidth value.

In order to re-compute the percent margin properly, we need to clear
the previously override value. It's important to be careful of not
clearing the override value set during intrinsic size, since we need
it for the actual layout phase. Hence, we only reset the 'override'
value when we are executing a definite strategy.

This is a reland of r261841, which was reverted because it broke spotify.
This problem is now avoided thanks to bug 210089.

Tests: imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html

imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html
imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::hasRelativeMarginOrPaddingForChild):
(WebCore::hasRelativeOrIntrinsicSizeForChild):
(WebCore::shouldClearOverrideContainingBlockContentSizeForChild):
(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):
(WebCore::GridTrackSizingAlgorithmStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minLogicalSizeForChild const):
(WebCore::DefiniteSizeStrategy::minContentForChild const):

  • rendering/GridTrackSizingAlgorithm.h:

LayoutTests:

Update test expectations.

3:14 PM Changeset in webkit [267502] by commit-queue@webkit.org
  • 31 edits in trunk

[GTK][WPE] Move TLS errors API from WebKitContext to WebKitWebsiteDataManager
https://bugs.webkit.org/show_bug.cgi?id=216822

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-09-23
Reviewed by Alex Christensen.

Source/WebCore:

Make ignoreTLSErrors a member of SoupNetworkSession, instead of being global.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::setIgnoreTLSErrors):
(WebCore::SoupNetworkSession::checkTLSErrors):
(WebCore::SoupNetworkSession::setShouldIgnoreTLSErrors): Deleted.

  • platform/network/soup/SoupNetworkSession.h:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setAllowsAnySSLCertificate): Do not use SoupNetworkSession in the web process.

Source/WebKit:

Make TLS errors policy per session instead of global to the network process. The web context API now simply
forwards the request to the website data manager. The website data manager created for an ephemeral web view
will inherit the network settings from the web context website data manager. This ensures backwards
compatibility, but it's also convenient, since it's the desired behavior in most of the cases. Apps can still
change the network settings of the web view by getting the website data manager.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate):

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformInitializeNetworkProcess):
(WebKit::NetworkProcess::setIgnoreTLSErrors):

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::NetworkSessionSoup):
(WebKit::webSocketAcceptCertificateCallback):
(WebKit::webSocketMessageNetworkEventCallback):
(WebKit::NetworkSessionSoup::createWebSocketTask):
(WebKit::NetworkSessionSoup::setIgnoreTLSErrors):

  • NetworkProcess/soup/NetworkSessionSoup.h:
  • UIProcess/API/glib/WebKitAutomationSession.cpp:

(webkitAutomationSessionCreate):

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextConstructed):
(webkit_web_context_set_tls_errors_policy):
(webkit_web_context_get_tls_errors_policy):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):
(webkit_web_view_class_init):
(webkitWebViewLoadFailedWithTLSErrors):

  • UIProcess/API/glib/WebKitWebsiteDataManager.cpp:

(webkitWebsiteDataManagerConstructed):
(webkitWebsiteDataManagerGetDataStore):
(webkit_website_data_manager_set_tls_errors_policy):
(webkit_website_data_manager_get_tls_errors_policy):

  • UIProcess/API/gtk/WebKitWebContext.h:
  • UIProcess/API/gtk/WebKitWebsiteDataManager.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitWebContext.h:
  • UIProcess/API/wpe/WebKitWebsiteDataManager.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::ignoreTLSErrors const):

  • UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:

(WebKit::WebsiteDataStore::setIgnoreTLSErrors):

  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::setIgnoreTLSErrors): Deleted.

Tools:

Update tests to use the new API instead of the deprecated one. Also update the TLSErrorsPolicy test to also
check that ephemeral web views inherit the network settings from its web context.

  • TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:

(testSSL):
(testInsecureContent):
(testTLSErrorsPolicy):
(testTLSErrorsRedirect):
(testTLSErrorsHTTPAuth):
(testLoadFailedWithTLSErrors):
(testSubresourceLoadFailedWithTLSErrors):
(testWebSocketTLSErrors):

2:54 PM Changeset in webkit [267501] by Jonathan Bedard
  • 3 edits in trunk/Tools

Force SYSTEM_VERSION_COMPAT=0 in Webkit scripts
https://bugs.webkit.org/show_bug.cgi?id=216895
<rdar://problem/69454393>

Reviewed by Dewei Zhu.

  • Scripts/configure-xcode-for-embedded-development:
  • Scripts/webkitpy/init.py:
2:26 PM Changeset in webkit [267500] by ysuzuki@apple.com
  • 8 edits in trunk

[JSC] Intl spec update: handle awkward rounding behavior
https://bugs.webkit.org/show_bug.cgi?id=216760

Reviewed by Ross Kirsling.

JSTests:

  • stress/intl-numberformat.js:
  • test262/expectations.yaml:

Source/JavaScriptCore:

This patch supports new spec change of "handle awkward rounding behavior"[1].
This changes minimumFractionDigits / maximumFractionDigits calculation when the specified ones are less than currency-digits.

[1]: https://github.com/tc39/ecma402/pull/471

  • runtime/CommonIdentifiers.h:
  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::resolvedOptions const):

  • runtime/IntlNumberFormatInlines.h:

(JSC::setNumberFormatDigitOptions):

  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::resolvedOptions const):

2:17 PM Changeset in webkit [267499] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix some typo'd wheel event listener logging
https://bugs.webkit.org/show_bug.cgi?id=216892

Reviewed by Wenson Hsieh.

  • rendering/EventRegion.cpp:

(WebCore::EventRegion::uniteEventListeners):
Wheel is passive, NonPassiveWheel is active.

12:52 PM Changeset in webkit [267498] by pvollan@apple.com
  • 6 edits in trunk/Source/WebKit

[macOS] Issue sandbox extension for the diagnostic daemon
https://bugs.webkit.org/show_bug.cgi?id=216834
<rdar://problem/58496834>

Reviewed by Brent Fulgham.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::isInternalInstall):
(WebKit::agxCompilerClasses):
(WebKit::diagnosticServices):
(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/com.apple.WebProcess.sb.in:
12:50 PM Changeset in webkit [267497] by Fujii Hironori
  • 85 edits in trunk

Remove ENABLE_SVG_FONTS macro
https://bugs.webkit.org/show_bug.cgi?id=216850

Reviewed by Don Olmstead.

.:

No ports have this disabled, so remove it.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/WebCore:

  • CMakeLists.txt:
  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::appendSources):
(WebCore::CSSFontFace::hasSVGFontFaceSource const):

  • css/CSSFontFace.h:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::CSSFontFaceSource):
(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):
(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):

  • css/CSSFontFaceSource.h:
  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::isSVGFontTarget const):
(WebCore::CSSFontFaceSrcValue::isSupportedFormat const):

  • css/CSSFontFaceSrcValue.h:
  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::inspectorResourceType):

  • loader/LinkLoader.cpp:

(WebCore::createLinkPreloadResourceClient):

  • loader/ResourceLoadInfo.cpp:

(WebCore::ContentExtensions::toResourceType):

  • loader/SubresourceLoader.cpp:

(WebCore::logResourceLoaded):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::defaultPriorityForResourceType):
(WebCore::CachedResource::isCORSSameOrigin const):

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::requestFont):
(WebCore::contentTypeFromResourceType):
(WebCore::CachedResourceLoader::checkInsecureContent const):
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):
(WebCore::destinationForType):

  • loader/cache/CachedSVGFont.cpp:
  • loader/cache/CachedSVGFont.h:
  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::getStatistics):

  • rendering/svg/SVGTextLayoutEngineSpacing.cpp:
  • style/StyleResolver.cpp:

(WebCore::Style::Resolver::addCurrentSVGFontFaceRules):

  • svg/SVGAltGlyphDefElement.cpp:
  • svg/SVGAltGlyphDefElement.h:
  • svg/SVGAltGlyphDefElement.idl:
  • svg/SVGAltGlyphElement.cpp:
  • svg/SVGAltGlyphElement.h:
  • svg/SVGAltGlyphElement.idl:
  • svg/SVGAltGlyphItemElement.cpp:
  • svg/SVGAltGlyphItemElement.h:
  • svg/SVGAltGlyphItemElement.idl:
  • svg/SVGDocumentExtensions.cpp:
  • svg/SVGDocumentExtensions.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::childShouldCreateRenderer const):

  • svg/SVGFontElement.cpp:
  • svg/SVGFontElement.h:
  • svg/SVGFontElement.idl:
  • svg/SVGFontFaceElement.cpp:
  • svg/SVGFontFaceElement.h:
  • svg/SVGFontFaceElement.idl:
  • svg/SVGFontFaceFormatElement.cpp:
  • svg/SVGFontFaceFormatElement.h:
  • svg/SVGFontFaceFormatElement.idl:
  • svg/SVGFontFaceNameElement.cpp:
  • svg/SVGFontFaceNameElement.h:
  • svg/SVGFontFaceNameElement.idl:
  • svg/SVGFontFaceSrcElement.cpp:
  • svg/SVGFontFaceSrcElement.h:
  • svg/SVGFontFaceSrcElement.idl:
  • svg/SVGFontFaceUriElement.cpp:
  • svg/SVGFontFaceUriElement.h:
  • svg/SVGFontFaceUriElement.idl:
  • svg/SVGGlyphElement.cpp:
  • svg/SVGGlyphElement.h:
  • svg/SVGGlyphElement.idl:
  • svg/SVGGlyphRefElement.cpp:
  • svg/SVGGlyphRefElement.h:
  • svg/SVGGlyphRefElement.idl:
  • svg/SVGHKernElement.cpp:
  • svg/SVGHKernElement.h:
  • svg/SVGHKernElement.idl:
  • svg/SVGMissingGlyphElement.cpp:
  • svg/SVGMissingGlyphElement.h:
  • svg/SVGMissingGlyphElement.idl:
  • svg/SVGTRefElement.cpp:

(WebCore::SVGTRefElement::rendererIsNeeded):

  • svg/SVGTSpanElement.cpp:

(WebCore::SVGTSpanElement::childShouldCreateRenderer const):
(WebCore::SVGTSpanElement::rendererIsNeeded):

  • svg/SVGTests.cpp:

(WebCore::supportedSVGFeatures):

  • svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::childShouldCreateRenderer const):

  • svg/SVGTextPositioningElement.cpp:

(WebCore::SVGTextPositioningElement::elementFromRenderer):

  • svg/SVGToOTFFontConversion.cpp:
  • svg/SVGVKernElement.cpp:
  • svg/SVGVKernElement.h:
  • svg/SVGVKernElement.idl:
  • svg/svgtags.in:

Source/WebKit:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::maximumBufferingTime):

Source/WTF:

  • wtf/PlatformEnable.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
12:39 PM Changeset in webkit [267496] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Change name of client decoder entitlement
https://bugs.webkit.org/show_bug.cgi?id=216670
<rdar://problem/69101997>

Reviewed by Darin Adler.

The client decoder entitlement landed in <https://trac.webkit.org/changeset/266613/webkit> has changed name, and should be updated.

  • Scripts/process-entitlements.sh:
12:35 PM Changeset in webkit [267495] by Tadeu Zagallo
  • 3 edits
    3 adds in trunk

Missing scope release in JSDOMBuiltinConstructorBase
https://bugs.webkit.org/show_bug.cgi?id=216851
<rdar://problem/69144642>

Reviewed by Yusuke Suzuki.

Source/WebCore:

In JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments, we should release the
ThrowScope before calling into JavaScript since we don't intend to handle the exception.

Test: js/transform-stream.html

  • bindings/js/JSDOMBuiltinConstructorBase.cpp:

(WebCore::JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments):

LayoutTests:

  • js/script-tests/transform-stream.js: Added.
  • js/transform-stream-expected.txt: Added.
  • js/transform-stream.html: Added.
12:34 PM Changeset in webkit [267494] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Precompute the collapsible trailing width for LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=216881

Reviewed by Antti Koivisto.

Let's just compute the collapsible trailing width while adding inline content to LineCandidate instead of
reverse looping through the runs in LineBreaker.
This is also in preparation for reducing the number of RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled calls.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):
(WebCore::Layout::ContinuousContent::ContinuousContent):
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::ContinuousContent::isTrailingContentFullyCollapsible const): Deleted.
(WebCore::Layout::ContinuousContent::TrailingCollapsibleContent::reset): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::collapsibleTrailingWidth const):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

12:17 PM Changeset in webkit [267493] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Limit number of emails to send for flaky and pre-existing API and layout test failures
https://bugs.webkit.org/show_bug.cgi?id=216876

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ReRunWebKitTests): Simply limit the flaky failures immediately after they are calculated, since we don't display
the count of flaky failures. Flaky failures are displayed only to help bot-watchers in noticing flaky tests.
(AnalyzeLayoutTestsResults.report_pre_existing_failures): Limit pre-existing and flaky test failures just before sending emails.
(AnalyzeAPITestsResults.analyzeResults):

12:07 PM Changeset in webkit [267492] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

Notify igalia team about pre-existing test failures and build failures for JSC queues
https://bugs.webkit.org/show_bug.cgi?id=216889

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeCompileWebKitResults.send_email_for_preexisting_build_failure): Send email for pre-existing jsc build failures.
(AnalyzeJSCTestsResults.send_email_for_pre_existing_failure): Send email for pre-existing jsc test failure.

  • BuildSlaveSupport/ews-build/send_email.py:
  • BuildSlaveSupport/ews-build/emails.json: Added email address of igalia jsc team.
11:45 AM Changeset in webkit [267491] by Peng Liu
  • 14 edits in trunk/Source

[Media in GPU Process] Implement caption support in video fullscreen and PiP
https://bugs.webkit.org/show_bug.cgi?id=208752

Reviewed by Eric Carlson.

Source/WebCore:

Export TextTrackRepresentation so that WebKit can use it. Also, update the
interface of VideoLayerManagerObjC related to text track representation to
use PlatformLayer* instead of TextTrackRepresentation*.

Manually tested.

  • WebCore.xcodeproj/project.pbxproj:

Change target membership of TextTrackRepresentation.h.

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:

(WebCore::VideoLayerManagerObjC::setTextTrackRepresentationLayer):
(WebCore::VideoLayerManagerObjC::setTextTrackRepresentation): Deleted.
Replace setTextTrackRepresentation() with setTextTrackRepresentationLayer().

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::setTextTrackRepresentation):
Use VideoLayerManagerObjC::setTextTrackRepresentationLayer() instead of
VideoLayerManagerObjC::setTextTrackRepresentation().

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setTextTrackRepresentation): Ditto.

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::syncTextTrackBounds): Deleted.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:

Remove syncTextTrackBounds() because the GPU process does not need to deal with
the text track bounds.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage):
Add a missing IPC message receiver.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenLayer): Set the flag
m_requiresTextTrackRepresentation when changing video presentation mode.
(WebKit::MediaPlayerPrivateRemote::requiresTextTrackRepresentation const): Deleted.
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation): Deleted.
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds): Deleted.
Move the implementation of those functions to MediaPlayerPrivateRemoteCocoa.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:

Add the flag m_requiresTextTrackRepresentation and add a reference
to the layer used to render text track (in fullscreen or picture-in-picture).

  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame):
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation):
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds):
Those functions share a similar implementation as VideoLayerManagerObjC.

10:55 AM Changeset in webkit [267490] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Start collecting telemetry from a set of XPC services
<https://bugs.webkit.org/show_bug.cgi?id=216797>

Reviewed by Brent Fulgham.

  • WebProcess/com.apple.WebProcess.sb.in:
10:19 AM Changeset in webkit [267489] by Caio Lima
  • 50 edits
    20 adds
    2 deletes in trunk

[JSC][ESNext] Create a new opcode to handle private fields store/define
https://bugs.webkit.org/show_bug.cgi?id=213372

Reviewed by Yusuke Suzuki.

JSTests:

Adjusting tests that emit get_private_name to avoid execution in
FTL/DFG.

  • microbenchmarks/class-fields-private/polymorphic-put-private-field.js: Added.
  • microbenchmarks/class-fields-private/put-private-field.js: Added.
  • microbenchmarks/polymorphic-put-public-field.js: Added.
  • microbenchmarks/put-public-field.js: Added.
  • stress/dfg-put-private-name-check-barrier-insertion.js: Added.
  • stress/dfg-put-private-name-compiled-as-put-by-id-direct.js: Added.
  • stress/dfg-put-private-name-compiled-as-put-private-name-by-id.js: Added.
  • stress/put-private-name-by-id-set-do-not-add-structure-trasition.js: Added.
  • stress/put-private-name-check-structure-miss.js: Added.
  • stress/put-private-name-constant-folding-to-mult-put-by-offset.js: Added.
  • stress/put-private-name-constant-folding-to-put-by-offset.js: Added.
  • stress/put-private-name-generic.js: Added.
  • stress/put-private-name-invalid-define.js: Added.
  • stress/put-private-name-invalid-store.js: Added.
  • stress/put-private-name-invalidate-compiled-with-constant-symbol.js: Added.
  • stress/put-private-name-polymorphic-with-constant-symbol.js: Added.
  • stress/put-private-name-with-constant-symbol.js: Added.
  • stress/put-private-name-with-different-identifier.js: Added.

Source/JavaScriptCore:

This patch is adding a new opcode to handle private field storage.
Before this change, we were using put_by_val_direct and including
the information of PutKind into PutByValFlags. We initially decided
to use put_by_val_direct to take advantage of all IC mechanism already
implemented for this instruction, however the semantics of private field
is different enough to complicate the understanding of
put_by_val_direct.

The new instruction is called put_private_name and has as its operands
baseObject where the put is going to be placed, the property
that's going to be installed (it is always a private symbol of a
private field), the value we are going to store and the
PrivateFieldPutKind that can be Define or Set.
The difference of each PrivateFieldPutKind is the following:

  • Define: It defines a new private field. If this field is already

present, it throws a TypeError.

  • Set: It sets the value of a private field. If the field is not

present at the moment of set, it throws a TypeError.

This patch includes support of IC for all tiers. For DFG and FTL, we
are only emmiting IC when we are able to emit CheckConstant
for subscript identifier during Bytecode parsing. We are adding a new
DFG node called PutPrivateNameById that handles such cases when we
have constant identifiers.
We are also adding a new DFG node PutPrivateName that handles generic
case of put_private_name. The strategy used to compile
put_private_name is very similar with what we are using with
put_by_val[_direct]. We first try to compile it as [Multi]PutByOffset
using profiled information from LLInt and Baseline execution. If it
is not possible, we then emit PutPrivateName[ById] node. We get another
chance to transform PutPrivateNameById into PutByOffset if we can prove
its structure set at constant folding phase.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeLLIntInlineCaches):

  • bytecode/Fits.h:
  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):

  • bytecode/PutByIdStatus.h:
  • bytecode/PutByValFlags.cpp: Removed.
  • bytecode/PutByValFlags.h: Removed.
  • bytecode/PutKind.h:

(): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitDirectPutByVal):
(JSC::BytecodeGenerator::emitDefinePrivateField):
(JSC::BytecodeGenerator::emitPrivateFieldPut):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handlePutPrivateNameById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):
(JSC::DFG::ecmaMode): Deleted.
(JSC::DFG::ecmaMode<OpPutByValDirect>): Deleted.

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::tryFoldAsPutByOffset):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToPutByOffset):
(JSC::DFG::Node::convertToMultiPutByOffset):
(JSC::DFG::Node::hasCacheableIdentifier):
(JSC::DFG::Node::hasPrivateFieldPutKind):
(JSC::DFG::Node::privateFieldPutKind):

  • dfg/DFGNodeType.h:
  • dfg/DFGOpInfo.h:

(JSC::DFG::OpInfo::OpInfo):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compilePutPrivateNameById):
(JSC::DFG::SpeculativeJIT::compilePutByIdFlush):
(JSC::DFG::SpeculativeJIT::compilePutById):
(JSC::DFG::SpeculativeJIT::compilePutByIdDirect):
(JSC::DFG::SpeculativeJIT::cachedPutById):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateNameById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):

  • generator/DSL.rb:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):

  • jit/JIT.h:

(JSC::ByValCompilationInfo::ByValCompilationInfo):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
(JSC::JITPutByIdGenerator::slowPathFunction):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITPutByIdGenerator::JITPutByIdGenerator):

  • jit/JITInlines.h:

(JSC::JIT::ecmaMode<OpPutPrivateName>):
(JSC::JIT::ecmaMode<OpPutByValDirect>): Deleted.
(JSC::JIT::privateFieldAccessKind): Deleted.
(JSC::JIT::privateFieldAccessKind<OpPutByValDirect>): Deleted.

  • jit/JITOperations.cpp:

(JSC::setPrivateField):
(JSC::putPrivateField): Deleted.

  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitPutByValWithCachedId):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitPutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_put_by_id):

  • jit/Repatch.cpp:

(JSC::appropriateGenericPutByIdFunction):
(JSC::appropriateOptimizingPutByIdFunction):
(JSC::tryCachePutByID):
(JSC::resetPutByID):

  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::setPrivateField):
(JSC::JSObject::putPrivateField): Deleted.

  • runtime/PrivateFieldPutKind.cpp: Added.

(JSC::PrivateFieldPutKind::dump const):

  • runtime/PrivateFieldPutKind.h: Added.

(JSC::PrivateFieldPutKind::fromByte):
(JSC::PrivateFieldPutKind::none):
(JSC::PrivateFieldPutKind::set):
(JSC::PrivateFieldPutKind::define):
(JSC::PrivateFieldPutKind::isNone const):
(JSC::PrivateFieldPutKind::isSet const):
(JSC::PrivateFieldPutKind::isDefine const):
(JSC::PrivateFieldPutKind::value const):
(JSC::PrivateFieldPutKind::PrivateFieldPutKind):

10:10 AM Changeset in webkit [267488] by Chris Dumez
  • 4 edits in trunk/Source

Turn on the modern unprefixed WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=216885

Reviewed by Eric Carlson.

Turn on the modern unprefixed WebAudio API now that we support most of the API
besides AudioWorklet and now that we have a good pass rate on WPT tests.

Source/WebKit:

  • Shared/WebPreferencesExperimental.yaml:

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

10:07 AM Changeset in webkit [267487] by Russell Epstein
  • 4 edits in branches/safari-611.1.1-branch

Cherry-pick r267439. rdar://problem/69441287

REGRESSION(r266075): WebContent process crashes at TextManipulationController::getPath
https://bugs.webkit.org/show_bug.cgi?id=216846

Reviewed by Wenson Hsieh.

Source/WebCore:

TextIterator does not visit node that has no renderer, so if node has become hidden, TextManipulationController
will not find content node in paragraph range during replacement.

API Test: TextManipulation.CompleteTextManipulationParagraphBecomesHidden

  • editing/TextManipulationController.cpp: (WebCore::TextManipulationController::replace):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm: (TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267439 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:07 AM Changeset in webkit [267486] by Chris Dumez
  • 4 edits in trunk

webaudio/AudioBufferSource/audiobuffersource-playbackrate.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216827

Reviewed by Darin Adler.

Source/WebCore:

AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping() would hit an assertion inside
finish() because finish() was already called earlier when calling updateSchedulingInfo().
updateSchedulingInfo() already takes care of calling finish() when we're done playing.
Address the issue by only calling finish() if hasFinished() returns false.

No new tests, unskipped existing test.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping):

LayoutTests:

Unskip test that is no longer crashing.

10:00 AM Changeset in webkit [267485] by Russell Epstein
  • 1 move in branches/safari-611.1.1-branch

Rename safari-611.1-branch to safari-611.1.1-branch

9:54 AM Changeset in webkit [267484] by Philippe Normand
  • 1 edit
    1 add in trunk/LayoutTests

Unreviewed, add ios baseline for media/media-can-play-av1.html

This was forgotten in r267474.

  • platform/ios/media/media-can-play-av1-expected.txt: Added.
9:43 AM Changeset in webkit [267483] by Russell Epstein
  • 1 copy in branches/safari-611.1-branch

New branch.

9:41 AM Changeset in webkit [267482] by Alan Coon
  • 2 edits in branches/safari-610.2.6.1-branch/Source/WebKit

Cherry-pick r267412. rdar://problem/69439628

Crashtracer inside PDFPlugin::createScrollbar.
<rdar://problem/69256031> and https://bugs.webkit.org/show_bug.cgi?id=216810

Reviewed by Tim Horton.

To quote Tim from r264945:
No new tests; timing is such that I can't reproduce without inserting
intentional delays into the main thread hops, which is further than
I'm willing to go for a test.

This is a speculative fix due to the aforementioned reproducibility issue.

  • WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::installPDFDocument): With all the past fixes in place, its apparent the plug-in HAS been torn down, and it's somewhat common to bypass the other "hasBeenDestroyed" checks. So put an explicit check here followed by an explicit release assert.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267412 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:41 AM Changeset in webkit [267481] by Alan Coon
  • 2 edits in branches/safari-610.2.6.1-branch/Source/JavaScriptCore

Cherry-pick r267304. rdar://problem/69439749

[JSC] PreciseAllocation's isNewlyAllocated flag should be propagated from isMarked at GC begin phase to make isLive correct
https://bugs.webkit.org/show_bug.cgi?id=216717

Reviewed by Mark Lam.

When starting full GC, at beginMarking, PreciseAllocation's mark bit is cleared to be usable for upcoming marking.
However, this means that HeapCell::isLive will see this object as dead until it is marked.
Let's consider that this object is not newly allocated one. Then, its isNewlyAllocated is false. And now mark bit

is also cleared. Since PreciseAllocation::isLive is isNewlyAllocated
isMarked, then it looks dead, while it is live.

This confuses HeapCell:isLive function and makes some of watchpoints perform wrong decisions (e.g. this condition is
no longer valid, let's just discard it).
At the beginning of full collection, we should propagate the old mark bit to isNewlyAllocated so that it looks live
during marking. This is similar trick to MarkedBlock::aboutToMark.

  • heap/PreciseAllocation.cpp: (JSC::PreciseAllocation::flip):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267304 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:38 AM Changeset in webkit [267480] by Russell Epstein
  • 8 edits in branches/safari-610.2.6.1-branch/Source

Versioning.

WebKit-7610.2.6.1.5

9:03 AM Changeset in webkit [267479] by Truitt Savell
  • 6 edits in trunk

Unreviewed, reverting r267403.

Caused 50+ Crashes on iOS Debug

Reverted changeset:

"Move Media in GPU Process flag from internal to experimental"
https://bugs.webkit.org/show_bug.cgi?id=216473
https://trac.webkit.org/changeset/267403

8:57 AM Changeset in webkit [267478] by Lauro Moura
  • 2 edits in trunk/Tools

REGRESSION(r267368) [webkitpy] autoinstalled pytest raises ImportError in run-webdriver-tests
https://bugs.webkit.org/show_bug.cgi?id=216879

Reviewed by Jonathan Bedard.

Autoinstalled pytest requires sys.path to be updated with the newly
installed packages. Before r267368 it worked because
webdriver_w3c_executor.py autoinstalled mozlog/mozprocess which
updated the sys.path.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_pytest):

8:53 AM Changeset in webkit [267477] by Andres Gonzalez
  • 6 edits in trunk

Fix for accessibility/aria-combobox-control-owns-elements.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=216878

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-combobox-control-owns-elements.html.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::updateIsolatedTree): Update the isolated tree
node for ActiveDescendant and SelectedChildren notifications.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData): Only cache
selectedChildren for those AXObjects that canHaveSelectedChildren.

LayoutTests:

Use Promises to make this test work reliably for both single and multithreaded accessibility modes.

  • accessibility/aria-combobox-control-owns-elements-expected.txt:
  • accessibility/aria-combobox-control-owns-elements.html:
8:50 AM Changeset in webkit [267476] by Darin Adler
  • 19 edits in trunk/LayoutTests

Selection API: Update more tests that depend on WebKit's legacy non-standard behavior to set up the selection
https://bugs.webkit.org/show_bug.cgi?id=216844

Reviewed by Ryosuke Niwa.

Discovered a batch of editing tests that accidentally rely on non-standard selection
behavior to set up the tests. In many cases, the tests were clearly written wrong, like
using character offsets but a container that is not a text node. These changes keep the
tests testing the same things they are today.

  • editing/deleting/delete-block-merge-contents-025.html: Use the actual number of child

nodes rather than 2000000000.

  • editing/deleting/delete-blockquote-large-offsets.html: Ditto. The "large offsets" in

the title of this bug might simply be something that can't actually be done in practice,
setting an offset that is much higher than the actual number of children. The old code
simply clamped the high value.

  • editing/execCommand/format-block-typing-style.html: Use a 1 as an offset so we are

past the child text element, rather than 5, which was presumably an attempt at setting
an offset to a particular character, but using the wrong container node.

  • editing/execCommand/insert-nested-lists-in-table.html: Use a computed offset instead

of a hardcoded, and too high, value of 3.

  • editing/execCommand/outdent-selection.html: Use a 1 instead of a 2 for an offset on

a container node that has only one child.

  • editing/input/select-all-clear-input-method.html: Use a 3 instead of a 5 for an

offset in a container that's a text node containing 3 characters.

  • editing/inserting/insert-list-during-node-removal-crash.html: This one is a little

different. The code selected the entire document and used the deleteFromDocument method.
That function is specified to not do an end-user "editing" delete, but to literally
delete all the nodes. That includes all the script nodes. To fix the test, just select
the contents of the body of the document.

  • editing/inserting/insert-list-in-table-assert.html: Use a 0 instead of a 1

for an offset inside an empty style element.

  • editing/inserting/insert-list-in-table-cell-04.html: Use a 1 instead of a 2

as the offest for the end of the element, given the element had only one child.

  • editing/inserting/insert-list-in-table-cell-08.html: Ditto.
  • editing/inserting/page-zoom-font-size.html: Ditto, 1 instead of 12.
  • editing/inserting/replace-at-visible-boundary.html: Select the image by setting end

points before and after it, rather than trying to set offsets inside the image with
offsets of 0 and 1, since 1 is an illegal offset in an image with no children.

  • editing/pasteboard/dataTransfer-setData-getData.html: Use a 1 instead of a 4

for an offset inside the dragme element, which has one child, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.

  • editing/pasteboard/drag-drop-to-data-url.html: Ditto.
  • editing/pasteboard/paste-blockquote-into-blockquote-2.html: Use an offset of 1

instead of 3 inside the block element which has no children, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.

  • editing/pasteboard/paste-blockquote-into-blockquote-3.html: Use a range to set

the selection after the endContent <br> element rather than trying to use an
offset of 1 inside that element, which has no children.

  • editing/pasteboard/paste-blockquote-into-blockquote.html: Use an offset of 1

instead of 3 inside the block element which has no children, which was presumably
an attempt at setting an offset to a particular character, but using the wrong
container node.

  • editing/pasteboard/paste-table-cells.html: Use an offset of 1 instead of 3

inside the table, so the selection is after the table body. Presumably the error
is that someone thought that the table row elements were each children of the table.

8:20 AM Changeset in webkit [267475] by Karl Rackler
  • 3 edits in branches/safari-610-branch/LayoutTests

[ iPadOS wk2 ] fast/forms/ios/time-picker-value-change.html times out or fails and REGRESSION: [ iOS wk2 ] http/wpt/cache-storage/quota-third-party.https.html is a flaky failure
rdar://69407691, rdar://63108701

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
7:44 AM Changeset in webkit [267474] by Philippe Normand
  • 6 edits
    1 add in trunk

media/can-play-av1.html is not spec compliant
https://bugs.webkit.org/show_bug.cgi?id=216873

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::initialize): Add the "av1" codec in the codecs mapping.

LayoutTests:

  • media/media-can-play-av1-expected.txt: Update baseline.
  • media/media-can-play-av1.html: Update test and add another few testing invalid codecs.
  • platform/glib/TestExpectations: Unflag passing test.
  • platform/mac/media/media-can-play-av1-expected.txt: Added. This test is expected to fail on mac.
7:29 AM Changeset in webkit [267473] by Karl Rackler
  • 1 edit
    2 adds in branches/safari-610-branch/LayoutTests

[iOS] Update fast/text/opticalFontWithTextStyle.html for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=215667

Unreviewed test gardening.

  • platform/ios/fast/text/opticalFontWithTextStyle-expected.txt: Added.
  • platform/ios/fast/text/opticalFontWithTextStyle.html: Added.
7:04 AM Changeset in webkit [267472] by youenn@apple.com
  • 39 edits
    1 copy
    12 adds in trunk

Add support for HTMLMediaElement.setSinkId
https://bugs.webkit.org/show_bug.cgi?id=216696

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/audio-output/META.yml: Added.
  • web-platform-tests/audio-output/idlharness.https.window-expected.txt: Added.
  • web-platform-tests/audio-output/idlharness.https.window.html: Added.
  • web-platform-tests/audio-output/idlharness.https.window.js: Added.
  • web-platform-tests/audio-output/setSinkId.https-expected.txt: Added.
  • web-platform-tests/audio-output/setSinkId.https.html: Added.
  • web-platform-tests/audio-output/w3c-import.log: Added.

Source/WebCore:

Implement setSinkId and sinkId as per https://w3c.github.io/mediacapture-output/#htmlmediaelement-extensions.
Introduce a setting to expose these methods and to enable/disable user gesture requirement.
Add interfaces to change device output for specific media players.
Add support for HLS, MSE and MediaStreamTrack renderers on MacOS.
In case of setting the empty string, the default output device is used

Tests: http/wpt/audio-output/setSinkId.https.html

imported/w3c/web-platform-tests/audio-output/idlharness.https.window.html
imported/w3c/web-platform-tests/audio-output/setSinkId.https.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::exposeDevices):

  • Modules/mediastream/MediaDevices.h:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::audioOutputDevice const):
(WebCore::HTMLMediaElement::setAudioOutputDevice):
(WebCore::HTMLMediaElement::audioOutputDeviceId const):

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::audioOutputHashedDeviceId const):

  • html/HTMLMediaElementAudioOutput.idl: Added.
  • page/Settings.yaml:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::audioOutputDeviceChanged):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::audioOutputDeviceId const):
(WebCore::MediaPlayerClient::audioOutputDeviceIdOverride const):
(WebCore::MediaPlayer::audioOutputDeviceId const):
(WebCore::MediaPlayer::audioOutputDeviceIdOverride const):

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::audioOutputDeviceChanged):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::audioOutputDeviceChanged):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::audioOutputDeviceChanged):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateTracks):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::audioOutputDeviceChanged):

  • platform/mediastream/AudioMediaStreamTrackRenderer.h:

(WebCore::AudioMediaStreamTrackRenderer::setAudioOutputDevice):

  • platform/mediastream/AudioTrackPrivateMediaStream.cpp:

(WebCore::AudioTrackPrivateMediaStream::setAudioOutputDevice):

  • platform/mediastream/AudioTrackPrivateMediaStream.h:
  • platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.cpp:

(WebCore::AudioMediaStreamTrackRendererCocoa::setAudioOutputDevice):
(WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples):

  • platform/mediastream/mac/AudioMediaStreamTrackRendererCocoa.h:
  • platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.cpp:

(WebCore::AudioMediaStreamTrackRendererUnit::setAudioOutputDevice):
(WebCore::AudioMediaStreamTrackRendererUnit::createAudioUnitIfNeeded):

  • platform/mediastream/mac/AudioMediaStreamTrackRendererUnit.h:

Source/WebKit:

Add internal flag to enable/disable user gesture requirement for setting audio output device,
and for per media element setting of audio output device.

  • Shared/WebPreferencesExperimental.yaml:
  • Shared/WebPreferencesInternals.yaml:

Source/WTF:

Add HAVE_AUDIO_OUTPUT_DEVICE_UNIQUE_ID.

  • wtf/PlatformHave.h:

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Skip new tests on WK1 since mediaDevices is not implemented in WK1.

  • http/wpt/audio-output/setSinkId.https-expected.txt: Added.
  • http/wpt/audio-output/setSinkId.https.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
6:36 AM Changeset in webkit [267471] by Philippe Normand
  • 9 edits
    1 add in trunk

REGRESSION(r267383): fast/mediastream/getUserMedia-webaudio.html is failing
https://bugs.webkit.org/show_bug.cgi?id=216813

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Revert r267428 and fixup the GStreamer FFT implementation which broke in r267383.

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::multiply):

  • platform/audio/FFTFrameStub.cpp:

(WebCore::FFTFrame::multiply): Deleted.

  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:

(WebCore::FFTFrame::doFFT): Update the real and imaginary arrays after applying the FFT.
(WebCore::FFTFrame::multiply): Deleted.

  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::FFTFrame::multiply): Deleted.

LayoutTests:

Unflag passing tests.

  • platform/glib/TestExpectations:
  • platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt:
  • platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt: Added. There's

still a FAIL test there though.

  • platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
5:36 AM Changeset in webkit [267470] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, prospective GTK build fix after r267449.

  • svg/SVGPathBlender.cpp: Include <functional>, needed for std::invoke().
5:17 AM Changeset in webkit [267469] by cathiechen
  • 3 edits in trunk/Source/WebCore

Wheel event phases of FrameView are not handled correctly
https://bugs.webkit.org/show_bug.cgi?id=216870

Reviewed by Simon Fraser.

In AsyncScrollingCoordinator::handleWheelEventPhase, the scrollAnimator of a FrameView should be from FrameView itself, not ScrollableArea.
It doesn't call nodeDidHandleEvent to handle wheel event phases when !asyncFrameOrOverflowScrollingEnabled. Should call it after handleWheelEvent.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::handleWheelEventPhase): When nodeID is FrameView, we should use the scrollAnimator of FrameView instead.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEvent): If wheelEvent is handled, we should call nodeDidHandleEvent to handle the phases.

5:03 AM Changeset in webkit [267468] by Antti Koivisto
  • 6 edits
    2 adds in trunk/Source/WebCore

[LFC][Integration] Add canUseFor functions
https://bugs.webkit.org/show_bug.cgi?id=216869

Reviewed by Zalan Bujtas.

Copy the SLL canUseFor code.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/LayoutIntegrationCoverage.cpp: Added.

(WebCore::LayoutIntegration::canUseForCharacter):
(WebCore::LayoutIntegration::canUseForText):
(WebCore::LayoutIntegration::canUseForFontAndText):
(WebCore::LayoutIntegration::canUseForStyle):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):
(WebCore::LayoutIntegration::canUseForLineLayout):
(WebCore::LayoutIntegration::canUseForLineLayoutAfterStyleChange):

  • layout/integration/LayoutIntegrationCoverage.h: Added.

Also switch to OptionSet.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::isEnabled):
(WebCore::LayoutIntegration::LineLayout::canUseFor):
(WebCore::LayoutIntegration::LineLayout::canUseForAfterStyleChange):

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::canUseFor): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutInlineChildren):

3:27 AM Changeset in webkit [267467] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Garden more failures in webaudio and webrtc tests.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
2:17 AM Changeset in webkit [267466] by Diego Pino Garcia
  • 1 edit
    1 delete in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Remove specific baseline for webaudio/BiquadFilter/tail-time-lowpass.html

The baseline became redudant after r267444.

  • platform/glib/webaudio/BiquadFilter/tail-time-lowpass-expected.txt: Removed.
12:57 AM Changeset in webkit [267465] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled from Line::Run::hasTrailingLetterSpacing
https://bugs.webkit.org/show_bug.cgi?id=216867

Reviewed by Simon Fraser.

This codepath is only triggered when Line::TrimmableTrailingContent has a partially trimmable run.
However we don't add such runs unless m_shouldIgnoreTrailingLetterSpacing is false (which is already based on the RuntimeEnabledFeatures flag).

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::Run::hasTrailingLetterSpacing const):
(WebCore::Layout::Line::Run::trailingLetterSpacing const):

Sep 22, 2020:

9:47 PM Changeset in webkit [267464] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Web Inspector: Change InspectorAnimationAgent->startTracking to not error on repeated calls
https://bugs.webkit.org/show_bug.cgi?id=216385

Patch by Patrick Angle <Patrick Angle> on 2020-09-22
Reviewed by Devin Rousso.

InpsectorAnimationAgent now mirrors the behavior of other timeline agents by no longer returning an error on a
repeated invocation of startTracking.

  • inspector/agents/InspectorAnimationAgent.cpp:

(WebCore::InspectorAnimationAgent::startTracking):

9:39 PM Changeset in webkit [267463] by Antti Koivisto
  • 7 edits
    1 copy
    1 add in trunk/Source/WebCore

[LFC][Integration] Basic pagination support
https://bugs.webkit.org/show_bug.cgi?id=215451
<rdar://problem/67482721>

Reviewed by Zalan Bujtas.

Port the Simple Line Layout pagination code to LFC integration layer.
Pagination is the last remaining use of SLL so this patch turns it into dead code.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/displaytree/DisplayInlineContent.h:

(WebCore::Display::InlineContent::create):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::canUseFor):

This now the same as SLL test, covering all cases.

(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):
(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent):

This is fairly direct copy of the SLL code. It is not future proof or otherwise great but it serves the job for now.

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::isPaginated const):

  • layout/integration/LayoutIntegrationPagination.cpp: Added.

(WebCore::LayoutIntegration::computeLineTopAndBottomWithOverflow):
(WebCore::LayoutIntegration::computeLineBreakIndex):
(WebCore::LayoutIntegration::computeOffsetAfterLineBreak):
(WebCore::LayoutIntegration::setPageBreakForLine):
(WebCore::LayoutIntegration::updateMinimumPageHeight):
(WebCore::LayoutIntegration::makeAdjustedContent):
(WebCore::LayoutIntegration::adjustLinePositionsForPagination):

  • layout/integration/LayoutIntegrationPagination.h: Copied from Source/WebCore/layout/displaytree/DisplayInlineContent.h.
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutLFCLines):
(WebCore::RenderBlockFlow::ensureLineBoxes):

9:08 PM Changeset in webkit [267462] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GLIB] Gardening some tests

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
8:50 PM Changeset in webkit [267461] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Move RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled() check out from LineBuilder::constraintsForLine
https://bugs.webkit.org/show_bug.cgi?id=216862

Reviewed by Simon Fraser.

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::setIsIntegratedRootBoxFirstChild):

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::isIntegratedRootBoxFirstChild const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::constraintsForLine):

8:48 PM Changeset in webkit [267460] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Floats] Remove the redundant RuntimeEnabledFeatures::layoutFormattingContextIntegrationEnabled() check from FloatingState::append
https://bugs.webkit.org/show_bug.cgi?id=216866

Reviewed by Simon Fraser.

The no-layout-box-for-the-FloatItem codepath is reserved for the IFC integration. This is temporary anyway.

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::append):

8:41 PM Changeset in webkit [267459] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[GPU Process] fast/canvas/canvas-blend-image.html and fast/canvas/canvas-blend-solid.html fail on macOS
https://bugs.webkit.org/show_bug.cgi?id=216860

Reviewed by Said Abou-Hallawa.

These two tests disable accelerated drawing for canvas elements; when using the GPU process, this causes us to
use ImageBufferShareableBitmapBackend as the back-end for the image buffer backing the canvas element.

On both macOS and iOS, the image buffer is backed by BGRA image data. However, we override
backendColorFormat() and return ColorFormat::BGRA only for PLATFORM(IOS_FAMILY), causing putImageData
and getImageData to result in flipped red and blue channels on macOS, which subsequently causes these two
layout tests to fail.

Fix these tests by removing the PLATFORM(IOS_FAMILY) guard.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
8:38 PM Changeset in webkit [267458] by Keith Rollin
  • 6 edits in trunk

Unify debug and release target aliases
https://bugs.webkit.org/show_bug.cgi?id=216863
<rdar://problem/69407746>

Reviewed by Tim Horton.

All Makefiles have "debug", "d", "release", and "r" for build
targets. Others -- but not all -- also include "dev", "develop",
"development", "dep", "deploy", and "deployment". Because of this
inconsistency, trying to use those additional targets didn't work. It
looks like all Makefiles used to support all of those targets, but
some got dropped along the way. For instance, the top-level Makefile
and Source/Makefile dropped them in 2013 as part of Bug 107863. And it
looks like WebKitLibraries/Makefile never had them. Given that those
additional targets don't work, it seems like no one uses them, so
let's remove them completely.

.:

  • Makefile.shared:

Source/ThirdParty:

  • Makefile:

Tools:

  • Makefile:
8:36 PM Changeset in webkit [267457] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[GTK] REGRESSION(r267329): imported/blink/editing/undo/crash-redo-with-iframes.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216778

Reviewed by Darin Adler.

Covered by existing tests.

  • editing/markup.cpp:

(WebCore::serializePreservingVisualAppearanceInternal): Return early
also for "negative" ranges to avoid hitting an assertion inside
serializeNodes, as suggested by Darin.

7:38 PM Changeset in webkit [267456] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

REGRESSION: [ iOS wk2 ] http/wpt/cache-storage/quota-third-party.https.html is a flaky failure
rdar://69407691

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
7:37 PM Changeset in webkit [267455] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r267421.
https://bugs.webkit.org/show_bug.cgi?id=216864

Broke a test on macOS

Reverted changeset:

"[macOS] Start collecting telemetry from a set of XPC
services"
https://bugs.webkit.org/show_bug.cgi?id=216797
https://trac.webkit.org/changeset/267421

6:57 PM Changeset in webkit [267454] by ysuzuki@apple.com
  • 4 edits in trunk

[JSC] Enable Intl.DateTimeFormat dayPeriod
https://bugs.webkit.org/show_bug.cgi?id=216845

Reviewed by Mark Lam.

JSTests:

  • stress/intl-datetimeformat.js:

Source/JavaScriptCore:

Since we already have consensus, let's enable it.
For now, we keep this flag since it is possible that something
happens before the change is integrated into the spec.

  • runtime/OptionsList.h:
6:49 PM Changeset in webkit [267453] by Chris Dumez
  • 10 edits in trunk

Slightly improve AudioBufferSourceNode resampling
https://bugs.webkit.org/show_bug.cgi?id=216859

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT tests that are now passing.

  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/buffer-resampling-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching-expected.txt:

Source/WebCore:

Slightly improve AudioBufferSourceNode resampling. Use simple linear extrapolation
to resample the data when we reach the end of the buffer. Previously, the last
sample would just be repeated enough times.

This is a merge of the following Blink change by Raymond Toy:

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::renderFromBuffer):

LayoutTests:

  • webaudio/AudioBufferSource/audiobuffersource-detune-modulation-expected.txt:
  • webaudio/AudioBufferSource/audiobuffersource-playbackrate-modulation-expected.txt:
  • webaudio/gain-expected.wav:

Rebaseline tests that have slightly different output.

5:44 PM Changeset in webkit [267452] by Alan Coon
  • 1 copy in tags/Safari-610.2.6.0.1

Tag Safari-610.2.6.0.1.

5:43 PM Changeset in webkit [267451] by Russell Epstein
  • 1 copy in tags/Safari-610.2.6.1.4

Tag Safari-610.2.6.1.4.

5:32 PM Changeset in webkit [267450] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

REGRESSION: [ iOS wk2 ] fast/text/international/complex-character-based-fallback.html is a constant failure
rdar://69401173

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
5:20 PM Changeset in webkit [267449] by weinig@apple.com
  • 21 edits
    2 copies
    54 moves in trunk/Source/WebCore

[WebIDL] Switch to new file name convention for partial interfaces
https://bugs.webkit.org/show_bug.cgi?id=216843

Reviewed by Tim Horton.

Updates all 'partial interface' IDLs to use the new naming convention adopted
in https://webkit.org/b/216729, where they are name as the construction of the
base interface '+' the supplementing spec. So, additions to Document from the
Web Animations spec becomes Document+WebAnimations.idl.

  • accessibility/AccessibilityRenderObject.cpp:
  • bindings/js/JSDocumentCustom.cpp:
  • bindings/js/JSXMLDocumentCustom.cpp:
  • html/HTMLFrameOwnerElement.h:
  • loader/FrameLoader.cpp:
  • page/FrameView.cpp:
  • svg/DocumentSVG.cpp: Added.
  • svg/DocumentSVG.h: Added.
  • svg/SVGDocument.cpp:
  • svg/SVGDocument.h:
  • svg/SVGTRefElement.cpp:
  • svg/graphics/SVGImage.cpp:
  • style/StyleAdjuster.cpp:
  • svg/Document+SVG.idl: Added.
  • svg/SVGDocument.idl: Removed.

Fix weirdness around SVGDocument. Previously, additions to the Document
interface were in a class that was also a document subclass. Now the two
are split, so the additions are in DocumentSVG.h/cpp, matching convention,
and the subclass remains SVGDocument.h/cpp, also matching convention.

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

Update for renames.

  • Modules/async-clipboard/Navigator+Clipboard.idl: Added.
  • Modules/async-clipboard/NavigatorClipboard.idl: Removed.
  • Modules/beacon/Navigator+Beacon.idl: Added.
  • Modules/beacon/NavigatorBeacon.idl: Removed.
  • Modules/cache/DOMWindow+Caches.idl: Added.
  • Modules/cache/DOMWindowCaches.idl: Removed.
  • Modules/cache/WorkerGlobalScope+Caches.idl: Added.
  • Modules/cache/WorkerGlobalScopeCaches.idl: Removed.
  • Modules/credentialmanagement/Navigator+Credentials.idl: Added.
  • Modules/credentialmanagement/NavigatorCredentials.idl: Removed.
  • Modules/encryptedmedia/Navigator+EME.idl: Added.
  • Modules/encryptedmedia/NavigatorEME.idl: Removed.
  • Modules/entriesapi/HTMLInputElement+EntriesAPI.idl: Added.
  • Modules/entriesapi/HTMLInputElementEntriesAPI.idl: Removed.
  • Modules/fetch/WindowOrWorkerGlobalScope+Fetch.idl: Added.
  • Modules/fetch/WindowOrWorkerGlobalScopeFetch.idl: Removed.
  • Modules/gamepad/Navigator+Gamepad.idl: Added.
  • Modules/gamepad/NavigatorGamepad.idl: Removed.
  • Modules/geolocation/Navigator+Geolocation.idl: Added.
  • Modules/geolocation/NavigatorGeolocation.idl: Removed.
  • Modules/indexeddb/DOMWindow+IndexedDatabase.idl: Added.
  • Modules/indexeddb/DOMWindowIndexedDatabase.idl: Removed.
  • Modules/indexeddb/WorkerGlobalScope+IndexedDatabase.idl: Added.
  • Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl: Removed.
  • Modules/mediacapabilities/Navigator+MediaCapabilities.idl: Added.
  • Modules/mediacapabilities/NavigatorMediaCapabilities.idl: Removed.
  • Modules/mediasession/HTMLMediaElement+MediaSession.idl: Added.
  • Modules/mediasession/HTMLMediaElementMediaSession.idl: Removed.
  • Modules/mediasource/AudioTrack+MediaSource.idl: Added.
  • Modules/mediasource/AudioTrackMediaSource.idl: Removed.
  • Modules/mediasource/DOMURL+MediaSource.idl: Added.
  • Modules/mediasource/DOMURLMediaSource.idl: Removed.
  • Modules/mediasource/TextTrack+MediaSource.idl: Added.
  • Modules/mediasource/TextTrackMediaSource.idl: Removed.
  • Modules/mediasource/VideoTrack+MediaSource.idl: Added.
  • Modules/mediasource/VideoTrackMediaSource.idl: Removed.
  • Modules/mediastream/Navigator+MediaDevices.idl: Added.
  • Modules/mediastream/NavigatorMediaDevices.idl: Removed.
  • Modules/pictureinpicture/Document+PictureInPicture.idl: Added.
  • Modules/pictureinpicture/DocumentOrShadowRoot+PictureInPicture.idl: Added.
  • Modules/pictureinpicture/DocumentOrShadowRootPictureInPicture.idl: Removed.
  • Modules/pictureinpicture/DocumentPictureInPicture.idl: Removed.
  • Modules/pictureinpicture/HTMLVideoElement+PictureInPicture.idl: Added.
  • Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl: Removed.
  • Modules/quota/DOMWindow+Quota.idl: Added.
  • Modules/quota/DOMWindowQuota.idl: Removed.
  • Modules/quota/Navigator+StorageQuota.idl: Added.
  • Modules/quota/NavigatorStorageQuota.idl: Removed.
  • Modules/quota/WorkerNavigator+StorageQuota.idl: Added.
  • Modules/quota/WorkerNavigatorStorageQuota.idl: Removed.
  • Modules/remoteplayback/HTMLMediaElement+RemotePlayback.idl: Added.
  • Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl: Removed.
  • Modules/speech/DOMWindow+SpeechSynthesis.idl: Added.
  • Modules/speech/DOMWindowSpeechSynthesis.idl: Removed.
  • Modules/webdatabase/DOMWindow+WebDatabase.idl: Added.
  • Modules/webdatabase/DOMWindowWebDatabase.idl: Removed.
  • Modules/webdriver/Navigator+WebDriver.idl: Added.
  • Modules/webdriver/NavigatorWebDriver.idl: Removed.
  • Modules/webgpu/Navigator+GPU.idl: Added.
  • Modules/webgpu/NavigatorGPU.idl: Removed.
  • Modules/webgpu/WorkerNavigator+GPU.idl: Added.
  • Modules/webgpu/WorkerNavigatorGPU.idl: Removed.
  • Modules/webxr/Navigator+WebXR.idl: Added.
  • Modules/webxr/NavigatorWebXR.idl: Removed.
  • animation/Document+WebAnimations.idl: Added.
  • animation/DocumentAnimations.idl: Removed.
  • animation/DocumentOrShadowRoot+WebAnimations.idl: Added.
  • animation/DocumentOrShadowRootAnimations.idl: Removed.
  • animation/GlobalEventHandlers+CSSAnimations.idl: Added.
  • animation/GlobalEventHandlers+CSSTransitions.idl: Added.
  • animation/GlobalEventHandlersCSSAnimations.idl: Removed.
  • animation/GlobalEventHandlersCSSTransitions.idl: Removed.
  • css/DOMCSSNamespace+CSSPainting.idl: Added.
  • css/DOMCSSNamespace+CSSPropertiesandValues.idl: Added.
  • css/DOMCSSPaintWorklet.idl: Removed.
  • css/DOMCSSRegisterCustomProperty.idl: Removed.
  • css/DocumentOrShadowRoot+CSSOM.idl: Added.
  • css/DocumentOrShadowRootStyleSheets.idl: Removed.
  • dom/Document+CSSOMView.idl: Added.
  • dom/Document+Fullscreen.idl: Added.
  • dom/Document+HTML.idl: Added.
  • dom/Document+HTMLObsolete.idl: Added.
  • dom/Document+PageVisibility.idl: Added.
  • dom/Document+PointerLock.idl: Added.
  • dom/Document+Selection.idl: Added.
  • dom/Document+StorageAccess.idl: Added.
  • dom/Document+Touch.idl: Added.
  • dom/Document+UndoMananger.idl: Added.
  • dom/DocumentFullscreen.idl: Removed.
  • dom/DocumentHTML.idl: Removed.
  • dom/DocumentHTMLObsolete.idl: Removed.
  • dom/DocumentOrShadowRoot+PointerLock.idl: Added.
  • dom/DocumentOrShadowRootPointerLock.idl: Removed.
  • dom/DocumentPageVisibility.idl: Removed.
  • dom/DocumentPointerLock.idl: Removed.
  • dom/DocumentScrolling.idl: Removed.
  • dom/DocumentSelection.idl: Removed.
  • dom/DocumentStorageAccess.idl: Removed.
  • dom/DocumentTouch.idl: Removed.
  • dom/DocumentUndoMananger.idl: Removed.
  • dom/Element+DOMParsing.idl: Added.
  • dom/ElementDOMParsing.idl: Removed.
  • dom/GlobalEventHandlers+PointerEvents.idl: Added.
  • dom/GlobalEventHandlersPointerEvents.idl: Removed.
  • page/Navigator+IsLoggedIn.idl: Added.
  • page/NavigatorIsLoggedIn.idl: Removed.

Rename IDLs.

5:11 PM Changeset in webkit [267448] by achristensen@apple.com
  • 2 edits in trunk/Tools

Make TLSVersion API tests more robust.
https://bugs.webkit.org/show_bug.cgi?id=216704

Like I did in r267278, the TLSVersion.ShouldAllowDeprecatedTLS API test was also asserting with TCPServer,
so use HTTPServer which gracefully handles a variable number of connection attempts.
The NetworkSession tests that use NSUserDefaults need to be split into a separate test for bug 216041,
so may as well do that here, too.

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::makeWebViewWith):
(TestWebKitAPI::TEST):

5:04 PM Changeset in webkit [267447] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Limit number of emails to send for flaky and pre-existing JSC test failures
https://bugs.webkit.org/show_bug.cgi?id=216857

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeJSCTestsResults.start):

4:43 PM Changeset in webkit [267446] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Used geometry for inline level boxes should be in the coordinate system of the formatting context root
https://bugs.webkit.org/show_bug.cgi?id=216854

Reviewed by Simon Fraser.

Convert inline level box geometry from relative to the line box to relative to the formatting context root.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

4:15 PM Changeset in webkit [267445] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r267442. rdar://problem/66842535

[ macOS ] webgl/2.0.0/conformance/textures/misc/texture-upload-size.html is a flaky failure
rdar://66842535

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267442 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:54 PM Changeset in webkit [267444] by Chris Dumez
  • 5 edits in trunk

Fix BiquadFilterNode's lowpass & highpass filters
https://bugs.webkit.org/show_bug.cgi?id=216852

Reviewed by Eric Carlson.

Source/WebCore:

Fix BiquadFilterNode's lowpass & highpass filters. They incorrectly clamp the
resonance to make it positive.

Formulas for the filters are specified here:

No new tests, rebaselined existing tests.

  • platform/audio/Biquad.cpp:

(WebCore::pow10):
(WebCore::Biquad::setLowpassParams):
(WebCore::Biquad::setHighpassParams):

LayoutTests:

Rebaseline tests that are now passing.

  • webaudio/BiquadFilter/tail-time-highpass-expected.txt:
  • webaudio/BiquadFilter/tail-time-lowpass-expected.txt:
3:52 PM Changeset in webkit [267443] by Chris Dumez
  • 11 edits in trunk

Merge AudioBufferSourceNode loop fixes from Blink
https://bugs.webkit.org/show_bug.cgi?id=216849

Reviewed by Eric Carlson.

Source/WebCore:

Merge AudioBufferSourceNode loop fixes from Blink, the following one in particular:

This allows us to pass all the checks in:
webaudio/AudioBufferSource/audiobuffersource-loop-comprehensive.html.

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::renderFromBuffer):
(WebCore::AudioBufferSourceNode::adjustGrainParameters):
Merge loop fixes from Blink.

  • Modules/webaudio/AudioScheduledSourceNode.cpp:

(WebCore::AudioScheduledSourceNode::stopLater):
Stop throwing when m_endTime is already set. Our behavior did not match
Chrome and Firefox here. This was causing some existing tests to start
failing now that providing a grain duration when calling start() would
set m_endTime if loop() returns true.

LayoutTests:

  • webaudio/AudioBufferSource/audiobuffersource-loop-comprehensive-expected.txt:

Rebaseline test that is now passing.

  • webaudio/Oscillator/oscillator-basic-expected.txt:
  • webaudio/dom-exceptions-expected.txt:

Rebaseline tests because the exception message was improved.

  • webaudio/audiobuffersource-exception-expected.txt:
  • webaudio/audiobuffersource-exception.html:

Stop expecting an exception to be thrown when AudioBufferSourceNode.stop() gets called
more than once. I have verified that Chrome and Firefox do not throw in this case.

3:40 PM Changeset in webkit [267442] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ macOS ] webgl/2.0.0/conformance/textures/misc/texture-upload-size.html is a flaky failure
rdar://66842535

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:26 PM Changeset in webkit [267441] by Keith Rollin
  • 2 edits in trunk

Refactor build rules in Makefiles and Makefile.shared
https://bugs.webkit.org/show_bug.cgi?id=216806
<rdar://problem/69332316>

Reviewed by David Kilzer.

Build fix: Previous change for this bug broke the ability to perform a
build with just make, due to that code path invoking
set-webkit-configuration with no parameters, which causes that
script to error-out.

  • Makefile.shared:
3:23 PM Changeset in webkit [267440] by commit-queue@webkit.org
  • 4 edits in trunk

Coerce computed property before adding to |excludedList|
https://bugs.webkit.org/show_bug.cgi?id=216437

Patch by HyeockJin Kim <kherootz@gmail.com> on 2020-09-22
Reviewed by Yusuke Suzuki.

JSTests:

  • stress/object-rest-deconstruct.js:

(get 3):

Source/JavaScriptCore:

  • bytecompiler/NodesCodegen.cpp:

(JSC::ObjectPatternNode::bindValue const):

3:21 PM Changeset in webkit [267439] by sihui_liu@apple.com
  • 4 edits in trunk

REGRESSION(r266075): WebContent process crashes at TextManipulationController::getPath
https://bugs.webkit.org/show_bug.cgi?id=216846

Reviewed by Wenson Hsieh.

Source/WebCore:

TextIterator does not visit node that has no renderer, so if node has become hidden, TextManipulationController
will not find content node in paragraph range during replacement.

API Test: TextManipulation.CompleteTextManipulationParagraphBecomesHidden

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::replace):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

3:10 PM Changeset in webkit [267438] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

[ iPadOS wk2 ] fast/forms/ios/time-picker-value-change.html times out or fails
rdar://problem/63108701

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:45 PM Changeset in webkit [267437] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Atomic inline-level box with margin is mispositioned
https://bugs.webkit.org/show_bug.cgi?id=216842

Reviewed by Antti Koivisto.

The inline box that an atomic inline-level box generates has the height of the margin box. Therefore the inline box's logical top position
is the position of the top edge of the margin box.
When converting the inline box geometry back to the layout box, we need to offset the top position (border box top edge)
with the value of the used margin before.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

1:47 PM Changeset in webkit [267436] by Alan Coon
  • 55 edits in branches/safari-610.2.6.0-branch/Source/WebCore

Apply patch. rdar://problem/69375258

1:13 PM Changeset in webkit [267435] by Chris Dumez
  • 4 edits in trunk

AudioParam.setValueCurveAtTime() should have an implicit call to setValueAtTime() at the end
https://bugs.webkit.org/show_bug.cgi?id=216839

Reviewed by Eric Carlson.

Source/WebCore:

AudioParam.setValueCurveAtTime() should have an implicit call to setValueAtTime() at the end,
as specified here:

"""
An implicit call to setValueAtTime() is made at time 𝑇0+𝑇𝐷 with value 𝑉[𝑁−1] so that
following automations will start from the end of the setValueCurveAtTime() event.
"""

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::setValueCurveAtTime):

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioParam/audioparam-setValueCurve-end-expected.txt:
1:07 PM Changeset in webkit [267434] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Add support for multiline inline box geometry.
https://bugs.webkit.org/show_bug.cgi?id=216835

Reviewed by Antti Koivisto.

This patch computes the geometry for inline boxes spanning multiple lines (e.g. <span>first line<br>next line</span).
However this is not the getBoundingClientRect() type of geometry where we provide geometry for each fragments. This is more like the
element.offset* geometry where we compute the enclosing rectangle for all the fragments.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent): Decouple the run construction and inline box geometry update logic,
where we loop through the runs and create "line runs" when needed and then we loop through the inline boxes on the current line and
update the box geometries.

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineBoxes const):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):
(WebCore::Layout::InlineFormattingState::shrinkToFit):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::containsInlineLevelBox const):

12:31 PM Changeset in webkit [267433] by Russell Epstein
  • 8 edits in branches/safari-610.2.6.0-branch/Source

Versioning.

WebKit-7610.2.6.0.1

12:25 PM Changeset in webkit [267432] by Chris Dumez
  • 26 edits in trunk

AudioParams with automations must process timelines
https://bugs.webkit.org/show_bug.cgi?id=216837

Reviewed by Darin Adler.

Source/WebCore:

Currently, if an AudioNode has no inputs connected, any automations
(or connections) to an AudioParam of the node is not processed. Thus,
time never advances on the AudioParam, and any upstream graph
connected to the AudioParam never gets pulled for data.

AudioParam should get processed so that time progresses. Normal
processing of the node causes AudioParams to be processed, so we were
only missing the case where the node has silent inputs (silent or no
inputs). Then we just need to update the AudioParams, without having
to do the full processing associated with the node.

See https://webaudio.github.io/web-audio-api/#rendering-loop, step 8.1.1
in particular that says any inputs connected to an AudioParam are
processed. There are no conditions on when this happens.

This is a merge of the following Blink change by Raymond Toy:

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioBasicProcessorNode.cpp:

(WebCore::AudioBasicProcessorNode::processOnlyAudioParams):

  • Modules/webaudio/AudioBasicProcessorNode.h:
  • Modules/webaudio/AudioListener.h:
  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::processIfNecessary):

  • Modules/webaudio/AudioNode.h:

(WebCore::AudioNode::processOnlyAudioParams):

  • Modules/webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::BiquadFilterNode):

  • Modules/webaudio/BiquadProcessor.cpp:

(WebCore::BiquadProcessor::processOnlyAudioParams):

  • Modules/webaudio/BiquadProcessor.h:
  • Modules/webaudio/DelayDSPKernel.cpp:

(WebCore::DelayDSPKernel::processOnlyAudioParams):

  • Modules/webaudio/DelayDSPKernel.h:
  • Modules/webaudio/DelayNode.cpp:

(WebCore::DelayNode::DelayNode):

  • Modules/webaudio/DynamicsCompressorNode.cpp:

(WebCore::DynamicsCompressorNode::processOnlyAudioParams):

  • Modules/webaudio/DynamicsCompressorNode.h:
  • Modules/webaudio/GainNode.cpp:

(WebCore::GainNode::processOnlyAudioParams):

  • Modules/webaudio/GainNode.h:
  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::processOnlyAudioParams):

  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/StereoPannerNode.cpp:

(WebCore::StereoPannerNode::processOnlyAudioParams):

  • Modules/webaudio/StereoPannerNode.h:
  • platform/audio/AudioDSPKernel.h:

(WebCore::AudioDSPKernel::processOnlyAudioParams):

  • platform/audio/AudioDSPKernelProcessor.cpp:

(WebCore::AudioDSPKernelProcessor::processOnlyAudioParams):

  • platform/audio/AudioDSPKernelProcessor.h:
  • platform/audio/AudioProcessor.h:

(WebCore::AudioProcessor::processOnlyAudioParams):

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioParam/audioparam-processing-expected.txt:
12:18 PM Changeset in webkit [267431] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

[GTK] REGRESSION(r267398): several hidpi tests are failing
https://bugs.webkit.org/show_bug.cgi?id=216830

Reviewed by Adrian Perez de Castro.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setCustomDeviceScaleFactor): Remove check for removed define.

12:08 PM Changeset in webkit [267430] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.2.8

12:03 PM Changeset in webkit [267429] by Russell Epstein
  • 2 edits in branches/safari-610.2.6.1-branch/Source/WebCore

Cherry-pick r267106. rdar://problem/69375000

CRASH: Exception thrown from -[AVContentKeyRequest makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=216580
<rdar://problem/68866834>

Reviewed by Eric Carlson.

Protect against undocumented exceptions thrown from AVContentKeySession (and related) APIs by wrapping in @try/@catch blocks and firing
the correct failure callbacks if an exception is encountered.

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267106 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:03 PM Changeset in webkit [267428] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Unreviewed, partial revert of r267383.

Restore GStreamer-specific implementation of FFTFrame::multiply() since it appears
r267383 introduced test failures on GTK port.

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::multiply): Deleted.

  • platform/audio/FFTFrameStub.cpp:

(WebCore::FFTFrame::multiply):

  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:

(WebCore::FFTFrame::multiply):

  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::FFTFrame::multiply):

12:01 PM Changeset in webkit [267427] by Peng Liu
  • 9 edits
    1 delete in trunk/Source/WebKit

[Media in GPU Process] Add missing IPC message receivers
https://bugs.webkit.org/show_bug.cgi?id=216829

Reviewed by Jer Noble.

Add missing IPC message receivers and clean up some macro usages.
Also remove the empty RemoteMediaPlayerManager.messages.in.

No new tests, no functional change.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/media/ios/RemoteMediaSessionHelperProxy.h:

(WebKit::RemoteMediaSessionHelperProxy::didReceiveMessageFromWebProcess):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in: Removed.
11:57 AM Changeset in webkit [267426] by Russell Epstein
  • 8 edits in branches/safari-610.2.6.1-branch/Source

Versioning.

WebKit-7610.2.6.1.4

11:43 AM Changeset in webkit [267425] by Russell Epstein
  • 2 edits in branches/safari-610.2.5.1-branch/Source/WebCore

Revert "Cherry-pick r267106. rdar://problem/69375000"

11:37 AM Changeset in webkit [267424] by Keith Rollin
  • 8 edits in trunk

Refactor build rules in Makefiles and Makefile.shared
https://bugs.webkit.org/show_bug.cgi?id=216806
<rdar://problem/69332316>

Reviewed by David Kilzer.

Factor out the common aspects of the build rules in Makefile.shared
and the various Makefiles. This allows us to more easily see what's
different between the various build targets, and to apply uniform
changes across all of the targets.

  • Makefile:

.:

  • Makefile.shared:
  • Source/Makefile:
11:30 AM Changeset in webkit [267423] by Russell Epstein
  • 17 edits in branches/safari-610.2.5.1-branch

Revert "Cherry-pick r266121. rdar://problem/68949249"

11:25 AM Changeset in webkit [267422] by Alan Coon
  • 1 copy in branches/safari-610.2.6.0-branch

New branch.

11:03 AM Changeset in webkit [267421] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Start collecting telemetry from a set of XPC services
<https://bugs.webkit.org/show_bug.cgi?id=216797>

Reviewed by Brent Fulgham.

  • WebProcess/com.apple.WebProcess.sb.in:
11:00 AM Changeset in webkit [267420] by Russell Epstein
  • 2 edits in branches/safari-610.2.5.1-branch/Source/WebCore

Cherry-pick r267106. rdar://problem/69375000

CRASH: Exception thrown from -[AVContentKeyRequest makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=216580
<rdar://problem/68866834>

Reviewed by Eric Carlson.

Protect against undocumented exceptions thrown from AVContentKeySession (and related) APIs by wrapping in @try/@catch blocks and firing
the correct failure callbacks if an exception is encountered.

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm: (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests): (WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267106 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:57 AM Changeset in webkit [267419] by Diego Pino Garcia
  • 2 edits
    3 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Mark several audio related tests as failure after r267383.

Also emit baselines for 2 tests passing.

  • platform/glib/TestExpectations:
  • platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt: Added.
  • platform/glib/webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt: Added.
10:33 AM Changeset in webkit [267418] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC] FormattingState should never be copied.
https://bugs.webkit.org/show_bug.cgi?id=216833

Reviewed by Antti Koivisto.

Even when running a throw-away layout, we should not copy the state object but instead generate a new one for the subtree.
These objects should never be copied in general.

  • layout/FormattingState.h:
  • layout/LayoutState.h:
  • layout/tableformatting/TableFormattingContextGeometry.cpp:

(WebCore::Layout::TableFormattingContext::Geometry::usedBaselineForCell):

9:53 AM Changeset in webkit [267417] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests/imported/w3c

REGRESSION(r267354): Only import resource module on Darwin
https://bugs.webkit.org/show_bug.cgi?id=216823

Patch by Sam Sneddon <Sam Sneddon> on 2020-09-22
Reviewed by Darin Adler.

  • web-platform-tests/tools/serve/serve.py:

Move the resource import to the local point behind the Darwin platform
test. This code is only run once per process initiation, hence it makes
no difference to have the import locally.

9:45 AM Changeset in webkit [267416] by Jonathan Bedard
  • 2 edits in trunk

Correct instructions for building iOS in ReadMe
https://bugs.webkit.org/show_bug.cgi?id=216825
<rdar://problem/69372654>

Reviewed by David Kilzer.

  • ReadMe.md: Update iOS build instructions to apply to all embedded platforms.
9:40 AM Changeset in webkit [267415] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/Tools

Cherry-pick r267278. rdar://problem/69374947

Make TLSVersion.NetworkSession API test more robust
https://bugs.webkit.org/show_bug.cgi?id=216704
<rdar://problem/68643674>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-09-18
Reviewed by Tim Horton.

r265573 made preconnect attempts to legacy TLS servers fail.
This caused the TLSVersion.NetworkSession to assert because the first connection attempt would fail
(and the second would succeed if it was supposed to succeed with the conditions in the test).
The test calls waitForDidFailProvisionalNavigation in cases where it is supposed to fail and
waitForDidFinishNavigation in cases where it supposed to succeed.
Like I did in r266100 with another test, use HTTPServer which allows a variable number of connection attempts.

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm: (TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267278 268f45cc-cd09-0410-ab3c-d52691b4dbfc

9:32 AM Changeset in webkit [267414] by youenn@apple.com
  • 14 edits
    2 adds in trunk

Implement a default prompt for getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=216821

Reviewed by Eric Carlson.

Source/WebCore:

Manually tested by running Minibrowser.

  • en.lproj/Localizable.strings:

Source/WebKit:

Move preferences used by WebRTC develop menu to internals.
This allows having them in MiniBrowser.

Enable video capture in UIProcess by default for non Safari applications.
Add support for a getUserMedia prompt, very similar to iOS current prompt.
Use the prompt in case the application does not implement any of the two delegates.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCaptureVideoInUIProcessEnabled):

  • Shared/WebPreferencesDefaultValues.h:
  • Shared/WebPreferencesExperimental.yaml:
  • Shared/WebPreferencesInternal.yaml:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::requestUserMediaAuthorizationForFrame):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Added.
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm: Added.

(WebKit::visibleDomain):
(WebKit::alertMessageText):
(WebKit::presentUserMediaCaptureAccessAlert):

  • WebKit.xcodeproj/project.pbxproj:

Tools:

Remove getUserMedia delegate implementations to use WebKit built-in prompt.
Add camera and microphone entitlements to allow using real cameras and microphones.
Keep using mock devices as the default.

  • MiniBrowser/MiniBrowser.entitlements:
  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted.
(-[WK2BrowserWindowController _webView:includeSensitiveMediaDeviceDetails:]): Deleted.

9:29 AM Changeset in webkit [267413] by Chris Dumez
  • 4 edits in trunk

webaudio/AudioParam/audioparam-setTarget-timeConstant-0.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=216824

Reviewed by Darin Adler.

Source/WebCore:

If the time constant pass to AudioParam.setTargetAtTime() is 0, then insert a SetValue event in
the timeline instead of a SetTarget one, causing us to instantly jump to the target value. This
matches the Blink behavior.

No new tests, unskipped existing test.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::setTargetAtTime):

LayoutTests:

Unskip test that is passing and no longer crashing.

9:22 AM Changeset in webkit [267412] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

Crashtracer inside PDFPlugin::createScrollbar.
<rdar://problem/69256031> and https://bugs.webkit.org/show_bug.cgi?id=216810

Reviewed by Tim Horton.

To quote Tim from r264945:
No new tests; timing is such that I can't reproduce without inserting
intentional delays into the main thread hops, which is further than
I'm willing to go for a test.

This is a speculative fix due to the aforementioned reproducibility issue.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::installPDFDocument): With all the past fixes in place, its apparent

the plug-in HAS been torn down, and it's somewhat common to bypass the other "hasBeenDestroyed"
checks. So put an explicit check here followed by an explicit release assert.

9:14 AM Changeset in webkit [267411] by BJ Burg
  • 44 edits
    2 copies in trunk

[Cocoa] _WKInspectorDelegate should handle showing external resources
https://bugs.webkit.org/show_bug.cgi?id=216334

Reviewed by Devin Rousso.

Source/WebCore:

Adapt to the rename of InspectorFrontendHost.{openInNewTab => openURLExternally}.

  • inspector/InspectorFrontendClient.h:
  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::openURLExternally):
(WebCore::InspectorFrontendClientLocal::openInNewTab): Deleted.

  • inspector/InspectorFrontendClientLocal.h:
  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::openURLExternally):
(WebCore::InspectorFrontendHost::openInNewTab): Deleted.

  • inspector/InspectorFrontendHost.h:
  • inspector/InspectorFrontendHost.idl:

Source/WebInspectorUI:

Adapt to the rename of InspectorFrontendHost.{openInNewTab => openURLExternally}.

  • UserInterface/Base/Main.js:
  • UserInterface/Debug/UncaughtExceptionReporter.js:

(sheetElement.innerHTML.div):

  • UserInterface/Protocol/InspectorFrontendAPI.js:
  • UserInterface/Views/ResourceTreeElement.js:

(WI.ResourceTreeElement.prototype.ondblclick):

Source/WebKit:

WebKit clients need a way to control the loading and presentation of
external resources that are linked in Web Inspector's user interface.

Rename InspectorFrontendHost.openInNewTab to openURLExternally. Change
the implementation to forward the request to UIProcess rather than the
inspected WebProcess.

When a navigation is triggered in WKInspectorViewController's WKWebView,
allow the delegate to open the requested resource. Otherwise, redirect
the navigation to the inspected WebView or open it using NSWorkspace
(for the remote case).

New API test: WKInspectorDelegate.OpenURLExternally.

  • UIProcess/API/Cocoa/_WKInspectorPrivateForTesting.h: Added.
  • UIProcess/API/Cocoa/_WKInspectorTesting.mm: Added.

(snippetToOpenURLExternally):
(-[_WKInspector _openURLExternallyForTesting:useFrontendAPI:]):
Add some helpers for writing API tests.

  • UIProcess/API/APIInspectorClient.h:

(API::InspectorClient::openURLExternally):

  • UIProcess/API/Cocoa/_WKInspectorDelegate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:
  • UIProcess/Inspector/Cocoa/InspectorDelegate.h:
  • UIProcess/Inspector/Cocoa/InspectorDelegate.mm:

(WebKit::InspectorDelegate::setDelegate):
(WebKit::InspectorDelegate::InspectorClient::openURLExternally):
Add new delegate method to _WKInspectorDelegate.

  • UIProcess/Inspector/RemoteWebInspectorProxy.messages.in:
  • UIProcess/Inspector/RemoteWebInspectorProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorProxy.cpp:

(WebKit::RemoteWebInspectorProxy::openURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::openInNewTab): Deleted.
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.

  • UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:

(WebKit::RemoteWebInspectorProxy::platformURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.

  • UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:

(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.

  • UIProcess/Inspector/win/RemoteWebInspectorProxyWin.cpp:

(WebKit::RemoteWebInspectorProxy::platformOpenURLExternally):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab): Deleted.
Rename openInNewTab to openURLExternally. In some cases the client
may not choose to present a new tab, so the name is no longer accurate.

  • UIProcess/Inspector/WebInspectorProxy.messages.in:
  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::inspectorWindow const):
(WebKit::WebInspectorProxy::openURLExternally):
(WebKit::WebInspectorProxy::evaluateInFrontendForTesting):

  • UIProcess/Inspector/mac/WebInspectorProxyMac.mm:

(-[WKWebInspectorProxyObjCAdapter inspectorViewController:openURLExternally:]):
Add some helpers for writing API tests. Add an IPC message
for evaluating a JavaScript expression in the frontend page.
Also, add a message receiver for the OpenURLExternally message
which passes the request to the API layer.

  • UIProcess/Inspector/mac/WKInspectorViewController.h:
  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):
Call the delegate method if a navigation inside the inspector WKWebView is an external URL.
Specifically the request is to load something other than the Web Inspector's main HTML page.

  • WebProcess/Inspector/WebInspector.cpp:

(WebKit::WebInspector::openInNewTab): Deleted.

  • WebProcess/Inspector/WebInspector.h:
  • WebProcess/Inspector/WebInspector.messages.in:

No need to handle this message anymore in the inspected WebProcess.

  • WebProcess/Inspector/RemoteWebInspectorUI.h:
  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:

(WebKit::RemoteWebInspectorUI::openURLExternally):
(WebKit::RemoteWebInspectorUI::openInNewTab): Deleted.

  • WebProcess/Inspector/WebInspectorUI.messages.in:
  • WebProcess/Inspector/WebInspectorUI.h:
  • WebProcess/Inspector/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::updateConnection):
(WebKit::WebInspectorUI::closeWindow):
(WebKit::WebInspectorUI::openURLExternally):
(WebKit::WebInspectorUI::evaluateInFrontendForTesting):
(WebKit::WebInspectorUI::openInNewTab): Deleted.
When we need to open the URL externally, send an IPC message to UIProcess.
The old implementation triggered the navigation from the inspected WebProcess.
That approach is no longer desirable. Remove the unneeded IPC connection.

  • WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.h:
  • WebProcess/Inspector/WebInspectorFrontendAPIDispatcher.cpp:

(WebKit::WebInspectorFrontendAPIDispatcher::evaluateExpressionForTesting):
Fulfill the request to evaluate the expression in the frontend page.

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Some files were added.

Tools:

Test the delegate using WebKit API and using InspectorFrontendHost API.

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(-[InspectorDelegate inspector:openURLExternally:]): Added.
(TEST):

9:00 AM Changeset in webkit [267410] by Truitt Savell
  • 4 edits in trunk/Tools

Unreviewed, reverting r267380.

Broke multiple test suites on Liberty

Reverted changeset:

"[webkitpy] Use webkitcorepy's auto installer for pytest
packages"
https://bugs.webkit.org/show_bug.cgi?id=215895
https://trac.webkit.org/changeset/267380

8:30 AM Changeset in webkit [267409] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

[ iOS wk2 ] compositing/clipping/border-radius-on-webgl.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=215324

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:28 AM Changeset in webkit [267408] by weinig@apple.com
  • 7 edits
    4 adds in trunk/Source/WebCore

[WebIDL] Split up Performance.idl into component partials
https://bugs.webkit.org/show_bug.cgi?id=216729

Reviewed by Darin Adler.

Split additions to the Peformance interface from the Navagation Timing,
Resource Timing, User Timing and Performance Timeline specs into their
own IDL files. Trying something new with the naming (using Performance
'+' name of the spec supplying the addition) for these partials to test
the waters.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • page/Performance+NavigationTiming.idl: Added.
  • page/Performance+PerformanceTimeline.idl: Added.
  • page/Performance+ResourceTiming.idl: Added.
  • page/Performance+UserTiming.idl: Added.
  • page/Performance.idl:
8:15 AM Changeset in webkit [267407] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

[iOS] Update fast/text/opticalFontWithTextStyle.html for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=215667

Unreviewed test gardening.

  • platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt:
7:59 AM Changeset in webkit [267406] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GTK] Mark compositing/video/video-update-rendering.html as flaky crash

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
7:54 AM Changeset in webkit [267405] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Start collecting telemetry from message filtering
<https://bugs.webkit.org/show_bug.cgi?id=216803>

Reviewed by Darin Adler.

Start collecting telemetry for message filtering in the WebContent sandbox on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
6:34 AM Changeset in webkit [267404] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] TextUtil::split needs logical left
https://bugs.webkit.org/show_bug.cgi?id=216798

Reviewed by Antti Koivisto.

Measuring text content requires logical left offset (e.g. tab size depends on the logical position).
Let's pass in the current logical left position to TextUtil::split.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::ContinuousContent::runs const):
(WebCore::Layout::ContinuousContent::isEmpty const):
(WebCore::Layout::ContinuousContent::logicalWidth const):
(WebCore::Layout::ContinuousContent::logicalLeft const):
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::isContentWrappingAllowed const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent):
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const):
(WebCore::Layout::LineBreaker::wrapTextContent const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::ContinuousContent::ContinuousContent):
(WebCore::Layout::ContinuousContent::hasTextContentOnly const):
(WebCore::Layout::ContinuousContent::isVisuallyEmptyWhitespaceContentOnly const):
(WebCore::Layout::ContinuousContent::firstTextRunIndex const):
(WebCore::Layout::ContinuousContent::lastContentRunIndex const):
(WebCore::Layout::ContinuousContent::hasNonContentRunsOnly const):
(WebCore::Layout::ContinuousContent::size const): Deleted.
(WebCore::Layout::ContinuousContent::width const): Deleted.
(WebCore::Layout::ContinuousContent::nonCollapsibleWidth const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

5:10 AM Changeset in webkit [267403] by youenn@apple.com
  • 6 edits in trunk

Move Media in GPU Process flag from internal to experimental
https://bugs.webkit.org/show_bug.cgi?id=216473
<rdar://problem/69318786>

Reviewed by Eric Carlson.

Source/WebKit:

No change of behavior.

  • Shared/WebPreferencesExperimental.yaml:
  • Shared/WebPreferencesInternal.yaml:

Tools:

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
Disable Media in GPU Process flag and WebRTC codec experimental features by default.
This can be overriden by WebKitTestRunner options.

1:46 AM Changeset in webkit [267402] by weinig@apple.com
  • 39 edits
    11 adds in trunk

Update User Timing interfaces to User Timing Level 3
https://bugs.webkit.org/show_bug.cgi?id=216787

Reviewed by Alex Christensen.
LayoutTests/imported/w3c:

Import missing case-sensitivity test case from upstream and update the results
of User Timing tests now that we support Level 3.

  • web-platform-tests/user-timing/case-sensitivity.any-expected.txt: Added.
  • web-platform-tests/user-timing/case-sensitivity.any.html: Added.
  • web-platform-tests/user-timing/case-sensitivity.any.js: Added.
  • web-platform-tests/user-timing/case-sensitivity.any.worker-expected.txt: Added.
  • web-platform-tests/user-timing/case-sensitivity.any.worker.html: Added.
  • web-platform-tests/user-timing/idlharness.any-expected.txt:
  • web-platform-tests/user-timing/idlharness.any.worker-expected.txt:
  • web-platform-tests/user-timing/mark-entry-constructor.any-expected.txt:
  • web-platform-tests/user-timing/mark-entry-constructor.any.worker-expected.txt:
  • web-platform-tests/user-timing/mark-errors.any-expected.txt:
  • web-platform-tests/user-timing/mark-errors.any.worker-expected.txt:
  • web-platform-tests/user-timing/mark-l3.any-expected.txt:
  • web-platform-tests/user-timing/mark-l3.any.worker-expected.txt:
  • web-platform-tests/user-timing/mark-measure-return-objects.any-expected.txt:
  • web-platform-tests/user-timing/mark-measure-return-objects.any.worker-expected.txt:
  • web-platform-tests/user-timing/measure-l3.any-expected.txt:
  • web-platform-tests/user-timing/measure-l3.any.worker-expected.txt:
  • web-platform-tests/user-timing/measure-with-dict.any-expected.txt:
  • web-platform-tests/user-timing/measure-with-dict.any.worker-expected.txt:
  • web-platform-tests/user-timing/measure_exception-expected.txt:
  • web-platform-tests/user-timing/performance-measure-invalid.worker-expected.txt:
  • web-platform-tests/user-timing/structured-serialize-detail.any-expected.txt:
  • web-platform-tests/user-timing/structured-serialize-detail.any.worker-expected.txt:

Source/WebCore:

Adds support for User Timing Level 3 which adds more flexibility in how PerformanceMarks
and PerformanceMeasures are created via synthetic start/end times and associate 'details'
values serialized with events themselves.

Updates results to existing WPT and standalone tests.

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

Add new files.

  • page/Performance.cpp:

(WebCore::Performance::mark):
(WebCore::Performance::clearMarks):
(WebCore::Performance::measure):
(WebCore::Performance::clearMeasures):

  • page/Performance.h:
  • page/Performance.idl:

Update for new signatures for mark and measure, and rename of UserTiming to PerformanceUserTiming.

  • page/PerformanceMark.cpp: Added.

(WebCore::peformanceNow):
(WebCore::PerformanceMark::create):
(WebCore::PerformanceMark::PerformanceMark):
(WebCore::PerformanceMark::detail):

  • page/PerformanceMark.h:
  • page/PerformanceMark.idl:

Add support for PerformanceMark's constructor detail getter. While the spec says to
serialize and the deserialize in the constructor, we only serialize, and delay deserialization
until the first access, which is a non-observable difference. We also utilize [CachedAttribute]
to only ever deserialize once per wrapper world (and also greatly simplify the GC shenanigans).

  • page/PerformanceMarkOptions.h: Added.
  • page/PerformanceMarkOptions.idl: Added.

Import and bind PerformanceMarkOptions dictionary to a new struct.

  • page/PerformanceMeasure.cpp: Added.

(WebCore::PerformanceMeasure::create):
(WebCore::PerformanceMeasure::PerformanceMeasure):
(WebCore::PerformanceMeasure::detail):

  • page/PerformanceMeasure.h:
  • page/PerformanceMeasure.idl:

Like with PerformanceMark, but there is no constructor here, so we only need to handle adding
support for the detail getter.

  • page/PerformanceMeasureOptions.h: Added.
  • page/PerformanceMeasureOptions.idl: Added.

Import and bind PerformanceMeasureOptions dictionary to a new struct.

  • page/PerformanceUserTiming.cpp:

(WebCore::restrictedMarkNamesToNavigationTimingFunctionMap):
(WebCore::restrictedMarkFunction):
(WebCore::isRestrictedMarkNameNonMainThread):
(WebCore::PerformanceUserTiming::isRestrictedMarkName):
Split up existing map to enable accessing it safely from a worker using conservative
callOnMainThreadAndWait approach, though since the map is immutable after initialization,
we can probably optimize this to allow concurrent querying in the future.

(WebCore::addPerformanceEntry):
Add helper, mirroring clearPerformanceEntries, to add entries.

(WebCore::PerformanceUserTiming::mark):
Matching the spec language, utilize the new PerformanceMark constructor to create
the mark.

(WebCore::PerformanceUserTiming::convertMarkToTimestamp const):
(WebCore::isNonEmptyDictionary):
(WebCore::PerformanceUserTiming::measure):
Implement measure support by dispatching various combinations of arguments to
overloads manually by inspecting the Variant.

  • page/PerformanceUserTiming.h:

Renames class from UserTiming to PerformanceUserTiming to match file names.

LayoutTests:

Update error text due to some changes in which exceptions are thrown due to
new support for User Timing Level 3.

  • performance-api/performance-measure-name-expected.txt:
  • performance-api/performance-now-api-expected.txt:
  • performance-api/user-timing-apis-expected.txt:
1:03 AM Changeset in webkit [267401] by youenn@apple.com
  • 5 edits in trunk

toRTCIceProtocol should handle ssltcp candidates
https://bugs.webkit.org/show_bug.cgi?id=216762

Reviewed by Darin Adler.

Source/WebCore:

Covered by mock WebRTC backend pushing ssltcp candidates.

  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:

(WebCore::toRTCIceProtocol):

  • testing/MockLibWebRTCPeerConnection.cpp:

LayoutTests:

  • fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:

Sep 21, 2020:

11:58 PM Changeset in webkit [267400] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Enable MediaRecorder by default on iOS
https://bugs.webkit.org/show_bug.cgi?id=216664

Reviewed by Darin Adler.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultMediaRecorderEnabled):

11:52 PM Changeset in webkit [267399] by Adrian Perez de Castro
  • 7 edits in trunk

[CMake] Use imported targets in find module for the ATK SPI2 bridge dependency
https://bugs.webkit.org/show_bug.cgi?id=216773

Reviewed by Don Olmstead.

.:

  • Source/cmake/FindATKBridge.cmake: Rewrite to define an ATK::Bridge imported target.
  • Source/cmake/OptionsWPE.cmake: Use the ATK::Bridge imported target.

Source/WebKit:

No new tests needed.

  • PlatformWPE.cmake: Use the ATK::Bridge imported target.

Tools:

  • wpe/backends/CMakeLists.txt: Use the ATK::Bridge imported target.
11:08 PM Changeset in webkit [267398] by Adrian Perez de Castro
  • 10 edits in trunk/Source

[GTK] Bump cairo version to support HiDPI
https://bugs.webkit.org/show_bug.cgi?id=133378

Reviewed by Carlos Garcia Campos.

Remove conditional compilation around cairo_{g,s}et_device_scale() as there is no need to
support older versions of Cairo which lack the functions. The minimum version of Cairo
being required by CMake is 1.14.0, which already includes them.

Source/WebCore:

No new tests needed.

  • platform/graphics/cairo/BackingStoreBackendCairoImpl.cpp:

(WebCore::createCairoImageSurfaceWithFastMalloc): Use cairo_surface_set_device_scale()
directly.
(WebCore::BackingStoreBackendCairoImpl::scroll): Use cairo_surface_get_device_scale()
directly.

  • platform/graphics/cairo/BackingStoreBackendCairoX11.cpp:

(WebCore::BackingStoreBackendCairoX11::BackingStoreBackendCairoX11): Use
cairo_surface_set_device_scale() directly.
(WebCore::BackingStoreBackendCairoX11::scroll): Use cairo_surface_get_device_scale()
directly.

  • platform/graphics/cairo/CairoUtilities.cpp: Remove helper functions

cairoSurfaceSetDeviceScale() and cairoSurfaceGetDeviceScale().

  • platform/graphics/cairo/CairoUtilities.h: Ditto.

Source/WebKit:

  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::ShareableBitmap::paint): use cairo_surface_set_device_scale() directly.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTakeViewSnapshot): Ditto.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::displayBuffer): Ditto.
(WebKit::AcceleratedBackingStoreWayland::downloadTexture): Ditto.

  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::AcceleratedBackingStoreX11::update): Ditto.

10:07 PM Changeset in webkit [267397] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKitLegacy/mac

Remove deprecated script and stylesheet injection SPI, replaced with more inclusively-named SPI
https://bugs.webkit.org/show_bug.cgi?id=214936

Patch by Alex Christensen <achristensen@webkit.org> on 2020-09-21
Reviewed by Youenn Fablet.

rdar://64376341 tracks the adoption of the replacement. Once that is done, we can remove the old SPI.

  • WebView/WebView.mm:

(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:]): Deleted.
(+[WebView _addUserScriptToGroup:world:source:url:whitelist:blacklist:injectionTime:injectedFrames:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:]): Deleted.
(+[WebView _addUserStyleSheetToGroup:world:source:url:whitelist:blacklist:injectedFrames:]): Deleted.

  • WebView/WebViewPrivate.h:
10:03 PM Changeset in webkit [267396] by Diego Pino Garcia
  • 3 edits
    1 delete in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Update baselines after r267389.

  • platform/glib/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt: Update after r267357.
  • platform/glib/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt: Removed.
9:56 PM Changeset in webkit [267395] by Paulo Matos
  • 2 edits in trunk/Source/JavaScriptCore

Fix MIPS leai,leap when offset is nonzero
https://bugs.webkit.org/show_bug.cgi?id=216772

Reviewed by Mark Lam.

Fix required by change from webkit#216685

  • offlineasm/mips.rb:
9:44 PM Changeset in webkit [267394] by timothy_horton@apple.com
  • 5 edits in trunk/Source

paper.io ad close buttons cannot be iteracted with via trackpad on iPad
https://bugs.webkit.org/show_bug.cgi?id=216812
<rdar://problem/68738585>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isPaperIO):

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(applicationIsKnownToIgnoreMouseEvents):

8:51 PM Changeset in webkit [267393] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r266058. rdar://problem/69343370

[ macOS wk1 Debug ] inspector/animation/nameChanged.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=215767

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266058 268f45cc-cd09-0410-ab3c-d52691b4dbfc

8:50 PM Changeset in webkit [267392] by Ryan Haddad
  • 3 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r266041. rdar://problem/69341725

Make fast/text/letter-spacing-shaping.html more robust
https://bugs.webkit.org/show_bug.cgi?id=215711

Unreviewed test gardening.

  • fast/text/letter-spacing-shaping-expected.html:
  • fast/text/letter-spacing-shaping.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266041 268f45cc-cd09-0410-ab3c-d52691b4dbfc

8:48 PM Changeset in webkit [267391] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r266494. rdar://problem/69341549

Rebaseline after macOS build progression.
Rebaseline fast/block/margin-collapse/103 for Mojave

Unreviewed test gardening.

  • platform/mac-mojave/fast/block/margin-collapse/103-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266494 268f45cc-cd09-0410-ab3c-d52691b4dbfc

8:48 PM Changeset in webkit [267390] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r266490. rdar://problem/69341549

Rebaseline after macOS build progression.
Rebaseline fast/block/margin-collapse/103 for Catalina

Unreviewed test gardening.

  • platform/mac-catalina/fast/block/margin-collapse/103-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

8:48 PM Changeset in webkit [267389] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] fast/mediastream/getUserMedia-webaudio.html is failing since 267383

Unreviewed test gardening.

  • platform/glib/TestExpectations:
6:30 PM Changeset in webkit [267388] by Chris Dumez
  • 4 edits in trunk

Value returned by AudioParamTimeline::valuesForTimeRange() is sometimes incorrect for exponential ramps
https://bugs.webkit.org/show_bug.cgi?id=216811

Reviewed by Darin Adler.

Source/WebCore:

AudioParamTimeline::valuesForTimeRangeImpl() always need to return the *last* value since this is
what will be used to update AudioParam::m_value to its latest value. We had a bug in our exponential
ramp processing causing value to be multiplied one extra time.

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioParam/audioparam-update-value-attribute-expected.txt:
5:37 PM Changeset in webkit [267387] by timothy@apple.com
  • 3 edits in trunk/Source/WebKit

Add some WKWebProcessPlugInFrame SPI needed by Safari.
https://bugs.webkit.org/show_bug.cgi?id=216809
rdar://problem/69336928

Reviewed by Brian Weinstein.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(+[WKWebProcessPlugInFrame lookUpFrameFromJSContext:]): Added.
(-[WKWebProcessPlugInFrame _securityOrigin]): Added.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFramePrivate.h:
5:17 PM Changeset in webkit [267386] by Chris Dumez
  • 5 edits in trunk

AudioBufferSourceNode should update grain parameters when buffer is set after rendering has started
https://bugs.webkit.org/show_bug.cgi?id=216808

Reviewed by Eric Carlson.

Source/WebCore:

AudioBufferSourceNode should update grain parameters when buffer is set after rendering has
started. The grain parameters need to be adjusted so that they make sense given the buffer
length. Previously, we would only update grain parameters in AudioBufferSourceNode::startPlaying(),
when a buffer is set. We would fail to update those grain parameters when the buffer is set,
in setBuffer(), if startPlaying() has already been called.

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startLater):
(WebCore::AudioBufferSourceNode::startPlaying):
(WebCore::AudioBufferSourceNode::updateGrainParameters):

  • Modules/webaudio/AudioBufferSourceNode.h:

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioBufferSource/audiobuffersource-loop-grain-no-duration-expected.txt:
4:49 PM Changeset in webkit [267385] by Andres Gonzalez
  • 3 edits in trunk/Source/WebKit

Make accessibility isolated tree a non-experimental feature.
https://bugs.webkit.org/show_bug.cgi?id=216792

Reviewed by Chris Fleizach.

Promote accessibility isolated tree from an experimental feature to a
non-experimental one. This avoids the problem where a user can turn off
the feature through the Safari > Develop > Experimental Features submenu,
while the accessibility request are still coming on a secondary thread,
which leads to random crashes.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesExperimental.yaml:
4:42 PM Changeset in webkit [267384] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, unskip webaudio/Analyser/handle-silent-inputs.html.

This test should no longer be flaky now that it is passing.

4:27 PM Changeset in webkit [267383] by Chris Dumez
  • 14 edits
    2 deletes in trunk

Values returned by FFTFrame::doFFT() are twice as large as they should be
https://bugs.webkit.org/show_bug.cgi?id=216781

Reviewed by Darin Adler.

Source/WebCore:

To provide the best possible execution speeds, the vDSP library's functions don't always adhere strictly
to textbook formulas for Fourier transforms, and must be scaled accordingly [1].

In the case of a Real forward Transform like in FFTFrame::doFFT(): RFimp = RFmath * 2 so we need to
divide the output by 2 to get the correct value. We were failing to do this scaling and this was causing
AnalyserNode tests to fail.

[1] See https://developer.apple.com/library/archive/documentation/Performance/Conceptual/vDSP_Programming_Guide/UsingFourierTransforms/UsingFourierTransforms.html#//apple_ref/doc/uid/TP40005147-CH3-SW5

No new tests, rebaselined existing tests.

  • Modules/webaudio/PeriodicWave.cpp:

(WebCore::PeriodicWave::createBandLimitedTables):
Update normalization factor now that FFTFrame::doInverseFFT() has been fixed. The new normalization factor
matches the value used by blink at:

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::multiply):
We were applying a 0.5 scaling factor to the output of vDSP_zvmul(). However, the documentation for vDSP_zvmul()
does not indicate that its output is twice as large as expected. Odds are that this was done because we used
to have a bug in FFTFrame::doFFT() that was returning values twice as large as expected. SInce this function
relies on VectorMath, there is no need for its implementation to be platform-specific.

  • platform/audio/FFTFrameStub.cpp:
  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:

(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in the GStreamer implementation that was added to try and be consistent with the incorrect Mac
implementation.

  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::FFTFrame::doFFT):
Fix issue where the values returned by doFFT() were twice as large as expected due to the odd behavior of
vDSP_fft_zrip().

(WebCore::FFTFrame::doInverseFFT):
Drop 2 factor in doInverseFFT that was added because the output of doFFT() was twice as large as expected
and we wanted x == InverseFFT(FFT(x)).

LayoutTests:

  • webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
  • webaudio/Analyser/realtimeanalyser-freq-data-expected.txt:
  • webaudio/Analyser/realtimeanalyser-freq-data-smoothing-expected.txt:
  • webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:

Rebaseline tests that are passing now that the bug has been fixed.

  • webaudio/realtimeanalyser-fft-scaling-expected.txt: Removed.
  • webaudio/realtimeanalyser-fft-scaling.html: Removed.

Drop outdated test. This test was imported into WPT and now resides at:

  • imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html
4:25 PM Changeset in webkit [267382] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[GPU Process] Several tests in canvas/philip/tests are failing with text diffs
https://bugs.webkit.org/show_bug.cgi?id=216800

Reviewed by Darin Adler.

When using the GPU process to render canvas elements, we currently fail the 7 tests in canvas/philip/tests
below, due to gradient and pattern fill/stroke styles lingering on the 2D graphics context state after a fill or
stroke color is set, respectively.

This happens when:

  1. The fill color is set to a color C.
  2. A fill pattern or gradient is applied.
  3. The fill color is set to the color C again.

In this case, after step (2), we propagate a graphics context state change indicating that the fill pattern has
changed, but we leave the fill color unchanged (i.e., it remains equal to C). In step (3), we then set the
fill color to C again, which doesn't propagate a state change to the GPU process, since the fill color is the
same (C). As such, the state in the GPU process keeps its fill gradient, and we end up filling with this old
gradient instead of the fill color C.

To fix this, we simply revert fillColor and strokeColor to the invalid color when setting a gradient or
pattern in the same way that we currently clear out the fill/stroke gradient and pattern when setting a fill/
stroke color, which ensures that a state change will be sent to the GPU process during step (3).

Fixes the following canvas-related layout tests when using the GPU process:

  • canvas/philip/tests/2d.gradient.radial.cone.shape2.html
  • canvas/philip/tests/2d.pattern.basic.nocontext.html
  • canvas/philip/tests/2d.pattern.paint.norepeat.coord3.html
  • canvas/philip/tests/2d.pattern.paint.repeatx.coord1.html
  • canvas/philip/tests/2d.pattern.paint.repeatx.outside.html
  • canvas/philip/tests/2d.pattern.paint.repeaty.coord1.html
  • canvas/philip/tests/2d.pattern.paint.repeaty.outside.html

The entire canvas/ directory is currently skipped when enabling the GPU process for canvas rendering, but once
we're down to a smaller number of failures, I intend to unskip these directories for GPU process, and
individually track any remaining test failures.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):

4:14 PM Changeset in webkit [267381] by Chris Dumez
  • 5 edits in trunk

Properly handle AudioParam.setTargetAtTime() followed by a ramp
https://bugs.webkit.org/show_bug.cgi?id=216804

Reviewed by Darin Adler.

Source/WebCore:

Properly handle AudioParam.setTargetAtTime() followed by a ramp:

This is a merge of the following Blink change:

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processSetTargetFollowedByRamp):

  • Modules/webaudio/AudioParamTimeline.h:

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:
4:10 PM Changeset in webkit [267380] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for pytest packages
https://bugs.webkit.org/show_bug.cgi?id=215895
<rdar://problem/67885471>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add pytest and it's dependencies.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove pytest and pytest_timeout.
(AutoinstallImportHook._install_pytest_timeout): Deleted.
(AutoinstallImportHook._install_pytest): Deleted.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Implicitly use webkitcorepy's autoinstaller.
4:09 PM Changeset in webkit [267379] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: Missing node for given nodeId
https://bugs.webkit.org/show_bug.cgi?id=216067
<rdar://problem/68520144>

Reviewed by Devin Rousso.

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
Rewrite showDetailsSidebarPanels in such way that causes no more than one change of selectedSidebarPanel.
Previously, removeSidebarPanel would cause the change of selectedSidebarPanel, resulting in showing
a panel with outdated this.domNode.

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

Display a useful error with a relevant location instead of a generic Connection.js error.

  • UserInterface/Views/Sidebar.js:

(WI.Sidebar.prototype.removeSidebarPanel):
After removing a panel, don't select the nearest panel. There doesn't seem to be a useful case for it.
The selected panel is determined at the removeSidebarPanel callsites.

3:59 PM Changeset in webkit [267378] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html
https://bugs.webkit.org/show_bug.cgi?id=214155

Unreviewed test gardening.

  • platform/ios/TestExpectations:
3:56 PM Changeset in webkit [267377] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove unused NodeFlag::HasCSSAnimation
https://bugs.webkit.org/show_bug.cgi?id=216785

Reviewed by Antti Koivisto.

  • dom/Element.h:

(WebCore::Element::hasCSSAnimation const): Deleted.
(WebCore::Element::setHasCSSAnimation): Deleted.
(WebCore::Element::clearHasCSSAnimation): Deleted.

  • dom/Node.h:
3:50 PM Changeset in webkit [267376] by Chris Dumez
  • 9 edits in trunk

Throw when AudioConnect::connect() is called for an output that has no channels
https://bugs.webkit.org/show_bug.cgi?id=216802

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline existing tests because I improved exception messages.

  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-expected.txt:

Source/WebCore:

Throw when AudioConnect::connect() is called for an output that has no channels, for consistency
with Blink. The ScriptProcessorNode cannot have an output node that has zero channels.

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::connect):

LayoutTests:

  • webaudio/MediaElementAudioSource/mediaelementaudiosourcenode-expected.txt:
  • webaudio/dom-exceptions-expected.txt:

Rebaseline existing tests because I improved exception messages.

  • webaudio/ScriptProcessor/scriptprocessornode-0-output-channels-expected.txt:

Rebaseline test that is now passing.

3:29 PM Changeset in webkit [267375] by Russell Epstein
  • 1 copy in tags/Safari-610.2.7

Tag Safari-610.2.7.

3:21 PM Changeset in webkit [267374] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

[iOS] Update fast/text/opticalFontWithTextStyle.html for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=215667

Unreviewed test gardening.

  • platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt:
3:10 PM Changeset in webkit [267373] by ysuzuki@apple.com
  • 18 edits
    3 adds in trunk

[JSC] BigInt should work with Map / Set
https://bugs.webkit.org/show_bug.cgi?id=216667
JSTests:

<rdar://problem/69107221>

Reviewed by Robin Morisset.

  • stress/bigint-and-map-set.js: Added.

(shouldBe):
(opaque1n):
(testMap):
(let.set new):

  • stress/bigint-string-map-set.js: Added.

(shouldBe):
(testMap):

  • stress/bigint32-map-set.js: Added.

(shouldBe):
(testMap):

Source/JavaScriptCore:

Reviewed by Robin Morisset.

This patch makes BigInt supported in Map / Set.

  1. In NormalizeMapKey, we always attempt to convert HeapBigInt to BigInt32 (if supported). So we ensure that,

normalized BigInt has one unique form for BigInt32 range. This allows us to use hashing for BigInt32 bit pattern directly.

  1. In MapHash, for BigInt32, we directly has the JSValue bits. For HeapBigInt, we calculate hash via Hasher.
  2. In GetMapBucket, we consider HeapBigInt case correctly.
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupNormalizeMapKey):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNormalizeMapKey):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileMapHash):
(JSC::FTL::DFG::LowerDFGToB3::compileNormalizeMapKey):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket):

  • runtime/HashMapImpl.h:

(JSC::normalizeMapKey):
(JSC::jsMapHash):
(JSC::concurrentJSMapHash):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::concurrentHash):

  • runtime/JSBigInt.h:

(JSC::tryConvertToBigInt32):

Source/WebCore:

<rdar://problem/69107221>

Reviewed by Robin Morisset.

Strongly ensure that BigInt32 is always selected since Map / Set could use it as a key.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readBigInt):

Source/WTF:

Reviewed by Robin Morisset.

  • wtf/Hasher.h:

(WTF::Hasher::hash const):
(WTF::add):

3:03 PM Changeset in webkit [267372] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Tapping to zoom in and out causes video to become very small on some iPhone models
https://bugs.webkit.org/show_bug.cgi?id=216635

Reviewed by Jer Noble.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerLayer resolveBounds]): On some iPhone models, AVKit does not
change "bounds" of WebAVPlayerLayer after changing its video gravity. Therefore,
in this function, "modelVideoLayerFrame" and "bounds" might be the same. But we
still need to update the video layer frame in the Web process.

(-[WebAVPlayerLayer setVideoGravity:]): On some iPhone models, AVKit does
not call -[WebAVPlayerLayer:layoutSublayers] immediately after changing
the video gravity. Forcing a layout can fix that.

3:01 PM Changeset in webkit [267371] by mark.lam@apple.com
  • 21 edits in trunk/Source

Move some LLInt globals into JSC::Config.
https://bugs.webkit.org/show_bug.cgi?id=216685
rdar://68964544

Reviewed by Keith Miller.

Source/bmalloc:

Introduce ConfigAlignment to match WTFConfig.h.
Added BENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) support to match WTF.

  • bmalloc/BPlatform.h:
  • bmalloc/Gigacage.cpp:

(Gigacage::ensureGigacage):

  • bmalloc/GigacageConfig.h:
  • bmalloc/mbmalloc.cpp:

Source/JavaScriptCore:

  1. Moved the following into g_jscConfig:

Data::s_exceptionInstructions ==> g_jscConfig.llint.exceptionInstructions
Data::s_wasmExceptionInstructions ==> g_jscConfig.llint.wasmExceptionInstructions
g_opcodeMap ==> g_jscConfig.llint.opcodeMap
g_opcodeMapWide16 ==> g_jscConfig.llint.opcodeMapWide16
g_opcodeMapWide32 ==> g_jscConfig.llint.opcodeMapWide32

  1. Fixed cloop.rb so that it can take an offset for the leap offlineasm instruction.
  2. Fixed x86.rb so that it can take an offset for the leap offlineasm instruction.
  3. Fixed arm.rb so that it can take an offset for the leap offlineasm instruction.

Note: arm64.rb already does this right.

  1. Added JSC::Config::singleton() to return a reference to g_jscConfig. This is useful when debugging with lldb since g_jscConfig is not an actual label, but is a macro that computes the address of the Config record.

This patch has been smoke tested on arm64e, x86_64, and cloop (on x86_64 and armv7k).

  • llint/LLIntData.cpp:

(JSC::LLInt::LLIntInitializeAssertScope::LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::~LLIntInitializeAssertScope):
(JSC::LLInt::LLIntInitializeAssertScope::assertInitializationIsAllowed):
(JSC::LLInt::initialize):

  • llint/LLIntData.h:

(JSC::LLInt::exceptionInstructions):
(JSC::LLInt::wasmExceptionInstructions):
(JSC::LLInt::opcodeMap):
(JSC::LLInt::opcodeMapWide16):
(JSC::LLInt::opcodeMapWide32):
(JSC::LLInt::getOpcode):
(JSC::LLInt::getOpcodeWide16):
(JSC::LLInt::getOpcodeWide32):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter.cpp:
  • llint/LowLevelInterpreter64.asm:
  • llint/WebAssembly.asm:
  • offlineasm/arm.rb:
  • offlineasm/cloop.rb:
  • offlineasm/x86.rb:
  • runtime/JSCConfig.cpp:

(JSC::Config::singleton):

  • runtime/JSCConfig.h:

Source/WTF:

  1. Introduce ConfigAlignment as a distinct value from ConfigSizeToProtect. This is because ConfigSizeToProtect is now larger than 1 CeilingOnPageSize on some platforms, but ConfigAlignment only needs to match CeilingOnPageSize.
  1. Introduced ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) to disable using the unified g_config record for Windows ports.

This is needed because WTF is built as a DLL on Windows. offlineasm does not
know how to resolve a DLL exported variable. Additionally, the Windows ports
have never supported freezing of the Config record to begin with. So, we're
working around this by disabling ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
for Windows. This allows JSC to have its own g_jscConfig record, which solves
this issue for now.

  • wtf/PlatformEnable.h:
  • wtf/WTFConfig.cpp:

(WTF::Config::permanentlyFreeze):

  • wtf/WTFConfig.h:
2:45 PM Changeset in webkit [267370] by basuke.suzuki@sony.com
  • 14 edits in trunk/Source

[WinCairo][PlayStation] Support different instances of listener client.
https://bugs.webkit.org/show_bug.cgi?id=216733

Reviewed by Don Olmstead.

Source/JavaScriptCore:

Currently RemoteInspectorSocketEndpoint support one client instance for all
listeners. This patch allows listeners to create its own listener client on
accept timing.

  • inspector/remote/RemoteControllableTarget.h:
  • inspector/remote/RemoteInspector.h:
  • inspector/remote/socket/RemoteInspectorConnectionClient.cpp:

(Inspector::RemoteInspectorConnectionClient::didReceive):

  • inspector/remote/socket/RemoteInspectorConnectionClient.h:
  • inspector/remote/socket/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::start):
(Inspector::RemoteInspectorServer::doAccept):

  • inspector/remote/socket/RemoteInspectorServer.h:
  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::didClose):

  • inspector/remote/socket/RemoteInspectorSocket.h:
  • inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp:

(Inspector::RemoteInspectorSocketEndpoint::RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::~RemoteInspectorSocketEndpoint):
(Inspector::RemoteInspectorSocketEndpoint::listenInet):
(Inspector::RemoteInspectorSocketEndpoint::workerThread):
(Inspector::RemoteInspectorSocketEndpoint::generateConnectionID):
(Inspector::RemoteInspectorSocketEndpoint::createClient):
(Inspector::RemoteInspectorSocketEndpoint::disconnect):
(Inspector::RemoteInspectorSocketEndpoint::createListener):
(Inspector::RemoteInspectorSocketEndpoint::invalidateClient):
(Inspector::RemoteInspectorSocketEndpoint::invalidateListener):
(Inspector::RemoteInspectorSocketEndpoint::getPort const):
(Inspector::RemoteInspectorSocketEndpoint::recvIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::sendIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::send):
(Inspector::RemoteInspectorSocketEndpoint::acceptInetSocketIfEnabled):

  • inspector/remote/socket/RemoteInspectorSocketEndpoint.h:

Source/WebKit:

Follows the change of RemoteInspectorSocketEndpoint::Client interface change.

No new tests because there's no behaivior change.

  • UIProcess/Inspector/socket/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::didClose):

  • UIProcess/Inspector/socket/RemoteInspectorClient.h:
2:32 PM Changeset in webkit [267369] by jiewen_tan@apple.com
  • 13 edits in trunk

[WebAuthn] Don't set the UV option if the authenticator doesn't support it
https://bugs.webkit.org/show_bug.cgi?id=215836
<rdar://problem/67817359>

Reviewed by Darin Adler.

Source/WebCore:

Covered by new API tests.

UV in the the CTAP 2.0 spec only means internal UV:
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorGetInfo

If an authenticator supports ClientPin, it can set the uv bit in the responses to true but it
will not advertise itself supporting internal UV, which is the uv in the options.
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorMakeCredential

Hence, setting it to true could result in error if the authenticator doesn't support internal UV even if it supports ClientPin.
It's not a way to ask the authenticator to set the uv bit in the response.

  • Modules/webauthn/fido/DeviceRequestConverter.cpp:

(fido::encodeMakeCredenitalRequestAsCBOR):
(fido::encodeGetAssertionRequestAsCBOR):

Tools:

  • TestWebKitAPI/Tests/WebCore/CtapRequestTest.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

  • http/wpt/webauthn/public-key-credential-create-failure-hid-silent.https.html:
  • http/wpt/webauthn/public-key-credential-create-failure-hid.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-hid-silent.https.html:
  • http/wpt/webauthn/public-key-credential-get-failure-hid.https.html:
2:20 PM Changeset in webkit [267368] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for moz* packages
https://bugs.webkit.org/show_bug.cgi?id=215889
<rdar://problem/67877935>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add mozprocess, mozlog and mozterm to AutoInstalled packages.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove mozlog and mozprocess.
(AutoinstallImportHook._install_mozlog): Deleted.
(AutoinstallImportHook._install_mozprocess): Deleted.

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py: Implicitly use webkitcorepy's auto-installer.
2:17 PM Changeset in webkit [267367] by Chris Dumez
  • 6 edits in trunk

AudioParam.exponentialRampToValueAtTime() does not properly deal with negative values
https://bugs.webkit.org/show_bug.cgi?id=216790

Reviewed by Eric Carlson.

Source/WebCore:

AudioParam.exponentialRampToValueAtTime() does not properly deal with negative values.
The specification [1] says:
"If V0 and V1 have opposite signs or if V0 is zero, then v(t) = V0 for T0 <= t < T1."

Our implementation did not match the specification and would just special-case if either
V0 or V1 was negative.

[1] https://www.w3.org/TR/webaudio/#dom-audioparam-exponentialramptovalueattime

No new tests, rebaselined existing test.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):

LayoutTests:

Rebaseline test that is now passing.

  • webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
1:57 PM Changeset in webkit [267366] by youenn@apple.com
  • 7 edits
    2 adds in trunk

[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>

Reviewed by Eric Carlson.

Source/WebCore:

Update MediaRecorderPrivateWriterCocoa to pass a MediaSample down to handle rotation.
Set AVAssetWriterInput transform according the first MediaSample rotation value.

Test: http/wpt/mediarecorder/video-rotation.html

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):

Source/WebKit:

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::videoSampleAvailable):

LayoutTests:

  • http/wpt/mediarecorder/video-rotation-expected.txt: Added.
  • http/wpt/mediarecorder/video-rotation.html: Added.
1:55 PM Changeset in webkit [267365] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for six
https://bugs.webkit.org/show_bug.cgi?id=215770
<rdar://problem/67683133>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_mechanize): Remove six.
(AutoinstallImportHook._install_pytest): Ditto.
(AutoinstallImportHook._install_six): Deleted.

1:41 PM Changeset in webkit [267364] by keith_miller@apple.com
  • 56 edits in trunk/Source

Functions should consistently enumerate length before name
https://bugs.webkit.org/show_bug.cgi?id=216789

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

In https://github.com/tc39/ecma262/pull/2116, which has been
approved to be merged into the main JS spec, it's expected that
all functions should have their length property enumerated before
the name property. To ensure this invariant, this patch moves the
length set into InternalFunction::finishCreation.

There are no new tests since tests will be added to test262 when
the spec PR is merged. Adding tests to stress just means we will
have the same test twice, which seems like a waste.

  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::finishCreation):

  • API/ObjCCallbackFunction.mm:

(JSC::ObjCCallbackFunction::create):

  • API/glib/JSCCallbackFunction.cpp:

(JSC::JSCCallbackFunction::create):

  • runtime/AggregateErrorConstructor.cpp:

(JSC::AggregateErrorConstructor::finishCreation):

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):

  • runtime/AsyncFunctionConstructor.cpp:

(JSC::AsyncFunctionConstructor::finishCreation):

  • runtime/AsyncGeneratorFunctionConstructor.cpp:

(JSC::AsyncGeneratorFunctionConstructor::finishCreation):

  • runtime/BigIntConstructor.cpp:

(JSC::BigIntConstructor::finishCreation):

  • runtime/BooleanConstructor.cpp:

(JSC::BooleanConstructor::finishCreation):

  • runtime/DateConstructor.cpp:

(JSC::DateConstructor::finishCreation):

  • runtime/ErrorConstructor.cpp:

(JSC::ErrorConstructor::finishCreation):

  • runtime/FinalizationRegistryConstructor.cpp:

(JSC::FinalizationRegistryConstructor::finishCreation):

  • runtime/FunctionConstructor.cpp:

(JSC::FunctionConstructor::finishCreation):

  • runtime/FunctionPrototype.cpp:

(JSC::FunctionPrototype::finishCreation):

  • runtime/GeneratorFunctionConstructor.cpp:

(JSC::GeneratorFunctionConstructor::finishCreation):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createFunctionThatMasqueradesAsUndefined):

  • runtime/InternalFunction.h:
  • runtime/IntlCollatorConstructor.cpp:

(JSC::IntlCollatorConstructor::finishCreation):

  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::IntlDateTimeFormatConstructor::finishCreation):

  • runtime/IntlDisplayNamesConstructor.cpp:

(JSC::IntlDisplayNamesConstructor::finishCreation):

  • runtime/IntlLocaleConstructor.cpp:

(JSC::IntlLocaleConstructor::finishCreation):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::IntlNumberFormatConstructor::finishCreation):

  • runtime/IntlPluralRulesConstructor.cpp:

(JSC::IntlPluralRulesConstructor::finishCreation):

  • runtime/IntlRelativeTimeFormatConstructor.cpp:

(JSC::IntlRelativeTimeFormatConstructor::finishCreation):

  • runtime/IntlSegmenterConstructor.cpp:

(JSC::IntlSegmenterConstructor::finishCreation):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::JSGenericArrayBufferConstructor<sharingMode>::finishCreation):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::JSGenericTypedArrayViewConstructor<ViewClass>::finishCreation):

  • runtime/JSTypedArrayViewConstructor.cpp:

(JSC::JSTypedArrayViewConstructor::finishCreation):

  • runtime/MapConstructor.cpp:

(JSC::MapConstructor::finishCreation):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructorBase::finishCreation):

  • runtime/NullGetterFunction.h:
  • runtime/NullSetterFunction.h:
  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/ProxyConstructor.cpp:

(JSC::ProxyConstructor::finishCreation):

  • runtime/ProxyRevoke.cpp:

(JSC::ProxyRevoke::finishCreation):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::finishCreation):

  • runtime/SetConstructor.cpp:

(JSC::SetConstructor::finishCreation):

  • runtime/StringConstructor.cpp:

(JSC::StringConstructor::finishCreation):

  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::finishCreation):

  • runtime/WeakMapConstructor.cpp:

(JSC::WeakMapConstructor::finishCreation):

  • runtime/WeakObjectRefConstructor.cpp:

(JSC::WeakObjectRefConstructor::finishCreation):

  • runtime/WeakSetConstructor.cpp:

(JSC::WeakSetConstructor::finishCreation):

  • wasm/js/WebAssemblyCompileErrorConstructor.cpp:

(JSC::WebAssemblyCompileErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyGlobalConstructor.cpp:

(JSC::WebAssemblyGlobalConstructor::finishCreation):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::WebAssemblyInstanceConstructor::finishCreation):

  • wasm/js/WebAssemblyLinkErrorConstructor.cpp:

(JSC::WebAssemblyLinkErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyMemoryConstructor.cpp:

(JSC::WebAssemblyMemoryConstructor::finishCreation):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::WebAssemblyModuleConstructor::finishCreation):

  • wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:

(JSC::WebAssemblyRuntimeErrorConstructor::finishCreation):

  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::WebAssemblyTableConstructor::finishCreation):

Source/WebCore:

RuntimeMethod inherits from InternalFunction which now sets length by default.
RuntimeMethod intercepts length in getOwnPropertySlot so the value we pick
doesn't actually matter. Technically, this uses a little extra memory but
that's not too big of a deal because RuntimeMethod's are rare (and I believe
deprecated).

  • bridge/runtime_method.cpp:

(JSC::RuntimeMethod::finishCreation):

Source/WebKit:

JSNPMethod inherits from InternalFunction which now sets length by default.
I chose 0 because it looks like this function doesn't directly look at any
arguments and I doubt anyone is looking at the length anyway.

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:

(WebKit::JSNPMethod::finishCreation):

1:28 PM Changeset in webkit [267363] by Darin Adler
  • 41 edits in trunk/Source

Next step towards eliminating deprecated legacy positions
https://bugs.webkit.org/show_bug.cgi?id=216751

Reviewed by Sam Weinig.

Source/WebCore:

Eliminating our old deprecated legacy editing positions is probably a relatively long
road. This next step starts using the makeContainerOffsetPosition function in more
places, requesting that we not use any of the deprecated legacy position logic. Also
renames createLegacyEditingPosition to makeDeprecatedLegacyPosition. The hard part of
this project will be removing code that is not inside Position that depends on the old
style of position/offset pairs. For this patch, tried to stick to converting cases
where it seems clear we don't depend on the legacy behavior. Flaw in that is that we
might still depend on legacy behavior where it's unconditionally implemented, without
checking the flag on the m_isLegacyEditingPosition Position class; that will be a
problem long term, should not be in this patch.

  • dom/Position.h:

(WebCore::createLegacyEditingPosition): Deleted.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::visiblePositionForTextMarkerData):
(WebCore::AXObjectCache::rangeMatchesTextNearRange):
(WebCore::AXObjectCache::visiblePositionFromCharacterOffset):
(WebCore::AXObjectCache::localCaretRectForCharacterOffset):
(WebCore::AXObjectCache::indexForCharacterOffset):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::stringForRange const):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::linkClickPoint):
(WebCore::AccessibilityRenderObject::setSelectedTextRange):
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange const):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]):

  • dom/Position.cpp:

(WebCore::Position::previous const):
(WebCore::Position::next const):
(WebCore::Position::downstream const):

  • dom/PositionIterator.cpp:

(WebCore::PositionIterator::operator Position const):

  • dom/Range.cpp:

(WebCore::Range::expand):

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):
(WebCore::AlternativeTextController::applyAlternativeTextToRange):

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::applyBlockStyle):

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::moveParagraphs):

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::handleGeneralDelete):

  • editing/Editing.cpp:

(WebCore::visiblePositionForIndex):
(WebCore::visiblePositionForIndexUsingCharacterIterator):
(WebCore::isNodeVisiblyContainedWithin):

  • editing/Editor.cpp:

(WebCore::Editor::canDeleteRange const):
(WebCore::Editor::selectComposition):
(WebCore::Editor::advanceToNextMisspelling):
(WebCore::Editor::markAndReplaceFor):
(WebCore::Editor::firstRectForRange const):
(WebCore::extendSelection):
(WebCore::Editor::adjustedSelectionRange):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::elementRangeContainingCaretSelection const):

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::doApplyForSingleParagraph):

  • editing/RenderedPosition.cpp:

(WebCore::RenderedPosition::positionAtLeftBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::positionAtRightBoundaryOfBiDiRun const):

  • editing/TextCheckingHelper.cpp:

(WebCore::expandToParagraphBoundary):
(WebCore::TextCheckingParagraph::expandRangeToNextEnd):
(WebCore::TextCheckingHelper::findFirstMisspelledWordOrUngrammaticalPhrase const):

  • editing/TextIterator.cpp:

(WebCore::resolveCharacterRange):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::appendTrailingWhitespace):

  • editing/VisibleUnits.cpp:

(WebCore::previousRootInlineBoxCandidatePosition):
(WebCore::nextRootInlineBoxCandidatePosition):
(WebCore::previousBoundary):
(WebCore::nextBoundary):
(WebCore::startOfDocument):
(WebCore::endOfDocument):
(WebCore::closestWordBoundaryForPosition):
(WebCore::wordBoundaryForPositionWithoutCrossingLine):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::HTMLConverter):

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::setTextAsChildOfElement):

  • editing/markup.cpp:

(WebCore::serializePreservingVisualAppearance):
(WebCore::contextPreservesNewline):
(WebCore::createFragmentFromText):

  • page/DragController.cpp:

(WebCore::DragController::insertDroppedImagePlaceholdersAtCaret):

  • page/Page.cpp:

(WebCore::Page::replaceRangesWithText):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::interpretationsForCurrentRoot const):

  • platform/DragImage.cpp:

(WebCore::createDragImageForRange):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForBox const):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::createVisiblePosition const):
(WebCore::RenderObject::collectSelectionRectsInternal):

  • testing/Internals.cpp:

(WebCore::Internals::setSelectionWithoutValidation):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::extendSelection):
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPage::requestAutocorrectionData):
(WebKit::WebPage::applyAutocorrectionInternal):
(WebKit::focusedElementPositionInformation):
(WebKit::dataDetectorLinkPositionInformation):
(WebKit::WebPage::requestDocumentEditingContext):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebVisiblePosition.mm:

(-[DOMNode startPosition]):
(-[DOMNode endPosition]):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.

Source/WebKitLegacy/mac:

  • DOM/DOMUIKitExtensions.mm:

(-[DOMNode rangeOfContainingParagraph]):

  • WebView/WebFrame.mm:

(-[WebFrame spaceFollowsWordInRange:]):
(-[WebFrame caretRectAtNode:offset:affinity:]):
(-[WebFrame focusedNodeHasContent]):
Replaced calls to createLegacyEditingPosition with calls to
makeDeprecatedLegacyPosition or makeContainerOffsetPosition.

1:23 PM Changeset in webkit [267362] by Darin Adler
  • 6 edits in trunk

Selection API: A few more refinements to DOMSelection and VisibleSelection to pass all WPT tests
https://bugs.webkit.org/show_bug.cgi?id=216756

Reviewed by Ryosuke Niwa.

Source/WebCore:

After these changes, we pass all the tests in imported/w3c/web-platform-tests/selection
with no failures except for one due to the rules about absorbing newlines at the start
and end <style> and <script> elements.

However, that's with the live selection range feature enabled, and there are likely issues
with other tests in that mode, so that testing still needs to be done. Then we also have to
decide how we are going to deal with the compatibility risk of changing the behavior to
match the standard.

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::VisibleSelection): Updated to rename m_baseIsFirst to
m_anchorIsFirst. Not required for the fix, but helpful for clarity.
(WebCore::VisibleSelection::uncanonicalizedStart const): Ditto.
(WebCore::VisibleSelection::uncanonicalizedEnd const): Ditto.
(WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents): Compute whether
the anchor is first *before* canonicalization, otherwise we will reverse the two
if their canonical values are equal. Canonicalization is not allowed to change
the ordering other than making two values equal.
(WebCore::VisibleSelection::validate): Updated for name.
(WebCore::VisibleSelection::setWithoutValidation): Ditto, also tweaked other names in the
function and removed an if statement.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries): Ditto.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries): Ditto.

  • editing/VisibleSelection.h: Renamed m_baseIsFirst to m_anchorIsFirst and improved the

comment about m_isDirectional.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::anchorPosition const): Removed use of parentAnchoredEquivalent.
The name makes it sound like it would be useful, but really it just triggers some
editing behaviors that don't belong in Position code.
(WebCore::DOMSelection::focusPosition const): Ditto.
(WebCore::DOMSelection::basePosition const): Ditto.
(WebCore::DOMSelection::extentPosition const): Ditto.
(WebCore::DOMSelection::collapse): Reversed the order of the document check and the
check for invalid nodes and offsets. There are some inconsistencies between the
specification and WPT but for now matching WPT seems like the way to go.
(WebCore::DOMSelection::setBaseAndExtent): Ditto.
(WebCore::DOMSelection::extend): Use VisibleSelection::setExtent, which does exactly
what we want, rather than FrameSelection::setExtent, which does not. In the future
we may want to cut down on the number of subtly-different selection functions,
like these two, but for now this fixes this DOM method to work as specified.

LayoutTests:

  • editing/inserting/insert-list-in-table-cell-07-expected.txt: Updated results

for a slight change in where the insertion point ends up. This is neither a
progression nor a regression, but this is also a very strange edge case. It
would be better at some point to enhance the editing code so the selection stays
intact, which I think means that the entire table body would be selected, but
the current behavior, before this patch and after, yields an insertion point.

1:22 PM Changeset in webkit [267361] by Chris Dumez
  • 9 edits in trunk

Remove emphasis/de-emphasis filters from DynamicsCompressor
https://bugs.webkit.org/show_bug.cgi?id=216796

Reviewed by Darin Adler.

Source/WebCore:

Remove emphasis/de-emphasis filters from DynamicsCompressor as these have been removed
from the specification.

This is a merge of the following Blink change:

No new tests, rebaselined existing tests.

  • platform/audio/DynamicsCompressor.cpp:

(WebCore::DynamicsCompressor::DynamicsCompressor):
(WebCore::DynamicsCompressor::process):
(WebCore::DynamicsCompressor::reset):
(WebCore::DynamicsCompressor::setNumberOfChannels):

  • platform/audio/DynamicsCompressor.h:
  • platform/audio/DynamicsCompressorKernel.cpp:

(WebCore::DynamicsCompressorKernel::process):
(WebCore::DynamicsCompressorKernel::tailTime const):

  • platform/audio/DynamicsCompressorKernel.h:

LayoutTests:

Rebaseline tests that are now passing.

  • webaudio/AudioParam/audioparam-processing-expected.txt:
  • webaudio/DynamicsCompressor/dynamicscompressor-clear-internal-state-expected.txt:
  • webaudio/DynamicsCompressor/dynamicscompressor-simple-expected.txt:
1:08 PM Changeset in webkit [267360] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Timelines: remove "stop requested" marker
https://bugs.webkit.org/show_bug.cgi?id=216423

Patch by Patrick Angle <Patrick Angle> on 2020-09-21
Reviewed by Devin Rousso.

Removed the "Stop Requested" timeline marker, which was made unneccesary in r267038 which makes the recording
head marker stop at the moment the stop was requested, even if more time is required to complete the processing
of incoming data.

  • UserInterface/Models/TimelineMarker.js:
  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineOverview):
(WI.TimelineOverview.prototype._recordingReset):
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged):

  • UserInterface/Views/TimelineRuler.css:

(.timeline-ruler > .markers > .marker.current-time::after):
(.timeline-ruler > .markers > .marker.stopping-time): Deleted.
(.timeline-ruler > .markers > .marker:matches(.stopping-time, .current-time)::after): Deleted.
(@media (prefers-color-scheme: dark) .timeline-ruler > .markers > .marker.stopping-time): Deleted.

  • UserInterface/Views/TimelineRuler.js:

(WI.TimelineRuler.prototype.addMarker):

1:07 PM Changeset in webkit [267359] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Adjust the human readable names some GPU process internal feature flags
https://bugs.webkit.org/show_bug.cgi?id=216794

Reviewed by Darin Adler.

Change the human readable names so that all the GPU-process-specific internal features start are of the form
"Use GPU Process…".

  • Shared/WebPreferencesInternal.yaml:
1:02 PM Changeset in webkit [267358] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

Enable AddressSanitizer in C++ std library templates
<https://webkit.org/b/216746>

Reviewed by Darin Adler.

This change also prevents duplicate command-line switches from
being passed to clang since OTHER_CFLAGS is used when compiling
C++ sources.

  • sanitizer/asan.xcconfig:

(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES): Add.

  • Undefines _LIBCPP_HAS_NO_ASAN macro to enable ASan for C++ std library templates.
  • sanitizer/sanitizer.xcconfig:

(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES): Add.

  • Provide placeholder.

(OTHER_CPLUSPLUSFLAGS):

  • Switch from WK_SANITIZER_OTHER_CFLAGS_ prefix to WK_SANITIZER_OTHER_CPLUSPLUSFLAGS_ prefix.
12:51 PM Changeset in webkit [267357] by Chris Dumez
  • 14 edits
    2 deletes in trunk

Vectorize linearRampToValueAtTime processing in AudioParamTimeline
https://bugs.webkit.org/show_bug.cgi?id=216788

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:

Source/WebCore:

Vectorize linearRampToValueAtTime processing in AudioParamTimeline. This patch is based on
the Blink implementation at [1] but updated to use VectorMath to work on more platforms.

We were failing some tests due to precision issues in our linearRampToValueAtTime implementation.
Those tests are now passing since our implementation matches Blink's more closely.

[1] https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processLinearRamp):

  • Modules/webaudio/AudioParamTimeline.h:

LayoutTests:

  • webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt:
  • webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
  • webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:

Rebaseline existing tests now that more checks are passing.

  • webaudio/audioparam-linearRampToValueAtTime-expected.txt: Removed.
  • webaudio/audioparam-linearRampToValueAtTime.html: Removed.

Drop outdated test. This test was imported into WPT and now resides at:

  • imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html
12:34 PM Changeset in webkit [267356] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.30.1

WPE WebKit 2.30.1

12:34 PM Changeset in webkit [267355] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.30

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.30.1 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.30.1.
12:31 PM Changeset in webkit [267354] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests/imported/w3c

Increase the maximum number of open files for wpt's servers
https://bugs.webkit.org/show_bug.cgi?id=215829

Patch by Sam Sneddon <Sam Sneddon> on 2020-09-21
Reviewed by Youenn Fablet.

macOS has a much lower limits than other OSes by default, and the iOS bots often run into it with their level of parallel test execution. This bumps the limit for each wptserve process up to 2048, which is double the limit on Debian, and should probably be safe.

  • web-platform-tests/tools/serve/serve.py:

(ServerProc.create_daemon):

12:18 PM Changeset in webkit [267353] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Make ews-app robust against config.json issues (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=216705

Unreviewed follow-up fix to change a log statement.

  • BuildSlaveSupport/ews-app/ews/common/buildbot.py:

(Buildbot.update_icons_for_queues_mapping):

12:17 PM Changeset in webkit [267352] by James Savage
  • 3 edits
    2 adds in trunk/Source/WebKit

WKWebView Swift overlay has mis-annotated nullability for evaluateJavaScript
<http://webkit.org/b/216198>
<rdar://problem/68035950>

Reviewed by Darin Adler.

Due to a mistranslation of evaluateJavaScript, we are vending an API which does not expect
to receive nil as a valid result value. This change fixes the crash, but does not yet fix
the API to have the correct signature. That will come in a later patch.

To fix the crash, we need to produce a valid Result<Any, Error> to pass back to clients.
Fortunately, instead of inventing something clever, we can just use nil. It's valid to box
optional values into Any, and clients can technically retrieve them with the right dynamic cast
as well. Since client code must be using dynamic casting to convert the result Any to a usable
type, and because in the case where we now return a new value at runtime we would have previously
crashed, this shouldn't have any binary compatibility impact either.

To better validate these changes, I also add new unit tests for the conversion of JavaScript
results into Swift values, including a test for the deprecated API.

  • SwiftOverlay/SwiftOverlay/ObjectiveCBlockConversions.swift: Added. For clarity I'm factoring

helper methods into a single namespace, as it also makes a nice place to document their expectations.
(ObjectiveCBlockConversion.exclusive.exclusive(_:)): This is renamed from the free function,

makeResultHandler(_:). It still has the same fatalError (now precondition) as before, but
hopefully a better name to clarify that it expects exactly-one value.

(ObjectiveCBlockConversions.boxingNilAsAnyForCompatibility(_:)): This is a variant of exclusive(_:)

that makes the tradeoff of boxing any nil values as Any to avoid crashing. This is still safe,
since as mentioned our clients will need to cast the value they recieve to do anything with it,
and since the deprecated API expects Any, no one could have been successfully comparing it
to nil today anyways.

  • SwiftOverlay/Tests/JavaScriptToSwiftTypeConversions.swift: Added.

(JavaScriptToSwiftConversions.setUp): Construct a new web view, and add it to a window so that it is

in an expected state. I'm using about:blank as the URL, since page content doesn't matter for
these tests and I want the web content to be ready immediately.

(JavaScriptToSwiftConversions.tearDown): Just perform some window cleanup.
(JavaScriptToSwiftConversions.evaluateJavaScript(_:andExpect:)): Helper method to evaluate script and

check its result. I'm using String.debugDescription because it escapes quotes and special characters
which makes the readout easier to parse.

(JavaScriptToSwiftConversions.testNull): JavaScript's null is actually mapped to NSNull, not nil.
(JavaScriptToSwiftConversions.testInteger): Some standard type coercion tests. The underlying value for

all number types should be NSNumber, so this is actually check against a float or integer type
without issue.

(JavaScriptToSwiftConversions.testDecimal): Ditto.
(JavaScriptToSwiftConversions.testBoolean): Ditto.
(JavaScriptToSwiftConversions.testString): Ditto.
(JavaScriptToSwiftConversions.testArray): Ditto.
(JavaScriptToSwiftConversions.testDictionary): Ditto, only you can't evaluate an object literal directly

so I need to store it in a temporary location first.

(JavaScriptToSwiftConversions.testUndefined): Test our boxing of nil. The exact value matters less than

not crashing at all.

  • SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Added new files to project. I kept the

new test file and helper files within the SwiftOverlay group, because they do not contribute any API.

  • UIProcess/API/Cocoa/WebKitSwiftOverlay.swift:

(WKWebView.callAsyncJavaScript(_:arguments:in:in:completionHandler:)): Switch to a conversion which does

not trap on nil.

(WKWebView.createPDF(_:completionHandler:)): Updated to use new helper method name.
(WKWebView.createWebArchiveData(_:)): Ditto.
(WKWebView.evaluateJavaScript(_:in:in:completionHandler:Error:)): See above.
(makeResultHandler(_:): This has been subsumed by ObjCBlockConversions.

12:00 PM Changeset in webkit [267351] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK][WPE] WKTR has lost access to Pulseaudio
https://bugs.webkit.org/show_bug.cgi?id=216745

Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Carlos Garcia Campos.

Let Pulseaudio env vars pass through in the test environment, this is specially needed when
the test harness runs in the Flatpak sandbox.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.setup_environ_for_server):

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server):

11:58 AM Changeset in webkit [267350] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK][WPE] Missing support for multi-word $WEBKIT_MINI_BROWSER_PREFIX
https://bugs.webkit.org/show_bug.cgi?id=216604

Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Adrian Perez de Castro.

Gracefully handle cases where the env var contains multiple words, by splitting its contents
to a list and inserting it at the beginning of the final minibrowser command.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.run_minibrowser):

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.run_minibrowser):

11:56 AM Changeset in webkit [267349] by Chris Dumez
  • 6 edits in trunk

AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum
https://bugs.webkit.org/show_bug.cgi?id=216735

Reviewed by Darin Adler.

Source/WebCore:

AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum:

"""
If another call to getByteFrequencyData() or getFloatFrequencyData() occurs within the same render quantum as a
previous call, the current frequency data is not updated with the same data. Instead, the previously computed data
is returned.
"""

No new tests, rebaselined existing test.

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::writeInput):
(WebCore::RealtimeAnalyser::doFFTAnalysisIfNecessary):
(WebCore::RealtimeAnalyser::getFloatFrequencyData):
(WebCore::RealtimeAnalyser::getByteFrequencyData):

  • Modules/webaudio/RealtimeAnalyser.h:

LayoutTests:

Rebaseline webaudio tests now that more checks are passing.

  • webaudio/Analyser/realtimeanalyser-freq-data-smoothing-expected.txt:
  • webaudio/Analyser/realtimeanalyser-multiple-calls-expected.txt:
11:28 AM Changeset in webkit [267348] by ysuzuki@apple.com
  • 5 edits
    1 add in trunk

[JSC] Proxy should be trapped if base value is primitive
https://bugs.webkit.org/show_bug.cgi?id=216764

Reviewed by Darin Adler.

JSTests:

  • stress/proxy-trap-in-primitive.js: Added.

(shouldBe):

  • test262/expectations.yaml:

Source/JavaScriptCore:

While we have special care in JSObject::putInline etc., we missed it in JSValue::putToPrimitive.
So, if proxy exists in the prototype chain for the primitive values (e.g. StringPrototype -> Proxy chain),
we miss the Proxy trap. We should have ProxyObject special check in JSValue::putToPrimitive too.

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::putToPrimitive):

9:13 AM Changeset in webkit [267347] by graouts@webkit.org
  • 4 edits in trunk/Source/WebCore

Remove dedicated HashSet<Element*> for DocumentTimeline::runningAnimationsForElementAreAllAccelerated()
https://bugs.webkit.org/show_bug.cgi?id=216775

Reviewed by Antti Koivisto.

  • animation/AnimationTimeline.h:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::detachFromDocument):
(WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
(WebCore::DocumentTimeline::runningAnimationsForElementAreAllAccelerated const):
(WebCore::DocumentTimeline::animationWasAddedToElement): Deleted.
(WebCore::DocumentTimeline::animationWasRemovedFromElement): Deleted.
(WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement): Deleted.

  • animation/DocumentTimeline.h:
8:34 AM Changeset in webkit [267346] by Chris Dumez
  • 5 edits in trunk

AnalyserNode should downmix input audio to mono
https://bugs.webkit.org/show_bug.cgi?id=216736

Reviewed by Sam Weinig.

Source/WebCore:

AnalyserNode should downmix input audio to mono:

This patch is based on the following Blink change:

No new tests, rebaselined existing test.

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::RealtimeAnalyser):
(WebCore::RealtimeAnalyser::writeInput):

  • Modules/webaudio/RealtimeAnalyser.h:

LayoutTests:

Rebaseline test now that more checks are passing.

  • webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
8:11 AM Changeset in webkit [267345] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

REGRESSION (r257839): Can't add a memo when transferring funds in First Tech Credit Union App
https://bugs.webkit.org/show_bug.cgi?id=216754
<rdar://problem/67045862>

Reviewed by Antti Koivisto.

Source/WebCore:

After r257839, attempting to add a memo by tapping on a text box in the First Tech Credit Union app on iOS fails
to cause the text box (a textarea element) to be focused. This is because the textarea is initially hidden
away in a display: none; parent container, which becomes display: block; immediately before focus() is
called from the page's script.

Augment the mechanism added in r266887, so that we avoid consulting stale computed styles when checking for
hidden ancestors in Element::isVisibleWithoutResolvingFullStyle(). To do this, we pull logic to get or compute
the RenderStyle for the current element or one of its composed ancestors (which respects
IsComputedStyleInvalidFlag) into a lambda function, and use this lambda function below, when we walk up the
ancestor chain in search of a hidden element.

Note that in Speedometer 2.0, this change does not have any significant impact on the number of partial (i.e.
RenderedOnly) style resolutions we attempt to perform underneath Element::resolveComputedStyle (a little
over 3000 before and after this change).

Test: fast/forms/programmatic-focus-after-displaying-parent.html

  • dom/Element.cpp:

(WebCore::Element::isVisibleWithoutResolvingFullStyle const):

LayoutTests:

Add a new layout test to exercise the bug by programmatically focusing a textarea element that was just shown by
setting display: block; on a parent container that was previously display: none;.

  • fast/forms/programmatic-focus-after-displaying-parent-expected.txt: Added.
  • fast/forms/programmatic-focus-after-displaying-parent.html: Added.
7:57 AM Changeset in webkit [267344] by Kate Cheney
  • 6 edits in trunk

Allow about:blank subframe loads for non app-bound top frames
https://bugs.webkit.org/show_bug.cgi?id=216715
<rdar://problem/69070720>

Reviewed by Darin Adler.

Source/WebKit:

In the original implementation of App Bound Domains, any loads using
certain protocols like about: were automatically considered app-bound.
When a subframe loads about:blank for example, this forces web views
into app-bound mode even if the top frame is not app-bound, which
should not be the case.

These special protocols inherit security origins from their top-frame
loads, so we can refer to those to determine whether subframe loads
should be considered app-bound. For about: loads in a main frame there
is no behavior change and WKWebViews will still automatically be considered
app-bound in this case.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
Refer to the security origin if the subframe load is one of the
special protocols caught by the shouldTreatURLProtocolAsAppBound() function.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::schemeOrDomainIsAppBound):
(WebKit::WebsiteDataStore::beginAppBoundDomainCheck):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Two new tests for about:blank loaded under an app-bound domain and
non-app bound domain respectively. Tests that the subframe load
has the same app-bound status as the parent frame by testing script
injection powers.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

Fixed two test names that didn't make sense.

(-[InAppBrowserSchemeHandler webView:startURLSchemeTask:]):
(TEST):

6:49 AM Changeset in webkit [267343] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][BFC] Move hasClearance out of BoxGeometry
https://bugs.webkit.org/show_bug.cgi?id=216757

Reviewed by Antti Koivisto.

Do not cache the hasClearance state in BoxGeometry.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::computeVerticalPositionForFloatClear):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):

  • layout/blockformatting/BlockFormattingState.h:

(WebCore::Layout::BlockFormattingState::setHasClearance):
(WebCore::Layout::BlockFormattingState::clearClearance):
(WebCore::Layout::BlockFormattingState::hasClearance const):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::hasClearance const):

  • layout/layouttree/LayoutBoxGeometry.cpp:

(WebCore::Layout::BoxGeometry::BoxGeometry):

  • layout/layouttree/LayoutBoxGeometry.h:

(WebCore::Layout::BoxGeometry::hasClearance const): Deleted.
(WebCore::Layout::BoxGeometry::setHasClearance): Deleted.

6:34 AM Changeset in webkit [267342] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Remove unused EscapeReason::StrokeOverflowNeedsViewportGeometry
https://bugs.webkit.org/show_bug.cgi?id=216759

Reviewed by Antti Koivisto.

This escape reason was used to read ICB geometry to compute ink overflow (prior to r267325).

  • layout/FormattingContext.cpp:

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

  • layout/FormattingContext.h:
6:32 AM Changeset in webkit [267341] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][MarginCollapse] The block level box passed in to MarginCollapse::positiveNegativeValues is in the current formatting context
https://bugs.webkit.org/show_bug.cgi?id=216758

Reviewed by Antti Koivisto.

Let's use the current formatting state when grabbing vertical margin values.

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::positiveNegativeValues const):

6:27 AM Changeset in webkit [267340] by Philippe Normand
  • 2 edits in trunk/LayoutTests

[GTK] media/media-can-play-mp3.html is failing since added in r267210
https://bugs.webkit.org/show_bug.cgi?id=216765

Unreviewed, unflag now-passing test, since r267335.

  • platform/gtk/TestExpectations: Unflag now-passing test.
3:42 AM Changeset in webkit [267339] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Adjust test expectations of several tests failing.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
2:49 AM Changeset in webkit [267338] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Gardened several failures of new tests added.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
2:43 AM Changeset in webkit [267337] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.30.1

WebKitGTK 2.30.1

2:42 AM Changeset in webkit [267336] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.30

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.30.1 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.30.1.
1:42 AM WebKitGTK/2.30.x edited by Carlos Garcia Campos
(diff)
1:26 AM Changeset in webkit [267335] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] media/media-can-play-mp3.html fails
https://bugs.webkit.org/show_bug.cgi?id=216692

Patch by Philippe Normand <pnormand@igalia.com> on 2020-09-21
Reviewed by Darin Adler.

Add mp3 to supported codecs map when a valid decoder has been
found by the GStreamer registry scanner.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::initialize):

12:42 AM Changeset in webkit [267334] by Diego Pino Garcia
  • 1 edit
    3 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Emit new baselines for WebAudio tests after r267307.

The results are slightly different in GLIB ports.

  • platform/glib/webaudio/BiquadFilter/tail-time-lowpass-expected.txt: Added.
  • platform/glib/webaudio/BiquadFilter/tail-time-peaking-expected.txt: Added.

Sep 20, 2020:

4:07 PM Changeset in webkit [267333] by weinig@apple.com
  • 6 edits in trunk

Performance.navigation and Performance.timing are incorrectly exposed to workers
https://bugs.webkit.org/show_bug.cgi?id=216732

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/workers/worker-performance.worker-expected.txt:

Update results now that Performance.navigation and Performance.timing are no longer
exposed to workers.

Source/WebCore:

  • page/Performance.idl:

Only expose Performance.navigation and Performance.timing to the Window.

LayoutTests:

Remove flaky annotation for imported/w3c/web-platform-tests/workers/worker-performance.worker.html. The
test was fixed in upstream WPT as dab9c45, and has since been updated in the WebKit tree as well.
It now also passes.

3:58 PM Changeset in webkit [267332] by ysuzuki@apple.com
  • 193 edits
    947 adds
    43 deletes in trunk/JSTests

Test262 update
https://bugs.webkit.org/show_bug.cgi?id=216753

Reviewed by Darin Adler.

3:26 PM Changeset in webkit [267331] by weinig@apple.com
  • 7 edits
    3 adds in trunk/Source/WebCore

Using [Exposed=Window] with [Default] object toJSON() doesn't work
https://bugs.webkit.org/show_bug.cgi?id=216731

Reviewed by Simon Fraser.

Fixes filtering an attribute out of [Default] toJSON operation based
on which which global objects it is exposed to by ensuring we always
pass a global object pointer accessor function to
GenerateRuntimeEnableConditionalStringForExposed. For good measure,
we now always pass the global object object pointer to
GenerateRuntimeEnableConditionalString as well so that it is always
explicit.

This is needed to support filtering out Performance.navigation and
Performance.timing from the Performance interface's toJSON implementation
which will be addressed in a separate change.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateRuntimeEnableConditionalString):
Remove implicit global object accessor string construction by always
requiring it to be passed.

  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/JS/JSDOMWindow.cpp:
  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: Added.
  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: Added.
  • bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestDefaultToJSONFilteredByExposed.idl: Added.
  • bindings/scripts/test/WorkerGlobalScopeConstructors.idl:

Add new test for updated behavior. I couldn't add it to the existing
TestDefaultToJSON.idl test as that test requires the interface only be exposed
to Window to support testing EnabledBySetting.

1:44 PM Changeset in webkit [267330] by ysuzuki@apple.com
  • 179 edits
    1 delete in trunk

[JSC] Drop Options::useBigInt
https://bugs.webkit.org/show_bug.cgi?id=216743

Reviewed by Darin Adler.

JSTests:

  • bigIntTests.yaml: Removed.
  • stress/big-int-add-wrapped-value.js:
  • stress/big-int-addition-basic.js:
  • stress/big-int-addition-jit.js:
  • stress/big-int-addition-memory-stress.js:
  • stress/big-int-addition-string-coercion.js:
  • stress/big-int-addition-to-primitive-precedence.js:
  • stress/big-int-addition-to-primitive.js:
  • stress/big-int-addition-type-error.js:
  • stress/big-int-arithmetic-return-big-int.js:
  • stress/big-int-as-key.js:
  • stress/big-int-as-property-name.js:
  • stress/big-int-bit-not-general.js:
  • stress/big-int-bitwise-and-general.js:
  • stress/big-int-bitwise-and-jit.js:
  • stress/big-int-bitwise-and-memory-stress.js:
  • stress/big-int-bitwise-and-to-primitive-precedence.js:
  • stress/big-int-bitwise-and-type-error.js:
  • stress/big-int-bitwise-and-wrapped-value.js:
  • stress/big-int-bitwise-not-jit.js:
  • stress/big-int-bitwise-not-wrapped-value.js:
  • stress/big-int-bitwise-or-general.js:
  • stress/big-int-bitwise-or-jit-untyped.js:
  • stress/big-int-bitwise-or-jit.js:
  • stress/big-int-bitwise-or-memory-stress.js:
  • stress/big-int-bitwise-or-to-primitive-precedence.js:
  • stress/big-int-bitwise-or-type-error.js:
  • stress/big-int-bitwise-or-wrapped-value.js:
  • stress/big-int-bitwise-xor-general.js:
  • stress/big-int-bitwise-xor-jit.js:
  • stress/big-int-bitwise-xor-memory-stress.js:
  • stress/big-int-bitwise-xor-to-primitive-precedence.js:
  • stress/big-int-bitwise-xor-type-error.js:
  • stress/big-int-bitwise-xor-untyped.js:
  • stress/big-int-bitwise-xor-wrapped-value.js:
  • stress/big-int-boolean-proven-type.js:
  • stress/big-int-branch-usage.js:
  • stress/big-int-constructor-gc.js:
  • stress/big-int-constructor-oom.js:
  • stress/big-int-constructor-properties.js:
  • stress/big-int-constructor-prototype-prop-descriptor.js:
  • stress/big-int-constructor-prototype.js:
  • stress/big-int-constructor.js:
  • stress/big-int-div-jit-osr.js:
  • stress/big-int-div-jit-untyped.js:
  • stress/big-int-div-jit.js:
  • stress/big-int-div-memory-stress.js:
  • stress/big-int-div-to-primitive.js:
  • stress/big-int-div-type-error.js:
  • stress/big-int-div-wrapped-value.js:
  • stress/big-int-division.js:
  • stress/big-int-equals-basic.js:
  • stress/big-int-equals-to-primitive-precedence.js:
  • stress/big-int-equals-wrapped-value.js:
  • stress/big-int-exp-basic.js:
  • stress/big-int-exp-jit-osr.js:
  • stress/big-int-exp-jit-untyped.js:
  • stress/big-int-exp-jit.js:
  • stress/big-int-exp-negative-exponent.js:
  • stress/big-int-exp-to-primitive.js:
  • stress/big-int-exp-type-error.js:
  • stress/big-int-exp-wrapped-value.js:
  • stress/big-int-function-apply.js:
  • stress/big-int-greater-than-general.js:
  • stress/big-int-greater-than-jit.js:
  • stress/big-int-greater-than-or-equal-jit.js:
  • stress/big-int-greater-than-or-equal-order-of-evaluation.js:
  • stress/big-int-greater-than-or-equal-wrapped-values.js:
  • stress/big-int-greater-than-or-equal.js:
  • stress/big-int-greater-than-order-of-evaluation.js:
  • stress/big-int-greater-than-wrapped-values.js:
  • stress/big-int-json-stringify-to-json.js:
  • stress/big-int-json-stringify.js:
  • stress/big-int-left-shift-general.js:
  • stress/big-int-left-shift-range-error.js:
  • stress/big-int-left-shift-type-error.js:
  • stress/big-int-left-shift-untyped.js:
  • stress/big-int-left-shift-wrapped-value.js:
  • stress/big-int-length.js:
  • stress/big-int-less-than-general.js:
  • stress/big-int-less-than-jit.js:
  • stress/big-int-less-than-or-equal-general.js:
  • stress/big-int-less-than-or-equal-jit.js:
  • stress/big-int-less-than-or-equal-order-of-evaluation.js:
  • stress/big-int-less-than-or-equal-wrapped-values.js:
  • stress/big-int-less-than-order-of-evaluation.js:
  • stress/big-int-less-than-wrapped-values.js:
  • stress/big-int-literal-inside-literal-object.js:
  • stress/big-int-literal-line-terminator.js:
  • stress/big-int-literals.js:
  • stress/big-int-logical-and.js:
  • stress/big-int-logical-not.js:
  • stress/big-int-logical-or.js:
  • stress/big-int-mod-jit.js:
  • stress/big-int-mod-memory-stress.js:
  • stress/big-int-mod-osr.js:
  • stress/big-int-mod-to-primitive-precedence.js:
  • stress/big-int-mod-to-primitive.js:
  • stress/big-int-mod-type-error.js:
  • stress/big-int-mod-wrapped-value.js:
  • stress/big-int-mod.js:
  • stress/big-int-mul-jit-osr.js:
  • stress/big-int-mul-jit-untyped.js:
  • stress/big-int-mul-jit.js:
  • stress/big-int-mul-to-primitive-precedence.js:
  • stress/big-int-mul-to-primitive.js:
  • stress/big-int-mul-type-error.js:
  • stress/big-int-mul-wrapped-value.js:
  • stress/big-int-multiplication.js:
  • stress/big-int-multiply-memory-stress.js:
  • stress/big-int-negate-basic.js:
  • stress/big-int-no-conversion-to-number.js:
  • stress/big-int-operations-error.js:
  • stress/big-int-out-of-memory-tests.js:
  • stress/big-int-prop-descriptor.js:
  • stress/big-int-proto-constructor.js:
  • stress/big-int-proto-name.js:
  • stress/big-int-prototype-properties.js:
  • stress/big-int-prototype-proto.js:
  • stress/big-int-prototype-symbol-to-string-tag.js:
  • stress/big-int-prototype-to-string-apply.js:
  • stress/big-int-prototype-to-string-cast-overflow.js:
  • stress/big-int-prototype-to-string-exception.js:
  • stress/big-int-prototype-to-string-wrong-values.js:
  • stress/big-int-prototype-value-of.js:
  • stress/big-int-right-shift-general.js:
  • stress/big-int-right-shift-jit-osr.js:
  • stress/big-int-right-shift-jit-untyped.js:
  • stress/big-int-right-shift-jit.js:
  • stress/big-int-right-shift-type-error.js:
  • stress/big-int-right-shift-wrapped-value.js:
  • stress/big-int-spec-to-primitive.js:
  • stress/big-int-spec-to-this.js:
  • stress/big-int-strict-equals-jit.js:
  • stress/big-int-strict-spec-to-this.js:
  • stress/big-int-sub-wrapped-value.js:
  • stress/big-int-subtraction-basic.js:
  • stress/big-int-subtraction-jit.js:
  • stress/big-int-subtraction-type-error.js:
  • stress/big-int-to-object.js:
  • stress/big-int-to-string.js:
  • stress/big-int-type-of-proven-type-non-constant-including-symbol.js:
  • stress/big-int-type-of-proven-type-non-constant.js:
  • stress/big-int-type-of-proven-type.js:
  • stress/big-int-type-of.js:
  • stress/big-int-unary-plus.js:
  • stress/big-int-value-op-update-gc-rules.js:
  • stress/big-int-white-space-trailing-leading.js:
  • stress/bigint-toLocaleString.js:
  • stress/bitwise-not-fixup-rules.js:
  • stress/delete-property-inline-cache.js:
  • stress/inc-osr-exit-from-big-int.js:
  • stress/inc-osr-exit-to-big-int.js:
  • stress/left-shift-to-primitive-precedence.js:
  • stress/numeric-literal-separators.js:
  • stress/object-create-non-object-properties-parameter.js:
  • stress/proxy-call-apply-handler-to-this.js:
  • stress/right-shift-to-primitive-precedence.js:
  • stress/value-add-big-int-and-string.js:
  • stress/value-add-big-int-prediction-propagation.js:
  • stress/value-add-big-int-untyped.js:
  • stress/value-bit-and-ai-rule.js:
  • stress/value-bit-lshift-ai-rule.js:
  • stress/value-bit-not-ai-rule.js:
  • stress/value-bit-or-ai-rule.js:
  • stress/value-bit-xor-ai-rule.js:
  • stress/value-div-fixup-int32-big-int.js:
  • stress/value-mul-fixup-int32-big-int.js:
  • stress/value-sub-big-int-prediction-propagation.js:
  • stress/value-sub-big-int-untyped.js:
  • test262/config.yaml:

Source/JavaScriptCore:

Now BigInt is shipped. Let's just remove Options::useBigInt.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOpImpl):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):

  • runtime/JSGlobalObject.h:
  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-benchmarks:
  • Scripts/run-jsc-stress-tests:
12:37 PM Changeset in webkit [267329] by Darin Adler
  • 8 edits in trunk

Selection API: Further improvements to VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus
https://bugs.webkit.org/show_bug.cgi?id=216739

Reviewed by Ryosuke Niwa.

Source/WebCore:

If done correctly, these changes should have almost no effect unless live range selection
is enabled. This adds a feature where VisibleSelection tracks the original points,
before the VisiblePosition-style canonicalization. It also starts a transition from
the base/extent terminology to the slightly-easier-to-understand anchor/focus terminology
that is used in the selection specification. New functions name them anchor and focus,
even though we still have some old ones that call them base and extent. In addition,
made some other small related improvements to live range selection mode, without changing
behavior when not in that mode. Have been testing these locally by turning on that mode
and running various tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::isInDocumentTree const): Added. Used by DOMSelection to
correctly handle cases where the selection is in a shadow tree without requiring it
actually create the associated live range just to query.
(WebCore::FrameSelection::associatedLiveRange): Use the new VisibleSelection::range,
which gives us non-canonicalized points, rather than the deprecated
VisibleSelection::firstRange, which we will eventually be renaming or deleting.
(WebCore::FrameSelection::updateFromAssociatedLiveRange): Use
makeContainerOffsetPosition instead of implicitly using makeDeprecatedLegacyPosition.
Also removed the FIXME about normalization of endpoints, which is what this patch
mostly addresses; no need to track with a comment now.
(WebCore::FrameSelection::updateAssociatedLiveRange): Use VisibleSelection::range
for the same reason as above.

  • editing/FrameSelection.h: Added isInDocumentTree.
  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::VisibleSelection): Updated the primary constructor to set
m_anchor/focus and let the validate function set m_base/extent/start/end/baseIsFirst.
Changed most other constructors to call that primary one.
(WebCore::VisibleSelection::anchor const): Added. This is a non-canonicalized position.
(WebCore::VisibleSelection::focus const): Ditto.
(WebCore::VisibleSelection::uncanonicalizedStart const): Added. This non-canonicalized
version of start is used by new DOMSelection code, but eventually should be used
elsewhere as well, and we may eventually eliminate the canonicalized version.
(WebCore::VisibleSelection::uncanonicalizedEnd const): Ditto.
(WebCore::VisibleSelection::range const): Added. This non-canonicalized version of
firstRange has many of the same considerations as the other four functions above.
(WebCore::VisibleSelection::setBase): Set m_anchor instead of m_base. Eventually we
will want to rename this function, too, but there is no need to do that now.
(WebCore::VisibleSelection::setExtent): Ditto.
(WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents): Rewrote to take
m_anchor and m_focus as inputs and now m_base and m_extent are pure outputs.
May want to rename this later, because "deep equivalents" is a funny way to say
that this function sets base and extent to canonicalized values.
(WebCore::VisibleSelection::adjustSelectionRespectingGranularity): Renamed from
setStartAndEndFromBaseAndExtentRespectingGranularity. This now takes m_start/end
as input as well as output, because the validate function needs to check
if the function changes m_start/end so it can update m_anchor/focus. Also did a tiny
bit of refactoring to use std::swap.
(WebCore::VisibleSelection::validate): Refined the code to handle canonicalization
differently from expanding due to granularity. Canonicalization is done preserving
the original m_anchor/focus as it mostly always has been. But expansion due to
granularity now changes m_anchor/focus/base/extent rather than just m_start/end.
This makes sense because granularity changes actually affect what is selected,
while canonicalization just changes how the selection is expressed and tracked.
(WebCore::VisibleSelection::setWithoutValidation): Set m_anchor/focus. In the future,
we can probably get rid of this eventually, because the "validation" talked about
here is the unwanted canonicalization. But that's a refinement for the future.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):
Update m_focus, not just m_extent, if we have to adjust. Also removed an unnnecessary
null check from the start of the function.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries): Ditto.
Also removed the assertions because these situations can indeed arise and it's not
necessarily an indication of a bug in editing code.

  • editing/VisibleSelection.h: Rearranged constructors to make it slightly more clear

which is the main one and that the others are simply convenience shorthands. Might
want to come back later and remove some unused ones. Added uncanonicalizedStart,
uncanonicalizedEnd, anchor, focus, and range. Renamed the private function called
setStartAndEndFromBaseAndExtentRespectingGranularity to the new name
adjustSelectionRespectingGranularity. Added m_anchor and m_focus and refined the
comments about the position data members. We should eventually be able to cut down
on the number of these again, but it's fine to have two more for now.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::range const): Use range rather than firstRange when live
range selection is enabled, for proper round-tripping of selection endpoints,
unaffected by canonicalization. The other changes below are for the same reason.
(WebCore::DOMSelection::anchorPosition const): Use anchor.
(WebCore::DOMSelection::focusPosition const): Use focus.
(WebCore::DOMSelection::basePosition const): Use anchor.
(WebCore::DOMSelection::extentPosition const): Use focus.
(WebCore::DOMSelection::type const): Use isInDocumentTree and range rather than
isNone/isCaret/isRange when live range selection is enabled, because this needs
to report "Caret" when the range is not collapsed, even if the canonicalized
range is collapsed and "None" when the selection is in a shadow tree.
(WebCore::DOMSelection::rangeCount const): Use isInDocumentTree to check if
there is a selection rather than isNone to correctly handle the shadow tree case.
(WebCore::DOMSelection::collapseToEnd): Use uncanonicalizedEnd.
(WebCore::DOMSelection::collapseToStart): Use uncanonicalizedStart.
(WebCore::DOMSelection::containsNode const): Updated the comment for clarity.

LayoutTests:

  • editing/execCommand/insert-list-nested-with-orphaned-expected.txt: This test

result reflected incorrrect behavior where the selection changed from a range
to a caret in a certain unusual case. The new behavior of leaving the text
selected is consistent with how the command works in normal cases, and was an
accidental progression from the improvements to the selection code. Was able
to reproduce this all in Safari and after experimenting with different
selections, it's clear this is an improvement.

12:21 PM Changeset in webkit [267328] by Simon Fraser
  • 7 edits
    4 copies
    1 add
    1 delete in trunk/Source/WebCore

[LFC Display] Move LFC Display infrastructure files into a new 'display' directory
https://bugs.webkit.org/show_bug.cgi?id=216747

Reviewed by Zalan Bujtas.

WebCore/Source/display will become the home for all the LFC painting code; move
DisplayView and DisplayLayerController into it.

Also fix some unified build include issues.

  • CMakeLists.txt:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayLayerController.cpp: Renamed from Source/WebCore/layout/display/DisplayLayerController.cpp.
  • display/DisplayLayerController.h: Renamed from Source/WebCore/layout/display/DisplayLayerController.h.
  • display/DisplayView.cpp: Renamed from Source/WebCore/layout/display/DisplayView.cpp.
  • display/DisplayView.h: Renamed from Source/WebCore/layout/display/DisplayView.h.
  • layout/flexformatting/FlexFormattingContext.cpp:
  • layout/inlineformatting/InlineLineBox.cpp:
11:10 AM Changeset in webkit [267327] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Selection API: Fix selectAllChilden to return InvalidNodeTypeError when passed a DocumentType node
https://bugs.webkit.org/show_bug.cgi?id=216741

Reviewed by Ryosuke Niwa.

This is covered by tests, but the fix itself is only testable when live range
selection is enabled. So for now the other tests are simply checking that no
regression or behavior change was introduced by accident.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::selectAllChildren): Return the value returned by
setBaseAndExtent so we don't discard any exception it might throw. In
practice, that's only this one.

  • page/DOMSelection.h: Updated return type so we can throw an exception.
  • page/DOMSelection.idl: Added MayThrowException.
10:51 AM Changeset in webkit [267326] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Sort the project file.

  • WebKit.xcodeproj/project.pbxproj:
8:01 AM Changeset in webkit [267325] by Alan Bujtas
  • 19 edits
    1 add in trunk

[LFC][IFC] InlineFormattingState should not store display lines and runs
https://bugs.webkit.org/show_bug.cgi?id=216742

Reviewed by Antti Koivisto.

Source/WebCore:

In this patch,

  1. Display related structures are completely moved out from Layout namespace
    • InlineFormattingContext does not generate display structures.
    • InlineFormattingState only stores layout data.
    • Layout tree verification works on layout geometry.
    • Layout structures do not embed Display types.
  2. LayoutIntegration creates and maintains the required Display structures for painting and hittesting.
  3. Display::Run does not use Layout types (InlineLayoutRect, InlineLayoutUnit).

FIXME: We need to start constructing display content for the Display::Painter.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/displaytree/DisplayInlineContent.h:

(WebCore::Display::InlineContent::shrinkToFit):

  • layout/displaytree/DisplayLine.h:

(WebCore::Display::Line::horizontalAlignmentOffset const):
(WebCore::Display::Line::Line):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContent::start const):
(WebCore::Display::Run::TextContent::end const):
(WebCore::Display::Run::TextContent::length const):
(WebCore::Display::Run::TextContent::content const):
(WebCore::Display::Run::TextContent::needsHyphen const):
(WebCore::Display::Run::rect const):
(WebCore::Display::Run::inkOverflow const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContent::TextContent):
(WebCore::Display::Run::TextContent::setNeedsHyphen): Deleted.
(WebCore::Display::Run::TextContent::expand): Deleted.
(WebCore::Display::Run::TextContent::shrink): Deleted.
(WebCore::Display::Run::topLeft const): Deleted.
(WebCore::Display::Run::left const): Deleted.
(WebCore::Display::Run::right const): Deleted.
(WebCore::Display::Run::top const): Deleted.
(WebCore::Display::Run::bottom const): Deleted.
(WebCore::Display::Run::width const): Deleted.
(WebCore::Display::Run::height const): Deleted.
(WebCore::Display::Run::moveVertically): Deleted.

  • layout/flexformatting/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineRuns const):
(WebCore::Layout::InlineFormattingState::lineRuns):
(WebCore::Layout::InlineFormattingState::addLineRun):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):
(WebCore::Layout::InlineFormattingState::shrinkToFit):
(WebCore::Layout::InlineFormattingState::displayInlineContent const): Deleted.
(WebCore::Layout::InlineFormattingState::ensureDisplayInlineContent): Deleted.
(WebCore::Layout::InlineFormattingState::shrinkDisplayInlineContent): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::textContent const):
(WebCore::Layout::Line::Run::expansion const):

  • layout/inlineformatting/InlineLineGeometry.h:

(WebCore::Layout::InlineLineGeometry::horizontalAlignmentOffset const):
(WebCore::Layout::InlineLineGeometry::InlineLineGeometry):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent):
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::displayInlineContent const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::rect const):

LayoutTests:

This directory is about verifying layout correctness
by calling LayoutContext::verifyAndOutputMismatchingLayoutTree on every layout frame
and assert in case of mismatching trees.
The test coverage does not suffer by [ ImageOnlyFailure ] it.
(We need to start generating display boxes for the Display::Painter.)

2:14 AM Changeset in webkit [267324] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, use RELEASE_AND_RETURN to suppress exception verification failure
https://bugs.webkit.org/show_bug.cgi?id=216686
<rdar://problem/69157632>

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::defineOwnProperty):

Sep 19, 2020:

9:32 PM Changeset in webkit [267323] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Merge API test expectations

Unreviewed test gardening.

Two TestUIClient sections were causing the first one to be ignored.

  • TestWebKitAPI/glib/TestExpectations.json:
9:30 PM Changeset in webkit [267322] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed gardening.

  • platform/glib/TestExpectations:
7:51 PM Changeset in webkit [267321] by Darin Adler
  • 20 edits in trunk/LayoutTests

Selection API: Update some more tests so they don't accidentally rely on flaws in WebKit's old implementation
https://bugs.webkit.org/show_bug.cgi?id=216737

Reviewed by Sam Weinig.

Like the three tests I modified in r267220, these tests are accidentally
depending on the fact that our selection object implementation currently
allows invalid indexes. It's clear that these are mistakes in the tests,
not intentional, and fixing these does not change the test expectations,
only the tests themselves.

  • accessibility/mac/select-text-should-match-whole-words.html: Set the selection

with separate calls to the collapse function. The old code tried to reuse the
same range to set the selection back to an old value, but that won't work if
the selection updates the range (as it is supposed to do).

  • editing/execCommand/indent-selection.html: Pass a valid index, 1, instead of

an invalid one, 2.

  • editing/pasteboard/paste-visible-script.html: Ditto.
  • editing/pasteboard/replacement-fragment-remove-unrendered-node-crash.html:

Pass a valid index, 0, instead of an invalid one, 10500000000. Also fixed line
endings in this file, which were all Windows-style CR/LF pairs to be Unix-style
LF like most of our other files.

  • editing/pasteboard/testcase-9507.html: Use childNodes.length to compute a

valid index instead of passing 5, which was an invalid one.

  • editing/style/apply-style-crash2.html: Pass a valid index, 0, instead of

an invalid one, 4.

  • editing/style/query-typing-style.html: Pass a valid index, 0, instead of

an invalid one, 1.

  • editing/undo/undo-paste-when-caret-is-not-in-range.html: Pass valid index

1 instead of invalid ones, 3 and 4.

  • fast/block/float/float-list-changed-before-layout-crash.html: Pass a valid

index, 0, instead of an invalid one, 1.

  • fast/dynamic/checkbox-selection-crash.html: Use childNodes.length to compute

a valid index instead of passing 1000, which was an invalid one.

  • fast/repaint/selection-gap-absolute-child.html: Pass a valid index, 0, instead

of an invalid one, 1.

  • fast/repaint/selection-gap-fixed-child.html: Ditto.
  • fast/repaint/selection-gap-flipped-absolute-child.html: Ditto.
  • fast/repaint/selection-gap-flipped-fixed-child.html: Ditto.
  • fast/repaint/selection-gap-transformed-absolute-child.html: Ditto.
  • fast/repaint/selection-gap-transformed-fixed-child.html: Ditto.
  • fast/replaced/selection-rect.html: Select the image with a range in its

parent node with valid indices instead of relying WebKit's quirky way of
expressing selections of replaced elements, which involves an invalid index
of 1 for an image element with no children. This test has nothing to do with
the particular selection range technique used, so it's fine to change it.

  • http/tests/security/resources/foreign-domain-iframe-for-selection-test.html:

Use childNodes.length to compute a valid index instead of passing 10, which was
an invalid one.

  • imported/blink/editing/apply-inline-style-to-element-with-no-renderer-crash.html:

Use a valid index, 0, instead of an invalid one, 4.

11:52 AM Changeset in webkit [267320] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

Implementation for AXIsolatedObject::nextSibling and previousSibling.
https://bugs.webkit.org/show_bug.cgi?id=216710

Reviewed by Chris Fleizach.

Implementation for AXIsolatedObject::previousSibling and nextSibling which
are invoked by VoiceOver in Safari Reader mode.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::previousSibling const):

  • Fixed crash caused by dereferencing m_renderer->parent() which can be null.
  • Added check for the AXObjectCache that can become null.

(WebCore::AccessibilityRenderObject::nextSibling const):

  • Code style cleanup.
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):

  • Added caching of next/previousSiblling objects.

(WebCore::AXIsolatedObject::previousSibling const): Inlined in header..
(WebCore::AXIsolatedObject::nextSibling const): Inlined in header.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
10:43 AM Changeset in webkit [267319] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.6.1.3

Tag Safari-610.2.6.1.3.

10:39 AM Changeset in webkit [267318] by Kocsen Chung
  • 1 edit in branches/safari-610.2.6.1-branch/Source/WebKit/UIProcess/mac/DisplayLink.cpp

Cherry-pick r266958. rdar://problem/69202514

Unreviewed build fix for r266771. An include is missing which causes the build to fail flakily depending on the position of the cpp in the unified source file.

  • UIProcess/mac/DisplayLink.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266958 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:37 AM Changeset in webkit [267317] by Kocsen Chung
  • 8 edits in branches/safari-610.2.6.1-branch/Source

Versioning.

WebKit-7610.2.6.1.3

10:07 AM Changeset in webkit [267316] by weinig@apple.com
  • 10 edits in trunk

Performance and PerformanceNavigation interfaces are missing toJSON operations
https://bugs.webkit.org/show_bug.cgi?id=216728

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update results now that we pass more subtests.

  • web-platform-tests/hr-time/idlharness.any-expected.txt:
  • web-platform-tests/hr-time/idlharness.any.worker-expected.txt:
  • web-platform-tests/hr-time/performance-tojson-expected.txt:

Source/WebCore:

Add missing toJSON operations to Performance and PerformanceNavigation and update
comments in related IDLs.

Updates results for existing tests, more of which now pass.

  • page/Performance.idl:
  • page/PerformanceMark.idl:
  • page/PerformanceMeasure.idl:
  • page/PerformanceNavigation.idl:
  • page/PerformanceTiming.idl:
9:46 AM Changeset in webkit [267315] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingContext::computeGeometryForLineContent should not construct Display::Lines
https://bugs.webkit.org/show_bug.cgi?id=216723

Reviewed by Antti Koivisto.

Display::Lines construction should live in the display builder. However currently we don't yet have a real builder, so let's
just use the integration layer.
This is also in preparation for removing all the Display::InlineContent code from the Layout namespace.

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent):

  • layout/integration/LayoutIntegrationLineLayout.h:
8:05 AM Changeset in webkit [267314] by weinig@apple.com
  • 8 edits
    1 copy
    1 move
    12 adds
    2 deletes in trunk/LayoutTests

Resync web-platform-tests/hr-time from upstream
https://bugs.webkit.org/show_bug.cgi?id=216724

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Resync web-platform-tests/hr-time from upstream.

  • web-platform-tests/hr-time/META.yml: Added.
  • web-platform-tests/hr-time/OWNERS: Removed.
  • web-platform-tests/hr-time/idlharness-expected.txt: Removed.
  • web-platform-tests/hr-time/idlharness.any-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness.any.html: Added.
  • web-platform-tests/hr-time/idlharness.any.js: Added.
  • web-platform-tests/hr-time/idlharness.any.worker-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness.any.worker.html: Added.
  • web-platform-tests/hr-time/idlharness.html: Removed.
  • web-platform-tests/hr-time/monotonic-clock.any.js:
  • web-platform-tests/hr-time/performance-tojson-expected.txt: Added.
  • web-platform-tests/hr-time/performance-tojson.html: Added.
  • web-platform-tests/hr-time/resources/unload-a.html: Added.
  • web-platform-tests/hr-time/resources/unload-b.html: Added.
  • web-platform-tests/hr-time/resources/unload-c.html: Added.
  • web-platform-tests/hr-time/resources/unload.js: Added.
  • web-platform-tests/hr-time/resources/w3c-import.log:
  • web-platform-tests/hr-time/timeOrigin-expected.txt:
  • web-platform-tests/hr-time/w3c-import.log:
  • web-platform-tests/hr-time/window-worker-timeOrigin.window-expected.txt: Added.
  • web-platform-tests/hr-time/window-worker-timeOrigin.window.html: Added.

LayoutTests:

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

Update paths in expectations.

7:48 AM Changeset in webkit [267313] by Darin Adler
  • 8 edits
    2 adds in trunk

Selection API: Extend lifetime of selection live range to preserve expando properties
https://bugs.webkit.org/show_bug.cgi?id=216721

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/selection/expando.html

  • dom/Range.cpp:

(WebCore::Range::window): Added. Returns window if range is associated with selection.

  • dom/Range.h: Added window.
  • dom/Range.idl: Added GenerateIsReachable=ReachableFromDOMWindow.
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::disassociateLiveRange): Removed a FIXME comment about the
need for this fix.
(WebCore::FrameSelection::updateAssociatedLiveRange): Added a comment explaining
why an associated live range might not be contained in the document.

LayoutTests:

  • editing/selection/expando-expected.txt: Added.
  • editing/selection/expando.html: Added.
  • TestExpectations: Skip the new test since DumpRenderTree doesn't support enabling

internal properties.

  • platform/wk2/TestExpectations: Unskip the new test since WebKitTestRunner does.
7:22 AM Changeset in webkit [267312] by weinig@apple.com
  • 8 edits
    3 adds in trunk/Source/WebCore

Add support for Settings equivilent of RuntimeConditionallyReadWrite
https://bugs.webkit.org/show_bug.cgi?id=216697

Reviewed by Darin Adler.

Adds a new extended attribute, [SettingsConditionallyReadWrite] to allow users of
[RuntimeConditionallyReadWrite] to convert from RuntimeEnabledFeatures to Settings.

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeReadWriteCheck):
(GeneratePropertiesHashTable):
(GenerateRuntimeEnableConditionalString):
(GenerateImplementation):

  • bindings/scripts/IDLAttributes.json:

Adds new extended attribute.

  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/JS/JSDOMWindow.cpp:
  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp: Added.
  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.h: Added.
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestConditionallyReadWrite.idl: Added.
  • bindings/scripts/test/TestObj.idl:

Move conditionally read-write tests to a new test, TestConditionallyReadWrite.idl and
update results.

7:20 AM Changeset in webkit [267311] by weinig@apple.com
  • 7 edits in trunk/Source

Remove runtime setting for enabling/disabling the CrossOriginResourcePolicy API
https://bugs.webkit.org/show_bug.cgi?id=216561

Reviewed by Darin Adler.

Remove runtime setting for enabling/disabling CrossOriginResourcePolicy. It has been
enabled by default for a while and there are no known reasons one would need to
disable it.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setCrossOriginResourcePolicyEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::crossOriginResourcePolicyEnabled const): Deleted.

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetCrossOriginResourcePolicyEnabled):
(WKPreferencesGetCrossOriginResourcePolicyEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

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

ASSERTION FAILED: &formattingContextRoot == m_rootContainer.get() in WebCore::Layout::LayoutState::establishedInlineFormattingState
https://bugs.webkit.org/show_bug.cgi?id=216668

Reviewed by Zalan Bujtas.

Display::View didn't unparent the GraphicsLayers when Document::documentWillBecomeInactive() was called,
so a layer pointing to an old LayoutState would try to paint.

Fix by plumbing setIsInWindow() through to Display::View and using it to detach the root layer.

  • dom/Document.cpp:

(WebCore::Document::documentWillBecomeInactive): The ASSERT_IMPLIES() is there to ensure that this isn't
a behavior change; we used to go to RenderView directly, and now go via FrameView.

  • layout/display/DisplayLayerController.cpp:

(WebCore::Display::LayerController::detachRootLayer):
(WebCore::Display::LayerController::setIsInWindow):

  • layout/display/DisplayLayerController.h:
  • layout/display/DisplayView.cpp:

(WebCore::Display::View::setIsInWindow):

  • layout/display/DisplayView.h:
  • page/FrameView.cpp:

(WebCore::FrameView::setIsInWindow):

Note: See TracTimeline for information about the timeline view.