Timeline



Sep 27, 2021:

11:45 PM Changeset in webkit [283159] by mmaxfield@apple.com
  • 22 edits
    2 moves in trunk

override-color has been renamed to override-colors
https://bugs.webkit.org/show_bug.cgi?id=230789
<rdar://problem/83529354>

Reviewed by Devin Rousso.

LayoutTests/imported/w3c:

This is being upstreamed in https://github.com/web-platform-tests/wpt/pull/30962.

  • web-platform-tests/css/css-fonts/font-palette-modify-2-expected.html:
  • web-platform-tests/css/css-fonts/font-palette-modify-2.html:
  • web-platform-tests/css/css-fonts/font-palette-modify-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/font-palette-modify.html:
  • web-platform-tests/css/css-fonts/font-palette.html:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:

Source/WebCore:

The spec was changed in
https://github.com/w3c/csswg-drafts/commit/9de250d6692d07ddb8af3e3face37b909e5aad7b.
No browser has shipped the old name, so this is just a mechanical find/replace.

Updated existing tests.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSFontPaletteValuesOverrideColorsValue.cpp: Renamed from Source/WebCore/css/CSSFontPaletteValuesOverrideColorValue.cpp.

(WebCore::CSSFontPaletteValuesOverrideColorsValue::customCSSText const):
(WebCore::CSSFontPaletteValuesOverrideColorsValue::equals const):

  • css/CSSFontPaletteValuesOverrideColorsValue.h: Renamed from Source/WebCore/css/CSSFontPaletteValuesOverrideColorValue.h.
  • css/CSSFontPaletteValuesRule.cpp:

(WebCore::CSSFontPaletteValuesRule::initializeMapLike):
(WebCore::CSSFontPaletteValuesRule::cssText const):

  • css/CSSProperties.json:
  • css/CSSValue.cpp:

(WebCore::CSSValue::equals const):
(WebCore::CSSValue::cssText const):
(WebCore::CSSValue::destroy):

  • css/CSSValue.h:

(WebCore::CSSValue::isFontPaletteValuesOverrideColorsValue const):
(WebCore::CSSValue::isFontPaletteValuesOverrideColorValue const): Deleted.

  • css/StyleRule.cpp:

(WebCore::StyleRuleFontPaletteValues::StyleRuleFontPaletteValues):

  • css/StyleRule.h:
  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeFontPaletteValuesRule):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeOverrideColorsDescriptor):
(WebCore::CSSPropertyParser::parseFontPaletteValuesDescriptor):
(WebCore::consumeOverrideColorDescriptor): Deleted.

  • platform/graphics/FontPaletteValues.h:

(WebCore::FontPaletteValues::FontPaletteValues):
(WebCore::FontPaletteValues::overrideColors const):
(WebCore::FontPaletteValues::operator== const):
(WebCore::add):
(WebCore::FontPaletteValues::overrideColor const): Deleted.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::addAttributesForFontPalettes):

10:24 PM Changeset in webkit [283158] by Antti Koivisto
  • 31 edits in trunk/Source

[LFC] Use CheckedRef/Ptr instead of WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=230821

Reviewed by Alan Bujtas.

Source/WebCore:

WeakPtrs are used for layout boxes for safety only. Replace with simpler, faster CheckedPtr.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::build):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::replace):

This was leaving a text iterator in stack while mutating the render tree.

  • layout/FormattingState.h:

(WebCore::Layout::FormattingState::addOutOfFlowBox):

  • layout/LayoutState.cpp:

(WebCore::Layout::LayoutState::LayoutState):
(WebCore::Layout::LayoutState::formattingStateForFormattingContext const):
(WebCore::Layout::LayoutState::formattingStateForInlineFormattingContext const):
(WebCore::Layout::LayoutState::ensureInlineFormattingState):

  • layout/LayoutState.h:

(WebCore::Layout::LayoutState::root const):
(WebCore::Layout::LayoutState::hasRoot const): Deleted.

  • layout/floats/FloatAvoider.h:
  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::root const):

  • layout/formattingContexts/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::FormattingContext):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):

  • layout/formattingContexts/FormattingContext.h:

(WebCore::Layout::FormattingContext::root const):

  • layout/formattingContexts/block/BlockFormattingState.h:
  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeStaticPositionForOutOfFlowContent):

  • layout/formattingContexts/inline/InlineLevelBox.h:

(WebCore::Layout::InlineLevelBox::layoutBox const):
(WebCore::Layout::InlineLevelBox::InlineLevelBox):

  • layout/formattingContexts/inline/InlineLineBox.h:
  • layout/formattingContexts/inline/display/InlineDisplayBox.h:

(WebCore::InlineDisplay::Box::layoutBox const):
(WebCore::InlineDisplay::Box::Box):

  • layout/formattingContexts/table/TableGrid.cpp:

(WebCore::Layout::TableGrid::Column::Column):
(WebCore::Layout::TableGrid::Row::Row):
(WebCore::Layout::TableGrid::Cell::Cell):

  • layout/formattingContexts/table/TableGrid.h:

(WebCore::Layout::TableGrid::Row::box const):

  • layout/integration/LayoutIntegrationBoxTree.cpp:

(WebCore::LayoutIntegration::BoxTree::buildTree):
(WebCore::LayoutIntegration::BoxTree::appendChild):
(WebCore::LayoutIntegration::BoxTree::layoutBoxForRenderer):
(WebCore::LayoutIntegration::BoxTree::rendererForLayoutBox):

  • layout/integration/LayoutIntegrationBoxTree.h:
  • layout/integration/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::InlineContent):
(WebCore::LayoutIntegration::InlineContent::rendererForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::containingBlock const):
(WebCore::LayoutIntegration::InlineContent::lineLayout const): Deleted.

  • layout/integration/LayoutIntegrationInlineContent.h:

(WebCore::LayoutIntegration::InlineContent::lineLayout const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::setCachedGeometryForLayoutState const):

  • layout/layouttree/LayoutBox.h:
  • layout/layouttree/LayoutReplacedBox.h:
  • layout/layouttree/LayoutTreeBuilder.h:

Source/WTF:

  • wtf/CheckedRef.h:

(WTF::CanMakeCheckedPtrBase::incrementPtrCount const):
(WTF::CanMakeCheckedPtrBase::decrementPtrCount const):
(WTF::CanMakeCheckedPtrBase::incrementPtrCount): Deleted.
(WTF::CanMakeCheckedPtrBase::decrementPtrCount): Deleted.

Make const so CheckedPtr<const Foo> works.

10:17 PM Changeset in webkit [283157] by Cameron McCormack
  • 2 edits in trunk/Source/WebKit

Avoid building log messages when IPCMessages log stream is off
https://bugs.webkit.org/show_bug.cgi?id=230878
<rdar://problem/83605670>

Reviewed by Alex Christensen.

  • Platform/IPC/HandleMessage.h:

(IPC::logMessageImpl):

5:49 PM Changeset in webkit [283156] by Jean-Yves Avenard
  • 5 edits in trunk/Source

Vorbis decoder can't be instantiated - Remove workaround added in bug 228139
https://bugs.webkit.org/show_bug.cgi?id=230742
rdar://83484414

Reviewed by Eric Carlson.

Source/WebKit:

This is already covered by test; however this will fail on Monterey without the updated
CoreMedia framework.

  • Scripts/process-entitlements.sh: Add new required entitlement.
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::initializeSandbox): Only have bug workaround on BigSur and earlier.

Source/WTF:

  • wtf/PlatformUse.h: Add USE_VORBIS_AUDIOCOMPONENT_WORKAROUND
5:16 PM Changeset in webkit [283155] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur wk2 ] imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html is a flaky failure and crash.
https://bugs.webkit.org/show_bug.cgi?id=230866.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:53 PM ApplePlansForWebKit2022Edition edited by Jon Davis
(diff)
4:44 PM Changeset in webkit [283154] by mmaxfield@apple.com
  • 2 edits in trunk/LayoutTests/imported/w3c

Add test to make sure CSSFontPaletteValuesRule's attributes are readonly
https://bugs.webkit.org/show_bug.cgi?id=230791
<rdar://problem/83530165>

Reviewed by Simon Fraser.

The spec enforces this in w3c/csswg-drafts@9ddf938. This is already the case in WebKit.

This is being upstreamed in https://github.com/web-platform-tests/wpt/pull/30964.

  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:
4:44 PM OffscreenCanvas2021Update edited by Jon Davis
(diff)
4:42 PM GitHubandNewProcesses edited by Jon Davis
(diff)
4:41 PM ProtectedCollaborationTree edited by Jon Davis
(diff)
4:40 PM ProtectedCollaborationTree edited by Jon Davis
(diff)
4:39 PM ProtectedCollaborationTree edited by Jon Davis
(diff)
4:37 PM GPUProcess2021 created by Jon Davis
4:37 PM IntroductiontoLFC created by Jon Davis
4:36 PM WPTUpdate created by Jon Davis
4:34 PM September 2021 Meeting edited by Jon Davis
Schedule changes. (diff)
4:33 PM Changeset in webkit [283153] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

Summary page should support calculating summary using weighted mean.
https://bugs.webkit.org/show_bug.cgi?id=230810

Reviewed by Ryosuke Niwa.

Add a way to specify weight for a platform or (plafform, metric) which will be used while calculating a summary.

  • public/shared/statistics.js: Added 'weightedMean' function.

(Statistics.new.this.weightedMean):

  • public/v3/pages/summary-page.js: Added support for specifying a weight for platform or (platform, metric).

(SummaryPage):
(SummaryPage.prototype._createConfigurationGroup):
(SummaryPageConfigurationGroup):

  • unit-tests/statistics-tests.js: Added unit tests.
4:25 PM September 2021 Meeting edited by Jon Davis
(diff)
4:05 PM Changeset in webkit [283152] by Alan Coon
  • 1 copy in tags/Safari-612.2.8

Tag Safari-612.2.8.

4:05 PM Changeset in webkit [283151] by Alan Coon
  • 1 delete in tags/Safari-612.2.8

Delete tag.

3:51 PM Changeset in webkit [283150] by Eric Hutchison
  • 3 edits in trunk/LayoutTests

[BigSur wk2 Debug iOS14 ] webrtc/video-mute.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230865.

Unreviewed test gardening.

  • platform/ios-14-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
3:50 PM Changeset in webkit [283149] by Alan Coon
  • 1 copy in tags/Safari-612.2.8

Tag Safari-612.2.8.

3:49 PM Changeset in webkit [283148] by Alan Coon
  • 30 edits
    2 adds in branches/safari-612-branch

Cherry-pick r283098. rdar://problem/83584491

[JSC] Optimize PutByVal with for-in
https://bugs.webkit.org/show_bug.cgi?id=230801

Reviewed by Saam Barati.

JSTests:

  • stress/for-in-sentinel.js: Added. (shouldBe): (test):

Source/JavaScriptCore:

We found that some of Speedometer2 subtests are heavily using for-in with PutByVal or the other DFG nodes.
And we also found that we are using polluted non-good type for the property names from for-in: String | Other.
The reason is that we are returning null when op_enumerator_next finishes instead of string. And this design
forces DFG and FTL to return null from EnumeratorNextUpdatePropertyName at the end of iteration. This pollutes
the type of property names as String | Other instead of String, and leading to suboptimal DFG nodes.

In this patch, we add special sentinel string in vm.smallString.sentinelString(). We know that this string cell
pointer will be never returned from EnumeratorNextUpdatePropertyName in the normal for-in iteration. This is easy
since we are always allocating a JSString when creating JSPropertyNameEnumerator. So this string cell (not the content)
is always different from pre-allocated vm.smallString.sentinelString(). So, we use this special string pointer
as a sentinel instead of null so that we can avoid polluting return type of EnumeratorNextUpdatePropertyName.

To check the sentinel in LLInt / Baseline, this patch adds jeq_ptr, which performs cell pointer comparison and do
not check string content equality. We do not need to have an implementation in DFG since we already have CompareEqPtr
for existing jneq_ptr bytecode.

We also clean up DFG operation related to PutByVal.

----------------------------------------------------------------------------------------------------------------------------------
| subtest | ms | ms | b / a | pValue (significance using False Discovery Rate) |
----------------------------------------------------------------------------------------------------------------------------------
| Elm-TodoMVC |116.010000 |112.701667 |0.971482 | 0.000000 (significant) |
| VueJS-TodoMVC |22.995000 |23.023333 |1.001232 | 0.907086 |
| EmberJS-TodoMVC |125.498333 |125.525000 |1.000212 | 0.932546 |
| BackboneJS-TodoMVC |45.700000 |45.975000 |1.006018 | 0.084799 |
| Preact-TodoMVC |16.681667 |16.610000 |0.995704 | 0.722758 |
| AngularJS-TodoMVC |123.753333 |123.740000 |0.999892 | 0.971431 |
| Vanilla-ES2015-TodoMVC |61.255000 |61.380000 |1.002041 | 0.300654 |
| Inferno-TodoMVC |58.646667 |58.948333 |1.005144 | 0.267611 |
| Flight-TodoMVC |73.283333 |72.801667 |0.993427 | 0.207389 |
| Angular2-TypeScript-TodoMVC |39.746667 |40.015000 |1.006751 | 0.449821 |
| VanillaJS-TodoMVC |50.096667 |49.823333 |0.994544 | 0.162020 |
| jQuery-TodoMVC |212.870000 |213.196667 |1.001535 | 0.371944 |
| EmberJS-Debug-TodoMVC |331.878333 |332.710000 |1.002506 | 0.094499 |
| React-TodoMVC |83.078333 |82.726667 |0.995767 | 0.076143 |
| React-Redux-TodoMVC |136.018333 |133.935000 |0.984683 | 0.000000 (significant) |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |59.743333 |59.643333 |0.998326 | 0.393671 |
----------------------------------------------------------------------------------------------------------------------------------
a mean = 271.75873
b mean = 272.45804
pValue = 0.0263030803
(Bigger means are better.)
1.003 times better
Results ARE significant

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp: (JSC::computeUsesForBytecodeIndexImpl): (JSC::computeDefsForBytecodeIndexImpl):
  • bytecode/LinkTimeConstant.h:
  • bytecode/Opcode.h: (JSC::isBranch):
  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecompiler/BytecodeGenerator.cpp: (JSC::GenericLabel<JSGeneratorTraits>::setLocation): (JSC::BytecodeGenerator::emitJumpIfSentinelString):
  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp: (JSC::ForInNode::emitBytecode):
  • dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock):
  • dfg/DFGCapabilities.cpp: (JSC::DFG::capabilityLevel):
  • dfg/DFGOperations.cpp: (JSC::DFG::putByVal): (JSC::DFG::putByValInternal): (JSC::DFG::putByValCellInternal): (JSC::DFG::JSC_DEFINE_JIT_OPERATION):
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileEnumeratorNextUpdatePropertyName):
  • ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass):
  • jit/JIT.h:
  • jit/JITOpcodes.cpp: (JSC::JIT::emit_op_jeq_ptr):
  • jit/JITOpcodes32_64.cpp: (JSC::JIT::emit_op_jeq_ptr):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::emit_op_enumerator_next):
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp: (JSC::JSC_DEFINE_COMMON_SLOW_PATH):
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init):
  • runtime/SmallStrings.cpp: (JSC::SmallStrings::initializeCommonStrings): (JSC::SmallStrings::visitStrongReferences):
  • runtime/SmallStrings.h: (JSC::SmallStrings::sentinelString const):

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

3:49 PM Changeset in webkit [283147] by Alan Coon
  • 4 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r283081. rdar://problem/83584464

Pending preconnect key should include User-Agent
https://bugs.webkit.org/show_bug.cgi?id=230565

Reviewed by Chris Dumez.

When using an HTTPS proxy, the HTTP connection cache key used for connection coalescing in
CFNetwork includes the User-Agent (<rdar://problem/59434166>). This means we should also
include it in the preconnect cache key. Otherwise, we might delay the main resource load on
preconnect unnecessarily in cases where the User-Agent mismatches and the preconnect gets
thrown away. This can happen if (for instance) a page is force-loaded into desktop or mobile
mode on iOS, which causes a UA change after the call to decidePolicyForNavigationAction.

  • NetworkProcess/NetworkLoadScheduler.cpp: (WebKit::mainResourceLoadKey): (WebKit::NetworkLoadScheduler::scheduleMainResourceLoad): (WebKit::NetworkLoadScheduler::unscheduleMainResourceLoad): (WebKit::NetworkLoadScheduler::startedPreconnectForMainResource): (WebKit::NetworkLoadScheduler::finishedPreconnectForMainResource):
  • NetworkProcess/NetworkLoadScheduler.h:
  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::preconnectTo):

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

3:49 PM Changeset in webkit [283146] by Alan Coon
  • 17 edits
    6 adds in branches/safari-612-branch

Cherry-pick r283035. rdar://problem/83584492

<video> element rendered incorrectly when provided with a portrait orientation stream in Safari 15
https://bugs.webkit.org/show_bug.cgi?id=229792
<rdar://problem/82776741>

Reviewed by Eric Carlson.

Source/WebCore:

We need to swap the bounds for both m_rootLayer and m_sampleBufferDisplayLayer if the sample is rotated by 90.
We also need to ompute m_sampleBufferDisplayLayer position based on m_rootLayer coordinates.
This means we swap root layer bounds width and height before computing m_sampleBufferDisplayLayer position based on it.

Test: fast/mediastream/video-rotation.html

  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.h:
  • platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm: (WebCore::LocalSampleBufferDisplayLayer::setRootLayerBoundsAndPositions): (WebCore::LocalSampleBufferDisplayLayer::updateRootLayerBoundsAndPosition):
  • platform/graphics/cg/ImageBufferUtilitiesCG.h:

Source/WebKit:

Helper routined used in WTR.

  • Shared/API/c/cg/WKImageCG.cpp: (WKImageCreateDataURLFromImage):
  • Shared/API/c/cg/WKImageCG.h:

Tools:

Add testRunner API to take a view port snapshot as a PNG data URL.
We can then use this data URL to validate some rendered pixel values.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: (WTR::InjectedBundle::didReceiveMessageToPage):
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::takeViewPortSnapshot): (WTR::TestRunner::viewPortSnapshotTaken):
  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp: (WTR::TestController::takeViewPortSnapshot):
  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm: (WTR::TestController::takeViewPortSnapshot):

LayoutTests:

  • fast/mediastream/video-rotation-expected.txt: Added.
  • fast/mediastream/video-rotation.html: Added.
  • platform/ios-simulator/fast/mediastream/video-rotation-expected.png: Added.
  • platform/mac/fast/mediastream/video-rotation-expected.png: Added.

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

3:49 PM Changeset in webkit [283145] by Alan Coon
  • 4 edits in branches/safari-612-branch

Cherry-pick r282924. rdar://problem/83584505

Make SharedBuffer inherit from ThreadSafeRefCounted
https://bugs.webkit.org/show_bug.cgi?id=230662
rdar://83419269

Source/WebCore:

The SourceBufferPrivateAVFObjC uses dispatch_async that takes an objective-C class.
This copies its argument rather than move it and we end up with the SharedBuffer
captured in the lambda to have its ref count be > 1.
The easiest workaround is to make SharedBuffer use thread-safe refcount.
Of course, this doesn't make a SharedBuffer a thread-safe class, but it allows
to safely move it between threads.

Already covered by existing tests.

Reviewed by Chris Dumez.

  • platform/SharedBuffer.h:

LayoutTests:

Revert bug 230644.

Reviewed by Chris Dumez.

  • platform/mac-wk1/TestExpectations:

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

3:49 PM Changeset in webkit [283144] by Alan Coon
  • 2 edits in branches/safari-612-branch/LayoutTests

Cherry-pick r282895. rdar://problem/83584505

REGRESSION (r282865?): ASSERTION FAILED: Unsafe to ref/deref from different threads m_isOwnedByMainThread == isMainThread().
https://bugs.webkit.org/show_bug.cgi?id=230644

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:

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

3:49 PM Changeset in webkit [283143] by Alan Coon
  • 4 edits in branches/safari-612-branch

Revert r280963. rdar://problem/83587220

3:30 PM Changeset in webkit [283142] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS wk1 ] webanimations/relative-ordering-of-translate-and-rotate-properties-accelerated.html is a flaky image failure.
https://bugs.webkit.org/show_bug.cgi?id=230863

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:27 PM Changeset in webkit [283141] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur arm64 ] imported/w3c/web-platform-tests/resource-timing/sizes-redirect-img.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230862.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:19 PM Changeset in webkit [283140] by mmaxfield@apple.com
  • 6 edits in trunk

Add support for CSSFontPaletteValuesRule.name
https://bugs.webkit.org/show_bug.cgi?id=230787
<rdar://problem/83528540>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

This is being upstreamed in https://github.com/web-platform-tests/wpt/pull/30960.

  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:

Source/WebCore:

This was added to the CSS spec in
https://github.com/w3c/csswg-drafts/commit/8868476c571d63b7f3f2718e22601a711a2d8683.

Test: web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html

  • css/CSSFontPaletteValuesRule.cpp:

(WebCore::CSSFontPaletteValuesRule::name const):

  • css/CSSFontPaletteValuesRule.h:
  • css/CSSFontPaletteValuesRule.idl:
2:53 PM Changeset in webkit [283139] by sbarati@apple.com
  • 100 edits
    1 copy
    1 add in trunk

Build an unlinked baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=229223
<rdar://problem/82321772>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

This patch adds an "unlinked" baseline JIT to JSVALUE64 platforms. The JIT
code produced by this baseline JIT can be shared between all CodeBlocks that
share an UnlinkedCodeBlock. The benefit of this is, if we're creating a CodeBlock
from an UnlinkedCodeBlock that already compiled an unlinked baseline JIT
instance, this new CodeBlock just starts off executing in the baseline JIT
"for free".

To make this work, the code we emit now needs to be independent of a specific
CodeBlock instance. We use a CodeBlock instance for minimal profiling information
when compiling, but otherwise, the code is tied to the UnlinkedCodeBlock. When
we need CodeBlock specific information, we load it. This usually means things
like we'll load things from the Metadata dynamically. This patch also adds a
"linked constant pool" concept, and anytime we instantiate such a CodeBlock,
we also need to instantiate this "linked constant pool". This contains things
like our inline cache data structures (StructureStubInfo*), JSGlobalObject*,
etc.

Unlinked baseline JIT always runs ICs in the "data" mode. To make this work, I
made data ICs work on x86_64. To do this, we no longer call/ret to the IC.
Instead, we jump to the IC, and the IC jumps back by loading the "done" location
from the StructureStubInfo dynamically. This simplifies the design to not be
based on the arm64 calling convention, and keeps the same performance characteristics.

This patch also adds a new version of InlineAccess that is only used in baseline
JIT (for now). In the future, we can make the DFG/FTL also use this for Data
ICs. But we don't need to do that yet since those tiers don't use data ICs by
default. The baseline JIT now has a pure data IC approach to InlineAccess. So
instead of repatching code, we repatch fields we load dynamically.

This patch also cleans up a few things in OSR exit, where both DFG/FTL were
storing callee saves to the callee saves buffer in a weird place, and separate
from one another. I noticed this code can be simplified if we just store
callee saves at the end of the OSR exit handler, and from common JIT emission
code.

This patch also fixes a bug where we could end up with the wrong (and always
more negative) SP in the baseline JIT. This could happen when we OSR exit
from an inlined getter/setter. The OSR exit code puts the return PC when
returning to the call site of the getter/setter to be the inline cache's
"done location". However, this "done location" didn't used to restore SP.
This patch conservatively makes it so that we restore the SP at these sites.

This is measured as a 1% speedup on Speedometer2.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::fromStructureStubInfo):
(JSC::AccessCase::generateImpl):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::valueProfileOffsetFor):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::fastPathStart):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitFastPath):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitDataICFastPath):
(JSC::CallLinkInfo::emitTailCallDataICFastPath):
(JSC::CallLinkInfo::emitDataICSlowPath):
(JSC::CallLinkInfo::initializeDataIC):
(JSC::CallLinkInfo::emitDirectFastPath):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::offsetOfMaxArgumentCountIncludingThis):
(JSC::CallLinkInfo::slowStub): Deleted.
(JSC::CallLinkInfo::addressOfMaxArgumentCountIncludingThis): Deleted.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::isConstantOwnedByUnlinkedCodeBlock const):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::frameRegisterCount):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):
(JSC::CodeBlock::findPC):
(JSC::CodeBlock::jitSoon):
(JSC::CodeBlock::jitNextInvocation):
(JSC::CodeBlock::dumpMathICStats):
(JSC::CodeBlock::finalizeBaselineJITInlineCaches): Deleted.
(JSC::CodeBlock::addJITAddIC): Deleted.
(JSC::CodeBlock::addJITMulIC): Deleted.
(JSC::CodeBlock::addJITSubIC): Deleted.
(JSC::CodeBlock::addJITNegIC): Deleted.
(JSC::CodeBlock::setPCToCodeOriginMap): Deleted.
(JSC::CodeBlock::thresholdForJIT): Deleted.
(JSC::CodeBlock::jitAfterWarmUp): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::JITData::offsetOfJITConstantPool):
(JSC::CodeBlock::offsetOfJITData):
(JSC::CodeBlock::offsetOfArgumentValueProfiles):
(JSC::CodeBlock::offsetOfConstantsVectorBuffer):
(JSC::CodeBlock::baselineJITConstantPool):
(JSC::CodeBlock::checkIfJITThresholdReached):
(JSC::CodeBlock::dontJITAnytimeSoon):
(JSC::CodeBlock::llintExecuteCounter const):
(JSC::CodeBlock::offsetOfDebuggerRequests):
(JSC::CodeBlock::offsetOfShouldAlwaysBeInlined):
(JSC::CodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::CodeBlock::addressOfNumParameters): Deleted.
(JSC::CodeBlock::isKnownCell): Deleted.
(JSC::CodeBlock::addMathIC): Deleted.
(JSC::CodeBlock::setJITCodeMap): Deleted.
(JSC::CodeBlock::jitCodeMap): Deleted.
(JSC::CodeBlock::switchJumpTable): Deleted.
(JSC::CodeBlock::stringSwitchJumpTable): Deleted.

  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachValueProfile):
(JSC::CodeBlock::jitCodeMap):
(JSC::CodeBlock::baselineSwitchJumpTable):
(JSC::CodeBlock::baselineStringSwitchJumpTable):
(JSC::CodeBlock::dfgSwitchJumpTable):
(JSC::CodeBlock::dfgStringSwitchJumpTable):

  • bytecode/ExecutableToCodeBlockEdge.h:
  • bytecode/ExecutionCounter.cpp:

(JSC::ExecutionCounter<countingVariant>::setThreshold):

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::clippedThreshold):

  • bytecode/GetByIdMetadata.h:

(JSC::GetByIdModeMetadataArrayLength::offsetOfArrayProfile):
(JSC::GetByIdModeMetadata::offsetOfMode):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/InByStatus.cpp:

(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::generateSelfPropertyAccess):
(JSC::InlineAccess::canGenerateSelfPropertyReplace):
(JSC::InlineAccess::generateSelfPropertyReplace):
(JSC::InlineAccess::isCacheableArrayLength):
(JSC::InlineAccess::generateArrayLength):
(JSC::InlineAccess::isCacheableStringLength):
(JSC::InlineAccess::generateStringLength):
(JSC::InlineAccess::generateSelfInAccess):
(JSC::InlineAccess::rewireStubAsJumpInAccess):
(JSC::InlineAccess::resetStubAsJumpInAccess):

  • bytecode/InlineAccess.h:
  • bytecode/IterationModeMetadata.h:

(JSC::IterationModeMetadata::offsetOfSeenModes):

  • bytecode/LLIntCallLinkInfo.h:

(JSC::LLIntCallLinkInfo::offsetOfArrayProfile):

  • bytecode/Opcode.h:
  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::succeed):
(JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions):
(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions): Deleted.

  • bytecode/PutByStatus.cpp:

(JSC::PutByStatus::computeForStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initGetByIdSelf):
(JSC::StructureStubInfo::initPutByIdReplace):
(JSC::StructureStubInfo::initInByIdSelf):
(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::reset):
(JSC::StructureStubInfo::visitWeakReferences):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::offsetOfByIdSelfOffset):
(JSC::StructureStubInfo::offsetOfInlineAccessBaseStructure):
(JSC::StructureStubInfo::inlineAccessBaseStructure):
(JSC::StructureStubInfo::offsetOfDoneLocation):

  • bytecode/SuperSampler.cpp:

(JSC::printSuperSamplerState):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::hasIdentifier):
(JSC::UnlinkedCodeBlock::thresholdForJIT):
(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::constantRegister):
(JSC::UnlinkedCodeBlock::instructionAt const):
(JSC::UnlinkedCodeBlock::bytecodeOffset):
(JSC::UnlinkedCodeBlock::instructionsSize const):
(JSC::UnlinkedCodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::UnlinkedCodeBlock::outOfLineJumpOffset):
(JSC::UnlinkedCodeBlock::binaryArithProfile):
(JSC::UnlinkedCodeBlock::unaryArithProfile):
(JSC::UnlinkedCodeBlock::llintExecuteCounter):

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::offsetInMetadataTable):

  • bytecode/ValueProfile.h:

(JSC::ValueProfileBase::ValueProfileBase):
(JSC::ValueProfileBase::clearBuckets):
(JSC::ValueProfile::offsetOfFirstBucket):

  • dfg/DFGCommonData.h:
  • dfg/DFGJITCode.cpp:
  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::handleExitCounts):
(JSC::DFG::callerReturnPC):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenTail):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLJITCode.h:
  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::addMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • generator/Metadata.rb:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::storeProperty):
(JSC::AssemblyHelpers::emitVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCallWithoutMovingGlobalObject):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):

  • jit/BaselineJITCode.cpp: Added.

(JSC::MathICHolder::addJITAddIC):
(JSC::MathICHolder::addJITMulIC):
(JSC::MathICHolder::addJITSubIC):
(JSC::MathICHolder::addJITNegIC):
(JSC::MathICHolder::adoptMathICs):
(JSC::BaselineJITCode::BaselineJITCode):
(JSC::BaselineJITCode::~BaselineJITCode):

  • jit/BaselineJITCode.h: Added.

(JSC::JITConstantPool::add):
(JSC::JITConstantPool::size const):
(JSC::JITConstantPool::at const):

  • jit/BaselineJITPlan.cpp:

(JSC::BaselineJITPlan::finalize):

  • jit/CCallHelpers.cpp:

(JSC::CCallHelpers::logShadowChickenTailPacketImpl):
(JSC::CCallHelpers::logShadowChickenTailPacket):

  • jit/CCallHelpers.h:
  • jit/CallFrameShuffleData.cpp:

(JSC::CallFrameShuffleData::setupCalleeSaveRegisters):

  • jit/CallFrameShuffleData.h:
  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::prepareForTailCall):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot const):

  • jit/JIT.cpp:

(JSC::JIT::JIT):
(JSC::JIT::emitEnterOptimizationCheck):
(JSC::JIT::emitNotifyWriteWatchpoint):
(JSC::JIT::emitVarReadOnlyCheck):
(JSC::JIT::assertStackPointerOffset):
(JSC::JIT::resetSP):
(JSC::JIT::emitPutCodeBlockToFrameInPrologue):
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::emitMaterializeMetadataAndConstantPoolRegisters):
(JSC::JIT::emitRestoreCalleeSaves):
(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):
(JSC::JIT::finalizeOnMainThread):
(JSC::JIT::privateCompile):
(JSC::JIT::frameRegisterCountFor):
(JSC::JIT::stackPointerOffsetFor):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_compareAndJumpSlowImpl):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_op_negate):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • jit/JITCall.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCode.h:

(JSC::JITCode::useDataIC):
(JSC::JITCode::pcToCodeOriginMap):

  • jit/JITCompilationKey.cpp:

(JSC::JITCompilationKey::dump const):

  • jit/JITCompilationKey.h:

(JSC::JITCompilationKey::JITCompilationKey):
(JSC::JITCompilationKey::operator! const):
(JSC::JITCompilationKey::isHashTableDeletedValue const):
(JSC::JITCompilationKey::operator== const):
(JSC::JITCompilationKey::hash const):
(JSC::JITCompilationKey::profiledBlock const): Deleted.

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::finalize):
(JSC::JITInlineCacheGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::generateGetByIdInlineAccess):
(JSC::JITGetByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdWithThisGenerator::generateBaselineDataICFastPath):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::JITInByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITInstanceOfGenerator::generateFastPath):
(JSC::JITGetByValGenerator::generateFastPath):
(JSC::JITPutByValGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITInlines.h:

(JSC::JIT::isOperandConstantDouble):
(JSC::JIT::isOperandConstantInt):
(JSC::JIT::isKnownCell):
(JSC::JIT::getConstantOperand):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile):
(JSC::JIT::linkSlowCaseIfNotJSCell):
(JSC::JIT::advanceToNextCheckpoint):
(JSC::JIT::emitJumpSlowToHotForCheckpoint):
(JSC::JIT::isOperandConstantChar):
(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):
(JSC::JIT::emitArrayProfilingSiteWithCell):
(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitJumpSlowCaseIfNotJSCell):
(JSC::JIT::emitGetVirtualRegister):
(JSC::JIT::jumpTarget):
(JSC::JIT::loadPtrFromMetadata):
(JSC::JIT::load32FromMetadata):
(JSC::JIT::load8FromMetadata):
(JSC::JIT::store8ToMetadata):
(JSC::JIT::store32ToMetadata):
(JSC::JIT::materializePointerIntoMetadata):
(JSC::JIT::loadConstant):
(JSC::JIT::loadGlobalObject):
(JSC::JIT::loadCodeBlockConstant):
(JSC::JIT::copiedGetPutInfo): Deleted.
(JSC::JIT::copiedArithProfile): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_mov):
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::op_ret_handlerGenerator):
(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::valueIsFalseyGenerator):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jeq_ptr):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::valueIsTruthyGenerator):
(JSC::JIT::emit_op_throw):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_debug):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jeq):
(JSC::JIT::emitSlow_op_jneq):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::op_check_traps_handlerGenerator):
(JSC::JIT::emit_op_new_regexp):
(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_array):
(JSC::JIT::emit_op_new_array_with_size):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):
(JSC::JIT::emit_op_profile_control_flow):
(JSC::JIT::emit_op_get_argument):
(JSC::JIT::emit_op_get_prototype_of):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::compileOpEqJumpSlow):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_enter):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::JITPlan::key):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::slow_op_get_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::slow_op_get_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::slow_op_put_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::slow_op_put_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::slow_op_del_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::slow_op_del_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_with_this_prepareCallGenerator):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::slow_op_put_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::generateOpResolveScopeThunk):
(JSC::JIT::slow_op_resolve_scopeGenerator):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::generateOpGetFromScopeThunk):
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::slow_op_put_to_scopeGenerator):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emit_enumerator_has_propertyImpl):
(JSC::JIT::emitWriteBarrier):
(JSC::JIT::emitPutGlobalVariable): Deleted.
(JSC::JIT::emitPutGlobalVariableIndirect): Deleted.
(JSC::JIT::emitPutClosureVar): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutBy):
(JSC::tryCacheInBy):
(JSC::unlinkCall):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CacheableIdentifier.h:
  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):

  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlock::numBinaryArithProfiles const):
(JSC::CachedCodeBlock::numUnaryArithProfiles const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::encode):

  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):

  • runtime/FunctionExecutable.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::prepareForExecutionImpl):

  • wasm/WasmLLIntTierUpCounter.h:

(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):

  • wasm/WasmTierUpCount.cpp:

(JSC::Wasm::TierUpCount::TierUpCount):

  • wasm/WasmTierUpCount.h:

(JSC::Wasm::TierUpCount::optimizeAfterWarmUp):
(JSC::Wasm::TierUpCount::optimizeNextInvocation):
(JSC::Wasm::TierUpCount::optimizeSoon):

Source/WTF:

  • wtf/Bag.h:
  • wtf/Packed.h:

(WTF::PackedAlignedPtr::operator* const):

Tools:

  • Scripts/run-jsc-stress-tests:
2:50 PM Changeset in webkit [283138] by Truitt Savell
  • 2 edits in trunk/LayoutTests

6 editing spelling tests crashing with uncaught exception 'NSInvalidArgumentException'
rdar://83592102

Unreviewed test gardening.

2:33 PM Changeset in webkit [283137] by Truitt Savell
  • 2 edits in trunk/LayoutTests

8 editing/ tests crashing with Assertion failed
rdar://83591040

Unreviewed test gardening.

2:28 PM Changeset in webkit [283136] by Takashi.Komori@sony.com
  • 2 edits in trunk/Source/WebCore

[Curl] Set CURL_LOCK_DATA_SSL_SESSION option to reduce SSL/TLS handshake time
https://bugs.webkit.org/show_bug.cgi?id=230818

Reviewed by Fujii Hironori.

Set CURL_LOCK_DATA_SSL_SESSION option to reuse Session ID.
It reduces SSL/TLS handshake time.

Covered by existing tests.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlShareHandle::CurlShareHandle):

2:27 PM Changeset in webkit [283135] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC][32bit] Fix build after r283098
https://bugs.webkit.org/show_bug.cgi?id=230856

Unreviewed build fix.

Patch by Xan López <Xan Lopez> on 2021-09-27

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jeq_ptr): remove unused (broken) line.

2:21 PM Changeset in webkit [283134] by ntim@apple.com
  • 6 edits in trunk/Source/WebCore

Rename Style::queuePostResolutionCallback to Style::deprecatedQueuePostResolutionCallback
https://bugs.webkit.org/show_bug.cgi?id=230851

Reviewed by Simon Fraser.

The HTML5 event loop should be used instead.
Also fix pre-existing webkit-style errors.

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::didAttachRenderers):
(WebCore::HTMLFormControlElement::didRecalcStyle):

  • html/HTMLFrameOwnerElement.cpp:

(WebCore::HTMLFrameOwnerElement::scheduleInvalidateStyleAndLayerComposition):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::scheduleUpdateForAfterStyleResolution):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::deprecatedQueuePostResolutionCallback):
(WebCore::Style::queuePostResolutionCallback): Deleted.

  • style/StyleTreeResolver.h:
2:07 PM Changeset in webkit [283133] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 14 & 15 ] fast/images/image-subsampling.html is a flaky image failure.
https://bugs.webkit.org/show_bug.cgi?id=230857

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
2:05 PM Changeset in webkit [283132] by Sam Sneddon
  • 3 edits in trunk/Tools

Port._natural_sort_key should sort a01 before a001
https://bugs.webkit.org/show_bug.cgi?id=230764

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/port/base.py:

(Port._natural_sort_key):

  • Scripts/webkitpy/port/base_unittest.py:

(NaturalCompareTest.test_natural_compare):
(KeyCompareTest.test_test_key):

1:47 PM September 2021 Meeting edited by Jon Davis
Added placeholders for more session transcripts (diff)
1:18 PM Changeset in webkit [283131] by Alan Coon
  • 8 edits in branches/safari-612-branch/Source

Versioning.

WebKit-7612.2.9

1:06 PM WebKit2021-2022Igalia edited by Jon Davis
Added notes captured (diff)
12:50 PM Changeset in webkit [283130] by mmaxfield@apple.com
  • 10 edits in trunk

The CSS Fonts spec has deleted CSSRule.FONT_PALETTE_VALUES_RULE
https://bugs.webkit.org/show_bug.cgi?id=230786
<rdar://problem/83528219>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

The test is being upstreamed at https://github.com/web-platform-tests/wpt/pull/30959.

  • web-platform-tests/css/css-fonts/idlharness-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:
  • web-platform-tests/interfaces/css-fonts.idl:

Source/WebCore:

Update WebKit according to
https://github.com/w3c/csswg-drafts/commit/45bda92646e0438c1fcd44497144aa86f0df1b61.

Test: web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html

  • css/CSSRule.h:
  • css/CSSRule.idl:
  • css/StyleRuleType.h:
12:33 PM WebKit2021-2022Igalia edited by Jon Davis
Added link to the slide deck (diff)
12:33 PM Changeset in webkit [283129] by commit-queue@webkit.org
  • 100 edits
    2 deletes in trunk

Unreviewed, reverting r283102, r283103 and r283104.
https://bugs.webkit.org/show_bug.cgi?id=230854

It regresses JetStream2 on iOS devices

Reverted changesets:

"Build an unlinked baseline JIT"
https://bugs.webkit.org/show_bug.cgi?id=229223
https://commits.webkit.org/r283102

"Unreviewed, fix CLoop build"
https://bugs.webkit.org/show_bug.cgi?id=229223
https://commits.webkit.org/r283103

"Unreviewed, fix CLoop build part 2"
https://bugs.webkit.org/show_bug.cgi?id=229223
https://commits.webkit.org/r283104

11:53 AM Changeset in webkit [283128] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ iOS 14 ] remote-layer-tree/ios/uiview-tree-basic.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230850

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
11:34 AM OffscreenCanvas2021Update created by Jon Davis
11:34 AM GitHubandNewProcesses created by Jon Davis
11:33 AM ProtectedCollaborationTree created by Jon Davis
11:17 AM ApplePlansForWebKit2022Edition created by Jon Davis
11:17 AM WebKit2021-2022Igalia created by Jon Davis
11:16 AM September 2021 Meeting edited by Jon Davis
Added Transcript placeholders for day 1 (diff)
10:59 AM Changeset in webkit [283127] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Boundary check of AccessibilityMathMLElement::mathOverObject is incorrect
https://bugs.webkit.org/show_bug.cgi?id=230828
<rdar://problem/83571752>

Reviewed by Chris Fleizach.

  • accessibility/AccessibilityMathMLElement.cpp:

(WebCore::AccessibilityMathMLElement::mathOverObject):

10:27 AM September 2021 Meeting edited by Jon Davis
Updated more titles (diff)
10:18 AM Changeset in webkit [283126] by Jonathan Bedard
  • 5 edits in trunk/Tools

Exception in run-webkit-tests: Bad file descriptor (Revert)
https://bugs.webkit.org/show_bug.cgi?id=229994
<rdar://problem/82826083>

Unreviewed revert.

Revert of 241391@main, 241474@main, 241546@main and 241782@main

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

(FileSystem.rmtree):

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess.write):
(ServerProcess._wait_for_data_and_update_buffers_using_select):

  • Scripts/webkitpy/port/simulator_process.py:

(SimulatorProcess):
(SimulatorProcess._start):

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDevice.launch_app):

10:13 AM Changeset in webkit [283125] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[ MacOS ] inspector/dom/getAccessibilityPropertiesForNode.html is failing
https://bugs.webkit.org/show_bug.cgi?id=230840

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-09-27
Reviewed by Ryan Haddad.

Remove expanded property from expected output for this test.
Following https://trac.webkit.org/changeset/283078/webkit, we don't
expose expanded in this case anymore.

  • inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
10:05 AM September 2021 Meeting edited by Jon Davis
Updated presentation titles (diff)
9:55 AM Changeset in webkit [283124] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur wk1 Debug ] webrtc/datachannel/datachannel-gc.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230848.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:43 AM Changeset in webkit [283123] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] svg/filters/big-height-filter.svg is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230846.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:35 AM Changeset in webkit [283122] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS][GPUP] Remove access to unused mach services in sandbox
https://bugs.webkit.org/show_bug.cgi?id=230832
<rdar://problem/83573640>

Reviewed by Brent Fulgham.

Remove access to mach services on iOS in the GPU process that are unused, according to telemetry.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
9:29 AM Changeset in webkit [283121] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] storage/indexeddb/mozilla/cursor-mutation.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230844.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:27 AM Changeset in webkit [283120] by Antti Koivisto
  • 11 edits in trunk

[CSS Cascade Layers] Support @layer statement before @import statements
https://bugs.webkit.org/show_bug.cgi?id=230826

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-cascade/layer-import-expected.txt:

Source/WebCore:

Support case like

@layer a, b;
@import url(foo.css);

Before this patch @import rules could only be preceded by a @charset rule.

  • css/StyleRule.cpp:

(WebCore::StyleRuleLayer::createStatement):
(WebCore::StyleRuleLayer::createBlock):
(WebCore::StyleRuleLayer::create): Deleted.

Some clarifying renaming.

  • css/StyleRule.h:
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parserAppendRule):

Add a new m_layerRulesBeforeImportRules vector and put any early layer statements there.

(WebCore::StyleSheetContents::ruleAt const):
(WebCore::StyleSheetContents::ruleCount const):
(WebCore::StyleSheetContents::clearRules):
(WebCore::StyleSheetContents::wrapperInsertRule):
(WebCore::StyleSheetContents::wrapperDeleteRule):

  • css/StyleSheetContents.h:
  • css/parser/CSSParserImpl.cpp:

(WebCore::computeNewAllowedRules):
(WebCore::CSSParserImpl::consumeImportRule):
(WebCore::CSSParserImpl::consumeLayerRule):

Parsing support.

  • css/parser/CSSParserImpl.h:
  • style/RuleSet.cpp:

(WebCore::Style::RuleSet::Builder::addChildRules):
(WebCore::Style::RuleSet::Builder::addRulesFromSheet):

Register layers before imports.

(WebCore::Style::RuleSet::Builder::registerLayers):

Factor into a function.

  • style/RuleSet.h:
9:19 AM Changeset in webkit [283119] by BJ Burg
  • 11 edits
    1 copy in trunk/Source/WebKit

[Cocoa] backport showConsole() and showResources() for RemoteWebInspectorUI
https://bugs.webkit.org/show_bug.cgi?id=230573
<rdar://problem/83365814>

Reviewed by Devin Rousso.

These methods already exist for _WKInspector. A test will be added in
future patch that tests _WKInspectorExtensionDelegate shown/hidden callback methods.

  • UIProcess/API/Cocoa/_WKInspectorIBActions.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKInspector.h.

Added. API and SPI that are shared between local and remote Web Inspector
should go in this class. Since these methods are used to implement IBActions for a
detached Web Inspector window, the protocol is named _WKInspectorIBActions.
Hoist showResources() and showConsole() to this shared protocol.

  • UIProcess/API/Cocoa/_WKInspectorExtensionHost.h:
  • UIProcess/API/Cocoa/_WKInspector.h: Remove methods that are

part of the _WKInspectorIBActions protocol.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:

(-[_WKRemoteWebInspectorViewController showConsole]):
(-[_WKRemoteWebInspectorViewController showResources]):
Added. Call into RemoteWebInspectorUIProxy.

  • UIProcess/Inspector/RemoteWebInspectorUIProxy.h:
  • UIProcess/Inspector/RemoteWebInspectorUIProxy.cpp:

(WebKit::RemoteWebInspectorUIProxy::showConsole):
(WebKit::RemoteWebInspectorUIProxy::showResources):
Added. Send an IPC message to the Inspector web process.

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

Add new messages.

  • WebProcess/Inspector/RemoteWebInspectorUI.cpp:

(WebKit::RemoteWebInspectorUI::showConsole):
(WebKit::RemoteWebInspectorUI::showResources):
Added. Backport the implementation from WebInspectorUI.

9:12 AM Changeset in webkit [283118] by Lauro Moura
  • 2 edits in trunk/LayoutTests

Garden passing flexbox abspos tests since updated in 242101@main

Unreviewed test gardening.

These tests are passing in all platforms according to
results.webkit.org.

9:09 AM Changeset in webkit [283117] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur wk1 Debug ] media/track/audio-track.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230842.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:06 AM Changeset in webkit [283116] by youenn@apple.com
  • 14 edits
    1 add in trunk/Source

iPadOS 15 / iOS 15 unable to decode VP9 stream
https://bugs.webkit.org/show_bug.cgi?id=230604
<rdar://problem/83391595>

Reviewed by Eric Carlson.

Source/WebCore:

Export a utility function to know whether HW VP9 is supported by VTB.
No change of behavior.

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h:
  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::vp9HardwareDecoderAvailable):

Source/WebKit:

Update code to retrieve some parameters when synchronously creating the GPU process connection.
The sole parameter is currently to know the HW VP9 decoder availability.
If HW VP9 decoder is not supported by GPUProcess code, we fallback to SW libvpx.

Manually tested.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::createGPUConnectionToWebProcess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • Shared/GPUProcessConnectionInitializationParameters.h: Added.
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::getGPUProcessConnection):

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

(WebKit::GPUProcessConnection::GPUProcessConnection):

  • WebProcess/GPU/GPUProcessConnection.h:

(WebKit::GPUProcessConnection::create):
(WebKit::GPUProcessConnection::hasVP9HardwareDecoder const):

  • WebProcess/GPU/GPUProcessConnectionInfo.h:

(WebKit::GPUProcessConnectionInfo::encode const):
(WebKit::GPUProcessConnectionInfo::decode):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::setCallbacks):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureGPUProcessConnection):

9:03 AM Changeset in webkit [283115] by Andres Gonzalez
  • 9 edits in trunk/Source/WebCore

Fix for crash in accessibility/Mac/search-predicate-for-adhoc-radio-groups.html in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=230754
<rdar://problem/83498599>

Reviewed by Chris Fleizach.

Test: accessibility/Mac/search-predicate-for-adhoc-radio-groups.html

The crash was caused by the call in isRadioButtonInDifferentAdhocGroup
to axObject->element()->getNameAttribute(), since element() should not
be called off of the main thread. That brins up the question of how to
get element attributes on the AX thread. For that purpose, I added the
attributeValue method to the AXCoreObject interface, and removed the
related methods that take QualifiedNames and return an AtomString, since
they cannot be used off of the main thread.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::attributeValue const):
(WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild):
(WebCore::Accessibility::isRadioButtonInDifferentAdhocGroup):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::columnHeaders):
(WebCore::AccessibilityTableCell::rowHeaders):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityIdentifier]):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::attributeValue const):
(WebCore::AXIsolatedObject::hasAttribute const): Deleted.
(WebCore::AXIsolatedObject::getAttribute const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
9:01 AM Changeset in webkit [283114] by youenn@apple.com
  • 20 edits
    4 adds in trunk

Make sure to reset presenting application pid in case of mediaserverd crash
https://bugs.webkit.org/show_bug.cgi?id=230822
<rdar://83474184>

Reviewed by Eric Carlson.

Source/WebCore:

Before the patch, we were asking MediaSessionHelper client to set the pid in case of mediaserverd crash.
Given GPUProcess is the only one receiving the notification now, only the GPUProcess client could do it,
which was not the case as MediaSessionManager in WebProcess was responsible to do so.

Instead of relying on MediaSessionHelper client to do the setup, we now let MediaSessionHelper do it on its own.
Everything will happen in GPUProcess which should also be faster.

We also make sure to reset the affine transform of m_sampleBufferDisplayLayer so that rotation is applied correctly
after mediaserverd crash.

Manually tested by crashing mediaserverd.
Test: fast/mediastream/video-rotation-gpu-process-crash.html (covers affine transform change).

  • platform/audio/ios/MediaSessionHelperIOS.h:
  • platform/audio/ios/MediaSessionHelperIOS.mm:

(MediaSessionHelperiOS::providePresentingApplicationPID):
(MediaSessionHelperiOS::mediaServerConnectionDied):

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSample):

Source/WebKit:

Add API to crash GPUProcess from WebKitTestRunner.

Make sure to forward to MediaPlayer the fact that the layer failed.
This was handled for GPUProcess crash but not for other cases like mediaserverd crashes.

  • UIProcess/API/C/WKContext.cpp:

(WKContextTerminateGPUProcess):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::terminateForTesting):

  • UIProcess/GPU/GPUProcessProxy.h:
  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:

(WebKit::SampleBufferDisplayLayer::setDidFail):

Tools:

Add test runner API to crash GPUProcess.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::terminateGPUProcess):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::terminateGPUProcess):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • fast/mediastream/video-rotation-gpu-process-crash-expected.txt: Added.
  • fast/mediastream/video-rotation-gpu-process-crash.html: Added.
  • platform/ios-simulator/fast/mediastream/video-rotation-gpu-process-crash-expected.png: Added.
  • platform/mac/fast/mediastream/video-rotation-gpu-process-crash-expected.png: Added.
8:57 AM Changeset in webkit [283113] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Windows ] svg/as-background-image/svg-as-background-body.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230838.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:50 AM Changeset in webkit [283112] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

prepare-ChangeLog does not show the correct result with using --git-commit
https://bugs.webkit.org/show_bug.cgi?id=230816

Patch by Hoa Dinh <dvh@apple.com> on 2021-09-27
Reviewed by Jonathan Bedard.

When we pass the parameter --git-commit, we need to use the correct reference version when
computing the difference between the version before and after the change.
This patch fixes it by passing the version before the specified commit.

Also, when --git-commit is used, we need compare against the correct version of the file.
This patch fixes that part by calling git to retrieve the accurate version.

  • Scripts/prepare-ChangeLog:

(originalFile):
(generateFunctionLists):

8:41 AM Changeset in webkit [283111] by Kate Cheney
  • 178 edits in trunk

Send CSP violation reports to the DOM window
https://bugs.webkit.org/show_bug.cgi?id=230728

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

Rebaseline CSP tests now that many are no longer timing out. In some
cases this will require removing console logging because in general
for CSP tests we dump console logging to stderr to avoid flakiness.

  • web-platform-tests/content-security-policy/base-uri/report-uri-does-not-respect-base-uri.sub-expected.txt:
  • web-platform-tests/content-security-policy/blob/blob-urls-do-not-match-self.sub-expected.txt:
  • web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/child-src/child-src-worker-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-beacon-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/default-src/default-src-inline-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/font-src/font-stylesheet-font-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/form-action/form-action-src-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/form-action/form-action-src-get-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-cross-origin-load.sub-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-redirect-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-same-document-meta.sub-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-same-document.sub-expected.txt:
  • web-platform-tests/content-security-policy/frame-src/frame-src-self-unique-origin-expected.txt:
  • web-platform-tests/content-security-policy/generic/304-response-should-update-csp.sub-expected.txt:
  • web-platform-tests/content-security-policy/generic/directive-name-case-insensitive.sub-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_1-img-src-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_1-script-src-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_10_1.sub-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_2_2.sub-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_2_3-expected.txt:
  • web-platform-tests/content-security-policy/generic/generic-0_8_1.sub-expected.txt:
  • web-platform-tests/content-security-policy/generic/only-valid-whitespaces-are-allowed-expected.txt:
  • web-platform-tests/content-security-policy/generic/policy-inherited-correctly-by-plznavigate-expected.txt:
  • web-platform-tests/content-security-policy/img-src/img-src-self-unique-origin-expected.txt:
  • web-platform-tests/content-security-policy/img-src/report-blocked-data-uri.sub-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/document-write-iframe-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/frame-src-javascript-url-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/iframe-srcdoc-inheritance-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/inherited-csp-list-modifications-are-local-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/javascript-url-srcdoc-cross-origin-iframe-inheritance-expected.txt:
  • web-platform-tests/content-security-policy/inheritance/location-reload-expected.txt:
  • web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub-expected.txt:
  • web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub-expected.txt:
  • web-platform-tests/content-security-policy/media-src/media-src-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub-expected.txt:
  • web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.sub-expected.txt:
  • web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.sub-expected.txt:
  • web-platform-tests/content-security-policy/navigation/javascript-url-navigation-inherits-csp-expected.txt:
  • web-platform-tests/content-security-policy/navigation/to-javascript-parent-initiated-parent-csp-expected.txt:
  • web-platform-tests/content-security-policy/object-src/object-src-no-url-blocked-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/report-to-directive-allowed-in-meta.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-only-sends-reports-to-first-endpoint.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub-expected.txt:
  • web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies-expected.txt:
  • web-platform-tests/content-security-policy/reporting/report-uri-effective-directive-expected.txt:
  • web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-3-expected.txt:
  • web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-7-expected.txt:
  • web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-9-expected.txt:
  • web-platform-tests/content-security-policy/script-src/hash-always-converted-to-utf-8/utf-8-lone-surrogate-expected.txt:
  • web-platform-tests/content-security-policy/script-src/injected-inline-script-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/script-src/javascript-window-open-blocked-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_10-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_2-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_2_1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-1_4_1-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy-expected.txt:
  • web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scriptnonce-and-scripthash.sub-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scriptnonce-basic-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub-expected.txt:
  • web-platform-tests/content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/img-src-redirect.sub-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/inside-dedicated-worker-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub-expected.txt:
  • web-platform-tests/content-security-policy/securitypolicyviolation/upgrade-insecure-requests-reporting.https-expected.txt:
  • web-platform-tests/content-security-policy/style-src/injected-inline-style-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/inline-style-attribute-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-error-event-fires-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-hash-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-imported-style-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-injected-inline-style-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-injected-stylesheet-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-inline-style-attribute-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-inline-style-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-inline-style-nonce-blocked-error-event-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-inline-style-nonce-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-none-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/style-src-stylesheet-nonce-blocked-expected.txt:
  • web-platform-tests/content-security-policy/style-src/stylehash-basic-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/stylenonce-allowed.sub-expected.txt:
  • web-platform-tests/content-security-policy/style-src/stylenonce-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/svg/object-in-svg-foreignobject.sub-expected.txt:
  • web-platform-tests/content-security-policy/svg/svg-inline.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-href_blank-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_location-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_allowed-window_open-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-href_blank-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_location-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_missing_unsafe_hashes-window_open-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-href_blank-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_location-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/javascript_src_denied_wrong_hash-window_open-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_allowed-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_missing_unsafe_hashes-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/script_event_handlers_denied_wrong_hash-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_missing_unsafe_hashes-expected.txt:
  • web-platform-tests/content-security-policy/unsafe-hashes/style_attribute_denied_wrong_hash-expected.txt:
  • web-platform-tests/content-security-policy/worker-src/dedicated-worker-src-child-fallback-blocked.sub-expected.txt:

Source/WebCore:

No new tests. This will fix numerous test timeouts.

Many imported CSP tests are timing out because they wait for security
violation events to be sent to the DOM window. This patch bubbles up
violation reports so attached documents will also report violations
to the window.

  • dom/Document.cpp:

(WebCore::Document::enqueueSecurityPolicyViolationEvent):

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):
We should only report the name of the violated directive to match
the spec, which specifies this should be "a non-empty string
representing the directive whose enforcement caused the violation."

LayoutTests:

Unskip tests that are no longer timing out after this fix. Rebaseline
tests that previously expected a different violated directive text.

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-cross-origin-image-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-cross-origin-image-from-script-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-image-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-image-from-script-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securitypolicyviolation-block-image-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report-expected.txt:
8:36 AM Changeset in webkit [283110] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur wk1 Debug ] Assertion Failure: WebGL tests are flaky crashes.
https://bugs.webkit.org/show_bug.cgi?id=230835.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:13 AM Changeset in webkit [283109] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS] performance-api/performance-observer-order.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230833.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
7:59 AM Changeset in webkit [283108] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] storage/websql/multiple-transactions-on-different-handles.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230831.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
7:45 AM Changeset in webkit [283107] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230696.

Unreviewed test gardening.

  • platform/ios-14-wk2/TestExpectations:
5:34 AM Changeset in webkit [283106] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Rename RemoteCaptureSampleManager::RemoteAudio thread appropriately
https://bugs.webkit.org/show_bug.cgi?id=230745

Reviewed by Eric Carlson.

No change of behavior.

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::startThread):

4:25 AM Changeset in webkit [283105] by ntim@apple.com
  • 9 edits in trunk/Source

Replace Node::isInert() with RenderStyle::effectiveInert()
https://bugs.webkit.org/show_bug.cgi?id=230686

Reviewed by Antti Koivisto.

This replaces Node::isInert() in favor of RenderStyle::effectiveInert() which is more accurate. We can't use it in
Element::isFocusable(), since there's a bug with invalidation when accessing the cached computedStyle, hence
the Node::deprecatedIsInert() method.

Source/WebCore:

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::defaultObjectInclusion const):

  • dom/Element.cpp:

(WebCore::Element::isFocusable const):

  • dom/Node.cpp:

(WebCore::Node::canStartSelection const):
(WebCore::Node::deprecatedIsInert const): Added.

  • dom/Node.h:
  • dom/Position.cpp:

(WebCore::Position::nodeIsInertOrUserSelectNone):
(WebCore::Position::nodeIsUserSelectAll):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::collectSelectionGeometriesInternal):

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::selectionPositionInformation):

2:07 AM Changeset in webkit [283104] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix CLoop build part 2
https://bugs.webkit.org/show_bug.cgi?id=229223

  • llint/LowLevelInterpreter64.asm:
1:55 AM Changeset in webkit [283103] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, fix CLoop build
https://bugs.webkit.org/show_bug.cgi?id=229223

  • llint/LLIntOfflineAsmConfig.h:
  • llint/LowLevelInterpreter64.asm:
12:52 AM Changeset in webkit [283102] by sbarati@apple.com
  • 99 edits
    1 copy
    1 add in trunk

Build an unlinked baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=229223
<rdar://problem/82321772>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

This patch adds an "unlinked" baseline JIT to JSVALUE64 platforms. The JIT
code produced by this baseline JIT can be shared between all CodeBlocks that
share an UnlinkedCodeBlock. The benefit of this is, if we're creating a CodeBlock
from an UnlinkedCodeBlock that already compiled an unlinked baseline JIT
instance, this new CodeBlock just starts off executing in the baseline JIT
"for free".

To make this work, the code we emit now needs to be independent of a specific
CodeBlock instance. We use a CodeBlock instance for minimal profiling information
when compiling, but otherwise, the code is tied to the UnlinkedCodeBlock. When
we need CodeBlock specific information, we load it. This usually means things
like we'll load things from the Metadata dynamically. This patch also adds a
"linked constant pool" concept, and anytime we instantiate such a CodeBlock,
we also need to instantiate this "linked constant pool". This contains things
like our inline cache data structures (StructureStubInfo*), JSGlobalObject*,
etc.

Unlinked baseline JIT always runs ICs in the "data" mode. To make this work, I
made data ICs work on x86_64. To do this, we no longer call/ret to the IC.
Instead, we jump to the IC, and the IC jumps back by loading the "done" location
from the StructureStubInfo dynamically. This simplifies the design to not be
based on the arm64 calling convention, and keeps the same performance characteristics.

This patch also adds a new version of InlineAccess that is only used in baseline
JIT (for now). In the future, we can make the DFG/FTL also use this for Data
ICs. But we don't need to do that yet since those tiers don't use data ICs by
default. The baseline JIT now has a pure data IC approach to InlineAccess. So
instead of repatching code, we repatch fields we load dynamically.

This patch also cleans up a few things in OSR exit, where both DFG/FTL were
storing callee saves to the callee saves buffer in a weird place, and separate
from one another. I noticed this code can be simplified if we just store
callee saves at the end of the OSR exit handler, and from common JIT emission
code.

This patch also fixes a bug where we could end up with the wrong (and always
more negative) SP in the baseline JIT. This could happen when we OSR exit
from an inlined getter/setter. The OSR exit code puts the return PC when
returning to the call site of the getter/setter to be the inline cache's
"done location". However, this "done location" didn't used to restore SP.
This patch conservatively makes it so that we restore the SP at these sites.

This is measured as a 1% speedup on Speedometer2.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::fromStructureStubInfo):
(JSC::AccessCase::generateImpl):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::valueProfileOffsetFor):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::fastPathStart):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitFastPath):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitDataICFastPath):
(JSC::CallLinkInfo::emitTailCallDataICFastPath):
(JSC::CallLinkInfo::emitDataICSlowPath):
(JSC::CallLinkInfo::initializeDataIC):
(JSC::CallLinkInfo::emitDirectFastPath):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::offsetOfMaxArgumentCountIncludingThis):
(JSC::CallLinkInfo::slowStub): Deleted.
(JSC::CallLinkInfo::addressOfMaxArgumentCountIncludingThis): Deleted.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::isConstantOwnedByUnlinkedCodeBlock const):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::frameRegisterCount):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):
(JSC::CodeBlock::findPC):
(JSC::CodeBlock::jitSoon):
(JSC::CodeBlock::jitNextInvocation):
(JSC::CodeBlock::dumpMathICStats):
(JSC::CodeBlock::finalizeBaselineJITInlineCaches): Deleted.
(JSC::CodeBlock::addJITAddIC): Deleted.
(JSC::CodeBlock::addJITMulIC): Deleted.
(JSC::CodeBlock::addJITSubIC): Deleted.
(JSC::CodeBlock::addJITNegIC): Deleted.
(JSC::CodeBlock::setPCToCodeOriginMap): Deleted.
(JSC::CodeBlock::thresholdForJIT): Deleted.
(JSC::CodeBlock::jitAfterWarmUp): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::JITData::offsetOfJITConstantPool):
(JSC::CodeBlock::offsetOfJITData):
(JSC::CodeBlock::offsetOfArgumentValueProfiles):
(JSC::CodeBlock::offsetOfConstantsVectorBuffer):
(JSC::CodeBlock::baselineJITConstantPool):
(JSC::CodeBlock::checkIfJITThresholdReached):
(JSC::CodeBlock::dontJITAnytimeSoon):
(JSC::CodeBlock::llintExecuteCounter const):
(JSC::CodeBlock::offsetOfDebuggerRequests):
(JSC::CodeBlock::offsetOfShouldAlwaysBeInlined):
(JSC::CodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::CodeBlock::addressOfNumParameters): Deleted.
(JSC::CodeBlock::isKnownCell): Deleted.
(JSC::CodeBlock::addMathIC): Deleted.
(JSC::CodeBlock::setJITCodeMap): Deleted.
(JSC::CodeBlock::jitCodeMap): Deleted.
(JSC::CodeBlock::switchJumpTable): Deleted.
(JSC::CodeBlock::stringSwitchJumpTable): Deleted.

  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachValueProfile):
(JSC::CodeBlock::jitCodeMap):
(JSC::CodeBlock::baselineSwitchJumpTable):
(JSC::CodeBlock::baselineStringSwitchJumpTable):
(JSC::CodeBlock::dfgSwitchJumpTable):
(JSC::CodeBlock::dfgStringSwitchJumpTable):

  • bytecode/ExecutableToCodeBlockEdge.h:
  • bytecode/ExecutionCounter.cpp:

(JSC::ExecutionCounter<countingVariant>::setThreshold):

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::clippedThreshold):

  • bytecode/GetByIdMetadata.h:

(JSC::GetByIdModeMetadataArrayLength::offsetOfArrayProfile):
(JSC::GetByIdModeMetadata::offsetOfMode):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/InByStatus.cpp:

(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::generateSelfPropertyAccess):
(JSC::InlineAccess::canGenerateSelfPropertyReplace):
(JSC::InlineAccess::generateSelfPropertyReplace):
(JSC::InlineAccess::isCacheableArrayLength):
(JSC::InlineAccess::generateArrayLength):
(JSC::InlineAccess::isCacheableStringLength):
(JSC::InlineAccess::generateStringLength):
(JSC::InlineAccess::generateSelfInAccess):
(JSC::InlineAccess::rewireStubAsJumpInAccess):
(JSC::InlineAccess::resetStubAsJumpInAccess):

  • bytecode/InlineAccess.h:
  • bytecode/IterationModeMetadata.h:

(JSC::IterationModeMetadata::offsetOfSeenModes):

  • bytecode/LLIntCallLinkInfo.h:

(JSC::LLIntCallLinkInfo::offsetOfArrayProfile):

  • bytecode/Opcode.h:
  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::succeed):
(JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions):
(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions): Deleted.

  • bytecode/PutByStatus.cpp:

(JSC::PutByStatus::computeForStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initGetByIdSelf):
(JSC::StructureStubInfo::initPutByIdReplace):
(JSC::StructureStubInfo::initInByIdSelf):
(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::reset):
(JSC::StructureStubInfo::visitWeakReferences):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::offsetOfByIdSelfOffset):
(JSC::StructureStubInfo::offsetOfInlineAccessBaseStructure):
(JSC::StructureStubInfo::inlineAccessBaseStructure):
(JSC::StructureStubInfo::offsetOfDoneLocation):

  • bytecode/SuperSampler.cpp:

(JSC::printSuperSamplerState):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::hasIdentifier):
(JSC::UnlinkedCodeBlock::thresholdForJIT):
(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::constantRegister):
(JSC::UnlinkedCodeBlock::instructionAt const):
(JSC::UnlinkedCodeBlock::bytecodeOffset):
(JSC::UnlinkedCodeBlock::instructionsSize const):
(JSC::UnlinkedCodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::UnlinkedCodeBlock::outOfLineJumpOffset):
(JSC::UnlinkedCodeBlock::binaryArithProfile):
(JSC::UnlinkedCodeBlock::unaryArithProfile):
(JSC::UnlinkedCodeBlock::llintExecuteCounter):

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::offsetInMetadataTable):

  • bytecode/ValueProfile.h:

(JSC::ValueProfileBase::ValueProfileBase):
(JSC::ValueProfileBase::clearBuckets):
(JSC::ValueProfile::offsetOfFirstBucket):

  • dfg/DFGCommonData.h:
  • dfg/DFGJITCode.cpp:
  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::handleExitCounts):
(JSC::DFG::callerReturnPC):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenTail):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLJITCode.h:
  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::addMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • generator/Metadata.rb:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::storeProperty):
(JSC::AssemblyHelpers::emitVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCallWithoutMovingGlobalObject):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):

  • jit/BaselineJITCode.cpp: Added.

(JSC::MathICHolder::addJITAddIC):
(JSC::MathICHolder::addJITMulIC):
(JSC::MathICHolder::addJITSubIC):
(JSC::MathICHolder::addJITNegIC):
(JSC::MathICHolder::adoptMathICs):
(JSC::BaselineJITCode::BaselineJITCode):
(JSC::BaselineJITCode::~BaselineJITCode):

  • jit/BaselineJITCode.h: Added.

(JSC::JITConstantPool::add):
(JSC::JITConstantPool::size const):
(JSC::JITConstantPool::at const):

  • jit/BaselineJITPlan.cpp:

(JSC::BaselineJITPlan::finalize):

  • jit/CCallHelpers.cpp:

(JSC::CCallHelpers::logShadowChickenTailPacketImpl):
(JSC::CCallHelpers::logShadowChickenTailPacket):

  • jit/CCallHelpers.h:
  • jit/CallFrameShuffleData.cpp:

(JSC::CallFrameShuffleData::setupCalleeSaveRegisters):

  • jit/CallFrameShuffleData.h:
  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::prepareForTailCall):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot const):

  • jit/JIT.cpp:

(JSC::JIT::JIT):
(JSC::JIT::emitEnterOptimizationCheck):
(JSC::JIT::emitNotifyWriteWatchpoint):
(JSC::JIT::emitVarReadOnlyCheck):
(JSC::JIT::assertStackPointerOffset):
(JSC::JIT::resetSP):
(JSC::JIT::emitPutCodeBlockToFrameInPrologue):
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::emitMaterializeMetadataAndConstantPoolRegisters):
(JSC::JIT::emitRestoreCalleeSaves):
(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):
(JSC::JIT::finalizeOnMainThread):
(JSC::JIT::privateCompile):
(JSC::JIT::frameRegisterCountFor):
(JSC::JIT::stackPointerOffsetFor):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_compareAndJumpSlowImpl):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_op_negate):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • jit/JITCall.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCode.h:

(JSC::JITCode::useDataIC):
(JSC::JITCode::pcToCodeOriginMap):

  • jit/JITCompilationKey.cpp:

(JSC::JITCompilationKey::dump const):

  • jit/JITCompilationKey.h:

(JSC::JITCompilationKey::JITCompilationKey):
(JSC::JITCompilationKey::operator! const):
(JSC::JITCompilationKey::isHashTableDeletedValue const):
(JSC::JITCompilationKey::operator== const):
(JSC::JITCompilationKey::hash const):
(JSC::JITCompilationKey::profiledBlock const): Deleted.

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::finalize):
(JSC::JITInlineCacheGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::generateGetByIdInlineAccess):
(JSC::JITGetByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdWithThisGenerator::generateBaselineDataICFastPath):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::JITInByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITInstanceOfGenerator::generateFastPath):
(JSC::JITGetByValGenerator::generateFastPath):
(JSC::JITPutByValGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITInlines.h:

(JSC::JIT::isOperandConstantDouble):
(JSC::JIT::isOperandConstantInt):
(JSC::JIT::isKnownCell):
(JSC::JIT::getConstantOperand):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile):
(JSC::JIT::linkSlowCaseIfNotJSCell):
(JSC::JIT::advanceToNextCheckpoint):
(JSC::JIT::emitJumpSlowToHotForCheckpoint):
(JSC::JIT::isOperandConstantChar):
(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):
(JSC::JIT::emitArrayProfilingSiteWithCell):
(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitJumpSlowCaseIfNotJSCell):
(JSC::JIT::emitGetVirtualRegister):
(JSC::JIT::jumpTarget):
(JSC::JIT::loadPtrFromMetadata):
(JSC::JIT::load32FromMetadata):
(JSC::JIT::load8FromMetadata):
(JSC::JIT::store8ToMetadata):
(JSC::JIT::store32ToMetadata):
(JSC::JIT::materializePointerIntoMetadata):
(JSC::JIT::loadConstant):
(JSC::JIT::loadGlobalObject):
(JSC::JIT::loadCodeBlockConstant):
(JSC::JIT::copiedGetPutInfo): Deleted.
(JSC::JIT::copiedArithProfile): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_mov):
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::op_ret_handlerGenerator):
(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::valueIsFalseyGenerator):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jeq_ptr):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::valueIsTruthyGenerator):
(JSC::JIT::emit_op_throw):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_debug):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jeq):
(JSC::JIT::emitSlow_op_jneq):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::op_check_traps_handlerGenerator):
(JSC::JIT::emit_op_new_regexp):
(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_array):
(JSC::JIT::emit_op_new_array_with_size):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):
(JSC::JIT::emit_op_profile_control_flow):
(JSC::JIT::emit_op_get_argument):
(JSC::JIT::emit_op_get_prototype_of):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::compileOpEqJumpSlow):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_enter):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::JITPlan::key):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::slow_op_get_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::slow_op_get_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::slow_op_put_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::slow_op_put_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::slow_op_del_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::slow_op_del_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_with_this_prepareCallGenerator):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::slow_op_put_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::generateOpResolveScopeThunk):
(JSC::JIT::slow_op_resolve_scopeGenerator):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::generateOpGetFromScopeThunk):
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::slow_op_put_to_scopeGenerator):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emit_enumerator_has_propertyImpl):
(JSC::JIT::emitWriteBarrier):
(JSC::JIT::emitPutGlobalVariable): Deleted.
(JSC::JIT::emitPutGlobalVariableIndirect): Deleted.
(JSC::JIT::emitPutClosureVar): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutBy):
(JSC::tryCacheInBy):
(JSC::unlinkCall):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CacheableIdentifier.h:
  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):

  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlock::numBinaryArithProfiles const):
(JSC::CachedCodeBlock::numUnaryArithProfiles const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::encode):

  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):

  • runtime/FunctionExecutable.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::prepareForExecutionImpl):

  • wasm/WasmLLIntTierUpCounter.h:

(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):

  • wasm/WasmTierUpCount.cpp:

(JSC::Wasm::TierUpCount::TierUpCount):

  • wasm/WasmTierUpCount.h:

(JSC::Wasm::TierUpCount::optimizeAfterWarmUp):
(JSC::Wasm::TierUpCount::optimizeNextInvocation):
(JSC::Wasm::TierUpCount::optimizeSoon):

Source/WTF:

  • wtf/Bag.h:
  • wtf/Packed.h:

(WTF::PackedAlignedPtr::operator* const):

Tools:

  • Scripts/run-jsc-stress-tests:
12:48 AM Changeset in webkit [283101] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Use op_jeq_ptr for empty JSPropertyNameEnumerator check
https://bugs.webkit.org/show_bug.cgi?id=230817

Reviewed by Saam Barati.

We use op_jeq_ptr for empty JSPropertyNameEnumerator check instead of stricteq for smaller
bytecode size and efficient branching in LLInt and Baseline. In DFG and FTL, both will get
the same nodes.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpIfEmptyPropertyNameEnumerator):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):

12:08 AM Changeset in webkit [283100] by Martin Robinson
  • 6 edits
    2 adds in trunk

Mandatory scroll snapping doesn't work correctly in tables with position:sticky
https://bugs.webkit.org/show_bug.cgi?id=227300
<rdar://problem/79971196>

Reviewed by Simon Fraser.

Source/WebCore:

Add a mode for mapLocalToContainer which ignores sticky offsets. This will be
used by more code in the future.

Test: css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-sticky.html

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::updateSnapOffsetsForScrollableArea): Pass the IgnoreStickyOffsets flag.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::mapLocalToContainer const): When the IgnoreStickyOffsets flag is
passed, explicitly remove sticky offsets from the container offset.

  • rendering/RenderObjectEnums.h: Add the IgnoreStickyOffests flag.

LayoutTests:

Add a test which exercises the original bug.

  • css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-sticky-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-drag-scrollbar-thumb-with-sticky.html: Added.
  • platform/ios/TestExpectations: Skip this test on iOS, which doesn't support thumb dragging.

Sep 26, 2021:

11:47 PM Changeset in webkit [283099] by Cameron McCormack
  • 9 edits
    114 deletes in trunk/LayoutTests

Remove old test files from canvas WPTs that were moved
https://bugs.webkit.org/show_bug.cgi?id=230811
<rdar://problem/83554404>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

A bunch of canvas test moved directories in
https://github.com/web-platform-tests/wpt/pull/23996. When we re-
imported canvas WPTs in bug 229750, these old files were left behind.
We can remove them since they all now live under
html/canvas/element/manual/.

  • web-platform-tests/html/canvas/element/building-paths/canvas_complexshapes_arcto_001.htm: Removed.
  • web-platform-tests/html/canvas/element/building-paths/canvas_complexshapes_beziercurveto_001.htm: Removed.
  • web-platform-tests/html/canvas/element/context-attributes/getContextAttributes-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/context-attributes/getContextAttributes.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height-orientation-none.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-swap-width-height.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-orientation-none.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height-orientation-none.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element-swap-width-height.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-from-element.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative-expected.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/image-orientation/drawImage-with-src-rect.tentative.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/canvas_complexshapes_ispointInpath_001.htm: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_001-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_002-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_003-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_004-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_005-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html: Removed.
  • web-platform-tests/html/canvas/element/image-smoothing/imagesmoothing-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/image-smoothing/imagesmoothing.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-resize-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-resize.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-video-resize-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-video-resize.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/common.sub.js: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-blob-invalidtype-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-blob-invalidtype.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-bounds-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-bounds.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage-closed-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage-closed.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-in-worker-transfer-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-in-worker-transfer.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-invalid-args-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-invalid-args.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-origin.sub-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-origin.sub.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-serializable-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-serializable.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-sizeOverflow-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-sizeOverflow.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-transfer-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-transfer.html: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-worker.js: Removed.
  • web-platform-tests/html/canvas/element/imagebitmap/transfer-worker.js: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-semitransparent-p3d65.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-semitransparent-rec2020.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-semitransparent-srgb.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb-fullcolor.ogv: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb-transparent.bmp: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb-transparent.ico: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb-transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb-transparent.webp: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.bmp: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.gif: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.ico: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.jpg: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.svg: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/pattern-srgb.webp: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_AdobeRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_AdobeRGB_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_DisplayP3_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_DisplayP3_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_ProPhoto_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_ProPhoto_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_Rec2020_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_Rec2020_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_AdobeRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_AdobeRGB_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_DisplayP3_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_DisplayP3_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_ProPhoto_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_ProPhoto_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_Rec2020_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_Rec2020_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_sRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_interlaced_sRGB_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_sRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_16bit_sRGB_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_AdobeRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_AdobeRGB_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_DisplayP3_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_DisplayP3_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_ProPhoto_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_ProPhoto_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_Rec2020_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_Rec2020_transparent.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_sRGB_opaque.png: Removed.
  • web-platform-tests/html/canvas/element/wide-gamut-canvas/resources/png-16bit/2x2_8bit_sRGB_transparent.png: Removed.

LayoutTests:

  • TestExpectations:
  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/image-smoothing/imagesmoothing-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-resize-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-invalid-args-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-serializable-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-transfer-expected.txt: Removed.
  • platform/ios-14/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY-expected.txt: Removed.
  • platform/mac/TestExpectations:
10:02 PM Changeset in webkit [283098] by ysuzuki@apple.com
  • 30 edits
    2 adds in trunk

[JSC] Optimize PutByVal with for-in
https://bugs.webkit.org/show_bug.cgi?id=230801

Reviewed by Saam Barati.

JSTests:

  • stress/for-in-sentinel.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

We found that some of Speedometer2 subtests are heavily using for-in with PutByVal or the other DFG nodes.
And we also found that we are using polluted non-good type for the property names from for-in: String | Other.
The reason is that we are returning null when op_enumerator_next finishes instead of string. And this design
forces DFG and FTL to return null from EnumeratorNextUpdatePropertyName at the end of iteration. This pollutes
the type of property names as String | Other instead of String, and leading to suboptimal DFG nodes.

In this patch, we add special sentinel string in vm.smallString.sentinelString(). We know that this string cell
pointer will be never returned from EnumeratorNextUpdatePropertyName in the normal for-in iteration. This is easy
since we are always allocating a JSString when creating JSPropertyNameEnumerator. So this string cell (not the content)
is always different from pre-allocated vm.smallString.sentinelString(). So, we use this special string pointer
as a sentinel instead of null so that we can avoid polluting return type of EnumeratorNextUpdatePropertyName.

To check the sentinel in LLInt / Baseline, this patch adds jeq_ptr, which performs cell pointer comparison and do
not check string content equality. We do not need to have an implementation in DFG since we already have CompareEqPtr
for existing jneq_ptr bytecode.

We also clean up DFG operation related to PutByVal.


| subtest | ms | ms | b / a | pValue (significance using False Discovery Rate) |


| Elm-TodoMVC |116.010000 |112.701667 |0.971482 | 0.000000 (significant) |
| VueJS-TodoMVC |22.995000 |23.023333 |1.001232 | 0.907086 |
| EmberJS-TodoMVC |125.498333 |125.525000 |1.000212 | 0.932546 |
| BackboneJS-TodoMVC |45.700000 |45.975000 |1.006018 | 0.084799 |
| Preact-TodoMVC |16.681667 |16.610000 |0.995704 | 0.722758 |
| AngularJS-TodoMVC |123.753333 |123.740000 |0.999892 | 0.971431 |
| Vanilla-ES2015-TodoMVC |61.255000 |61.380000 |1.002041 | 0.300654 |
| Inferno-TodoMVC |58.646667 |58.948333 |1.005144 | 0.267611 |
| Flight-TodoMVC |73.283333 |72.801667 |0.993427 | 0.207389 |
| Angular2-TypeScript-TodoMVC |39.746667 |40.015000 |1.006751 | 0.449821 |
| VanillaJS-TodoMVC |50.096667 |49.823333 |0.994544 | 0.162020 |
| jQuery-TodoMVC |212.870000 |213.196667 |1.001535 | 0.371944 |
| EmberJS-Debug-TodoMVC |331.878333 |332.710000 |1.002506 | 0.094499 |
| React-TodoMVC |83.078333 |82.726667 |0.995767 | 0.076143 |
| React-Redux-TodoMVC |136.018333 |133.935000 |0.984683 | 0.000000 (significant) |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |59.743333 |59.643333 |0.998326 | 0.393671 |


a mean = 271.75873
b mean = 272.45804
pValue = 0.0263030803
(Bigger means are better.)
1.003 times better
Results ARE significant

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

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

  • bytecode/LinkTimeConstant.h:
  • bytecode/Opcode.h:

(JSC::isBranch):

  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::GenericLabel<JSGeneratorTraits>::setLocation):
(JSC::BytecodeGenerator::emitJumpIfSentinelString):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOperations.cpp:

(JSC::DFG::putByVal):
(JSC::DFG::putByValInternal):
(JSC::DFG::putByValCellInternal):
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileEnumeratorNextUpdatePropertyName):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_jeq_ptr):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jeq_ptr):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_enumerator_next):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):

  • runtime/SmallStrings.h:

(JSC::SmallStrings::sentinelString const):

9:40 PM Changeset in webkit [283097] by Jean-Yves Avenard
  • 7 edits in trunk

[MSE] appending to the source buffer will not throw when the source buffer is full.
https://bugs.webkit.org/show_bug.cgi?id=230672
rdar://problem/83496195

Reviewed by Eric Carlson.

Source/WebCore:

Tests: media/media-source/media-source-append-buffer-full-quota-exceeded-error.html

  • platform/graphics/PlatformTimeRanges.cpp:

(WebCore::PlatformTimeRanges::findWithEpsilon): add method.
(WebCore::PlatformTimeRanges::copyWithEpsilon const): add method.

  • platform/graphics/PlatformTimeRanges.h:
  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::evictCodedFrames):

LayoutTests:

  • media/media-source/media-source-append-buffer-full-quota-exceeded-error-expected.txt:
  • media/media-source/media-source-append-buffer-full-quota-exceeded-error.html:
9:37 PM WikiStart edited by Simon Fraser
(diff)
9:25 PM Changeset in webkit [283096] by commit-queue@webkit.org
  • 28 edits
    1 delete in trunk

Unreviewed, reverting r283095.
https://bugs.webkit.org/show_bug.cgi?id=230815

We should land the original patch since this does not work
with bytecode cache

Reverted changeset:

"[JSC] Optimize PutByVal with for-in"
https://bugs.webkit.org/show_bug.cgi?id=230801
https://commits.webkit.org/r283095

9:14 PM Changeset in webkit [283095] by ysuzuki@apple.com
  • 28 edits
    1 add in trunk

[JSC] Optimize PutByVal with for-in
https://bugs.webkit.org/show_bug.cgi?id=230801

Reviewed by Saam Barati.

JSTests:

  • stress/for-in-sentinel.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

We found that some of Speedometer2 subtests are heavily using for-in with PutByVal or the other DFG nodes.
And we also found that we are using polluted non-good type for the property names from for-in: String | Other.
The reason is that we are returning null when op_enumerator_next finishes instead of string. And this design
forces DFG and FTL to return null from EnumeratorNextUpdatePropertyName at the end of iteration. This pollutes
the type of property names as String | Other instead of String, and leading to suboptimal DFG nodes.

In this patch, we add special sentinel string in vm.smallString.sentinelString(). We know that this string cell
pointer will be never returned from EnumeratorNextUpdatePropertyName in the normal for-in iteration. This is easy
since we are always allocating a JSString when creating JSPropertyNameEnumerator. So this string cell (not the content)
is always different from pre-allocated vm.smallString.sentinelString(). So, we use this special string pointer
as a sentinel instead of null so that we can avoid polluting return type of EnumeratorNextUpdatePropertyName.

To check the sentinel in LLInt / Baseline, this patch adds jeq_ptr, which performs cell pointer comparison and do
not check string content equality. We do not need to have an implementation in DFG since we already have CompareEqPtr
for existing jneq_ptr bytecode.

We also clean up DFG operation related to PutByVal.


| subtest | ms | ms | b / a | pValue (significance using False Discovery Rate) |


| Elm-TodoMVC |116.010000 |112.701667 |0.971482 | 0.000000 (significant) |
| VueJS-TodoMVC |22.995000 |23.023333 |1.001232 | 0.907086 |
| EmberJS-TodoMVC |125.498333 |125.525000 |1.000212 | 0.932546 |
| BackboneJS-TodoMVC |45.700000 |45.975000 |1.006018 | 0.084799 |
| Preact-TodoMVC |16.681667 |16.610000 |0.995704 | 0.722758 |
| AngularJS-TodoMVC |123.753333 |123.740000 |0.999892 | 0.971431 |
| Vanilla-ES2015-TodoMVC |61.255000 |61.380000 |1.002041 | 0.300654 |
| Inferno-TodoMVC |58.646667 |58.948333 |1.005144 | 0.267611 |
| Flight-TodoMVC |73.283333 |72.801667 |0.993427 | 0.207389 |
| Angular2-TypeScript-TodoMVC |39.746667 |40.015000 |1.006751 | 0.449821 |
| VanillaJS-TodoMVC |50.096667 |49.823333 |0.994544 | 0.162020 |
| jQuery-TodoMVC |212.870000 |213.196667 |1.001535 | 0.371944 |
| EmberJS-Debug-TodoMVC |331.878333 |332.710000 |1.002506 | 0.094499 |
| React-TodoMVC |83.078333 |82.726667 |0.995767 | 0.076143 |
| React-Redux-TodoMVC |136.018333 |133.935000 |0.984683 | 0.000000 (significant) |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |59.743333 |59.643333 |0.998326 | 0.393671 |


a mean = 271.75873
b mean = 272.45804
pValue = 0.0263030803
(Bigger means are better.)
1.003 times better
Results ARE significant

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeUseDef.cpp:

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

  • bytecode/LinkTimeConstant.h:
  • bytecode/Opcode.h:

(JSC::isBranch):

  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::GenericLabel<JSGeneratorTraits>::setLocation):
(JSC::BytecodeGenerator::emitJumpIfSentinelString):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOperations.cpp:

(JSC::DFG::putByVal):
(JSC::DFG::putByValInternal):
(JSC::DFG::putByValCellInternal):
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileEnumeratorNextUpdatePropertyName):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_jeq_ptr):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jeq_ptr):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_enumerator_next):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):

  • runtime/SmallStrings.h:

(JSC::SmallStrings::sentinelString const):

8:01 PM Changeset in webkit [283094] by Lauro Moura
  • 36 edits in trunk/LayoutTests

[WPE] Rebaseline a number of text-only failures

Unreviewed test gardening.

Most are 1-pixel differences after some recent LFC-related commits.

  • platform/glib/fast/css/getComputedStyle/computed-style-font-family-expected.txt:
  • platform/glib/fast/encoding/charset-replacement-expected.txt:
  • platform/wpe/TestExpectations:
  • platform/wpe/css2.1/t0805-c5518-brdr-t-01-e-expected.txt:
  • platform/wpe/css2.1/t0805-c5519-brdr-r-00-a-expected.txt:
  • platform/wpe/css2.1/t0805-c5519-brdr-r-01-e-expected.txt:
  • platform/wpe/css2.1/t0805-c5520-brdr-b-01-e-expected.txt:
  • platform/wpe/css2.1/t0805-c5521-brdr-l-00-a-expected.txt:
  • platform/wpe/css2.1/t0805-c5521-brdr-l-01-e-expected.txt:
  • platform/wpe/css2.1/t0905-c414-flt-02-c-expected.txt:
  • platform/wpe/css2.1/t0905-c414-flt-03-c-expected.txt:
  • platform/wpe/css2.1/t0905-c414-flt-04-c-expected.txt:
  • platform/wpe/css2.1/t0905-c414-flt-fit-01-d-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltblck-00-d-ag-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltblck-01-d-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltcont-00-d-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-flthw-00-c-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltwidth-00-c-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltwidth-02-c-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltwidth-03-c-g-expected.txt:
  • platform/wpe/css2.1/t0905-c5525-fltwrap-00-b-expected.txt:
  • platform/wpe/css2.1/t0905-c5526-flthw-00-c-g-expected.txt:
  • platform/wpe/css2.1/t090501-c414-flt-01-b-expected.txt:
  • platform/wpe/css2.1/t100304-c43-rpl-bbx-01-d-g-expected.txt:
  • platform/wpe/css2.1/t1202-counter-04-b-expected.txt:
  • platform/wpe/css2.1/t1202-counter-09-b-expected.txt:
  • platform/wpe/css2.1/t1202-counters-04-b-expected.txt:
  • platform/wpe/css2.1/t1202-counters-09-b-expected.txt:
  • platform/wpe/fast/attachment/attachment-select-on-click-expected.txt:
  • platform/wpe/fast/attachment/attachment-select-on-click-inside-user-select-all-expected.txt:
  • platform/wpe/fast/borders/rtl-border-05-expected.txt:
  • platform/wpe/fast/css/font-face-implicit-local-font-expected.txt:
  • platform/wpe/fast/css/font-face-locally-installed-expected.txt:
  • platform/wpe/fast/css/font-face-opentype-expected.txt:
  • platform/wpe/fast/css/font-face-unicode-range-expected.txt:
7:46 PM Changeset in webkit [283093] by Cameron McCormack
  • 1 edit
    2 deletes in trunk/LayoutTests/imported/w3c

Remove canvas HitRegions tests
https://bugs.webkit.org/show_bug.cgi?id=230809
<rdar://problem/83553485>

Reviewed by Alan Bujtas.

These were removed upstream in
https://github.com/web-platform-tests/wpt/pull/30850.

  • web-platform-tests/html/canvas/element/hit-regions/addHitRegions-NotSupportedError-01-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/hit-regions/addHitRegions-NotSupportedError-01.html: Removed.
  • web-platform-tests/html/canvas/element/hit-regions/hitregions-members-exist-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/hit-regions/hitregions-members-exist.html: Removed.
  • web-platform-tests/html/canvas/element/hit-regions/w3c-import.log: Removed.
  • web-platform-tests/html/canvas/element/manual/hit-regions/addHitRegions-NotSupportedError-01-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/manual/hit-regions/addHitRegions-NotSupportedError-01.html: Removed.
  • web-platform-tests/html/canvas/element/manual/hit-regions/hitregions-members-exist-expected.txt: Removed.
  • web-platform-tests/html/canvas/element/manual/hit-regions/hitregions-members-exist.html: Removed.
  • web-platform-tests/html/canvas/element/manual/hit-regions/w3c-import.log: Removed.
6:28 PM Changeset in webkit [283092] by Lauro Moura
  • 1 edit
    16 adds in trunk/LayoutTests

[GLIB] Update baselines after 242013@main

Unreviewed test gardening.

These tests were updated to use the application bundle ID, which is
not used by the GLIB ports.

  • platform/glib/http/tests/contentextensions/block-private-click-measurement-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/attribution-conversion-through-cross-site-image-redirect-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/attribution-conversion-through-fetch-keepalive-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-ephemeral-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-with-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/attribution-conversion-through-image-redirect-without-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/conversion-disabled-in-ephemeral-session-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/private-click-measurement-with-source-nonce-null-content-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/private-click-measurement-with-source-nonce-wrong-content-type-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/second-attribution-converted-with-higher-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/second-attribution-converted-with-lower-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/second-conversion-with-higher-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/second-conversion-with-lower-priority-expected.txt: Added.
  • platform/glib/http/tests/privateClickMeasurement/store-private-click-measurement-expected.txt: Added.
2:38 PM Changeset in webkit [283091] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] media/modern-media-controls/media-controls/media-controls-placard-compressed-metrics.html is a flay crash.
https://bugs.webkit.org/show_bug.cgi?id=230808.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:23 PM Changeset in webkit [283090] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] Media tests flakily crashing.
https://bugs.webkit.org/show_bug.cgi?id=230807.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:20 PM Changeset in webkit [283089] by commit-queue@webkit.org
  • 104 edits
    2 deletes in trunk

Unreviewed, reverting r283083 and r283088.
https://bugs.webkit.org/show_bug.cgi?id=230806

Windows pors are crashing

Reverted changesets:

"Build an unlinked baseline JIT"
https://bugs.webkit.org/show_bug.cgi?id=229223
https://commits.webkit.org/r283083

"Make byte codes with arithmetic profiles switch to using an
index instead of a pointer in metadata"
https://bugs.webkit.org/show_bug.cgi?id=230798
https://commits.webkit.org/r283088

10:23 AM Changeset in webkit [283088] by sbarati@apple.com
  • 15 edits in trunk/Source/JavaScriptCore

Make byte codes with arithmetic profiles switch to using an index instead of a pointer in metadata
https://bugs.webkit.org/show_bug.cgi?id=230798

Reviewed by Yusuke Suzuki.

This patch makes each bytecode that uses a BinaryArithProfile/UnaryArithProfile
have an index into a table instead of storing a pointer to the profile in its metadata.
Then, we can just load the profile using the index in the bytecode, which saves memory.

  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:
  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::addBinaryArithProfile):
(JSC::UnlinkedCodeBlockGenerator::addUnaryArithProfile):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitUnaryOp):
(JSC::BytecodeGenerator::emitInc):
(JSC::BytecodeGenerator::emitDec):

  • bytecompiler/BytecodeGenerator.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_negate):
(JSC::JIT::emit_op_add):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

6:47 AM Changeset in webkit [283087] by Antti Koivisto
  • 3 edits
    2 adds in trunk

Line iterator firstRun/lastRun may return runs from wrong lines
https://bugs.webkit.org/show_bug.cgi?id=230770
<rdar://problem/83509753>

Reviewed by Alan Bujtas.

Source/WebCore:

In some situation line iterator firstRun/lastRun could return runs from different lines.
This could lead to inconsistencies like firstRun being non-null while lastRun is null.

Test: editing/iterator-line-start-end.html

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::lastRun const):

Take care to only return runs from this line.

LayoutTests:

  • editing/iterator-line-start-end-expected.txt: Added.
  • editing/iterator-line-start-end.html: Added.

Sep 25, 2021:

11:21 PM Changeset in webkit [283086] by mmaxfield@apple.com
  • 7 edits in trunk/LayoutTests/imported/w3c

Test palette animations
https://bugs.webkit.org/show_bug.cgi?id=230677
<rdar://problem/83437391>

Fix palette animations tests after r283077.

Unreviewed.

  • web-platform-tests/css/css-fonts/animations/font-palette-animation-2-expected.html:
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-2.html:
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-3-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-3.html:
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-expected.html:
  • web-platform-tests/css/css-fonts/animations/font-palette-animation.html:
9:31 PM Changeset in webkit [283085] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Use less parallel webviews in the uri-scheme API test for WPE and debug builds
https://bugs.webkit.org/show_bug.cgi?id=230783

Reviewed by Michael Catanzaro.

The WPE bots are timing out due to the reasons already mentioned in
bug230556 and bug229116, and GTK-Debug is flaky timing out.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(testWebContextURIScheme):

3:00 PM Changeset in webkit [283084] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Fix win build.

Unreviewed.

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):

2:55 PM Changeset in webkit [283083] by sbarati@apple.com
  • 98 edits
    1 copy
    1 add in trunk

Build an unlinked baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=229223
<rdar://problem/82321772>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

This patch adds an "unlinked" baseline JIT to JSVALUE64 platforms. The JIT
code produced by this baseline JIT can be shared between all CodeBlocks that
share an UnlinkedCodeBlock. The benefit of this is, if we're creating a CodeBlock
from an UnlinkedCodeBlock that already compiled an unlinked baseline JIT
instance, this new CodeBlock just starts off executing in the baseline JIT
"for free".

To make this work, the code we emit now needs to be independent of a specific
CodeBlock instance. We use a CodeBlock instance for minimal profiling information
when compiling, but otherwise, the code is tied to the UnlinkedCodeBlock. When
we need CodeBlock specific information, we load it. This usually means things
like we'll load things from the Metadata dynamically. This patch also adds a
"linked constant pool" concept, and anytime we instantiate such a CodeBlock,
we also need to instantiate this "linked constant pool". This contains things
like our inline cache data structures (StructureStubInfo*), JSGlobalObject*,
etc.

Unlinked baseline JIT always runs ICs in the "data" mode. To make this work, I
made data ICs work on x86_64. To do this, we no longer call/ret to the IC.
Instead, we jump to the IC, and the IC jumps back by loading the "done" location
from the StructureStubInfo dynamically. This simplifies the design to not be
based on the arm64 calling convention, and keeps the same performance characteristics.

This patch also adds a new version of InlineAccess that is only used in baseline
JIT (for now). In the future, we can make the DFG/FTL also use this for Data
ICs. But we don't need to do that yet since those tiers don't use data ICs by
default. The baseline JIT now has a pure data IC approach to InlineAccess. So
instead of repatching code, we repatch fields we load dynamically.

This patch also cleans up a few things in OSR exit, where both DFG/FTL were
storing callee saves to the callee saves buffer in a weird place, and separate
from one another. I noticed this code can be simplified if we just store
callee saves at the end of the OSR exit handler, and from common JIT emission
code.

This patch also fixes a bug where we could end up with the wrong (and always
more negative) SP in the baseline JIT. This could happen when we OSR exit
from an inlined getter/setter. The OSR exit code puts the return PC when
returning to the call site of the getter/setter to be the inline cache's
"done location". However, this "done location" didn't used to restore SP.
This patch conservatively makes it so that we restore the SP at these sites.

This is measured as a 1% speedup on Speedometer2.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::fromStructureStubInfo):
(JSC::AccessCase::generateImpl):

  • bytecode/BytecodeList.rb:
  • bytecode/BytecodeOperandsForCheckpoint.h:

(JSC::valueProfileOffsetFor):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::fastPathStart):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitFastPath):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitDataICFastPath):
(JSC::CallLinkInfo::emitTailCallDataICFastPath):
(JSC::CallLinkInfo::emitDataICSlowPath):
(JSC::CallLinkInfo::initializeDataIC):
(JSC::CallLinkInfo::emitDirectFastPath):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::offsetOfMaxArgumentCountIncludingThis):
(JSC::CallLinkInfo::slowStub): Deleted.
(JSC::CallLinkInfo::addressOfMaxArgumentCountIncludingThis): Deleted.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setupWithUnlinkedBaselineCode):
(JSC::CodeBlock::isConstantOwnedByUnlinkedCodeBlock const):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::finalizeJITInlineCaches):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::frameRegisterCount):
(JSC::CodeBlock::binaryArithProfileForPC):
(JSC::CodeBlock::unaryArithProfileForPC):
(JSC::CodeBlock::findPC):
(JSC::CodeBlock::jitSoon):
(JSC::CodeBlock::jitNextInvocation):
(JSC::CodeBlock::dumpMathICStats):
(JSC::CodeBlock::finalizeBaselineJITInlineCaches): Deleted.
(JSC::CodeBlock::addJITAddIC): Deleted.
(JSC::CodeBlock::addJITMulIC): Deleted.
(JSC::CodeBlock::addJITSubIC): Deleted.
(JSC::CodeBlock::addJITNegIC): Deleted.
(JSC::CodeBlock::setPCToCodeOriginMap): Deleted.
(JSC::CodeBlock::thresholdForJIT): Deleted.
(JSC::CodeBlock::jitAfterWarmUp): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::JITData::offsetOfJITConstantPool):
(JSC::CodeBlock::offsetOfJITData):
(JSC::CodeBlock::offsetOfArgumentValueProfiles):
(JSC::CodeBlock::offsetOfConstantsVectorBuffer):
(JSC::CodeBlock::baselineJITConstantPool):
(JSC::CodeBlock::checkIfJITThresholdReached):
(JSC::CodeBlock::dontJITAnytimeSoon):
(JSC::CodeBlock::llintExecuteCounter const):
(JSC::CodeBlock::offsetOfDebuggerRequests):
(JSC::CodeBlock::offsetOfShouldAlwaysBeInlined):
(JSC::CodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::CodeBlock::addressOfNumParameters): Deleted.
(JSC::CodeBlock::isKnownCell): Deleted.
(JSC::CodeBlock::addMathIC): Deleted.
(JSC::CodeBlock::setJITCodeMap): Deleted.
(JSC::CodeBlock::jitCodeMap): Deleted.
(JSC::CodeBlock::switchJumpTable): Deleted.
(JSC::CodeBlock::stringSwitchJumpTable): Deleted.

  • bytecode/CodeBlockInlines.h:

(JSC::CodeBlock::forEachValueProfile):
(JSC::CodeBlock::jitCodeMap):
(JSC::CodeBlock::baselineSwitchJumpTable):
(JSC::CodeBlock::baselineStringSwitchJumpTable):
(JSC::CodeBlock::dfgSwitchJumpTable):
(JSC::CodeBlock::dfgStringSwitchJumpTable):

  • bytecode/ExecutableToCodeBlockEdge.h:
  • bytecode/ExecutionCounter.cpp:

(JSC::ExecutionCounter<countingVariant>::setThreshold):

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::clippedThreshold):

  • bytecode/GetByIdMetadata.h:

(JSC::GetByIdModeMetadataArrayLength::offsetOfArrayProfile):
(JSC::GetByIdModeMetadata::offsetOfMode):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/InByStatus.cpp:

(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InlineAccess.cpp:

(JSC::InlineAccess::generateSelfPropertyAccess):
(JSC::InlineAccess::canGenerateSelfPropertyReplace):
(JSC::InlineAccess::generateSelfPropertyReplace):
(JSC::InlineAccess::isCacheableArrayLength):
(JSC::InlineAccess::generateArrayLength):
(JSC::InlineAccess::isCacheableStringLength):
(JSC::InlineAccess::generateStringLength):
(JSC::InlineAccess::generateSelfInAccess):
(JSC::InlineAccess::rewireStubAsJumpInAccess):
(JSC::InlineAccess::resetStubAsJumpInAccess):

  • bytecode/InlineAccess.h:
  • bytecode/IterationModeMetadata.h:

(JSC::IterationModeMetadata::offsetOfSeenModes):

  • bytecode/LLIntCallLinkInfo.h:

(JSC::LLIntCallLinkInfo::offsetOfArrayProfile):

  • bytecode/Opcode.h:
  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationState::succeed):
(JSC::AccessGenerationState::calculateLiveRegistersForCallAndExceptionHandling):
(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions):
(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessGenerationState::preserveLiveRegistersToStackForCallWithoutExceptions): Deleted.

  • bytecode/PutByStatus.cpp:

(JSC::PutByStatus::computeForStubInfo):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::initGetByIdSelf):
(JSC::StructureStubInfo::initPutByIdReplace):
(JSC::StructureStubInfo::initInByIdSelf):
(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::reset):
(JSC::StructureStubInfo::visitWeakReferences):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::initializeFromUnlinkedStructureStubInfo):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::offsetOfByIdSelfOffset):
(JSC::StructureStubInfo::offsetOfInlineAccessBaseStructure):
(JSC::StructureStubInfo::inlineAccessBaseStructure):
(JSC::StructureStubInfo::offsetOfDoneLocation):

  • bytecode/SuperSampler.cpp:

(JSC::printSuperSamplerState):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::hasIdentifier):
(JSC::UnlinkedCodeBlock::thresholdForJIT):
(JSC::UnlinkedCodeBlock::allocateSharedProfiles):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::constantRegister):
(JSC::UnlinkedCodeBlock::instructionAt const):
(JSC::UnlinkedCodeBlock::bytecodeOffset):
(JSC::UnlinkedCodeBlock::instructionsSize const):
(JSC::UnlinkedCodeBlock::loopHintsAreEligibleForFuzzingEarlyReturn):
(JSC::UnlinkedCodeBlock::outOfLineJumpOffset):
(JSC::UnlinkedCodeBlock::binaryArithProfile):
(JSC::UnlinkedCodeBlock::unaryArithProfile):
(JSC::UnlinkedCodeBlock::llintExecuteCounter):

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::offsetInMetadataTable):

  • bytecode/ValueProfile.h:

(JSC::ValueProfileBase::ValueProfileBase):
(JSC::ValueProfileBase::clearBuckets):
(JSC::ValueProfile::offsetOfFirstBucket):

  • dfg/DFGCommonData.h:
  • dfg/DFGJITCode.cpp:
  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::handleExitCounts):
(JSC::DFG::callerReturnPC):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutPrivateName):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenTail):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLJITCode.h:
  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::addMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compilePutPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • generator/Metadata.rb:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::storeProperty):
(JSC::AssemblyHelpers::emitVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCallWithoutMovingGlobalObject):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBuffer):

  • jit/BaselineJITCode.cpp: Added.

(JSC::MathICHolder::addJITAddIC):
(JSC::MathICHolder::addJITMulIC):
(JSC::MathICHolder::addJITSubIC):
(JSC::MathICHolder::addJITNegIC):
(JSC::MathICHolder::adoptMathICs):
(JSC::BaselineJITCode::BaselineJITCode):
(JSC::BaselineJITCode::~BaselineJITCode):

  • jit/BaselineJITCode.h: Added.

(JSC::JITConstantPool::add):
(JSC::JITConstantPool::size const):
(JSC::JITConstantPool::at const):

  • jit/BaselineJITPlan.cpp:

(JSC::BaselineJITPlan::finalize):

  • jit/CCallHelpers.cpp:

(JSC::CCallHelpers::logShadowChickenTailPacketImpl):
(JSC::CCallHelpers::logShadowChickenTailPacket):

  • jit/CCallHelpers.h:
  • jit/CallFrameShuffleData.cpp:

(JSC::CallFrameShuffleData::setupCalleeSaveRegisters):

  • jit/CallFrameShuffleData.h:
  • jit/CallFrameShuffler.cpp:

(JSC::CallFrameShuffler::CallFrameShuffler):
(JSC::CallFrameShuffler::prepareForTailCall):

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::snapshot const):

  • jit/JIT.cpp:

(JSC::JIT::JIT):
(JSC::JIT::emitEnterOptimizationCheck):
(JSC::JIT::emitNotifyWriteWatchpoint):
(JSC::JIT::emitVarReadOnlyCheck):
(JSC::JIT::assertStackPointerOffset):
(JSC::JIT::resetSP):
(JSC::JIT::emitPutCodeBlockToFrameInPrologue):
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::emitMaterializeMetadataAndConstantPoolRegisters):
(JSC::JIT::emitRestoreCalleeSaves):
(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):
(JSC::JIT::finalizeOnMainThread):
(JSC::JIT::privateCompile):
(JSC::JIT::frameRegisterCountFor):
(JSC::JIT::stackPointerOffsetFor):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_compareAndJumpSlowImpl):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_op_negate):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • jit/JITCall.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCall32_64.cpp:

(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileSetupFrame):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emitSlow_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):
(JSC::JIT::emitSlow_op_iterator_next):

  • jit/JITCode.h:

(JSC::JITCode::useDataIC):
(JSC::JITCode::pcToCodeOriginMap):

  • jit/JITCompilationKey.cpp:

(JSC::JITCompilationKey::dump const):

  • jit/JITCompilationKey.h:

(JSC::JITCompilationKey::JITCompilationKey):
(JSC::JITCompilationKey::operator! const):
(JSC::JITCompilationKey::isHashTableDeletedValue const):
(JSC::JITCompilationKey::operator== const):
(JSC::JITCompilationKey::hash const):
(JSC::JITCompilationKey::profiledBlock const): Deleted.

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInlineCacheGenerator::JITInlineCacheGenerator):
(JSC::JITInlineCacheGenerator::finalize):
(JSC::JITInlineCacheGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
(JSC::generateGetByIdInlineAccess):
(JSC::JITGetByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITGetByIdWithThisGenerator::generateBaselineDataICFastPath):
(JSC::JITPutByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::JITInByIdGenerator::generateBaselineDataICFastPath):
(JSC::JITInstanceOfGenerator::generateFastPath):
(JSC::JITGetByValGenerator::generateFastPath):
(JSC::JITPutByValGenerator::generateFastPath):
(JSC::JITPrivateBrandAccessGenerator::generateFastPath):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITInlines.h:

(JSC::JIT::isOperandConstantDouble):
(JSC::JIT::isOperandConstantInt):
(JSC::JIT::isKnownCell):
(JSC::JIT::getConstantOperand):
(JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile):
(JSC::JIT::linkSlowCaseIfNotJSCell):
(JSC::JIT::advanceToNextCheckpoint):
(JSC::JIT::emitJumpSlowToHotForCheckpoint):
(JSC::JIT::isOperandConstantChar):
(JSC::JIT::emitValueProfilingSite):
(JSC::JIT::emitValueProfilingSiteIfProfiledOpcode):
(JSC::JIT::emitArrayProfilingSiteWithCell):
(JSC::JIT::emitLoadDouble):
(JSC::JIT::emitJumpSlowCaseIfNotJSCell):
(JSC::JIT::emitGetVirtualRegister):
(JSC::JIT::jumpTarget):
(JSC::JIT::loadPtrFromMetadata):
(JSC::JIT::load32FromMetadata):
(JSC::JIT::load8FromMetadata):
(JSC::JIT::store8ToMetadata):
(JSC::JIT::store32ToMetadata):
(JSC::JIT::materializePointerIntoMetadata):
(JSC::JIT::loadConstant):
(JSC::JIT::loadGlobalObject):
(JSC::JIT::loadCodeBlockConstant):
(JSC::JIT::copiedGetPutInfo): Deleted.
(JSC::JIT::copiedArithProfile): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_mov):
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::op_ret_handlerGenerator):
(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::valueIsFalseyGenerator):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::valueIsTruthyGenerator):
(JSC::JIT::emit_op_throw):
(JSC::JIT::op_throw_handlerGenerator):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_debug):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jeq):
(JSC::JIT::emitSlow_op_jneq):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_check_traps):
(JSC::JIT::op_check_traps_handlerGenerator):
(JSC::JIT::emit_op_new_regexp):
(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_array):
(JSC::JIT::emit_op_new_array_with_size):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):
(JSC::JIT::emit_op_profile_control_flow):
(JSC::JIT::emit_op_get_argument):
(JSC::JIT::emit_op_get_prototype_of):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_overrides_has_instance):
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof):
(JSC::JIT::emitSlow_op_instanceof_custom):
(JSC::JIT::emit_op_typeof_is_undefined):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_jfalse):
(JSC::JIT::emit_op_jtrue):
(JSC::JIT::emit_op_jeq_null):
(JSC::JIT::emit_op_jneq_null):
(JSC::JIT::emit_op_jneq_ptr):
(JSC::JIT::emitSlow_op_eq):
(JSC::JIT::compileOpEqJumpSlow):
(JSC::JIT::emitSlow_op_neq):
(JSC::JIT::emitSlow_op_jstricteq):
(JSC::JIT::emitSlow_op_jnstricteq):
(JSC::JIT::emit_op_eq_null):
(JSC::JIT::emit_op_neq_null):
(JSC::JIT::emit_op_throw):
(JSC::JIT::emit_op_to_number):
(JSC::JIT::emit_op_to_numeric):
(JSC::JIT::emit_op_to_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
(JSC::JIT::emit_op_switch_string):
(JSC::JIT::emit_op_enter):
(JSC::JIT::emit_op_create_this):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_profile_type):
(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::JITPlan::key):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::generateGetByValSlowCase):
(JSC::JIT::slow_op_get_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::slow_op_get_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::slow_op_put_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::slow_op_put_private_name_prepareCallGenerator):
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::slow_op_del_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::slow_op_del_by_val_prepareCallGenerator):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_prepareCallGenerator):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::slow_op_get_by_id_with_this_prepareCallGenerator):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::slow_op_put_by_id_prepareCallGenerator):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitSlow_op_has_private_name):
(JSC::JIT::emitSlow_op_has_private_brand):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::generateOpResolveScopeThunk):
(JSC::JIT::slow_op_resolve_scopeGenerator):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::generateOpGetFromScopeThunk):
(JSC::JIT::slow_op_get_from_scopeGenerator):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::slow_op_put_to_scopeGenerator):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emit_enumerator_has_propertyImpl):
(JSC::JIT::emitWriteBarrier):
(JSC::JIT::emitSlow_op_get_from_scope): Deleted.
(JSC::JIT::emitPutGlobalVariable): Deleted.
(JSC::JIT::emitPutGlobalVariableIndirect): Deleted.
(JSC::JIT::emitPutClosureVar): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter_by_id):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emitSlow_op_get_private_name):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emitSlow_op_put_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emitSlow_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emitSlow_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emitSlow_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):
(JSC::JIT::emit_op_in_by_id):
(JSC::JIT::emitSlow_op_in_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emitHasPrivateSlow):
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_get_internal_field):

  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutBy):
(JSC::tryCacheInBy):
(JSC::unlinkCall):

  • jit/ThunkGenerators.cpp:

(JSC::handleExceptionGenerator):
(JSC::popThunkStackPreservesAndHandleExceptionGenerator):

  • jit/ThunkGenerators.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CacheableIdentifier.h:
  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):

  • runtime/CachedTypes.cpp:

(JSC::CachedCodeBlock::numBinaryArithProfiles const):
(JSC::CachedCodeBlock::numUnaryArithProfiles const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::encode):

  • runtime/CommonSlowPaths.cpp:

(JSC::updateArithProfileForUnaryArithOp):

  • runtime/FunctionExecutable.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:
  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::prepareForExecutionImpl):

  • wasm/WasmLLIntTierUpCounter.h:

(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):

  • wasm/WasmTierUpCount.cpp:

(JSC::Wasm::TierUpCount::TierUpCount):

  • wasm/WasmTierUpCount.h:

(JSC::Wasm::TierUpCount::optimizeAfterWarmUp):
(JSC::Wasm::TierUpCount::optimizeNextInvocation):
(JSC::Wasm::TierUpCount::optimizeSoon):

Source/WTF:

  • wtf/Bag.h:
  • wtf/Packed.h:

(WTF::PackedAlignedPtr::operator* const):

12:30 PM Changeset in webkit [283082] by mmaxfield@apple.com
  • 6 edits
    6 adds in trunk

Test palette animations
https://bugs.webkit.org/show_bug.cgi?id=230677
<rdar://problem/83437391>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

These are being upstreamed at https://github.com/web-platform-tests/wpt/pull/30955.

  • web-platform-tests/css/css-fonts/animations/font-palette-animation-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-2.html: Added.
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-3-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-3.html: Added.
  • web-platform-tests/css/css-fonts/animations/font-palette-animation-expected.html: Added.
  • web-platform-tests/css/css-fonts/animations/font-palette-animation.html: Added.

Source/WebCore:

Simply hook it up to CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap().

Tests: imported/w3c/web-platform-tests/css/css-fonts/animations/font-palette-animation-2.html

imported/w3c/web-platform-tests/css/css-fonts/animations/font-palette-animation-3.html
imported/w3c/web-platform-tests/css/css-fonts/animations/font-palette-animation.html

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • platform/graphics/FontPalette.h:

(WebCore::operator<<):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setFontPalette):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::fontPalette const):

9:12 AM Changeset in webkit [283081] by Ben Nham
  • 4 edits in trunk/Source/WebKit

Pending preconnect key should include User-Agent
https://bugs.webkit.org/show_bug.cgi?id=230565

Reviewed by Chris Dumez.

When using an HTTPS proxy, the HTTP connection cache key used for connection coalescing in
CFNetwork includes the User-Agent (<rdar://problem/59434166>). This means we should also
include it in the preconnect cache key. Otherwise, we might delay the main resource load on
preconnect unnecessarily in cases where the User-Agent mismatches and the preconnect gets
thrown away. This can happen if (for instance) a page is force-loaded into desktop or mobile
mode on iOS, which causes a UA change after the call to decidePolicyForNavigationAction.

  • NetworkProcess/NetworkLoadScheduler.cpp:

(WebKit::mainResourceLoadKey):
(WebKit::NetworkLoadScheduler::scheduleMainResourceLoad):
(WebKit::NetworkLoadScheduler::unscheduleMainResourceLoad):
(WebKit::NetworkLoadScheduler::startedPreconnectForMainResource):
(WebKit::NetworkLoadScheduler::finishedPreconnectForMainResource):

  • NetworkProcess/NetworkLoadScheduler.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::preconnectTo):

8:47 AM Changeset in webkit [283080] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Text measuring is first-line style dependent
https://bugs.webkit.org/show_bug.cgi?id=230796

Reviewed by Antti Koivisto.

First-line style may change the font to be used for measuring the text content.
(This is in preparation for supporting first-line style)

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const):

  • layout/formattingContexts/inline/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::midWordBreak):

  • layout/formattingContexts/inline/text/TextUtil.h:
6:53 AM Changeset in webkit [283079] by ntim@apple.com
  • 15 edits
    4 deletes in trunk

Make inert nodes invisible to hit testing
https://bugs.webkit.org/show_bug.cgi?id=229330

Reviewed by Antti Koivisto.

Test: LayoutTests/imported/w3c/web-platform-tests/inert/inert-inlines.tentative.html

This adds an internal inherited effectiveInert style property in RenderStyle and starts using it for hit testing checks.
Invalidation is done through style invalidation.

Skipped and removed test expectations for inert event retargeting tests that should soon become irrelevant per
this CSSWG discussion:
https://logs.csswg.org/irc.w3.org/css/2021-09-08/#e1431357
https://lists.w3.org/Archives/Public/www-style/2021Sep/0004.html

Pending WPT PR to remove inert event retargeting tests: https://github.com/web-platform-tests/wpt/pull/30866

LayoutTests/imported/w3c:

  • web-platform-tests/inert/inert-inlines.tentative-expected.txt:
  • web-platform-tests/inert/inert-retargeting-iframe.tentative-expected.txt: Removed.
  • web-platform-tests/inert/inert-retargeting.tentative-expected.txt: Removed.

Source/WebCore:

  • dom/Element.cpp:

(WebCore::Element::addToTopLayer):
(WebCore::Element::removeFromTopLayer):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::parseAttribute):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):

  • rendering/RenderElement.h:

(WebCore::RenderElement::visibleToHitTesting const):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerStyleChanged):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::effectiveInert const):
(WebCore::RenderStyle::setEffectiveInert):

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:
  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjust const):

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::canShareStyleWithElement const):

LayoutTests:

  • TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-retargeting-iframe.tentative-expected.txt: Removed.
  • platform/ios-wk2/imported/w3c/web-platform-tests/inert/inert-retargeting.tentative-expected.txt: Removed.
1:07 AM Changeset in webkit [283078] by jdiggs@igalia.com
  • 7 edits
    3 adds in trunk

AX: aria-expanded is no longer supported on quite a few roles in ARIA 1.2
https://bugs.webkit.org/show_bug.cgi?id=230609

Reviewed by Chris Fleizach.

Source/WebCore:

We were exposing aria-expanded on any element where it was explicitly
given a valid value (true/false). We should only expose it on roles where
aria-expanded is a supported property. In addition, the number of roles
where aria-expanded is a supported property was greatly reduced in ARIA 1.2.
This commit brings us in alignment with the spec.

Test: accessibility/aria-expanded-supported-roles.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsExpanded const):
(WebCore::AccessibilityObject::isExpanded const):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::canSetExpandedAttribute const):

LayoutTests:

  • accessibility/aria-expanded-supported-roles.html: Added.
  • accessibility/mac/aria-expanded-not-exposed-when-undefined.html: Updated.
  • accessibility/mac/aria-expanded-standard-items.html: Updated.
  • platform/glib/accessibility/aria-expanded-supported-roles-expected.txt: Added.
  • platform/mac/accessibility/aria-expanded-supported-roles-expected.txt: Added.
  • platform/win/TestExpectations:
12:45 AM Changeset in webkit [283077] by mmaxfield@apple.com
  • 24 edits
    1 move in trunk/LayoutTests/imported/w3c

Update WPT font-palette tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=230785

Unreviewed.

  • web-platform-tests/css/css-fonts/font-palette-add-2-expected.html:
  • web-platform-tests/css/css-fonts/font-palette-add-2.html:
  • web-platform-tests/css/css-fonts/font-palette-add-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/font-palette-add.html:
  • web-platform-tests/css/css-fonts/font-palette-empty-font-family-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/font-palette-empty-font-family.html:
  • web-platform-tests/css/css-fonts/font-palette-modify-2-expected.html:
  • web-platform-tests/css/css-fonts/font-palette-modify-2.html:
  • web-platform-tests/css/css-fonts/font-palette-modify-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/font-palette-modify.html:
  • web-platform-tests/css/css-fonts/font-palette-remove-2-expected.html:
  • web-platform-tests/css/css-fonts/font-palette-remove-2.html:
  • web-platform-tests/css/css-fonts/font-palette-remove-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/font-palette-remove.html:
  • web-platform-tests/css/css-fonts/font-palette.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-add-2-expected.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-add-2.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-add-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-add.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-2-expected.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-2.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-expected-mismatch.html:
  • web-platform-tests/css/css-fonts/palette-values-rule-delete.html:
  • web-platform-tests/css/css-fonts/resources/Ahem-COLR-palettes.ttf: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/resources/Ahem-COLOR-palettes.ttf.
12:21 AM Changeset in webkit [283076] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests/imported/w3c

Test css-wide keywords in base-palette and override-color
https://bugs.webkit.org/show_bug.cgi?id=230737
<rdar://problem/83479016>

Reviewed by Tim Horton.

It already works.

The tests are being upstreamed at https://github.com/web-platform-tests/wpt/pull/30958.

  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:
12:16 AM Changeset in webkit [283075] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk/LayoutTests/imported/w3c

Make sure empty font families do the right thing for font palettes
https://bugs.webkit.org/show_bug.cgi?id=230598
<rdar://problem/83383955>

Reviewed by Tim Horton.

It already works.

These tests are being upstreamed in https://github.com/web-platform-tests/wpt/pull/30957.

  • web-platform-tests/css/css-fonts/font-palette-empty-font-family-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-empty-font-family.html: Added.
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:

Sep 24, 2021:

11:24 PM Changeset in webkit [283074] by vjaquez@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK] Assertion on gamepad in debug build
https://bugs.webkit.org/show_bug.cgi?id=230682

Reviewed by Adrian Perez de Castro.

Fix assertions on gamepad handling in debug build.

No new tests needed.

  • platform/gamepad/manette/ManetteGamepad.cpp:

(WebCore::toStandardGamepadAxis): remove assertion if unknown axis change.
(WebCore::toStandardGamepadButton): remove assertion if unknown buttons change.

  • platform/gamepad/manette/ManetteGamepadProvider.cpp:

(WebCore::ManetteGamepadProvider::startMonitoringGamepads): Insert connected devices
asynchronously, after starting the device monitor, as expected by WebProcess.

10:03 PM Changeset in webkit [283073] by commit-queue@webkit.org
  • 12 edits
    6 adds in trunk

Implement round,mod,rem functions for calc
https://bugs.webkit.org/show_bug.cgi?id=230073

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2021-09-24
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/round-function-expected.txt:
  • web-platform-tests/css/css-values/round-mod-rem-computed-expected.txt: Added.
  • web-platform-tests/css/css-values/round-mod-rem-computed.html: Added.
  • web-platform-tests/css/css-values/round-mod-rem-invalid-expected.txt: Added.
  • web-platform-tests/css/css-values/round-mod-rem-invalid.html: Added.
  • web-platform-tests/css/css-values/round-mod-rem-serialize-expected.txt: Added.
  • web-platform-tests/css/css-values/round-mod-rem-serialize.html: Added.
  • web-platform-tests/css/support/numeric-testcommon.js:

Source/WebCore:

Implemented round, mod and rem calc functions. Involved adding css keywords for the functions
and the keywords associated with the round function, as well as implementing the parsing and
computation of the expression. The spec for these functions:
https://drafts.csswg.org/css-values-4/#round-func.

Tests: imported/w3c/web-platform-tests/css/css-values/round-mod-rem-computed.html

imported/w3c/web-platform-tests/css/css-values/round-mod-rem-invalid.html
imported/w3c/web-platform-tests/css/css-values/round-mod-rem-serialize.html

  • css/CSSValueKeywords.in:
  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):
(WebCore::checkRoundKeyword):
Addition of functionID to parsing so the round keywords are only parsed within round
function.
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseCalcValue):
(WebCore::CSSCalcExpressionNodeParser::parseCalcProduct):
(WebCore::CSSCalcExpressionNodeParser::parseCalcSum):

  • css/calc/CSSCalcExpressionNodeParser.h:
  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::determineCategory):
(WebCore::functionFromOperator):
(WebCore::CSSCalcOperationNode::createStep):
(WebCore::validateRoundChildren):
(WebCore::CSSCalcOperationNode::createRound):
(WebCore::CSSCalcOperationNode::createRoundConstant):
(WebCore::CSSCalcOperationNode::combineChildren):
(WebCore::CSSCalcOperationNode::simplifyNode):
(WebCore::functionPrefixForOperator):
(WebCore::getNearestMultiples):
(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcOperationNode.h:
  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS):
(WebCore::CSSCalcValue::isCalcFunction):

  • platform/calc/CalcExpressionOperation.cpp:

(WebCore::getNearestMultiples):
(WebCore::CalcExpressionOperation::evaluate const):

  • platform/calc/CalcOperator.cpp:

(WebCore::operator<<):

  • platform/calc/CalcOperator.h:
8:39 PM Changeset in webkit [283072] by Simon Fraser
  • 8 edits
    1 add in trunk/Source/WebCore

Add a ScrollAnimations log channel
https://bugs.webkit.org/show_bug.cgi?id=230772

Reviewed by Tim Horton.

Add a ScrollAnimations log channel and do some logging in ScrollingEffectsController,
as well as logging some rubberbanding info via this channel.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Logging.h:
  • platform/ScrollAnimation.cpp: Added.

(WebCore::operator<<):

  • platform/ScrollAnimation.h:
  • platform/ScrollAnimationMomentum.cpp:

(WebCore::ScrollAnimationMomentum::serviceAnimation):

  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::animationCallback):
(WebCore::ScrollingEffectsController::startAnimatedScrollToDestination):
(WebCore::ScrollingEffectsController::regargetAnimatedScroll):
(WebCore::ScrollingEffectsController::stopAnimatedScroll):
(WebCore::ScrollingEffectsController::startMomentumScrollWithInitialVelocity):
(WebCore::ScrollingEffectsController::scrollAnimationDidUpdate):
(WebCore::ScrollingEffectsController::scrollAnimationWillStart):
(WebCore::ScrollingEffectsController::scrollAnimationDidEnd):

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::handleWheelEvent):
(WebCore::ScrollingEffectsController::updateRubberBandAnimatingState):
(WebCore::ScrollingEffectsController::updateRubberBandingState):

5:45 PM Changeset in webkit [283071] by Jonathan Bedard
  • 6 edits in trunk/Tools

[run-webkit-tests] Use Python 3 (Revert)
https://bugs.webkit.org/show_bug.cgi?id=226658
<rdar://problem/78882016>

Unreviewed revert.

When running run-webkit-tests with Python 3, our simulator often
encounter https://bugs.webkit.org/show_bug.cgi?id=230513. Until we
resolve this bug, we must use Python 2 to run run-webkit-tests.

  • CISupport/build-webkit-org/steps.py:

(RunWebKitTests):

  • CISupport/build-webkit-org/steps_unittest.py:
  • CISupport/ews-build/steps.py:

(RunWebKitTests):

  • CISupport/ews-build/steps_unittest.py:

(test_success):
(test_warnings):

  • Scripts/run-webkit-tests:
5:40 PM Changeset in webkit [283070] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina BigSur Debug ] fast/workers/use-machine-stack.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230780.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:57 PM Changeset in webkit [283069] by Lauro Moura
  • 23 edits in trunk/Source

Non-unified partial build fixes late September edition
https://bugs.webkit.org/show_bug.cgi?id=230763

Unreviewed non-unified build fixes.

Source/WebCore:

Covered by existing tests.

  • Modules/cache/WorkerCacheStorageConnection.h: Add missing header.
  • Modules/filesystemaccess/FileSystemHandle.cpp: Ditto.
  • css/CSSFontPaletteValuesOverrideColorValue.h: Ditto.
  • css/CSSFontPaletteValuesRule.cpp: Ditto.
  • css/CSSFontPaletteValuesRule.h: Ditto.
  • css/parser/CSSParserImpl.cpp: Ditto.
  • css/typedom/CSSStyleValueFactory.cpp: Ditto.
  • css/typedom/CSSStyleValueFactory.h: Ditto.
  • loader/CrossOriginEmbedderPolicy.cpp: Ditto.
  • loader/PingLoader.h: Ditto.
  • platform/Scrollbar.cpp: Ditto.
  • rendering/TextBoxPainter.cpp: Ditto.
  • workers/SharedWorker.cpp: Ditto.
  • workers/SharedWorkerGlobalScope.cpp: Ditto.
  • workers/WorkerScriptLoaderClient.h: Ditto.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp: Add missing header.
  • NetworkProcess/storage/FileSystemStorageHandleRegistry.cpp: Ditto.
  • NetworkProcess/storage/FileSystemStorageManager.cpp: Ditto.
  • NetworkProcess/storage/OriginStorageManager.h: Ditto.
  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.cpp: Add missing header.

(WebKit::RTCDataChannelRemoteManager::detectError): WebCore namespace.
(WebKit::RTCDataChannelRemoteManager::RemoteSourceConnection::didDetectError): Ditto.

  • WebProcess/WebCoreSupport/WebStorageConnection.cpp: Add missing

header.

4:49 PM Changeset in webkit [283068] by Simon Fraser
  • 14 edits in trunk/Source/WebCore

Have ScrollingEffectsController drive all the ScrollAnimations
https://bugs.webkit.org/show_bug.cgi?id=230739

Reviewed by Tim Horton.

Instead of each ScrollAnimation subclass having its own timer code, have them all
implement serviceAnimations(), so that ScrollingEffectsController can then drive
them all via its existing animationCallback() code.

Give ScrollingTreeScrollingNodeDelegateNicosia a temporary timer to drive its animations,
but leave FIXME comments noting that these animations should move into ScrollingEffectsCoordinator.

Push a bit more common ScrollAnimation logic into the base class, and add a
'willStart' client function which ScrollingEffectsController can use to
start callbacks if necessary.

ScrollAnimation lifetime is controlled by ScrollingEffectsController; an animation
will be deleted in the first animationCallback() where it is no longer active. This
avoids potential pitfalls where an animation might be deleted inside the scrollAnimationDidEnd()
callback.

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::swipeVelocity const):

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimationClient::scrollAnimationWillStart):
(WebCore::ScrollAnimation::stop):
(WebCore::ScrollAnimation::isActive const):
(WebCore::ScrollAnimation::currentOffset const):
(WebCore::ScrollAnimation::didStart):
(WebCore::ScrollAnimation::didEnd):
(WebCore::ScrollAnimation::timeSinceStart const):
(WebCore::ScrollAnimation::serviceAnimation): Deleted.

  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::PerAxisData::animateScroll):
(WebCore::ScrollAnimationKinetic::ScrollAnimationKinetic):
(WebCore::ScrollAnimationKinetic::computeVelocity):
(WebCore::ScrollAnimationKinetic::startAnimatedScrollWithInitialVelocity):
(WebCore::ScrollAnimationKinetic::serviceAnimation):
(WebCore::ScrollAnimationKinetic::stop): Deleted.
(WebCore::ScrollAnimationKinetic::isActive const): Deleted.
(WebCore::ScrollAnimationKinetic::animationTimerFired): Deleted.
(WebCore::ScrollAnimationKinetic::deltaToNextFrame): Deleted.

  • platform/ScrollAnimationKinetic.h:
  • platform/ScrollAnimationMomentum.cpp:

(WebCore::ScrollAnimationMomentum::startAnimatedScrollWithInitialVelocity):
(WebCore::ScrollAnimationMomentum::retargetActiveAnimation):
(WebCore::ScrollAnimationMomentum::stop):
(WebCore::ScrollAnimationMomentum::serviceAnimation):
(WebCore::ScrollAnimationMomentum::updateScrollExtents):
(WebCore::ScrollAnimationMomentum::isActive const): Deleted.

  • platform/ScrollAnimationMomentum.h:
  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::ScrollAnimationSmooth):
(WebCore::ScrollAnimationSmooth::startOrRetargetAnimation):
(WebCore::ScrollAnimationSmooth::serviceAnimation):
(WebCore::ScrollAnimationSmooth::stop): Deleted.
(WebCore::ScrollAnimationSmooth::animationTimerFired): Deleted.
(WebCore::ScrollAnimationSmooth::startNextTimer): Deleted.
(WebCore::ScrollAnimationSmooth::isActive const): Deleted.

  • platform/ScrollAnimationSmooth.h:
  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::animationCallback):
(WebCore::ScrollingEffectsController::startOrStopAnimationCallbacks):
(WebCore::ScrollingEffectsController::startAnimatedScrollToDestination):
(WebCore::ScrollingEffectsController::scrollAnimationWillStart):
(WebCore::ScrollingEffectsController::scrollAnimationDidEnd):
(WebCore::ScrollingEffectsController::updateScrollSnapAnimatingState): Deleted.

  • platform/ScrollingEffectsController.h:
  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::processWheelEventForScrollSnap): If transitionToGlideAnimationState()
starts an animation we have to call startScrollSnapAnimation() (because the previous stop() will have
puts us in a "not animating scroll snap" state).
(WebCore::ScrollingEffectsController::updateScrollSnapAnimatingState): Deleted.

4:17 PM Changeset in webkit [283067] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ]transitions/transition-end-event-destroy-renderer.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230777.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:02 PM Changeset in webkit [283066] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 Release arm64 ] imported/w3c/web-platform-tests/resource-timing/status-codes-create-entry.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230775

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:55 PM Changeset in webkit [283065] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] Multiple WebGL tests are flaky timeouts.
https://bugs.webkit.org/show_bug.cgi?id=230774.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:35 PM Changeset in webkit [283064] by graouts@webkit.org
  • 7 edits
    4 adds in trunk/Source/WebCore

[Media Controls] Allow for a close button
https://bugs.webkit.org/show_bug.cgi?id=230761
<rdar://problem/83505067>

Reviewed by Dean Jackson.

Add a new close button with an "X" icon which simple exits fullscreen.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • Modules/modern-media-controls/controls/close-button.js: Added.

(CloseButton):

  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/images/iOS/X.svg: Added.
  • Modules/modern-media-controls/images/macOS/X.svg: Added.
  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/close-support.js: Added.

(CloseSupport.prototype.get control):
(CloseSupport.prototype.buttonWasPressed):
(CloseSupport):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._supportingObjectClasses):

  • WebCore.xcodeproj/project.pbxproj:
3:35 PM Changeset in webkit [283063] by commit-queue@webkit.org
  • 10 edits
    6 adds in trunk

Implement abs,sign calc functions
https://bugs.webkit.org/show_bug.cgi?id=229786

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2021-09-24
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/signs-abs-computed-expected.txt: Added.
  • web-platform-tests/css/css-values/signs-abs-computed.html: Added.
  • web-platform-tests/css/css-values/signs-abs-invalid-expected.txt: Added.
  • web-platform-tests/css/css-values/signs-abs-invalid.html: Added.
  • web-platform-tests/css/css-values/signs-abs-serialize-expected.txt: Added.
  • web-platform-tests/css/css-values/signs-abs-serialize.html: Added.

Source/WebCore:

Added support for calc functions sign and abs. Involved adding new css keywords and handling
for parsing calc expression and computing the resulting value. Spec for these functions:
https://drafts.csswg.org/css-values-4/#sign-funcs.

Tests: imported/w3c/web-platform-tests/css/css-values/signs-abs-computed.html

imported/w3c/web-platform-tests/css/css-values/signs-abs-invalid.html
imported/w3c/web-platform-tests/css/css-values/signs-abs-serialize.html

  • css/CSSValueKeywords.in:
  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::determineCategory):
(WebCore::functionFromOperator):
(WebCore::CSSCalcOperationNode::createSign):
(WebCore::CSSCalcOperationNode::combineChildren):
(WebCore::CSSCalcOperationNode::simplifyNode):
(WebCore::CSSCalcOperationNode::doubleValue const):
(WebCore::functionPrefixForOperator):
(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcOperationNode.h:
  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS):
(WebCore::CSSCalcValue::isCalcFunction):

  • platform/calc/CalcExpressionOperation.cpp:

(WebCore::CalcExpressionOperation::evaluate const):

  • platform/calc/CalcOperator.cpp:

(WebCore::operator<<):

  • platform/calc/CalcOperator.h:
3:18 PM September 2021 Meeting edited by Jon Davis
Added WebGL 2/ANGLE/Metal session (diff)
3:13 PM Changeset in webkit [283062] by commit-queue@webkit.org
  • 6 edits in trunk

[JSC] Add checkScriptSyntax function to jsc host environment
https://bugs.webkit.org/show_bug.cgi?id=230631

Patch by Rick Waldron <waldron.rick@gmail.com> on 2021-09-24
Reviewed by Yusuke Suzuki.

JSTests:

Updates tests that were using eval() to verify syntax.

  • stress/arrow-function-syntax.js: Replace custom checkSyntax with checkScriptSyntax
  • stress/async-iteration-for-await-of-syntax.js: Replace custom checkSyntax with checkScriptSyntax
  • stress/async-iteration-syntax.js: Replace custom checkSyntax with checkScriptSyntax

Source/JavaScriptCore:

Introduce a function called checkScriptSyntax() that performs the same
operation as checkModuleSyntax(), without the module specific semantics.
Updates tests that were using eval() to verify syntax.

  • jsc.cpp:

(functionCheckScriptSyntax)

3:11 PM Changeset in webkit [283061] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Gracefully handle security bugs in apply-watchlist
https://bugs.webkit.org/show_bug.cgi?id=229961

Reviewed by Jonathan Bedard.

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

(Bugzilla._parse_bug_dictionary_from_xml):
(Bugzilla.fetch_bug):

2:57 PM Changeset in webkit [283060] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ iOS ] CSS Flexbox tests are constant failure.
https://bugs.webkit.org/show_bug.cgi?id=230773.

Unreviewed test gardening.

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

[LFC][IFC] LineBuilder should have the option of passing in the correct style when a run is added to the line
https://bugs.webkit.org/show_bug.cgi?id=230760

Reviewed by Antti Koivisto.

Now the Line only uses the passed in style information. It's up to the LineBuilder to pass in the line index dependent style when attaching a run.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendInlineBoxStart):
(WebCore::Layout::Line::appendInlineBoxEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineLevelBox):
(WebCore::Layout::Line::appendReplacedInlineLevelBox):

  • layout/formattingContexts/inline/InlineLine.h:
  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::handleInlineContent):
(WebCore::Layout::LineBuilder::commitPartialContent):
(WebCore::Layout::LineBuilder::rebuildLine):

2:43 PM Changeset in webkit [283058] by pvollan@apple.com
  • 11 edits
    2 adds in trunk/Source/WebKit

Clean up preference rules in sandboxes
https://bugs.webkit.org/show_bug.cgi?id=230578
<rdar://problem/83371815>

Reviewed by Brent Fulgham.

We are currently duplicating many preference domains in the sandboxes after blocking cfprefsd by using CFPrefs direct mode.
This is addressed by adopting a pre-existing macro that adds the required file access privileges in CFPrefs direct mode.
This patch also creates a sandbox include file for preferences, which can be shared among WebKit processes.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • Shared/Sandbox: Added.
  • Shared/Sandbox/preferences.sb: Added.
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/com.apple.WebProcess.sb.in:
2:25 PM Changeset in webkit [283057] by Alan Coon
  • 5 edits in branches/safari-612-branch

Cherry-pick r282084. rdar://problem/83429618

[wpt-improvement] Improve CSP support for window reuse
https://bugs.webkit.org/show_bug.cgi?id=229882
<rdar://78416553>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Rebaseline a test that now passes.

  • web-platform-tests/content-security-policy/sandbox/window-reuse-sandboxed-expected.txt:

Source/WebCore:

If window.open is used to host content with a CSP sandbox header, we should always
create a new window, rather than reusing the existing one, unless the header
includes 'allow-same-site'.

This improves our WPT score.

Tested by: imported/w3c/web-platform-tests/content-security-policy/sandbox/window-reuse-sandboxed.html

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::responseReceived): Parse the HTTP headers earlier so we can make decisions based on their state.
  • loader/DocumentWriter.cpp: (WebCore::DocumentWriter::begin): Don't reuse the current window if 'allow-same-site' is not allowed.

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

2:25 PM Changeset in webkit [283056] by Alan Coon
  • 6 edits
    1 add in branches/safari-612-branch

Cherry-pick r281941. rdar://problem/83429618

[COOP] html/cross-origin-opener-policy/coop-navigate-same-origin-csp-sandbox.html WPT test is failing
https://bugs.webkit.org/show_bug.cgi?id=229716

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/html/cross-origin-opener-policy/coop-navigate-same-origin-csp-sandbox-expected.txt:

Source/WebCore:

The COOP algorithm is relying on the response origin for some of the checks. We were computing the
response origin via SecurityOrigin::create(response.url()), which worked fine in most cases.
However, the response may contain a CSP header, which could set sandbox flags. If sandbox flags
are set, the response origin should be unique, not the origin of the response URL. This patch fixes
that.

No new tests, rebaselined existing WPT test.

  • loader/DocumentLoader.cpp: (WebCore::computeResponseOriginAndCOOP): (WebCore::DocumentLoader::doCrossOriginOpenerHandlingOfResponse):
  • loader/DocumentLoader.h: (WebCore::DocumentLoader::contentSecurityPolicy const):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument):
  • page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::copyStateFrom): (WebCore::ContentSecurityPolicy::didReceiveHeaders):
  • page/csp/ContentSecurityPolicy.h: (WebCore::ContentSecurityPolicy::sandboxFlags const):

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

2:19 PM Changeset in webkit [283055] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

r283047 broke some hyphen related debug tests.

Apparently we can't access the hyphen string when the hyphen property is not set.

  • layout/formattingContexts/inline/InlineContentBreaker.h:

(WebCore::Layout::InlineContentBreaker::ContinuousContent::Run::Run):

1:29 PM Changeset in webkit [283054] by Eric Hutchison
  • 6 edits
    4 deletes in trunk/Source/WebCore

Unreviewed, reverting r283050.

Broke commit-queue

Reverted changeset:

"[Media Controls] Allow for a close button"
https://bugs.webkit.org/show_bug.cgi?id=230761
https://commits.webkit.org/r283050

1:12 PM Changeset in webkit [283053] by mmaxfield@apple.com
  • 5 edits in trunk

Color keywords in override-color cause a crash
https://bugs.webkit.org/show_bug.cgi?id=230605
<rdar://problem/83389290>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Tests are being upstreamed at https://github.com/web-platform-tests/wpt/pull/30941.

  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:

Source/WebCore:

I was assuming that consumeColor() would always produce a color. Instead, if the color
was specified as a keyword, consumeColor() would produce the keyword.

This passes in the default context for color resolution, because
https://github.com/w3c/csswg-drafts/issues/6680 isn't resolved yet.

Test: imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeFontPaletteValuesRule):

11:58 AM Changeset in webkit [283052] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] storage/indexeddb/mozilla/cursors-private.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230765.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:46 AM Changeset in webkit [283051] by graouts@webkit.org
  • 3 edits in trunk/Source/WebCore

[Media Controls] RangeButton doesn't show the fill indicator in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=230759
<rdar://problem/82206303>

Reviewed by Dean Jackson.

RangeButton cannot work in fullscreen since it only ever registers "pointermove" and "pointerup"
events on window, which is not in the same display, rather than the controls element displayed
in fullscreen. So we adopt the same approach used for Slider, but also improve by not looking
for a specific MediaControls subclass, but rather by checking whether the traits indicate
these are fullscreen controls.

  • Modules/modern-media-controls/controls/controls/range-button.js:

(RangeButton.prototype.handleEvent):
(RangeButton.prototype._pointerMoveAndEndTarget):
(RangeButton.prototype._handlePointerdown):
(RangeButton.prototype._handlePointerup):

  • Modules/modern-media-controls/controls/controls/slider.js:

(Slider.prototype._interactionEndTarget):

11:44 AM Changeset in webkit [283050] by graouts@webkit.org
  • 6 edits
    4 adds in trunk/Source/WebCore

[Media Controls] Allow for a close button
https://bugs.webkit.org/show_bug.cgi?id=230761

Reviewed by Dean Jackson.

Add a new close button with an "X" icon which simple exits fullscreen.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • Modules/modern-media-controls/controls/close-button.js: Added.

(CloseButton):

  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/images/iOS/X.svg: Added.
  • Modules/modern-media-controls/images/macOS/X.svg: Added.
  • Modules/modern-media-controls/media/close-support.js: Added.

(CloseSupport.prototype.get control):
(CloseSupport.prototype.buttonWasPressed):
(CloseSupport):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._supportingObjectClasses):

  • WebCore.xcodeproj/project.pbxproj:
11:04 AM Changeset in webkit [283049] by Devin Rousso
  • 39 edits in trunk/Source

Add typechecking is overloads for std::unique_ptr, WTF::UniqueRef, and WTF::WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=230734

Reviewed by Chris Dumez.

Source/WebCore:

  • accessibility/AccessibilityListBoxOption.cpp:

(WebCore::AccessibilityListBoxOption::isEnabled const):
(WebCore::AccessibilityListBoxOption::isSelected const):
(WebCore::AccessibilityListBoxOption::canSetSelectedAttribute const):

  • accessibility/AccessibilityScrollView.cpp:

(WebCore::AccessibilityScrollView::webAreaObject const):
(WebCore::AccessibilityScrollView::documentFrameView const):
(WebCore::AccessibilityScrollView::parentObject const):
(WebCore::AccessibilityScrollView::parentObjectIfExists const):

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

  • bindings/js/JSAbstractRangeCustom.cpp:

(WebCore::toJSNewlyCreated):

  • css/CSSCounterStyleRule.cpp:

(WebCore::StyleRuleCounterStyle::mutableProperties):

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::CSSCursorImageValue):
(WebCore::CSSCursorImageValue::selectBestFitImage):

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):

  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::fontLoadRequest):

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::updateStyleIfNeeded):
(WebCore::CSSFontSelector::fontRangesForFamily):
(WebCore::CSSFontSelector::fallbackFontAt):

  • css/CSSKeyframeRule.cpp:

(WebCore::StyleRuleKeyframe::mutableProperties):

  • css/StyleRule.cpp:

(WebCore::StyleRule::mutableProperties):
(WebCore::StyleRulePage::mutableProperties):
(WebCore::StyleRuleFontFace::mutableProperties):

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::CSSCalcOperationNode::hoistChildrenWithOperator):
(WebCore::CSSCalcOperationNode::combineChildren):

  • css/typedom/CSSStyleValueFactory.cpp:

(WebCore::CSSStyleValueFactory::reifyValue):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::scheduleObservationUpdate):
(WebCore::TextManipulationController::replace):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachments):

  • html/FormController.cpp:

(WebCore::FormController::restoreControlStateIn):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::reset):
(WebCore::HTMLCanvasElement::getImageData):
(WebCore::HTMLCanvasElement::virtualHasPendingActivity const):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::checkInvalidControlsAndCollectUnhandled):

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::reset):

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::addCue):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForEventListener):

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::layout):

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

(WebCore::SourceBufferPrivateAVFObjC::streamDataParser const):

  • platform/graphics/ca/cocoa/PlatformCAAnimationCocoa.mm:

(WebCore::PlatformCAAnimationCocoa::setAnimations):

  • platform/graphics/ca/win/PlatformCAAnimationWin.cpp:

(PlatformCAAnimationWin::setAnimations):

  • rendering/RenderImageResource.cpp:

(WebCore::RenderImageResource::imageSize const):

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::destroy):

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::RenderTreeBuilder::Table::attach):

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setTextAsync):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::performActionOnElement):
(WebKit::WebPage::autofillLoginCredentials):

Source/WebKitLegacy/win:

  • WebFrame.cpp:

(WebFrame::elementWithName):

Source/WTF:

  • wtf/StdLibExtras.h:
  • wtf/TypeCasts.h:

(WTF::is):

  • wtf/UniqueRef.h:

(WTF::GetPtrHelper<UniqueRef<T>>::getPtr): Added.
(WTF::is): Added.

  • wtf/WeakPtr.h:

(WTF::is): Added.

11:01 AM Changeset in webkit [283048] by Eric Hutchison
  • 6 edits in trunk/Source/WebKit

Unreviewed, reverting r283024.

Causes slowdown and crash on EWS

Reverted changeset:

"[WebKit2] Refactor some IPC argument encoder logic to work
with StreamConnectionEncoder"
https://bugs.webkit.org/show_bug.cgi?id=230714
https://commits.webkit.org/r283024

10:44 AM Changeset in webkit [283047] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Line breaking only uses a few style properties
https://bugs.webkit.org/show_bug.cgi?id=230757

Reviewed by Antti Koivisto.

The continuous runs, input to the line breaking, should only contain style properties that line breaking actually uses.
This is in preparation for supporting first-line.

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::isWrappingAllowed):
(WebCore::Layout::InlineContentBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::processOverflowingContentWithText const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::append):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::reset):

  • layout/formattingContexts/inline/InlineContentBreaker.h:

(WebCore::Layout::InlineContentBreaker::ContinuousContent::Run::Run):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

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

10:31 AM Changeset in webkit [283046] by youenn@apple.com
  • 9 edits in trunk/Source

RTCDataChannelHandlerClient does not need to be ref counted
https://bugs.webkit.org/show_bug.cgi?id=230679

Reviewed by Eric Carlson.

Source/WebCore:

We can move from using a protected ref counted client to using a WeakPtr client
as we always hop to the client's thread before accessing it.
This reduces ref counting and simplifies lifetime management.

  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCDataChannelRemoteSource.h:
  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::setClient):
(WebCore::LibWebRTCDataChannelHandler::checkState):
(WebCore::LibWebRTCDataChannelHandler::OnMessage):
(WebCore::LibWebRTCDataChannelHandler::OnBufferedAmountChange):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • platform/mediastream/RTCDataChannelHandlerClient.h:

Source/WebKit:

Move to UniqueRef now that it is no longer ref counted.

  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.cpp:

(WebKit::RTCDataChannelRemoteManager::connectToRemoteSource):

  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.h:
9:45 AM Changeset in webkit [283045] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 EWS ] svg/dom/SVGAnimatedListPropertyTearOff-crash-2.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230756.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:42 AM Changeset in webkit [283044] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Remove directory rule from sandboxes
https://bugs.webkit.org/show_bug.cgi?id=230637
<rdar://58899134>

Reviewed by Brent Fulgham.

This rule is related to UITextField, which is only used in the UI process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
8:49 AM Changeset in webkit [283043] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Line::Run only needs a handful of style properties
https://bugs.webkit.org/show_bug.cgi?id=230730

Reviewed by Antti Koivisto.

This patch is in preparation for supporting first-line style.

Line::Run is the first structure that we use to construct line objects after line breaking (or last in the context of the series of patches going backwards from the final display box structure towards line breaking) where
we could retain the fist-line dependent property values.

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::removeCollapsibleContent):
(WebCore::Layout::Line::applyRunExpansion):
(WebCore::Layout::Line::visuallyCollapseHangingOverflow):
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineLevelBox):
(WebCore::Layout::Line::appendLineBreak):
(WebCore::Layout::Line::appendWordBreakOpportunity):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::m_style):
(WebCore::Layout::Line::Run::hasTrailingLetterSpacing const):
(WebCore::Layout::Line::Run::trailingLetterSpacing const):
(WebCore::Layout::Line::Run::removeTrailingLetterSpacing):
(WebCore::Layout::Line::visuallyCollapsePreWrapOverflowContent): Deleted.

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::isOverflowWhitespaceHanging const):
(WebCore::Layout::Line::Run::inlineDirection const):
(WebCore::Layout::Line::Run::letterSpacing const):
(WebCore::Layout::Line::Run::hasTextCombine const):
(WebCore::Layout::Line::Run::style const): Deleted.

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::hangingGlyphWidth):
(WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):

  • layout/formattingContexts/inline/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::fallbackFontsForRun):

  • layout/formattingContexts/inline/text/TextUtil.h:
7:39 AM Changeset in webkit [283042] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] InlineLevelBox only needs a handful of style properties
https://bugs.webkit.org/show_bug.cgi?id=230724

Reviewed by Antti Koivisto.

This is in preparation for supporting first-line style where the incoming RenderStyle& depends on whether the inline level box is on the first line or not.

  • layout/formattingContexts/inline/InlineLevelBox.h:

(WebCore::Layout::InlineLevelBox::InlineLevelBox):
(WebCore::Layout::m_style):
(WebCore::Layout::InlineLevelBox::isPreferredLineHeightFontMetricsBased const):
(WebCore::Layout::InlineLevelBox::primaryFontMetrics const):
(WebCore::Layout::InlineLevelBox::fontSize const):
(WebCore::Layout::InlineLevelBox::createAtomicInlineLevelBox):
(WebCore::Layout::InlineLevelBox::createInlineBox):
(WebCore::Layout::InlineLevelBox::createLineBreakBox):
(WebCore::Layout::InlineLevelBox::createGenericInlineLevelBox):
(WebCore::Layout::m_type): Deleted.

  • layout/formattingContexts/inline/InlineLineBox.cpp:

(WebCore::Layout::LineBox::LineBox):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):

7:06 AM Changeset in webkit [283041] by svillar@igalia.com
  • 106 edits
    84 adds
    52 deletes in trunk/LayoutTests

[css-flexbox] Import latest changes from css-flexbox WPT repo
https://bugs.webkit.org/show_bug.cgi?id=230748

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-003.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-004.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-005.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-006.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-007.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-008.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-rtl-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-content-vertWM-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-003-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-003-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-003.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-004-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-004-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-004.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-005-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-005-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-005.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-006-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-006-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-006.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-007-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-007-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-007.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-008-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-008-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-008.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-003-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-003-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-003.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-004-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-004-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-rtl-004.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-003-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-003-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-003.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-004-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-004-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-align-self-vertWM-004.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-003-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-003-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-003.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-004-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-004-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-004.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-005-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-005-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-005.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-006-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-006-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-006.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-007-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-007-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-007.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-008-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-008-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-008.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-rtl-002.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-001-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-001.html:
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-002-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/abspos/flex-abspos-staticpos-justify-content-vertWM-002.html:
  • web-platform-tests/css/css-flexbox/abspos/w3c-import.log:
  • web-platform-tests/css/css-flexbox/align-content-wrap-005-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/align-content-wrap-005.html: Added.
  • web-platform-tests/css/css-flexbox/column-intrinsic-size-aspect-ratio-crash.html: Added.
  • web-platform-tests/css/css-flexbox/display_flex_exist-expected.txt: Removed.
  • web-platform-tests/css/css-flexbox/display_flex_exist.html: Removed.
  • web-platform-tests/css/css-flexbox/display_inline-flex_exist-expected.txt: Removed.
  • web-platform-tests/css/css-flexbox/display_inline-flex_exist.html: Removed.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-001.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-002-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-002.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-003-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-003.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-004-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/dynamic-isize-change-004.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-stretch-change-expected.html: Added.
  • web-platform-tests/css/css-flexbox/dynamic-stretch-change.html: Added.
  • web-platform-tests/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item-expected.html: Added.
  • web-platform-tests/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item.html: Added.
  • web-platform-tests/css/css-flexbox/flex-base-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-base.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-basis-011-expected.html:
  • web-platform-tests/css/css-flexbox/flex-basis-011.html:
  • web-platform-tests/css/css-flexbox/flex-basis-012-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/flex-basis-012.html: Added.
  • web-platform-tests/css/css-flexbox/flex-basis-intrinsics-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/flex-basis-intrinsics-001.html: Added.
  • web-platform-tests/css/css-flexbox/flex-container-max-content-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flex-container-max-content-001.html: Added.
  • web-platform-tests/css/css-flexbox/flex-container-min-content-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flex-container-min-content-001.html: Added.
  • web-platform-tests/css/css-flexbox/flex-flexitem-childmargin-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-flexitem-childmargin.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-flexitem-percentage-prescation-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-flexitem-percentage-prescation.html: Removed.
  • web-platform-tests/css/css-flexbox/flex-grow-008-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/flex-grow-008.html: Added.
  • web-platform-tests/css/css-flexbox/flex-item-compressible-001.html:
  • web-platform-tests/css/css-flexbox/flex-item-compressible-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-001a-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-001b-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-006-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-007-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-008-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-001-block-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-001-table-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-003-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-004-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-align-self-baseline-horiz-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-align-self-baseline-vert-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001a.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001b.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001a.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001b.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-001.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-001.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-nested-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox-baseline-nested-001.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003a.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003b.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004a.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004b.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-003-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-003.html:
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-vert-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-wmvert-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-wmvert-002.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox-mbp-horiz-004-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-mbp-horiz-004.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-paint-ordering-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-paint-ordering-002.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-table-fixup-001-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox_columns.html:
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-rtl-001-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-rtl-001.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-rtl-002-expected.txt: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-rtl-002.html: Added.
  • web-platform-tests/css/css-flexbox/floated-flexitem-expected.html: Removed.
  • web-platform-tests/css/css-flexbox/floated-flexitem.html: Removed.
  • web-platform-tests/css/css-flexbox/image-nested-within-definite-column-flexbox-expected.html: Added.
  • web-platform-tests/css/css-flexbox/image-nested-within-definite-column-flexbox.html: Added.
  • web-platform-tests/css/css-flexbox/order/order-abs-children-painting-order-expected.html: Added.
  • web-platform-tests/css/css-flexbox/order/order-abs-children-painting-order.html: Added.
  • web-platform-tests/css/css-flexbox/order/w3c-import.log:
  • web-platform-tests/css/css-flexbox/overflow-area-003-expected.html: Added.
  • web-platform-tests/css/css-flexbox/overflow-area-003.html: Added.
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-computed-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-computed.html:
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-valid-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-basis-valid.html:
  • web-platform-tests/css/css-flexbox/parsing/flex-shorthand-expected.txt:
  • web-platform-tests/css/css-flexbox/parsing/flex-shorthand.html:
  • web-platform-tests/css/css-flexbox/percentage-heights-015-expected.html: Added.
  • web-platform-tests/css/css-flexbox/percentage-heights-015.html: Added.
  • web-platform-tests/css/css-flexbox/svg-no-natural-size-grandchild-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/svg-no-natural-size-grandchild.html: Added.
  • web-platform-tests/css/css-flexbox/synthesize-vrl-baseline-expected.html: Added.
  • web-platform-tests/css/css-flexbox/synthesize-vrl-baseline.html: Added.
  • web-platform-tests/css/css-flexbox/w3c-import.log:

LayoutTests:

6:44 AM Changeset in webkit [283040] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][LFC] InlineLevelBox needs to retain only a small set of style properties
https://bugs.webkit.org/show_bug.cgi?id=230718

Reviewed by Antti Koivisto.

Let's not expose all the style properties in here. InlineLevelBoxes only need certain font and alignment related properties values.
It also enables us to map certain property values to proper names.

e.g. RenderStyle::computeLineHeight() -> preferredLineHeight() (spec term)

or RenderStyle::lineHeight().isNegative() -> isPreferredLineHeightFontMetricsBased()

Now code like this

LineBoxBuilder::adjustVerticalGeometryForInlineBoxWithFallbackFonts(const InlineBox&)
{

if (!inlineBox.isPreferredLineHeightFontMetricsBased())

return;

...
start making sense.

This patch is also in preparation for supporting first-line style.

  • layout/formattingContexts/inline/InlineLevelBox.h:

(WebCore::Layout::InlineLevelBox::isPreferredLineHeightFontMetricsBased const):
(WebCore::Layout::InlineLevelBox::primaryFontMetrics const):
(WebCore::Layout::InlineLevelBox::fontSize const):
(WebCore::Layout::InlineLevelBox::layoutBox const):
(WebCore::Layout::InlineLevelBox::preferredLineHeight const):
(WebCore::Layout::InlineLevelBox::verticalAlign const):
(WebCore::Layout::InlineLevelBox::style const): Deleted.

  • layout/formattingContexts/inline/InlineLineBox.cpp:

(WebCore::Layout::LineBox::logicalRectForTextRun const):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::adjustVerticalGeometryForInlineBoxWithFallbackFonts const):
(WebCore::Layout::LineBoxBuilder::setInitialVerticalGeometryForInlineBox const):
(WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):

  • layout/formattingContexts/inline/InlineLineBoxVerticalAligner.cpp:

(WebCore::Layout::LineBoxVerticalAligner::canUseSimplifiedAlignmentForInlineLevelBox):
(WebCore::Layout::LineBoxVerticalAligner::computeLineBoxLogicalHeight const):
(WebCore::Layout::LineBoxVerticalAligner::computeRootInlineBoxVerticalPosition const):
(WebCore::Layout::LineBoxVerticalAligner::alignInlineLevelBoxes const):

6:31 AM Changeset in webkit [283039] by Jonathan Bedard
  • 6 edits
    2 adds in trunk

[iOS 15] Support building WebKit (Part 3)
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Ryan Haddad.

Source/WebCore/PAL:

  • pal/spi/cocoa/QuartzCoreSPI.h: Add CAFenceHandle.
  • pal/spi/ios/SystemPreviewSPI.h: Ditto.

Source/WTF:

  • wtf/spi/darwin/XPCSPI.h: Import NSError header.

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/15/VisionKitCore.framework/VisionKitCore.tbd: Added.
6:23 AM Changeset in webkit [283038] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] InlineDisplay::Box should be able to provide first-line style when applicable
https://bugs.webkit.org/show_bug.cgi?id=230709

Reviewed by Antti Koivisto.

This is in preparation for supporting first-line style. The idea here is that the run/box objects we construct after line breaking should
retain the applicable style.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineSpanningInlineBoxes):

  • layout/formattingContexts/inline/display/InlineDisplayBox.h:

(WebCore::InlineDisplay::Box::style const):
(WebCore::InlineDisplay::Box::Box):

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

5:58 AM Changeset in webkit [283037] by Sam Sneddon
  • 3 edits in trunk/Tools

LayoutTestFinder should return tests in order
https://bugs.webkit.org/show_bug.cgi?id=230684

Reviewed by Jonathan Bedard.

It has always been intended that LayoutTestFinder return tests in a deterministic order;
however, a bug in find_files means that directories found by glob aren't sorted, and hence
running run-webkit-tests with no arguments ends up running the top-level directories in a
non-deterministic order.

  • Scripts/webkitpy/common/find_files.py:

(_normalized_find):
(_normalized_find.sort_by_directory_key):

  • Scripts/webkitpy/common/find_files_unittest.py:

(TestWinNormalize.assert_filesystem_normalizes):
(TestWinNormalize.test_win):
(TestFindFiles):
(TestFindFiles.test_directory_sort_key):
(TestFindFiles.test_directory_sort_key_with_paths):

5:41 AM Changeset in webkit [283036] by commit-queue@webkit.org
  • 14 edits
    2 adds
    1 delete in trunk/Source

Add utility to create CVPixelBuffers from IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=230338

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-09-24
Reviewed by Youenn Fablet.

Source/WebCore:

Move the functionality of creating CVPixelBuffers
from IOSurfaces from ImageTransferSessionVT to
standalone functions in new header CVUtilities.
The functionality did not use any state of
ImageTransferSessionVT.

This functionality is useful in other scenarios too.

Remove instantiations of ImageTransferSessionVT from
the old call sites, as it was never used for anything
else than creation of the pixel buffer.

Move the related CVPixelBufferPool instantiation
from RealtimeVideoUtilities.h to CVUtilities.h

Remove the usage of kCVPixelFormatOpenGLESCompatibility
from the CVPixelBuffer creation code. It was incorrect property
all along, property of pixel formats not of pixel buffers. The
intended property was kCVPixelBufferOpenGLESCompatibilityKey
but it is not needed anymore.
Retains the usage of kCVPixelBufferOpenGLCompatibilityKey, though
it is incorrect and unneeded for the current operation too.
Since theoretically this could affect something on Mac, this
will be removed in a separate fix.

No new tests, a refactor.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cv/CVUtilities.h: Added.
  • platform/graphics/cv/CVUtilities.mm: Added.

(WebCore::createIOSurfaceCVPixelBufferPool):
(WebCore::createCVPixelBufferFromPool):
(WebCore::pixelBufferCreationOptions):
(WebCore::createCVPixelBuffer):
The added functions return Expected<object, status> since
some of the callers want to log the failure status code.

  • platform/graphics/cv/ImageTransferSessionVT.h:
  • platform/graphics/cv/ImageTransferSessionVT.mm:

(WebCore::ImageTransferSessionVT::setSize):
(WebCore::ImageTransferSessionVT::convertPixelBuffer):
(WebCore::ImageTransferSessionVT::convertCMSampleBuffer):
(WebCore::ImageTransferSessionVT::createCMSampleBuffer):
(WebCore::cvPixelFormatOpenGLKey): Deleted.
Incorrect, replaced with Mac-only use of OpenGLCompatibilityKey in
CVUtilities.mm.
(WebCore::roundUpToMacroblockMultiple): Deleted.
Use the similar function in WTF.
(WebCore::ImageTransferSessionVT::ioSurfacePixelBufferCreationOptions): Deleted.

  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

(WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):

  • platform/mediastream/mac/RealtimeVideoUtilities.h:

Preserved, since preferedPixelBufferFormat means
"the pixel buffer format that is preferred by media stream implementations"
which does not fit to category of "CoreVideo Utilities".

  • platform/mediastream/mac/RealtimeVideoUtilities.mm: Removed.
  • platform/network/mac/WebCoreURLResponse.mm:

Fix unified build failure due to a missing include.

Source/WebKit:

The helper function moved from ImageTransferSessionVT
to free standalone function. Stop instantiating the
object and just call the function.

In both of the cases, the pixel buffer is created out of
the IOSurface and the pool is not used. In both of the cases
the size and the pixel format of the image transfer session
is the same as the input IOSurface.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::completedDecoding):
(WebKit::LibWebRTCCodecs::encodeFrame):
(WebKit::LibWebRTCCodecs::pixelBufferPool):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
4:13 AM Changeset in webkit [283035] by youenn@apple.com
  • 17 edits
    6 adds in trunk

<video> element rendered incorrectly when provided with a portrait orientation stream in Safari 15
https://bugs.webkit.org/show_bug.cgi?id=229792
<rdar://problem/82776741>

Reviewed by Eric Carlson.

Source/WebCore:

We need to swap the bounds for both m_rootLayer and m_sampleBufferDisplayLayer if the sample is rotated by 90.
We also need to ompute m_sampleBufferDisplayLayer position based on m_rootLayer coordinates.
This means we swap root layer bounds width and height before computing m_sampleBufferDisplayLayer position based on it.

Test: fast/mediastream/video-rotation.html

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

(WebCore::LocalSampleBufferDisplayLayer::setRootLayerBoundsAndPositions):
(WebCore::LocalSampleBufferDisplayLayer::updateRootLayerBoundsAndPosition):

  • platform/graphics/cg/ImageBufferUtilitiesCG.h:

Source/WebKit:

Helper routined used in WTR.

  • Shared/API/c/cg/WKImageCG.cpp:

(WKImageCreateDataURLFromImage):

  • Shared/API/c/cg/WKImageCG.h:

Tools:

Add testRunner API to take a view port snapshot as a PNG data URL.
We can then use this data URL to validate some rendered pixel values.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::takeViewPortSnapshot):
(WTR::TestRunner::viewPortSnapshotTaken):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::takeViewPortSnapshot):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::takeViewPortSnapshot):

LayoutTests:

  • fast/mediastream/video-rotation-expected.txt: Added.
  • fast/mediastream/video-rotation.html: Added.
  • platform/ios-simulator/fast/mediastream/video-rotation-expected.png: Added.
  • platform/mac/fast/mediastream/video-rotation-expected.png: Added.
3:07 AM Changeset in webkit [283034] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

REGRESSION(r282742): Broke IceCC builds
https://bugs.webkit.org/show_bug.cgi?id=230547

Patch by Philippe Normand <pnormand@igalia.com> on 2021-09-24
Reviewed by Sergio Villar Senin.

There's no need to check the default IceCC toolchain exists, we can't do that from the host
anyway because their path is a sandbox path. Additionally we now check host paths supplied
through $ICECC_VERSION_OVERRIDE and ICECC_VERSION_APPEND.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox):

2:39 AM Changeset in webkit [283033] by youenn@apple.com
  • 28 edits
    2 adds in trunk

[IOS 15] Video track does not get unmuted in case of tab was inactive less than ~500 ms
https://bugs.webkit.org/show_bug.cgi?id=230538
<rdar://problem/83355705>

Reviewed by Eric Carlson.

Source/WebCore:

Add support for interrupting mock cameras.
Update internals to handle the case of out of main thread videoSampleAvailable calls.

Update Page::setMuted to trigger setMuted logic even if Page muted state did not change.
This ensures we can restart capture in case a track is muted without the page being muted itself.

When a source is muted and is in producing data state, it is interrupted.
When setMuted(false) is called, we need to uninterrupt.
To do so, we do a stop/start cycle

Test: fast/mediastream/media-stream-video-track-interrupted.html

  • page/Page.cpp:

(WebCore::Page::setMuted):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setMuted):

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::setMockCameraIsInterrupted):

  • platform/mock/MockRealtimeMediaSourceCenter.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::~MockRealtimeVideoSource):
(WebCore::MockRealtimeVideoSource::setIsInterrupted):

  • platform/mock/MockRealtimeVideoSource.h:
  • testing/Internals.cpp:

(WebCore::Internals::videoSampleAvailable):

  • testing/Internals.h:

Source/WebKit:

Add support for mock capture interruption.
When receiving a notification that GPUProcess source is muted, we consider it is interrupted.
In that case, we notify the source is muted instead of calling setMuted (which would set the source as muted AND stop producing data).
It is important to not stop the source so that it can continue receiving interruption notifications.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::setMockCameraIsInterrupted):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • UIProcess/API/C/WKPage.cpp:

(WKPageIsMockRealtimeMediaSourceCenterEnabled):
(WKPageSetMockCameraIsInterrupted):

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::setMockCameraIsInterrupted):

  • UIProcess/GPU/GPUProcessProxy.h:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.h:
  • WebProcess/cocoa/RemoteRealtimeVideoSource.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::sourceMutedChanged):

Tools:

Add mock API to mock camera interruption.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setMockCameraIsInterrupted):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setMockCameraIsInterrupted):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • fast/mediastream/media-stream-video-track-interrupted-expected.txt: Added.
  • fast/mediastream/media-stream-video-track-interrupted.html: Added.
2:38 AM Changeset in webkit [283032] by mmaxfield@apple.com
  • 1 edit
    12 adds in trunk/LayoutTests/imported/w3c

Handle CSSOM style mutation of font-palette
https://bugs.webkit.org/show_bug.cgi?id=230673

Reviewed by Antti Koivisto.

It already works.

The tests are being upstreamed at https://github.com/web-platform-tests/wpt/pull/30942.

  • web-platform-tests/css/css-fonts/font-palette-add-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-add-2.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-add-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-add.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-modify-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-modify-2.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-modify-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-modify.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-remove-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-remove-2.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-remove-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/font-palette-remove.html: Added.
1:48 AM Changeset in webkit [283031] by mmaxfield@apple.com
  • 6 edits
    8 adds in trunk

Handle CSSOM style mutation of font-palette-values
https://bugs.webkit.org/show_bug.cgi?id=230448
<rdar://problem/83343481>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

These tests are being upstreamed at https://github.com/web-platform-tests/wpt/pull/30939.

  • web-platform-tests/css/css-fonts/palette-values-rule-add-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-add-2.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-add-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-add.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-2.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-delete-expected-mismatch.html: Added.
  • web-platform-tests/css/css-fonts/palette-values-rule-delete.html: Added.

Source/WebCore:

The CSSSegmentedFontFace cache needs to be sensitive to FontPaletteValues.

Tests: imported/w3c/web-platform-tests/css/css-fonts/palette-values-rule-add-2.html

imported/w3c/web-platform-tests/css/css-fonts/palette-values-rule-add.html
imported/w3c/web-platform-tests/css/css-fonts/palette-values-rule-delete-2.html
imported/w3c/web-platform-tests/css/css-fonts/palette-values-rule-delete.html

  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::fontRanges):

  • css/CSSSegmentedFontFace.h:
  • platform/graphics/FontCache.h:

(WTF::DefaultHash<WebCore::FontDescriptionKey>::hash):
(WTF::DefaultHash<WebCore::FontDescriptionKey>::equal):
(WebCore::FontDescriptionKeyHash::hash): Deleted.
(WebCore::FontDescriptionKeyHash::equal): Deleted.

  • platform/graphics/FontPaletteValues.h:

(WTF::DefaultHash<WebCore::FontPaletteValues>::hash):
(WTF::DefaultHash<WebCore::FontPaletteValues>::equal):

12:22 AM Changeset in webkit [283030] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[RenderTreeUpdater] NULL ptr deref in updateRenderTree
https://bugs.webkit.org/show_bug.cgi?id=230581

Patch by Brandon Stewart <Brandon> on 2021-09-24
Reviewed by Antti Koivisto.

Source/WebCore:

Text element changes are buffered. This can lead to undesirable behavior
when switching a node to a document that is not rendered, and then proceeding
with a rendering update.

If we cannot find a renderer in a node or its ancestors then just give up
instead of returning a document.

Test: fast/dom/Document/clearPendingRenderTreeUpdater.html

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::textRendererIsNeeded):

LayoutTests:

New regression test to handle case where we trigger a text update,
and then switch the node to a new unrendered document.

  • fast/dom/Document/clearPendingRenderTreeUpdater-expected.txt: Added.
  • fast/dom/Document/clearPendingRenderTreeUpdater.html: Added.
12:21 AM Changeset in webkit [283029] by sihui_liu@apple.com
  • 55 edits
    9 copies
    6 adds in trunk

Add initial support for File System Access API
https://bugs.webkit.org/show_bug.cgi?id=230484
rdar://83405890

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/file-system-access/opaque-origin.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-create-sync-access-handle-dedicated-worker.https.tentative.window-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any-expected.txt:
  • web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any-expected.txt:

Source/WebCore:

Implemented FileSystemHandle and FileSystemDirectoryHandle (except directory iteration) interfaces for Origin
Private File System.
Spec: https://wicg.github.io/file-system-access/#api-filesystemhandle

https://wicg.github.io/file-system-access/#api-filesystemdirectoryhandle
https://wicg.github.io/file-system-access/#sandboxed-filesystem

Test: storage/filesystemaccess/directory-handle-basics.html

  • Headers.cmake:
  • Modules/filesystemaccess/FileSystemDirectoryHandle.cpp:

(WebCore::FileSystemDirectoryHandle::create):
(WebCore::FileSystemDirectoryHandle::FileSystemDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::getFileHandle):
(WebCore::FileSystemDirectoryHandle::getDirectoryHandle):
(WebCore::FileSystemDirectoryHandle::removeEntry):
(WebCore::FileSystemDirectoryHandle::resolve):

  • Modules/filesystemaccess/FileSystemDirectoryHandle.h:

(isType):

  • Modules/filesystemaccess/FileSystemFileHandle.cpp:

(WebCore::FileSystemFileHandle::create):
(WebCore::FileSystemFileHandle::FileSystemFileHandle):

  • Modules/filesystemaccess/FileSystemFileHandle.h:

(isType):

  • Modules/filesystemaccess/FileSystemHandle.cpp:

(WebCore::FileSystemHandle::FileSystemHandle):
(WebCore::FileSystemHandle::isSameEntry const):
(WebCore::FileSystemHandle::isSameEntry): Deleted.

  • Modules/filesystemaccess/FileSystemHandle.h:

(WebCore::FileSystemHandle::impl const):

  • Modules/filesystemaccess/FileSystemHandle.idl:
  • Modules/filesystemaccess/FileSystemHandleImpl.h: Added.

(WebCore::FileSystemHandleImpl::~FileSystemHandleImpl):

  • Modules/storage/DummyStorageProvider.h:
  • Modules/storage/StorageConnection.h:
  • Modules/storage/StorageManager.cpp:

(WebCore::connectionInfo):
(WebCore::StorageManager::persisted):
(WebCore::StorageManager::persist):
(WebCore::StorageManager::fileSystemAccessGetDirectory):

  • Modules/storage/StorageManager.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSFileSystemHandleCustom.cpp: Added.

(WebCore::toJS):
(WebCore::toJSNewlyCreated):

  • bindings/js/WorkerModuleScriptLoader.h:
  • workers/service/ServiceWorkerJob.h:

Source/WebKit:

Introduce FileSystemStorageManager to manage file handles. Each FileSystemStorageHandle corresponds to a
FileSystemHandle in web process.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::removeStorageManagerForSession):

  • NetworkProcess/storage/FileSystemStorageError.h: Added.

(WebKit::convertToExceptionCode):

  • NetworkProcess/storage/FileSystemStorageHandle.cpp: Added.

(WebKit::FileSystemStorageHandle::FileSystemStorageHandle):
(WebKit::FileSystemStorageHandle::isSameEntry):
(WebKit::FileSystemStorageHandle::requestCreateHandle):
(WebKit::FileSystemStorageHandle::getFileHandle):
(WebKit::FileSystemStorageHandle::getDirectoryHandle):
(WebKit::FileSystemStorageHandle::removeEntry):
(WebKit::FileSystemStorageHandle::resolve):

  • NetworkProcess/storage/FileSystemStorageHandle.h: Added.

(WebKit::FileSystemStorageHandle::identifier const):
(WebKit::FileSystemStorageHandle::path const):

  • NetworkProcess/storage/FileSystemStorageHandleIdentifier.h: Added.
  • NetworkProcess/storage/FileSystemStorageHandleRegistry.cpp: Added.

(WebKit::FileSystemStorageHandleRegistry::registerHandle):
(WebKit::FileSystemStorageHandleRegistry::unregisterHandle):
(WebKit::FileSystemStorageHandleRegistry::getHandle):

  • NetworkProcess/storage/FileSystemStorageHandleRegistry.h: Added.
  • NetworkProcess/storage/FileSystemStorageManager.cpp: Added.

(WebKit::FileSystemStorageManager::FileSystemStorageManager):
(WebKit::FileSystemStorageManager::~FileSystemStorageManager):
(WebKit::FileSystemStorageManager::createHandle):
(WebKit::FileSystemStorageManager::getPath):
(WebKit::FileSystemStorageManager::connectionClosed):
(WebKit::FileSystemStorageManager::getDirectory):

  • NetworkProcess/storage/FileSystemStorageManager.h: Added.
  • NetworkProcess/storage/NetworkStorageManager.cpp:

(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::~NetworkStorageManager):
(WebKit::NetworkStorageManager::close):
(WebKit::NetworkStorageManager::startReceivingMessageFromConnection):
(WebKit::NetworkStorageManager::stopReceivingMessageFromConnection):
(WebKit::NetworkStorageManager::clearStorageForTesting):
(WebKit::NetworkStorageManager::fileSystemGetDirectory):
(WebKit::NetworkStorageManager::isSameEntry):
(WebKit::NetworkStorageManager::getFileHandle):
(WebKit::NetworkStorageManager::getDirectoryHandle):
(WebKit::NetworkStorageManager::removeEntry):
(WebKit::NetworkStorageManager::resolve):

  • NetworkProcess/storage/NetworkStorageManager.h:

(WebKit::NetworkStorageManager::sessionID const): Deleted.

  • NetworkProcess/storage/NetworkStorageManager.messages.in:
  • NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::connectionClosed):
(WebKit::OriginStorageManager::StorageBucket::typeStoragePath const):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::connectionClosed):
(WebKit::OriginStorageManager::defaultBucket):
(WebKit::OriginStorageManager::persist):
(WebKit::OriginStorageManager::fileSystemStorageManager):

  • NetworkProcess/storage/OriginStorageManager.h:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/FileSystemStorageHandleProxy.cpp: Added.

(WebKit::FileSystemStorageHandleProxy::create):
(WebKit::FileSystemStorageHandleProxy::FileSystemStorageHandleProxy):
(WebKit::FileSystemStorageHandleProxy::connectionClosed):
(WebKit::FileSystemStorageHandleProxy::isSameEntry):
(WebKit::FileSystemStorageHandleProxy::getFileHandle):
(WebKit::FileSystemStorageHandleProxy::getDirectoryHandle):
(WebKit::FileSystemStorageHandleProxy::removeEntry):
(WebKit::FileSystemStorageHandleProxy::resolve):

  • WebProcess/WebCoreSupport/FileSystemStorageHandleProxy.h: Added.
  • WebProcess/WebCoreSupport/WebStorageConnection.cpp:

(WebKit::WebStorageConnection::getPersisted):
(WebKit::WebStorageConnection::persist):
(WebKit::WebStorageConnection::fileSystemGetDirectory):
(WebKit::WebStorageConnection::persisted): Deleted.

  • WebProcess/WebCoreSupport/WebStorageConnection.h:

LayoutTests:

  • TestExpectations:
  • platform/wk2/TestExpectations:
  • storage/filesystemaccess/directory-handle-basics-expected.txt: Added.
  • storage/filesystemaccess/directory-handle-basics.html: Added.
12:11 AM Changeset in webkit [283028] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

DOMPromiseDeferred should be able to handle Ref/RefPtr resolution values for interface types
https://bugs.webkit.org/show_bug.cgi?id=230603

Reviewed by Sihui Liu.

Refactoring to allow DOMPromiseDeferred<IDLInterface<T>> to be able to call settle on ExceptionOr<Ref<T>>&&.
Apply new support on PeerConnectionBackend::generateCertificate.
Small refactoring to use reject instead of settle in ApplePaySetup.
No expected change of behavior.

  • Modules/applepay/ApplePaySetup.cpp:

(WebCore::ApplePaySetup::getSetupFeatures):
(WebCore::ApplePaySetup::begin):

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::generateCertificate):

  • Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.cpp:

(WebCore::LibWebRTCCertificateGenerator::RTCCertificateGeneratorCallback::RTCCertificateGeneratorCallback):
(WebCore::LibWebRTCCertificateGenerator::generateCertificate):

  • Modules/mediastream/libwebrtc/LibWebRTCCertificateGenerator.h:
  • bindings/js/JSDOMPromiseDeferred.h:

(WebCore::DOMPromiseDeferred::resolve):
(WebCore::DOMPromiseDeferred::settle):
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::resolve):
(WebCore::DOMPromiseDeferred<IDLInterface<T>>::settle):

  • testing/Internals.cpp:

(WebCore::Internals::sendH2Ping):

Sep 23, 2021:

11:52 PM Changeset in webkit [283027] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

RenderElement::moveLayers should take reference
https://bugs.webkit.org/show_bug.cgi?id=230706

Patch by Rob Buis <rbuis@igalia.com> on 2021-09-23
Reviewed by Simon Fraser.

RenderElement::moveLayers should take reference for newParent
since it is always non-null.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::moveLayers):

  • rendering/RenderElement.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::insertOnlyThisLayer):

10:07 PM Changeset in webkit [283026] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Move ScrollSnapAnimatorState's ScrollAnimationMomentum into ScrollingEffectsController
https://bugs.webkit.org/show_bug.cgi?id=230732

Reviewed by Wenson Hsieh.

Continuing the work to move all animations into ScrollingEffectsController, move
the ScrollAnimationMomentum that ScrollSnapAnimatorState uses into ScrollingEffectsController.

ScrollSnapAnimatorState is no longer a ScrollAnimationClient.

ScrollingEffectsController::updateScrollSnapAnimatingState(), which is Mac-only code
(but probably doens't need to be) can now consult the animation directly.

  • platform/ScrollSnapAnimatorState.cpp:

(WebCore::ScrollSnapAnimatorState::setupAnimationForState):
(WebCore::ScrollSnapAnimatorState::teardownAnimationForState):
(WebCore::ScrollSnapAnimatorState::currentAnimatedScrollOffset const): Deleted.
(WebCore::ScrollSnapAnimatorState::scrollExtentsForAnimation): Deleted.

  • platform/ScrollSnapAnimatorState.h:

(WebCore::ScrollSnapAnimatorState::ScrollSnapAnimatorState):

  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::startMomentumScrollWithInitialVelocity):
(WebCore::ScrollingEffectsController::setSnapOffsetsInfo):

  • platform/ScrollingEffectsController.h:
  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::updateScrollSnapAnimatingState):

9:50 PM Changeset in webkit [283025] by Alan Coon
  • 5 edits in branches/safari-612-branch/Source

Revert r281910. rdar://problem/83429926

8:02 PM Changeset in webkit [283024] by Wenson Hsieh
  • 6 edits in trunk/Source/WebKit

[WebKit2] Refactor some IPC argument encoder logic to work with StreamConnectionEncoder
https://bugs.webkit.org/show_bug.cgi?id=230714

Reviewed by Simon Fraser.

Make it possible to use IPC::StreamConnectionEncoder to encode display list items (and their members) in an
IPC stream. This patch comprises two main sets of changes in ArgumentCoders, and WebCoreArgumentCoders. See
below for more details.

  • Platform/IPC/ArgumentCoders.cpp:

(IPC::ArgumentCoder<audit_token_t>::decode):
(IPC::ArgumentCoder<Monostate>::encode): Deleted.
(IPC::ArgumentCoder<Monostate>::decode): Deleted.

  • Platform/IPC/ArgumentCoders.h:

(IPC::ArgumentCoder<Monostate>::encode):
(IPC::ArgumentCoder<Monostate>::decode):

Many of these encode() methods are currently non-templated, which means that Encoder and Decoder used here
refer solely to IPC::Encoder and IPC::Decoder (respectively) instead of other types of encoders (namely,
StreamConnectionEncoder).

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<AffineTransform>::encode): Deleted.
(IPC::ArgumentCoder<AffineTransform>::decode): Deleted.
(IPC::ArgumentCoder<TransformationMatrix>::encode): Deleted.
(IPC::ArgumentCoder<TransformationMatrix>::decode): Deleted.
(IPC::ArgumentCoder<FloatPoint>::encode): Deleted.
(IPC::ArgumentCoder<FloatPoint>::decode): Deleted.
(IPC::ArgumentCoder<FloatPoint3D>::encode): Deleted.
(IPC::ArgumentCoder<FloatPoint3D>::decode): Deleted.
(IPC::ArgumentCoder<FloatRect>::encode): Deleted.
(IPC::ArgumentCoder<FloatRect>::decode): Deleted.
(IPC::ArgumentCoder<FloatBoxExtent>::encode): Deleted.
(IPC::ArgumentCoder<FloatBoxExtent>::decode): Deleted.
(IPC::ArgumentCoder<FloatSize>::encode): Deleted.
(IPC::ArgumentCoder<FloatSize>::decode): Deleted.
(IPC::ArgumentCoder<FloatRoundedRect>::encode): Deleted.
(IPC::ArgumentCoder<FloatRoundedRect>::decode): Deleted.
(IPC::ArgumentCoder<IntPoint>::encode): Deleted.
(IPC::ArgumentCoder<IntPoint>::decode): Deleted.
(IPC::ArgumentCoder<IntRect>::encode): Deleted.
(IPC::ArgumentCoder<IntRect>::decode): Deleted.
(IPC::ArgumentCoder<IntSize>::encode): Deleted.
(IPC::ArgumentCoder<IntSize>::decode): Deleted.
(IPC::ArgumentCoder<LayoutSize>::encode): Deleted.
(IPC::ArgumentCoder<LayoutSize>::decode): Deleted.
(IPC::ArgumentCoder<LayoutPoint>::encode): Deleted.
(IPC::ArgumentCoder<LayoutPoint>::decode): Deleted.

These WebCore argument coders are also currently incompatible with StreamConnectionEncoder, since they are non-
templated (and thus only work with IPC::Encoder). Since these are all encodable as POD types, we can just use
SimpleArgumentCoder for all of these. We also add a new DEFINE_SIMPLE_ARGUMENT_CODER macro to make this code a
bit easier to read.

  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<CGRect>::encode): Deleted.
(IPC::ArgumentCoder<CGRect>::decode): Deleted.
(IPC::ArgumentCoder<CGSize>::encode): Deleted.
(IPC::ArgumentCoder<CGSize>::decode): Deleted.
(IPC::ArgumentCoder<CGPoint>::encode): Deleted.
(IPC::ArgumentCoder<CGPoint>::decode): Deleted.
(IPC::ArgumentCoder<CGAffineTransform>::encode): Deleted.
(IPC::ArgumentCoder<CGAffineTransform>::decode): Deleted.

8:00 PM Changeset in webkit [283023] by Fujii Hironori
  • 6 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/fast/css/font-face-implicit-local-font-expected.txt:
  • platform/wincairo/fast/css/font-face-opentype-expected.txt:
  • platform/wincairo/fast/text/fixed-pitch-control-characters-expected.txt:
  • platform/wincairo/fast/text/whitespace/pre-wrap-overflow-selection-expected.txt:
7:57 PM Changeset in webkit [283022] by Alan Coon
  • 5 edits in branches/safari-612-branch/Source

Cherry-pick r281910. rdar://problem/83429926

Add more support for JIT operation validation testing.
https://bugs.webkit.org/show_bug.cgi?id=229534
rdar://81526335

Reviewed by Saam Barati.

Source/bmalloc:

  • bmalloc/Gigacage.cpp: (Gigacage::ensureGigacage):
  • bmalloc/GigacageConfig.h:

Source/JavaScriptCore:

  1. Added a JITOperationValidation.h to tidy up the code for supporting JIT operation validation.
  1. Introduce a JITOperationAnnotation struct to record JIT operation function pointers, with an extra pointer field for a validation test function.
  1. Changed JSC_ANNOTATE_JIT_OPERATION to capture a JITOperationAnnotation struct instead of just a single operation pointer.
  1. Converted the static addPointers() function in JITOperationList.cpp into a member function of JITOperationList. This allows for the code to be more terse, as well as enables the use of an inverse map mechanism on debug builds only.
  1. Added more macros to help differentiate between different types of JIT operation functions.
  1. Made all JIT operation functions use extern "C" linkage to make it possible to write validation tests in assembly so that we can run them on a release build as well without taking too much time.
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/JITOperationList.cpp: (JSC::JITOperationList::addInverseMap): (JSC::JITOperationList::addPointers): (JSC::JITOperationList::populatePointersInJavaScriptCore): (JSC::JITOperationList::populatePointersInJavaScriptCoreForLLInt): (JSC::JITOperationList::populatePointersInEmbedder): (JSC::addPointers): Deleted.
  • assembler/JITOperationList.h: (JSC::JITOperationList::map const): (JSC::JITOperationList::inverseMap const): (JSC::JITOperationList::assertIsJITOperation): (JSC::JITOperationList::assertIsJITOperationWithvalidation):
  • assembler/JITOperationValidation.h: Added.
  • assembler/MacroAssemblerARM64.cpp:
  • assembler/MacroAssemblerARM64.h:
  • assembler/MacroAssemblerARM64E.h:
  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerMIPS.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
  • b3/testb3.h:
  • b3/testb3_1.cpp:
  • b3/testb3_5.cpp:
  • b3/testb3_7.cpp:
  • dfg/DFGOSRExit.h:
  • ftl/FTLLowerDFGToB3.cpp:
  • jit/ExecutableAllocator.cpp: (JSC::initializeJITPageReservation):
  • jit/Repatch.cpp: (JSC::retagOperationWithValidation): (JSC::retagCallTargetWithValidation): (JSC::readPutICCallTarget):
  • jit/ThunkGenerators.cpp:
  • jsc.cpp:
  • llint/LLIntData.cpp:
  • llint/LLIntThunks.cpp:
  • runtime/CommonSlowPaths.h:
  • runtime/JSCPtrTag.h: (JSC::tagJSCCodePtrImpl): (JSC::untagJSCCodePtrImpl): (JSC::isTaggedJSCCodePtrImpl):
  • runtime/MathCommon.h:
  • runtime/Options.cpp: (JSC::canUseJITCage):
  • tools/JSDollarVM.cpp:
  • yarr/YarrJIT.cpp:

Source/WebCore:

  • bindings/js/WebCoreJITOperations.cpp:
  • bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation):
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp: (WebCore::JSTestDOMJITDOMConstructor::prototypeForStructure):
  • cssjit/SelectorCompiler.cpp:
  • testing/js/WebCoreTestSupport.cpp:

Source/WTF:

  • wtf/PlatformCallingConventions.h:
  • wtf/PtrTag.h: (WTF::PtrTagTraits::isTagged): (WTF::isTaggedNativeCodePtrImpl): (WTF::isTaggedWith): (WTF::assertIsTaggedWith):

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

7:57 PM Changeset in webkit [283021] by Alan Coon
  • 5 edits in branches/safari-612-branch

Revert r282084. rdar://problem/83429618

6:02 PM Changeset in webkit [283020] by Alan Coon
  • 1 copy in tags/Safari-612.2.6.1.1

Tag Safari-612.2.6.1.1.

4:54 PM Changeset in webkit [283019] by Simon Fraser
  • 19 edits in trunk/Source/WebCore

Move the ScrollAnimationSmooth from ScrollAnimator into ScrollingEffectsController
https://bugs.webkit.org/show_bug.cgi?id=230720

Reviewed by Tim Horton.

ScrollingEffectsController is where all the ScrollAnimations will live. The first
step is to move ScrollAnimator's m_scrollAnimation there; this is used for
keyboard scrolling, and CSS smooth scrolling.

ScrollingEffectsController becomes a ScrollAnimationClient (and ScrollAnimator stops
being one), so needs a little bit more glue code.

Add type traits for ScrollAnimator subclasses because we need to downcast<> them
here and in future patches.

Move some code from ScrollAnimatorMac into ScrollAnimator since it's not platform
specific.

ScrollAnimatorGeneric is almost entirely gutted, and code pushed into ScrollingEffectsController.
Make a ScrollAnimationKinetic in ScrollingEffectsController for this code path.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollOnAxis): Deleted.

  • platform/ScrollAnimation.h:

(WebCore::ScrollAnimation::ScrollAnimation):
(WebCore::ScrollAnimation::type const):

  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::ScrollAnimationKinetic):

  • platform/ScrollAnimationKinetic.h:
  • platform/ScrollAnimationMomentum.cpp:

(WebCore::ScrollAnimationMomentum::ScrollAnimationMomentum):

  • platform/ScrollAnimationMomentum.h:
  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::ScrollAnimationSmooth):

  • platform/ScrollAnimationSmooth.h:
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator):
(WebCore::ScrollAnimator::scroll):
(WebCore::ScrollAnimator::scrollToPositionWithoutAnimation):
(WebCore::ScrollAnimator::scrollToPositionWithAnimation):
(WebCore::ScrollAnimator::retargetRunningAnimation):
(WebCore::ScrollAnimator::setScrollBehaviorStatus):
(WebCore::ScrollAnimator::scrollBehaviorStatus const):
(WebCore::ScrollAnimator::adjustScrollPositionToBoundsIfNecessary):
(WebCore::ScrollAnimator::adjustScrollPositionIfNecessary const):
(WebCore::ScrollAnimator::immediateScrollByWithoutContentEdgeConstraints):
(WebCore::ScrollAnimator::immediateScrollBy):
(WebCore::ScrollAnimator::cancelAnimations):
(WebCore::ScrollAnimator::contentsSizeChanged):
(WebCore::ScrollAnimator::immediateScrollOnAxis): Deleted.
(WebCore::ScrollAnimator::contentsSizeChanged const): Deleted.
(WebCore::ScrollAnimator::scrollAnimationDidUpdate): Deleted.
(WebCore::ScrollAnimator::scrollAnimationDidEnd): Deleted.
(WebCore::ScrollAnimator::scrollExtentsForAnimation): Deleted.

  • platform/ScrollAnimator.h:
  • platform/ScrollingEffectsController.cpp:

(WebCore::ScrollingEffectsController::startAnimatedScrollToDestination):
(WebCore::ScrollingEffectsController::regargetAnimatedScroll):
(WebCore::ScrollingEffectsController::stopAnimatedScroll):
(WebCore::ScrollingEffectsController::processWheelEventForKineticScrolling):
(WebCore::ScrollingEffectsController::contentsSizeChanged):
(WebCore::ScrollingEffectsController::activeScrollSnapIndexForAxis const):
(WebCore::ScrollingEffectsController::scrollToOffsetForAnimation):
(WebCore::ScrollingEffectsController::scrollAnimationDidUpdate):
(WebCore::ScrollingEffectsController::scrollAnimationDidEnd):
(WebCore::ScrollingEffectsController::scrollExtentsForAnimation):

  • platform/ScrollingEffectsController.h:

(WebCore::ScrollingEffectsControllerClient::rubberBandingStateChanged):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
(WebCore::ScrollAnimatorGeneric::handleWheelEvent):
(WebCore::ScrollAnimatorGeneric::scrollToPositionWithoutAnimation): Deleted.
(WebCore::ScrollAnimatorGeneric::scrollAnimationDidUpdate): Deleted.

  • platform/generic/ScrollAnimatorGeneric.h:
  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::adjustScrollPositionIfNecessary const): Deleted.
(WebCore::ScrollAnimatorMac::adjustScrollPositionToBoundsIfNecessary): Deleted.
(WebCore::ScrollAnimatorMac::immediateScrollByWithoutContentEdgeConstraints): Deleted.
(WebCore::ScrollAnimatorMac::immediateScrollBy): Deleted.

  • platform/mac/ScrollingEffectsController.mm:

(WebCore::ScrollingEffectsController::updateScrollSnapAnimatingState):

4:08 PM Changeset in webkit [283018] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[Catalina Release wk1] imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230729.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:53 PM Changeset in webkit [283017] by Russell Epstein
  • 41 edits
    1 add in branches/safari-612-branch/Source

Cherry-pick r281910. rdar://problem/83429926

Add more support for JIT operation validation testing.
https://bugs.webkit.org/show_bug.cgi?id=229534
rdar://81526335

Reviewed by Saam Barati.

Source/bmalloc:

  • bmalloc/Gigacage.cpp: (Gigacage::ensureGigacage):
  • bmalloc/GigacageConfig.h:

Source/JavaScriptCore:

  1. Added a JITOperationValidation.h to tidy up the code for supporting JIT operation validation.
  1. Introduce a JITOperationAnnotation struct to record JIT operation function pointers, with an extra pointer field for a validation test function.
  1. Changed JSC_ANNOTATE_JIT_OPERATION to capture a JITOperationAnnotation struct instead of just a single operation pointer.
  1. Converted the static addPointers() function in JITOperationList.cpp into a member function of JITOperationList. This allows for the code to be more terse, as well as enables the use of an inverse map mechanism on debug builds only.
  1. Added more macros to help differentiate between different types of JIT operation functions.
  1. Made all JIT operation functions use extern "C" linkage to make it possible to write validation tests in assembly so that we can run them on a release build as well without taking too much time.
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/JITOperationList.cpp: (JSC::JITOperationList::addInverseMap): (JSC::JITOperationList::addPointers): (JSC::JITOperationList::populatePointersInJavaScriptCore): (JSC::JITOperationList::populatePointersInJavaScriptCoreForLLInt): (JSC::JITOperationList::populatePointersInEmbedder): (JSC::addPointers): Deleted.
  • assembler/JITOperationList.h: (JSC::JITOperationList::map const): (JSC::JITOperationList::inverseMap const): (JSC::JITOperationList::assertIsJITOperation): (JSC::JITOperationList::assertIsJITOperationWithvalidation):
  • assembler/JITOperationValidation.h: Added.
  • assembler/MacroAssemblerARM64.cpp:
  • assembler/MacroAssemblerARM64.h:
  • assembler/MacroAssemblerARM64E.h:
  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerMIPS.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
  • b3/testb3.h:
  • b3/testb3_1.cpp:
  • b3/testb3_5.cpp:
  • b3/testb3_7.cpp:
  • dfg/DFGOSRExit.h:
  • ftl/FTLLowerDFGToB3.cpp:
  • jit/ExecutableAllocator.cpp: (JSC::initializeJITPageReservation):
  • jit/Repatch.cpp: (JSC::retagOperationWithValidation): (JSC::retagCallTargetWithValidation): (JSC::readPutICCallTarget):
  • jit/ThunkGenerators.cpp:
  • jsc.cpp:
  • llint/LLIntData.cpp:
  • llint/LLIntThunks.cpp:
  • runtime/CommonSlowPaths.h:
  • runtime/JSCPtrTag.h: (JSC::tagJSCCodePtrImpl): (JSC::untagJSCCodePtrImpl): (JSC::isTaggedJSCCodePtrImpl):
  • runtime/MathCommon.h:
  • runtime/Options.cpp: (JSC::canUseJITCage):
  • tools/JSDollarVM.cpp:
  • yarr/YarrJIT.cpp:

Source/WebCore:

  • bindings/js/WebCoreJITOperations.cpp:
  • bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation):
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp: (WebCore::JSTestDOMJITDOMConstructor::prototypeForStructure):
  • cssjit/SelectorCompiler.cpp:
  • testing/js/WebCoreTestSupport.cpp:

Source/WTF:

  • wtf/PlatformCallingConventions.h:
  • wtf/PtrTag.h: (WTF::PtrTagTraits::isTagged): (WTF::isTaggedNativeCodePtrImpl): (WTF::isTaggedWith): (WTF::assertIsTaggedWith):

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

3:45 PM Changeset in webkit [283016] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Windows ] fast/images/exif-orientation-composited.html is a flaky image-only failure.
https://bugs.webkit.org/show_bug.cgi?id=230727.

Unreviewed test gardening.

  • platform/win/TestExpectations:
3:29 PM Changeset in webkit [283015] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

Update test expectations for js/dfg-float64array.html.
https://bugs.webkit.org/show_bug.cgi?id=229594.

Unreviewed test gardening.

  • platform/win/TestExpectations:
3:08 PM Changeset in webkit [283014] by Kyle Piddington
  • 3 edits in trunk/Source/ThirdParty/ANGLE

[WebGL2, Safari 15 - iOS15] Problems with drawElements in some conditions
https://bugs.webkit.org/show_bug.cgi?id=230107

Index buffer rewrite was dispatching too many threads.
Reviewed by Dean Jackson.

  • src/libANGLE/renderer/metal/ProvokingVertexHelper.mm:

(rx::ProvokingVertexHelper::preconditionIndexBuffer):

3:01 PM Changeset in webkit [283013] by commit-queue@webkit.org
  • 11 edits
    6 adds in trunk

Implement atan, acos, asin, atan2 calc functions
https://bugs.webkit.org/show_bug.cgi?id=229775

Patch by Nikos Mouchtaris <Nikos Mouchtaris> on 2021-09-23
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-values/acos-asin-atan-atan2-computed-expected.txt: Added.
  • web-platform-tests/css/css-values/acos-asin-atan-atan2-computed.html: Added.
  • web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid-expected.txt: Added.
  • web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html: Added.
  • web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt: Added.
  • web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html: Added.
  • web-platform-tests/css/support/numeric-testcommon.js:

Source/WebCore:

Added support for calc functions asin, acos, atan, atan2. Involved adding function CSS
keywords and handling for parsing these functions and their arguments as well as computing
the result based on the arguments. Spec for these functions:
https://drafts.csswg.org/css-values-4/#trig-funcs.

Tests: imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-computed.html

imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-invalid.html
imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize.html

  • css/CSSValueKeywords.in:
  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):

  • css/calc/CSSCalcOperationNode.cpp:

(WebCore::determineCategory):
(WebCore::functionFromOperator):
(WebCore::CSSCalcOperationNode::createInverseTrig):
(WebCore::CSSCalcOperationNode::createAtan2):
(WebCore::CSSCalcOperationNode::combineChildren):
(WebCore::CSSCalcOperationNode::simplifyNode):
(WebCore::CSSCalcOperationNode::primitiveType const):
(WebCore::CSSCalcOperationNode::doubleValue const):
(WebCore::functionPrefixForOperator):
(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcOperationNode.h:
  • css/calc/CSSCalcValue.cpp:

(WebCore::createCSS):
(WebCore::CSSCalcValue::isCalcFunction):

  • platform/calc/CalcExpressionOperation.cpp:

(WebCore::CalcExpressionOperation::evaluate const):
Return converted to degrees based on spec: https://drafts.csswg.org/css-values-4/#trig-funcs.

  • platform/calc/CalcOperator.cpp:

(WebCore::operator<<):

  • platform/calc/CalcOperator.h:
2:57 PM Changeset in webkit [283012] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

Remove access to unused services in the Networking access
https://bugs.webkit.org/show_bug.cgi?id=230715
<rdar://problem/83462947>

Reviewed by Brent Fulgham.

Telemetry is showing that some services allowed in the Networking process' sandbox are unused. These should be removed.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
2:54 PM Changeset in webkit [283011] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

Remove access to unused services in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=230716
<rdar://problem/83464232>

Reviewed by Brent Fulgham.

Telemetry is showing that some services allowed in the GPU process' sandbox are unused. These should be removed.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
2:51 PM Changeset in webkit [283010] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[Catalina BigSur wk1 Debug ] resize-observer/delete-observers-in-callbacks.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230717.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:50 PM Changeset in webkit [283009] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Various tweaks in preparation for Temporal.Instant
https://bugs.webkit.org/show_bug.cgi?id=230331

Patch by Philip Chimento <pchimento@igalia.com> on 2021-09-23
Reviewed by Yusuke Suzuki.

  • runtime/TemporalDuration.cpp:

(JSC::TemporalDuration::fromDurationLike): Use

temporalUnitPropertyName().

(JSC::TemporalDuration::toISO8601Duration): Improve error message to

include the invalid string.

(JSC::TemporalDuration::with const): Use temporalUnitPropertyName().
(JSC::TemporalDuration::toString): Use formatSecondsStringFraction().

  • runtime/TemporalObject.cpp:

(JSC::ellipsizeAt): Add helper to ellipsize string at certain length.
(JSC::temporalUnitPropertyName): Move code from TemporalDuration into

a function which will be reused in other Temporal types.

(JSC::temporalFractionalSecondDigits): Handle NaN as per

specification, and improve error message to include the invalid
value.

(JSC::formatSecondsStringFraction): Move code from TemporalDuration

into a function which will be reused in other Temporal types.

  • runtime/TemporalObject.h:
2:35 PM Changeset in webkit [283008] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS wk1 Debug ] editing/selection/navigation-clears-editor-state.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230719

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:35 PM Changeset in webkit [283007] by Fujii Hironori
  • 2 edits in trunk

[MSVC] The "/Zc:lambda" switch is recommended to use the new lambda processor.
https://bugs.webkit.org/show_bug.cgi?id=226070

Reviewed by Ross Kirsling.

Visual Studio 16.5 added the "/Zc:lambda" switch for the better
C++ conformance, but it had a compiler crashing bug. Visual Studio
16.9 fixed the bug.

  • Source/cmake/OptionsMSVC.cmake: Added /Zc:lambda for Visual

Studio 16.9 or later. I will remove the MSVC_VERSION check after
AppleWin bots will upgrade MSVC.

1:43 PM Changeset in webkit [283006] by Russell Epstein
  • 8 edits in branches/safari-612.2.6.1-branch/Source

Versioning.

WebKit-7612.2.6.1.1

1:42 PM Changeset in webkit [283005] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r282046. rdar://problem/83463331

[iOS] Play/pause button's icon does not update when pausing in full screen
https://bugs.webkit.org/show_bug.cgi?id=229904

Reviewed by Eric Carlson.

AVKit expects KVO notification of rate to update the play/pause icon.
However, with the changes in r280840, -[WebAVPlayerController setRate]
will be called by AVKit only. When a user taps the play/pause button,
-[WebAVPlayerController setRate:fromJavaScript:] will be called, which
does not generate the KVO notification.

This patch fixes the issue by manually generate the KVO notification.

To be safe, this patch manually generates the KVO notification for
property defaultPlaybackRate as well.

Tested manually.

  • platform/ios/WebAVPlayerController.mm: (-[WebAVPlayerController setDefaultPlaybackRate:fromJavaScript:]): (-[WebAVPlayerController setRate:fromJavaScript:]):

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

1:30 PM Changeset in webkit [283004] by Russell Epstein
  • 1 copy in branches/safari-612.2.6.1-branch

New branch.

1:29 PM Changeset in webkit [283003] by Russell Epstein
  • 1 copy in branches/safari-612.2.6.0-branch

New branch.

1:14 PM Changeset in webkit [283002] by Russell Epstein
  • 5 edits
    2 adds in branches/safari-612-branch

Cherry-pick r282451. rdar://problem/83460818

[iOS] Search inputs with '-webkit-appearance: textfield' should have a textfield background color
https://bugs.webkit.org/show_bug.cgi?id=229883
rdar://82146288

Reviewed by Tim Horton.

Source/WebCore:

In iOS 15, search inputs have a gray background color by default.
Some sites, such as booking.com, request that the input appear like
a textfield, by specifying '-webkit-appearance: textfield', over the
default 'searchfield'. This request was previously ignored, but there
was no observable difference since search inputs and text inputs had
the same default styling before iOS 15.

Now that the default styling is different, the appearance should be
honored, so that sites get the background color they expect.

Test: fast/forms/ios/form-control-refresh/search/textfield-appearance-background.html

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm: (WebCore::RenderThemeIOS::adjustTextFieldStyle const):

Exclude any elements that have a textfield appearance by default from
the background color adjustment, so that their background color can be
customized.

LayoutTests:

  • fast/forms/ios/form-control-refresh/search/textfield-appearance-background-expected.txt: Added.
  • fast/forms/ios/form-control-refresh/search/textfield-appearance-background.html: Added.
  • platform/ios/fast/css/input-search-padding-expected.txt: Rebaseline.

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

1:14 PM Changeset in webkit [283001] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r282175. rdar://problem/83460931

[macOS] -[WKFullScreenWindowController exitFullScreenImmediately] does not exit fullscreen immediately
https://bugs.webkit.org/show_bug.cgi?id=230024

Reviewed by Jer Noble.

A WebContent process may ask the WKFullScreenWindowController in
the UI process to exit fullscreen immediately without walking through
the normal exit fullscreen sequence, and the WebContent process won't
expect any IPC message related to fullscreen to come back from the
UI process. If the UI process sends an IPC message to the WebContent
process and expects the response from the WebContent process (e.g., in
WebPageProxy::forceRepaint()), the UI process will be stuck.

That will happen when a tab navigates to the previous page while a video
element in the current page is playing in fullscreen. The reason is that
-[WKFullScreenWindowController exitFullScreen] is called before
-[WKFullScreenWindowController exitFullScreenImmediately].
-[WKFullScreenWindowController exitFullScreen] changes _fullScreenState
to WaitingToExitFullScreen, so -[WKFullScreenWindowController exitFullScreenImmediately]
will return early. This patch fixes this issue by changing the early return condition.

In addition, -[WKFullScreenWindowController exitFullScreenImmediately]
does not really exit fullscreen immediately. Instead, it calls
-[WKFullScreenWindowController finishedExitFullScreenAnimation:],
which always calls WebPageProxy::forceRepaint() and expects a response
from the WebContet process. This patch fixes this issue as well.

Tested manually.

  • UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController exitFullScreenImmediately]): Update the early return condition to make sure the UI process will proceed to exit fullscreen unless the current state is NotInFullScreen. (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]): (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): The completed parameter was not used. This patch renames it to immediately to indicate whether WKFullScreenWindowController wants to exit fullscreen immediately. (-[WKFullScreenWindowController close]): Clean up this function after revising -[WKFullScreenWindowController exitFullScreenImmediately]. (-[WKFullScreenWindowController windowDidFailToExitFullScreen:]): Update the argument according to the change of -[WKFullScreenWindowController finishedExitFullScreenAnimation:]. (-[WKFullScreenWindowController windowDidExitFullScreen:]): Ditto.

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

1:14 PM Changeset in webkit [283000] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-612-branch

Cherry-pick r282063. rdar://problem/83460750

REGRESSION (r280017): Calling getBoundingClientRect() on an empty element with "break-before: column" in columns returns a rect with all zeros
https://bugs.webkit.org/show_bug.cgi?id=229747

Reviewed by Alan Bujtas.
Source/WebCore:

A zero-height element with break-before: column ends up with an offset which is exactly
equal to the column height, and therefore logically can be positioned at the bottom of one
column, or the top of the next. For elements with non-zero height, we have logic to avoid
putting the bottom of the box into the next column. Fix this logic for zero-height elements
to avoid the end column being less than the start column. This avoids an early return in
RenderMultiColumnSet::fragmentRectsForFlowContentRect() which resulted in a zero client rect.

Test: fast/multicol/newmulticol/client-rects-column-breakers.html

  • rendering/RenderMultiColumnSet.cpp: (WebCore::RenderMultiColumnSet::firstAndLastColumnsFromOffsets const):

LayoutTests:

  • fast/multicol/newmulticol/client-rects-column-breakers-expected.txt: Added.
  • fast/multicol/newmulticol/client-rects-column-breakers.html: Added.

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

1:14 PM Changeset in webkit [282999] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r281996. rdar://problem/83460851

[iOS] Media playback continues after backgrounding Safari
https://bugs.webkit.org/show_bug.cgi?id=229827

Reviewed by Eric Carlson.

In r277766, we make a video element ignore the background playback restriction
(HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction() returns true)
if the video element can *potentially* enter picture-in-picture automatically
(either the video element is currently in the video fullscreen mode
or m_videoFullscreenStandby is true).

Unfortunately, this is not the correct fix if the OS has disabled the
"Start PiP Automatically" feature. The problem is that a video continues
playing after Safari is in the background.

Only when the video element is in the picture-in-picture mode, the video element
can ignore the background playback restriction.

The UI process will receive "didStartPictureInPicture" notification (if any)
and "applicationDidEnterBackground" notification in order. The UI process will
send IPC messages to the WebContent process regarding the notifications.

1) For the "didStartPictureInPicture" notification, the WebContent process will
modify the corresponding video element's presentation mode to picture-in-picture.
2) For the "applicationDidEnterBackground" notification, the WebContent process
will call PlatformMediaSession::beginInterruption() to suspend media playback
if needed.

It is guaranteed that 1) happens before 2). Therefore, when
PlatformMediaSession::beginInterruption() calls HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction(),
if the video element enters picture-in-picture ("Start PiP Automatically" is enabled),
m_videoFullscreenMode must be VideoFullscreenModePictureInPicture.
Therefore, HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction()
should return true when m_videoFullscreenMode == VideoFullscreenModePictureInPicture.

Tested manually.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):

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

1:14 PM Changeset in webkit [282998] by Russell Epstein
  • 5 edits in branches/safari-612-branch/Source

Cherry-pick r281984. rdar://problem/83460908

RemoteVideoSample needs CVPixelBufferRef to be kept alive, but relies on caller to retain it
<https://webkit.org/b/229806>
<rdar://problem/82684479>

Reviewed by Darin Adler.

Source/WebCore:

Covered by tests:

webrtc/video-mute.html
webrtc/video-unmute.html

  • platform/graphics/RemoteVideoSample.cpp: (WebCore::RemoteVideoSample::create):
  • Pass CVPixelBufferRef to RemoteVideoSample constructor. (WebCore::RemoteVideoSample::RemoteVideoSample):
  • Change constructor to accept CVPixelBufferRef argument.
  • platform/graphics/RemoteVideoSample.h: (WebCore::RemoteVideoSample::RemoteVideoSample):
  • Change constructor to accept CVPixelBufferRef argument.
  • Add m_imageBuffer instance variable to hold on to the CVPixelBufferRef.

Source/WebKit:

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp: (WebKit::LibWebRTCCodecs::encodeFrame):
  • Pass converted CVPixelBufferRef to RemoteVideoSample::create(). A similar change in an earlier patch for Bug 229661 caused test failures.

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

1:14 PM Changeset in webkit [282997] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r281950. rdar://problem/83460946

Leak of VTImageRotationSessionRef (176 bytes) in com.apple.WebKit.GPU.Development process
<https://webkit.org/b/229781>
<rdar://problem/82651897>

Reviewed by Darin Adler.

  • platform/graphics/cv/ImageRotationSessionVT.mm: (WebCore::ImageRotationSessionVT::initialize):
  • Add missing adoptCF() to fix the leak.

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

1:14 PM Changeset in webkit [282996] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-612-branch

Cherry-pick r281650. rdar://problem/83460707

Drawing small caps web fonts into canvas causes the GPU process to hang
https://bugs.webkit.org/show_bug.cgi?id=229401
<rdar://problem/82282054>

Reviewed by Wenson Hsieh.

Source/WebCore:

Web fonts retain their downloaded data in case they need to send that data to the GPU process
to render into canvas. Small caps fonts are implemented by creating a "derivative" variant font.
When we were creating these derivative fonts, we weren't forwarding this downloaded data to
those new fonts. Without it, the font fails to transfer across IPC.

Test: fast/text/small-caps-canvas.html

  • platform/graphics/FontPlatformData.cpp: (WebCore::makeOptionalFromPointer): (WebCore::FontPlatformData::FontPlatformData):
  • platform/graphics/FontPlatformData.h:
  • platform/graphics/HEVCUtilities.cpp: (WebCore::makeOptionalFromPointer):
  • platform/graphics/coretext/FontCoreText.cpp: (WebCore::createDerivativeFont): (WebCore::Font::createFontWithoutSynthesizableFeatures const): (WebCore::Font::platformCreateScaledFont const):
  • platform/graphics/coretext/FontPlatformDataCoreText.cpp: (WebCore::FontPlatformData::FontPlatformData):
  • platform/graphics/win/FontPlatformDataCairoWin.cpp: (WebCore::FontPlatformData::FontPlatformData):
  • platform/graphics/win/FontPlatformDataWin.cpp: (WebCore::FontPlatformData::FontPlatformData):

LayoutTests:

  • fast/text/small-caps-canvas-expected.txt: Added.
  • fast/text/small-caps-canvas.html: Added.

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

1:14 PM Changeset in webkit [282995] by Russell Epstein
  • 10 edits in branches/safari-612-branch/Source

Cherry-pick r281597. rdar://problem/83460725

[GPUP] RemoteAudioSession doesn't implement begin/endInterruption
https://bugs.webkit.org/show_bug.cgi?id=229514
rdar://80896732

Reviewed by Jer Noble.

Source/WebCore:

Move the code necessary to deal with interruptions from AudioSessionIOS to the
base class so it can be shared with RemoteAudioSession.

Tested manually.

  • platform/audio/AudioSession.cpp: (WebCore::AudioSession::addInterruptionObserver): Move implementation from AudioSessionIOS so it can be shared. (WebCore::AudioSession::removeInterruptionObserver): Ditto. (WebCore::AudioSession::beginInterruption): Ditto. (WebCore::AudioSession::endInterruption): Ditto. (WebCore::AudioSession::setCategoryOverride): Ditto. (WebCore::AudioSession::categoryOverride const): Ditto.
  • platform/audio/AudioSession.h:
  • platform/audio/ios/AudioSessionIOS.h:
  • platform/audio/ios/AudioSessionIOS.mm: (WebCore::AudioSessionIOS::setCategoryOverride): Deleted. (WebCore::AudioSessionIOS::categoryOverride const): Deleted. (WebCore::AudioSessionIOS::addInterruptionObserver): Deleted. (WebCore::AudioSessionIOS::removeInterruptionObserver): Deleted. (WebCore::AudioSessionIOS::beginInterruption): Deleted. (WebCore::AudioSessionIOS::endInterruption): Deleted.
  • platform/audio/mac/AudioSessionMac.h:
  • platform/audio/mac/AudioSessionMac.mm: (WebCore::AudioSessionMac::setCategoryOverride): Deleted.

Source/WebKit:

  • WebProcess/GPU/media/RemoteAudioSession.cpp: (WebKit::RemoteAudioSession::setIsPlayingToBluetoothOverride): Remove ENABLE_ROUTING_ARBITRATION guard because it isn't used in the base class.
  • WebProcess/GPU/media/RemoteAudioSession.h: Change the order virtual methods are declared so they match the base class, to make it easier to spot differences.

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

1:13 PM Changeset in webkit [282994] by Russell Epstein
  • 9 edits
    2 adds in branches/safari-612-branch

Cherry-pick r281579. rdar://problem/83461036

[iOS] Crash when tapping <select> element and calling window.open()
https://bugs.webkit.org/show_bug.cgi?id=229468
rdar://82122972

Reviewed by Wenson Hsieh.

Source/WebKit:

UIKit throws an exception when attempting to present a context menu
for a view that is not in a window.

One instance where this can occur in Safari is when a call to
window.open() is made in response to a touch on a select element.
In this scenario, the call to window.open() opens a new tab, unparenting
the current webview. However, the touch also focuses the element, and
WebKit attempts to present a context menu in an unparented view.

To fix, guard against the case where the view is not parented, and do
not attempt to present a context menu.

Test: fast/forms/ios/show-select-menu-in-unparented-view-crash.html

  • UIProcess/ios/WKActionSheetAssistant.mm:

Note that the helper method used in other classes is not used in
WKActionSheetAssistant, since the hosting view is not always a
WKContentView.

(-[WKActionSheetAssistant showDataDetectorsUIForPositionInformation:]):
(-[WKActionSheetAssistant showMediaControlsContextMenu:items:completionHandler:]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView presentContextMenu:atLocation:]):

Added a helper method to ensure the view is parented prior to presenting
a context menu.

(-[WKContentView imageAnalysisGestureDidTimeOut:]):

  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm: (-[WKDataListSuggestionsDropdown _showSuggestions]):
  • UIProcess/ios/forms/WKDateTimeInputControl.mm: (-[WKDateTimePicker showDateTimePicker]):
  • UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel showDocumentPickerMenu]):
  • UIProcess/ios/forms/WKFormSelectPicker.mm: (-[WKSelectPicker showSelectPicker]):

LayoutTests:

Added a test to verify a crash does not occur when tapping a <select>
element and unparenting the webview.

  • fast/forms/ios/show-select-menu-in-unparented-view-crash-expected.txt: Added.
  • fast/forms/ios/show-select-menu-in-unparented-view-crash.html: Added.

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

1:13 PM Changeset in webkit [282993] by Russell Epstein
  • 2 edits
    2 adds in branches/safari-612-branch

Cherry-pick r281543. rdar://problem/83460773

[Cocoa] Should video stop being live, time scrubber will not show
https://bugs.webkit.org/show_bug.cgi?id=229286
rdar://82114447

Reviewed by Eric Carlson.

Work around an issue with AVKit AVTouchBarPlaybackControlsProvider SPI which will
not properly make the time scrubber to be displayed when only the content duration
change.
We do so by toggling the canSeek property to force a relayout of the touch bar
content.

While we can reproduce the issue programatically, at this stage we can only
visually confirm that it's been fixed as we have no infrastructure to check
the content of the touch bar and that the issue itself is in AVKit.
Test: ManualTests/video-livechange-touchbar.html

  • platform/mac/WebPlaybackControlsManager.mm: (-[WebPlaybackControlsManager canSeek]): Add code as property is otherwise read-only. (-[WebPlaybackControlsManager setCanSeek:]): Add code as property is otherwise read-only. (-[WebPlaybackControlsManager setContentDuration:]): (-[WebPlaybackControlsManager setSeekableTimeRanges:]): Explictly set canSeek propery to ensure property watchers will be called.

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

1:13 PM Changeset in webkit [282992] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r281533. rdar://problem/83460974

MediaSession artwork URL is showing in logs.
https://bugs.webkit.org/show_bug.cgi?id=229320
rdar://82156288

Reviewed by Eric Carlson.

Only enable artwork logging in debug builds.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo):

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

1:13 PM Changeset in webkit [282991] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r281352. rdar://problem/83461013

[macCatalyst] Crash when clicking a phone number link
https://bugs.webkit.org/show_bug.cgi?id=229344
rdar://81804638

Reviewed by Tim Horton.

Clicking on a phone number link should present data detection UI.
However, -[WKActionSheetAssistant _elementActionForDDAction:] always
returns nil on Catalyst, resulting in crash when attempting to add the
returned action to an NSArray.

Given that the methods used in _elementActionForDDAction: are available
on Catalyst, fix the crash by ensuring the method does not return nil, and
only making the method available on platforms where ENABLE(DATA_DETECTION)
is defined.

  • UIProcess/ios/WKActionSheetAssistant.mm: (-[WKActionSheetAssistant _elementActionForDDAction:]):

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

1:13 PM Changeset in webkit [282990] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r281334. rdar://problem/83460795

Followup to <trac.webkit.org/r281288>
https://bugs.webkit.org/show_bug.cgi?id=229269
rdar://81349236

Reviewed by Jer Noble.

Make two minor adjustments after the changes in r281288:

  1. Rename keyPathsForValuesAffectingValueCanBeginTouchBarScrubbing to just

keyPathsForValuesAffectingCanBeginTouchBarScrubbing, since the Objective-C property name is
-canBeginTouchBarScrubbing rather than -valueCanBeginTouchBarScrubbing.

  1. After fixing (1), the implementation of this method is no longer dead code, so we'll to make sure that the

NSSet we create and return contains valid Objective-C objects (i.e. NSString instead of const char*) --
in particular, this affects "contentDuration".

  • platform/mac/WebPlaybackControlsManager.mm: (+[WebPlaybackControlsManager keyPathsForValuesAffectingCanBeginTouchBarScrubbing]): (+[WebPlaybackControlsManager keyPathsForValuesAffectingValueCanBeginTouchBarScrubbing]): Deleted.

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

1:13 PM Changeset in webkit [282989] by Russell Epstein
  • 2 edits in branches/safari-612-branch/Source/WebCore

Cherry-pick r281288. rdar://problem/83460795

Touchbar not showing time scrubbing
https://bugs.webkit.org/show_bug.cgi?id=229269
rdar://81349236

Reviewed by Jer Noble.

AVKit uses canSeek to determine when to show the time scrubber
in the touch bar. This was a synthesized method determined on weither the video
is seekable and has a seekable range set.
Should the value of either boolean change which would impact the final value of
[AVTouchBarPlaybackControlsControlling canSeek] , no observers would be called.
Add the appropriate obj-c methods to explicitly set a dependency between properties
willChange/didChange.
Been unable to reproduce the problem programatically, the issue is highly timing
dependent.
An API test will be added with https://bugs.webkit.org/show_bug.cgi?id=229286.

  • platform/mac/WebPlaybackControlsManager.mm: (+[WebPlaybackControlsManager keyPathsForValuesAffectingCanSeek]): (+[WebPlaybackControlsManager keyPathsForValuesAffectingContentDuration]): (-[WebPlaybackControlsManager setSeekableTimeRanges:]): (+[WebPlaybackControlsManager keyPathsForValuesAffectingValueCanBeginTouchBarScrubbing]):

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

1:05 PM Changeset in webkit [282988] by timothy_horton@apple.com
  • 9 edits in trunk/Source

Move more linked-on-or-after checks to WebCore::linkedOnOrAfter()
https://bugs.webkit.org/show_bug.cgi?id=230694

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/cocoa/VersionChecks.h:

Add more versions, move DYLD_IOS_VERSION_FIRST_WITH_IOS_APPS_ON_MACOS
inline, and sort some that are out of order.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldRequireUserGestureToLoadVideo):
(-[WKWebView _initializeWithConfiguration:]):

Source/WebKitLegacy/mac:

  • Misc/WebDownload.mm:

(shouldCallOnNetworkThread):

  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultRequiresUserGestureToLoadVideo):
(WebKit::defaultWebSQLEnabled):
(WebKit::defaultShouldConvertInvalidURLsToBlank):

Source/WTF:

  • wtf/spi/darwin/dyldSPI.h:
12:45 PM Changeset in webkit [282987] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector support for font-palette
https://bugs.webkit.org/show_bug.cgi?id=230453

Reviewed by Devin Rousso.

Provide keyword completions.

  • UserInterface/Models/CSSKeywordCompletions.js:
12:26 PM Changeset in webkit [282986] by Russell Epstein
  • 16 edits
    2 adds in branches/safari-612-branch

Cherry-pick r282881. rdar://problem/83430003

Disable FTP.
<rdar://81193860> and https://bugs.webkit.org/show_bug.cgi?id=230477

Reviewed by Geoff Garen.

Source/WebKit:

Covered by new API tests.

  • NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::start): (WebKit::NetworkLoad::willPerformHTTPRedirection):
  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::ftpEnabled const):
  • NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode const): (WebKit::NetworkProcessCreationParameters::decode):
  • NetworkProcess/NetworkProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • wtf/URL.cpp: (WTF::URL::protocolIsInFTPFamily const): (WTF::protocolIsInFTPFamily):
  • wtf/URL.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/BundlePageConsoleMessage.mm: Added. (willAddMessageToConsoleCallback): (-[BundlePageConsoleMessage webProcessPlugIn:didCreateBrowserContextController:]):
  • TestWebKitAPI/Tests/WebKitCocoa/FTP.mm: Added. (TestWebKitAPI::didReceivePageMessageFromInjectedBundle): (TestWebKitAPI::setInjectedBundleClient): (TestWebKitAPI::TEST):
  • TestWebKitAPI/PlatformUtilities.h:
  • TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm: (TestWebKitAPI::Util::toNS):

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

12:26 PM Changeset in webkit [282985] by Russell Epstein
  • 26 edits in branches/safari-612-branch/Source

Cherry-pick r282865. rdar://problem/83429816

Use SharedMemory for transferring appended buffers from SourceBuffer to the GPU process
https://bugs.webkit.org/show_bug.cgi?id=230329
rdar://problem/83291495

Source/WebCore:

Use SharedBuffer instead of Vector to pass data to the SourceBuffer's related
classes (SourceBuffer, SourceBufferPrivate and SourceBufferParser).
Modify SourceBufferParserWebM to never perform memory allocation and copy
of the original data content. Instead, we use CMBlockBuffer objects that retain the
backing SharedBuffer and use offsets inside this SharedBuffer to reference the data.
SourceBufferParserAVFObjC requires little modification as a NSData can wrap a SharedBuffer.

Reviewed by Jer Noble.

There should be no change from an observable standpoint other than the GPU memory usage
being drastically reduced (from 700MB when watching a 4K/60fps YouTube video to just over 200MB
on an iMac Pro (which only has software VP9 decoding), 25MB vs 360MB on an iPad)
Existing tests are fully exercising this new code.

  • Modules/mediasource/SourceBuffer.cpp: Simplify logic around m_pendingAppendData member. Only one appendBuffer operation can be pending at any given time otherwise appendBuffer will throw an exception; as such, there's no need to append the data to a vector: "there can be only one". (WebCore::SourceBuffer::abortIfUpdating): (WebCore::SourceBuffer::appendBufferInternal): (WebCore::SourceBuffer::appendBufferTimerFired): (WebCore::SourceBuffer::reportExtraMemoryAllocated):
  • Modules/mediasource/SourceBuffer.h:
  • platform/SharedBuffer.cpp: (WebCore::SharedBuffer::SharedBuffer): (WebCore::SharedBuffer::create): (WebCore::SharedBuffer::copyTo const): (WebCore::SharedBuffer::DataSegment::data const): (WebCore::SharedBuffer::DataSegment::size const):
  • platform/SharedBuffer.h: Add new DataSegment type that takes a Provider in constructor. A Provider provides two Function members data and size.
  • platform/audio/cocoa/AudioFileReaderCocoa.cpp: The AudioFileReaderCocoa required the CMBlockBuffer containing the compressed content to be contiguous. This is no longer guaranteed so ensure that the CMBlockBuffer is contiguous. (WebCore::AudioFileReader::demuxWebMData const): (WebCore::AudioFileReader::decodeWebMData const):
  • platform/graphics/SourceBufferPrivate.h: (WebCore::SourceBufferPrivate::append):
  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm: (WebCore::SourceBufferParserAVFObjC::appendData):
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::SourceBufferPrivateAVFObjC::append):
  • platform/graphics/cocoa/SourceBufferParser.cpp: (WebCore::SourceBufferParser::Segment::Segment): (WebCore::SourceBufferParser::Segment::size const): (WebCore::SourceBufferParser::Segment::read const): (WebCore::SourceBufferParser::Segment::takeSharedBuffer): (WebCore::SourceBufferParser::Segment::getSharedBuffer const):
  • platform/graphics/cocoa/SourceBufferParser.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp: (WebCore::SourceBufferParserWebM::SourceBufferParserWebM): (WebCore::SourceBufferParserWebM::TrackData::contiguousCompleteBlockBuffer const): (WebCore::SourceBufferParserWebM::TrackData::readFrameData): (WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData): (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer): (WebCore::SourceBufferParserWebM::AudioTrackData::resetCompleted): (WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData): (WebCore::SourceBufferParserWebM::AudioTrackData::createSampleBuffer): (WebCore::SourceBufferParserWebM::flushPendingAudioBuffers):
  • platform/graphics/cocoa/SourceBufferParserWebM.h: (WebCore::SourceBufferParserWebM::TrackData::resetCompleted): (WebCore::SourceBufferParserWebM::TrackData::reset):

Source/WebCore/PAL:

Reviewed by Jer Noble.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h: Add required CoreMedia methods.

Source/WebKit:

Use SharedMemory to pass SourceBuffer content to RemoteSourceBufferProxy in GPU process.
This is done by wrapping a SharedMemory into a SharedBuffer.

Reviewed by Jer Noble.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp: (WebKit::RemoteSourceBufferProxy::append):
  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • Platform/SharedMemory.cpp: (WebKit::SharedMemory::createSharedBuffer const):
  • Platform/SharedMemory.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp: (WebKit::SourceBufferPrivateRemote::append):
  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:

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

12:19 PM Changeset in webkit [282984] by Devin Rousso
  • 21 edits
    8 copies
    1 add in trunk

Web Inspector: Graphics: add instrumentation for new CanvasRenderingContext2DSettings
https://bugs.webkit.org/show_bug.cgi?id=225180
<rdar://problem/77587429>

Reviewed by BJ Burg.

Source/JavaScriptCore:

  • inspector/protocol/Canvas.json:

Add colorSpace and desynchronized to Canvas.ContextAttributes.

Source/WebCore:

  • inspector/InspectorCanvas.cpp:

(WebCore::buildObjectForCanvasContextAttributes): Added.
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::buildInitialState):
Unify the two cases where we fetch canvas attributes into a single method so that both get
the same data. This means that the canvas recorder now also uses Canvas.ContextAttributes.

LayoutTests:

  • inspector/canvas/context-attributes-expected.txt:
  • inspector/canvas/recording-2d-frameCount-expected.txt:
  • inspector/canvas/recording-2d-full-expected.txt:
  • inspector/canvas/recording-2d-memoryLimit-expected.txt:
  • inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt:
  • inspector/canvas/recording-bitmaprenderer-full-expected.txt:
  • inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt:
  • inspector/canvas/recording-html-2d-expected.txt:
  • inspector/canvas/recording-webgl-frameCount-expected.txt:
  • inspector/canvas/recording-webgl-full-expected.txt:
  • inspector/canvas/recording-webgl-memoryLimit-expected.txt:
  • inspector/canvas/recording-webgl-snapshots-expected.txt:
  • inspector/canvas/recording-webgl2-frameCount-expected.txt:
  • inspector/canvas/recording-webgl2-full-expected.txt:
  • inspector/canvas/recording-webgl2-memoryLimit-expected.txt:
  • inspector/canvas/recording-webgl2-snapshots-expected.txt:
12:15 PM Changeset in webkit [282983] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ BigSur Debug ]http/tests/inspector/network/resource-initiatorNode.html is a flaky crash/failure.
https://bugs.webkit.org/show_bug.cgi?id=230711.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:15 PM Changeset in webkit [282982] by Russell Epstein
  • 9 edits
    1 move in branches/safari-612-branch/Source

Cherry-pick r282831. rdar://problem/83429823

NetworkRTCUDPSocketCocoaConnections should handle NAT64 IP addresses correctly
https://bugs.webkit.org/show_bug.cgi?id=230552
<rdar://83297256>

Reviewed by Alex Christensen.

Source/ThirdParty/libwebrtc:

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebKit:

When opening a UDP socket, check whether it is a NAT64 IPv4 address.
In that case, we cannot bind it like we used to do with the sockets API.
Instead use "0.0.0.0".
Manually tested.

  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:
  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm: (WebKit::isNat64IPAddress): (WebKit::computeHostAddress): (WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
  • NetworkProcess/webrtc/NetworkRTCUtilitiesCocoa.h:
  • Platform/spi/Cocoa/NWSPI.h: Renamed from Source/WebKit/Platform/spi/Cocoa/NWParametersSPI.h.
  • WebKit.xcodeproj/project.pbxproj:

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

12:15 PM Changeset in webkit [282981] by Russell Epstein
  • 5 edits in branches/safari-612-branch

Cherry-pick r282084. rdar://problem/83429618

[wpt-improvement] Improve CSP support for window reuse
https://bugs.webkit.org/show_bug.cgi?id=229882
<rdar://78416553>

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Rebaseline a test that now passes.

  • web-platform-tests/content-security-policy/sandbox/window-reuse-sandboxed-expected.txt:

Source/WebCore:

If window.open is used to host content with a CSP sandbox header, we should always
create a new window, rather than reusing the existing one, unless the header
includes 'allow-same-site'.

This improves our WPT score.

Tested by: imported/w3c/web-platform-tests/content-security-policy/sandbox/window-reuse-sandboxed.html

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::responseReceived): Parse the HTTP headers earlier so we can make decisions based on their state.
  • loader/DocumentWriter.cpp: (WebCore::DocumentWriter::begin): Don't reuse the current window if 'allow-same-site' is not allowed.

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

12:15 PM Changeset in webkit [282980] by Russell Epstein
  • 7 edits in branches/safari-612-branch/Source/JavaScriptCore

Cherry-pick r282009. rdar://problem/83430109

[JSC] Fix WebKitAdditions directory traversal in offlineasm part 2
https://bugs.webkit.org/show_bug.cgi?id=229853

Reviewed by Mark Lam.

When DEPLOYMENT_LOCATION is YES, WEBKITADDITIONS_HEADERS_FOLDER_PATH is /usr/local/include/WebKitAdditions.
However, since Xcode implicitly changes it to ${SDKROOT}/usr/local/include/WebKitAdditions, we need to
pass the path with ${SDKROOT} if this path is used by non-Xcode.

In this patch, we replace --use-deployment-location with --webkit-additions-path=path and passing WebKitAdditions
path directly from Xcode. We define WK_WEBKITADDITIONS_INSTALL_PATH and WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH in
JavaScriptCore/Configurations/Base.xcconfig to populate this variable and pass WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH
to the scripts.

We also fix offlineasm's path concatenation. It was using +, but this does not work if directory doesn't end with '/'.
We should use File.join when concatenating file paths.

  • Configurations/Base.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • offlineasm/asm.rb:
  • offlineasm/generate_offset_extractor.rb:
  • offlineasm/generate_settings_extractor.rb:
  • offlineasm/parser.rb:

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

12:14 PM Changeset in webkit [282979] by Russell Epstein
  • 5 edits in branches/safari-612-branch/Source/WebKit

Cherry-pick r282003. rdar://problem/82734050

Buffer large media XHRs in the NetworkProcess to reduce IPC overhead
https://bugs.webkit.org/show_bug.cgi?id=229813
<rdar://82406803>

Reviewed by Alex Christensen.

When playing back media through MSE, a significant amount of CPU time is spent sending
small chunks of loaded media across the XPC boundary, on the order of 16kb at a time out
of a 1-3MB resource. This large number of small XPC messages, each with a fixed cost, causes
a relatively large CPU overhead. Media loaded directly through a HTMLMediaElement already
is coalesced in the NetworkProcess on a 50ms timer.

Buffer all loads of large media resources, performed over fetch() or XHR, when those resources
have an expected length of more than 1MB, by coalescing them on the same 50ms timer as we use
for HTMLMediaElement-generated loads.

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didReceiveResponse):
  • NetworkProcess/NetworkResourceLoader.h:
  • WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::maximumBufferingTime):
  • WebProcess/Network/WebLoaderStrategy.h:

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

11:58 AM Changeset in webkit [282978] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS Debug ] media/video-ended-seek-crash.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=230708

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
11:38 AM Changeset in webkit [282977] by Eric Hutchison
  • 3 edits in trunk/LayoutTests

LayoutTest memory/memory-pressure-simulation.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=170629.

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
11:35 AM Changeset in webkit [282976] by Russell Epstein
  • 14 edits in branches/safari-612-branch/Source/bmalloc

Cherry-pick r282899. rdar://problem/83457612

[libpas] fix DebugHeap
https://bugs.webkit.org/show_bug.cgi?id=230658

Reviewed by Yusuke Suzuki.

The previous DebugHeap integration with libpas assumed we didn't have a jit_heap. Now that
we have a jit_heap, we need to be able to do DebugHeap from the bmalloc_heap while we still
use jit_heap.

This was tricky, since previously, libpas could just follow bmalloc and say that if TLC is
not initialized, then we go slow, and the slow path checks for DebugHeap. Now, we might have
a TLC. This means having to push down the debug heap checks into other slow paths.

  • bmalloc/DebugHeap.cpp: (pas_debug_heap_is_enabled): (pas_debug_heap_malloc): (pas_debug_heap_memalign): (pas_debug_heap_realloc): (pas_debug_heap_free):
  • libpas/src/libpas/bmalloc_heap_config.c: (bmalloc_heap_config_activate):
  • libpas/src/libpas/jit_heap.c: (jit_heap_add_fresh_memory): (jit_heap_try_allocate):
  • libpas/src/libpas/jit_heap_config.c:
  • libpas/src/libpas/pas_deallocate.c: (pas_try_deallocate_slow_no_cache):
  • libpas/src/libpas/pas_deallocate.h: (pas_try_deallocate_not_small):
  • libpas/src/libpas/pas_debug_heap.h: (pas_debug_heap_is_enabled): (pas_debug_heap_allocate):
  • libpas/src/libpas/pas_local_allocator_inlines.h: (pas_local_allocator_try_allocate_small_segregated_slow_impl): (pas_local_allocator_try_allocate_slow_impl): (pas_local_allocator_try_allocate):
  • libpas/src/libpas/pas_thread_local_cache.c: (allocate_cache): (pas_thread_local_cache_get_local_allocator_if_can_set_cache_slow):
  • libpas/src/libpas/pas_try_allocate.h: (pas_try_allocate_impl):
  • libpas/src/libpas/pas_try_allocate_common.h: (pas_try_allocate_common_impl_slow):
  • libpas/src/libpas/pas_try_allocate_intrinsic_primitive.h: (pas_try_allocate_intrinsic_primitive_impl_medium_slow_case): (pas_try_allocate_intrinsic_primitive_impl_inline_only):
  • libpas/src/libpas/pas_try_reallocate.h: (pas_try_reallocate):

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

11:29 AM Changeset in webkit [282975] by graouts@webkit.org
  • 9 edits
    4 adds in trunk/Source/WebCore

[Media Controls] Allow for a brightness control
https://bugs.webkit.org/show_bug.cgi?id=230697
<rdar://problem/79956277>

Reviewed by Dean Jackson.

Add a new brightness button to control a new MediaControlsHost "brightness" property
which is currently only a stub.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.idl:
  • Modules/modern-media-controls/controls/brightness-button.js: Added.

(BrightnessButton):

  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/controls/media-controls.js:
  • Modules/modern-media-controls/images/iOS/Brightness.svg: Added.
  • Modules/modern-media-controls/images/macOS/Brightness.svg: Added.
  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/brightness-support.js: Added.

(BrightnessSupport.prototype.get control):
(BrightnessSupport.prototype.controlValueWillStartChanging):
(BrightnessSupport.prototype.controlValueDidChange):
(BrightnessSupport.prototype.controlValueDidStopChanging):
(BrightnessSupport):

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._supportingObjectClasses):

11:22 AM Changeset in webkit [282974] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[ Catalina Debug wk1 ] performance-api/performance-observer-callback-after-gc.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230701.

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:14 AM September 2021 Meeting edited by Jon Davis
Updated presentation order (diff)
11:13 AM Changeset in webkit [282973] by Simon Fraser
  • 16 edits in trunk/Source/WebCore

Unify more media-related WebCore source files
https://bugs.webkit.org/show_bug.cgi?id=230666

Reviewed by Tim Horton.

Source/WebCore:

Unified build fixes (some hacky). There's lots of soft linking cleanup and
code de-duplication that would allow for more unification.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):

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

(WebCore::CDMSessionAVContentKeySession::releaseKeys):

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

(WebCore::CDMSessionAVStreamSession::releaseKeys):
(WebCore::isEqual2):
(WebCore::CDMSessionAVStreamSession::update):
(WebCore::isEqual): Deleted.

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
  • platform/graphics/mac/ComplexTextControllerCoreText.mm:
  • platform/network/mac/UTIUtilities.mm:
  • platform/text/TextEncodingDetector.h:

Source/WebCore/PAL:

AVOutputContextOutputDevicesDidChangeNotification is declared as an NSNotificationName.

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:
11:08 AM Changeset in webkit [282972] by Ayumi Kojima
  • 3 edits in trunk/LayoutTests

[ iOS macOS wk2 ] webrtc/datachannel/mdns-ice-candidates.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230700

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
10:44 AM Changeset in webkit [282971] by graouts@webkit.org
  • 7 edits
    4 adds in trunk/Source/WebCore

[Media Controls] Allow for a single mute and volume button
https://bugs.webkit.org/show_bug.cgi?id=230692
<rdar://problem/79956248>

Reviewed by Dean Jackson.

Up to now, the mute button in the controls bar would act as a toggle for the "muted" property on the media element.
Hovering that button would make a slider appear that would allow the "volume" property of the media element to be
changed as well.

We now allow for a single button with a built-in range indicator to be used for mute and volume. Clicking on the
button without moving will toggle the mute status, while moving the mouse up or down will adjust the volume
and show a pill-link range indicator showing the current volume.

This new control is a Button subclass called RangeButton. The new VolumeButton class extends it to provide the
correct icon depending on the volume and muted state. The new MuteAndVolumeSupport class is used in conjunction
with VolumeButton.

To indicate that media controls want to use this new style, MediaControls subclasses can override the
usesSingleMuteAndVolumeButton getter to return true. Currently it's false everywhere until we decide
to use this style.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.get usesSingleMuteAndVolumeButton):

  • Modules/modern-media-controls/controls/range-button.css: Added.

(button.range > div.indicator):
(button.range > div.indicator > div.fill):

  • Modules/modern-media-controls/controls/range-button.js: Added.

(RangeButton.prototype.get value):
(RangeButton.prototype.set value):
(RangeButton.prototype.commitProperty):
(RangeButton.prototype.handleEvent):
(RangeButton.prototype._handlePointerdown):
(RangeButton.prototype._handlePointermove):
(RangeButton.prototype._handlePointerup):

  • Modules/modern-media-controls/controls/volume-button.js: Added.

(VolumeButton):
(VolumeButton.prototype.get volume):
(VolumeButton.prototype.set volume):
(VolumeButton.prototype.get muted):
(VolumeButton.prototype.set muted):
(VolumeButton.prototype.set usesLTRUserInterfaceLayoutDirection):
(VolumeButton.prototype.layout):

  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype._supportingObjectClasses):

  • Modules/modern-media-controls/media/mute-and-volume-support.js: Added.

(MuteAndVolumeSupport.prototype.get control):
(MuteAndVolumeSupport.prototype.get mediaEvents):
(MuteAndVolumeSupport.prototype.controlValueWillStartChanging):
(MuteAndVolumeSupport.prototype.controlValueDidChange):
(MuteAndVolumeSupport.prototype.controlValueDidStopChanging):
(MuteAndVolumeSupport.prototype.buttonWasPressed):
(MuteAndVolumeSupport.prototype.syncControl):
(MuteAndVolumeSupport):

  • WebCore.xcodeproj/project.pbxproj:
10:41 AM Changeset in webkit [282970] by Eric Hutchison
  • 2 edits in trunk/LayoutTests

[iOS] multiple CSS tests with image-only failures.
https://bugs.webkit.org/show_bug.cgi?id=230695.

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
10:38 AM Changeset in webkit [282969] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230696

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:24 AM Changeset in webkit [282968] by Ross Kirsling
  • 5 edits in trunk

[JSC] Handle syntactic production for #x in expr correctly
https://bugs.webkit.org/show_bug.cgi?id=230668

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/private-in.js: Add tests.
  • test262/expectations.yaml: Mark two test cases as passing.

Source/JavaScriptCore:

The production for #x in expr is easy to get wrong.

RelationalExpression[In, Yield, Await] :

ShiftExpression?Await
RelationalExpression?Yield, ?Await < ShiftExpression?Await
RelationalExpression?Yield, ?Await > ShiftExpression?Await
RelationalExpression?Yield, ?Await <= ShiftExpression?Await
RelationalExpression?Yield, ?Await >= ShiftExpression?Await
RelationalExpression?Yield, ?Await instanceof ShiftExpression?Await
[+In] RelationalExpression[+In, ?Yield, ?Await] in ShiftExpression?Await
[+In] PrivateIdentifier in ShiftExpression?Await

We were ensuring that a standalone private name #x is always followed by operator in;
this patch further ensures that that particular in can't have its LHS misparsed as a RelationalExpression.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseBinaryExpression):
Verify the precedence of the topmost operator on the stack (if any) when parsing standalone #x.

10:23 AM Changeset in webkit [282967] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ macOS wk1 Debug ] http/wpt/fetch/navigation-post-to-get-origin.html is a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=230693

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:14 AM Changeset in webkit [282966] by timothy_horton@apple.com
  • 6 edits in trunk/Source

shouldAllowPictureInPictureMediaPlayback should use WebCore's linkedOnOrAfter()
https://bugs.webkit.org/show_bug.cgi?id=230674

Reviewed by Simon Fraser.

Source/WebCore:

  • platform/cocoa/VersionChecks.h:

Remove the unused FirstWithNetworkCache version, and add one for PIP.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldAllowPictureInPictureMediaPlayback):
Adopt the WebCore API (which supports overrides for Safari and for testing).

Source/WebKitLegacy/mac:

  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultAllowsPictureInPictureMediaPlayback):
Adopt the WebCore API (which supports overrides for Safari and for testing).

10:12 AM Changeset in webkit [282965] by Brent Fulgham
  • 7 edits in trunk/Source

Remove XSS Auditor: Part 3 (Deprecate API)
https://bugs.webkit.org/show_bug.cgi?id=230661
<rdar://problem/83428911>

Reviewed by Mark Lam.

Source/WebKit:

As a final step, deprecate the API now that the feature is removed. Once all clients have
removed use of the API we can remove from the framework.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetXSSAuditorEnabled):
(WKPreferencesGetXSSAuditorEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:

Source/WebKitLegacy/mac:

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

(-[WebPreferences isXSSAuditorEnabled]):
(-[WebPreferences setXSSAuditorEnabled:]):

  • WebView/WebPreferencesPrivate.h:
9:42 AM Changeset in webkit [282964] by ntim@apple.com
  • 6 edits in trunk/Source/WebCore

AX: Stop exposing isInert & ignoredFromModalPresence in AXCoreObject & AXIsolatedObject
https://bugs.webkit.org/show_bug.cgi?id=230690

Reviewed by Chris Fleizach.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::defaultObjectInclusion const):
(WebCore::AccessibilityObject::isInert const): Deleted.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::ignoredFromModalPresence const): Deleted.
(WebCore::AXIsolatedObject::isInert const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
9:02 AM Changeset in webkit [282963] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Fix incorrect mach service name in sandboxes
https://bugs.webkit.org/show_bug.cgi?id=230640
<rdar://55258216>

Reviewed by Brent Fulgham.

Authentication related rules are using incorrect service names in sandboxes.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
8:49 AM Changeset in webkit [282962] by Ayumi Kojima
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 Release ] imported/w3c/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=230691

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
8:40 AM Changeset in webkit [282961] by Alan Bujtas
  • 30 edits
    1 move in trunk/Source/WebCore

[LFC][IFC] Move Layout::Run under InlineDisplay and rename it to Box
https://bugs.webkit.org/show_bug.cgi?id=230643

Reviewed by Antti Koivisto.

These fragments of inline content should be considered runs only up to the point where we finished breaking the line. Soon after they gain horizontal (and later vertical) geometries, we
should call them boxes.

  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::buildInlineDisplayTree):

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::displayBoxForTextRun const):

  • display/css/DisplayBoxFactory.h:
  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::TextBox):
(WebCore::Display::m_text):

  • display/css/DisplayTextBox.h:

(WebCore::Display::TextBox::expansion const):
(WebCore::Display::TextBox::text const):

  • layout/Verification.cpp:

(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.cpp:

(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineContent):
(WebCore::Layout::InlineDisplayContentBuilder::createBoxesAndUpdateGeometryForLineSpanningInlineBoxes):
(WebCore::Layout::InlineDisplayContentBuilder::collectInkOverflowForInlineBoxes):
(WebCore::Layout::InlineDisplayContentBuilder::createRunsAndUpdateGeometryForLineContent): Deleted.
(WebCore::Layout::InlineDisplayContentBuilder::createRunsAndUpdateGeometryForLineSpanningInlineBoxes): Deleted.
(WebCore::Layout::InlineDisplayContentBuilder::collectInkOverflowForInlineBoxRuns): Deleted.

  • layout/formattingContexts/inline/InlineDisplayContentBuilder.h:
  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computeStaticPositionForOutOfFlowContent):
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):
(WebCore::Layout::InlineFormattingContext::invalidateFormattingState):

  • layout/formattingContexts/inline/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineBoxes const):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::boxes const):
(WebCore::Layout::InlineFormattingState::boxes):
(WebCore::Layout::InlineFormattingState::addBoxes):
(WebCore::Layout::InlineFormattingState::clearLineAndBoxes):
(WebCore::Layout::InlineFormattingState::shrinkToFit):
(WebCore::Layout::InlineFormattingState::runs const): Deleted.
(WebCore::Layout::InlineFormattingState::runs): Deleted.
(WebCore::Layout::InlineFormattingState::addRuns): Deleted.
(WebCore::Layout::InlineFormattingState::clearLineAndRuns): Deleted.

  • layout/formattingContexts/inline/InlineLine.h:

(WebCore::Layout::Line::Run::expansion const):
(WebCore::Layout::Line::Run::setExpansion):

  • layout/formattingContexts/inline/display/InlineLineRun.h:

(WebCore::InlineDisplay::Box::logicalRect const):
(WebCore::InlineDisplay::Box::inkOverflow const):
(WebCore::InlineDisplay::Box::logicalTop const):
(WebCore::InlineDisplay::Box::logicalBottom const):
(WebCore::InlineDisplay::Box::logicalLeft const):
(WebCore::InlineDisplay::Box::logicalRight const):
(WebCore::InlineDisplay::Box::logicalWidth const):
(WebCore::InlineDisplay::Box::logicalHeight const):
(WebCore::InlineDisplay::Box::moveVertically):
(WebCore::InlineDisplay::Box::adjustInkOverflow):
(WebCore::InlineDisplay::Box::layoutBox const):
(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::Text::Text):
(WebCore::Layout::Run::Text::start const): Deleted.
(WebCore::Layout::Run::Text::end const): Deleted.
(WebCore::Layout::Run::Text::length const): Deleted.
(WebCore::Layout::Run::Text::originalContent const): Deleted.
(WebCore::Layout::Run::Text::renderedContent const): Deleted.
(WebCore::Layout::Run::Text::hasHyphen const): Deleted.
(WebCore::Layout::Run::isText const): Deleted.
(WebCore::Layout::Run::isSoftLineBreak const): Deleted.
(WebCore::Layout::Run::isLineBreakBox const): Deleted.
(WebCore::Layout::Run::isLineBreak const): Deleted.
(WebCore::Layout::Run::isAtomicInlineLevelBox const): Deleted.
(WebCore::Layout::Run::isInlineBox const): Deleted.
(WebCore::Layout::Run::isNonRootInlineBox const): Deleted.
(WebCore::Layout::Run::isRootInlineBox const): Deleted.
(WebCore::Layout::Run::isGenericInlineLevelBox const): Deleted.
(WebCore::Layout::Run::isInlineLevelBox const): Deleted.
(WebCore::Layout::Run::isNonRootInlineLevelBox const): Deleted.
(WebCore::Layout::Run::type const): Deleted.
(WebCore::Layout::Run::hasContent const): Deleted.
(WebCore::Layout::Run::logicalRect const): Deleted.
(WebCore::Layout::Run::inkOverflow const): Deleted.
(WebCore::Layout::Run::logicalTop const): Deleted.
(WebCore::Layout::Run::logicalBottom const): Deleted.
(WebCore::Layout::Run::logicalLeft const): Deleted.
(WebCore::Layout::Run::logicalRight const): Deleted.
(WebCore::Layout::Run::logicalWidth const): Deleted.
(WebCore::Layout::Run::logicalHeight const): Deleted.
(WebCore::Layout::Run::moveVertically): Deleted.
(WebCore::Layout::Run::adjustInkOverflow): Deleted.
(WebCore::Layout::Run::text): Deleted.
(WebCore::Layout::Run::text const): Deleted.
(WebCore::Layout::Run::expansion const): Deleted.
(WebCore::Layout::Run::layoutBox const): Deleted.
(WebCore::Layout::Run::style const): Deleted.
(WebCore::Layout::Run::lineIndex const): Deleted.
(WebCore::Layout::Run::Run): Deleted.
(WebCore::Layout::Run::Text::Text): Deleted.

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):

  • layout/integration/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::hasContent const):
(WebCore::LayoutIntegration:: const):
(WebCore::LayoutIntegration::InlineContent::~InlineContent):
(WebCore::LayoutIntegration::InlineContent::indexForBox const):
(WebCore::LayoutIntegration::InlineContent::firstBoxForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::firstBoxIndexForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::nonRootInlineBoxIndexesForLayoutBox const):
(WebCore::LayoutIntegration::InlineContent::releaseCaches):
(WebCore::LayoutIntegration::InlineContent::shrinkToFit):
(WebCore::LayoutIntegration::InlineContent::indexForRun const): Deleted.
(WebCore::LayoutIntegration::InlineContent::firstRunForLayoutBox const): Deleted.
(WebCore::LayoutIntegration::InlineContent::firstRunIndexForLayoutBox const): Deleted.

  • layout/integration/LayoutIntegrationInlineContent.h:

(WebCore::LayoutIntegration::InlineContent::lineForBox const):
(WebCore::LayoutIntegration::InlineContent::traverseNonRootInlineBoxes):
(WebCore::LayoutIntegration::InlineContent::lineForRun const): Deleted.

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):

  • layout/integration/LayoutIntegrationLine.h:

(WebCore::LayoutIntegration::Line::Line):
(WebCore::LayoutIntegration::Line::firstBoxIndex const):
(WebCore::LayoutIntegration::Line::boxCount const):
(WebCore::LayoutIntegration::Line::firstRunIndex const): Deleted.
(WebCore::LayoutIntegration::Line::runCount const): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::firstRun const):
(WebCore::LayoutIntegration::LineIteratorModernPath::lastRun const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):
(WebCore::LayoutIntegration::LineLayout::firstInlineBoxRect const):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::hitTest):
(WebCore::LayoutIntegration::LineLayout::paintTextBoxUsingPhysicalCoordinates):
(WebCore::LayoutIntegration::LineLayout::paintTextRunUsingPhysicalCoordinates): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::PathRun::line const):
(WebCore::LayoutIntegration::textRunFor):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathRun::inlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::RunIteratorModernPath):
(WebCore::LayoutIntegration::RunIteratorModernPath::isText const):
(WebCore::LayoutIntegration::RunIteratorModernPath::rect const):
(WebCore::LayoutIntegration::RunIteratorModernPath::isLineBreak const):
(WebCore::LayoutIntegration::RunIteratorModernPath::hasHyphen const):
(WebCore::LayoutIntegration::RunIteratorModernPath::text const):
(WebCore::LayoutIntegration::RunIteratorModernPath::start const):
(WebCore::LayoutIntegration::RunIteratorModernPath::end const):
(WebCore::LayoutIntegration::RunIteratorModernPath::length const):
(WebCore::LayoutIntegration::RunIteratorModernPath::offsetForPosition const):
(WebCore::LayoutIntegration::RunIteratorModernPath::positionForOffset const):
(WebCore::LayoutIntegration::RunIteratorModernPath::selectableRange const):
(WebCore::LayoutIntegration::RunIteratorModernPath::renderer const):
(WebCore::LayoutIntegration::RunIteratorModernPath::traverseNextTextRun):
(WebCore::LayoutIntegration::RunIteratorModernPath::traverseNextOnLine):
(WebCore::LayoutIntegration::RunIteratorModernPath::traversePreviousOnLine):
(WebCore::LayoutIntegration::RunIteratorModernPath::operator== const):
(WebCore::LayoutIntegration::RunIteratorModernPath::atEnd const):
(WebCore::LayoutIntegration::RunIteratorModernPath::box const):
(WebCore::LayoutIntegration::RunIteratorModernPath::traverseNextLeaf):
(WebCore::LayoutIntegration::RunIteratorModernPath::traversePreviousLeaf):
(WebCore::LayoutIntegration::RunIteratorModernPath::setAtEnd):
(WebCore::LayoutIntegration::RunIteratorModernPath::boxes const):
(WebCore::LayoutIntegration::RunIteratorModernPath::line const):
(WebCore::LayoutIntegration::RunIteratorModernPath::createTextRun const):
(WebCore::LayoutIntegration::RunIteratorModernPath::run const): Deleted.
(WebCore::LayoutIntegration::RunIteratorModernPath::runs const): Deleted.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::showInlineTreeAndRuns):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::TextBoxPainter):

  • rendering/TextBoxPainter.h:
  • rendering/TextPainter.cpp:

(WebCore::TextPainter::clearGlyphDisplayLists):

8:27 AM Changeset in webkit [282960] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[IFC][Integration] RenderDeprecatedFlexibleBox::setIsStretchingChildren is unused after r282873
https://bugs.webkit.org/show_bug.cgi?id=230627

Reviewed by Antti Koivisto.

  • rendering/RenderDeprecatedFlexibleBox.h:
7:11 AM Changeset in webkit [282959] by Antti Koivisto
  • 11 edits
    2 adds in trunk/Source/WebCore

Factor LegacyInlineFlowBox painting into a class
https://bugs.webkit.org/show_bug.cgi?id=230683

Reviewed by Alan Bujtas.

Introduce InlineBoxPainter, similar to TextBoxPainter.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/InlineBoxPainter.cpp: Added.

(WebCore::InlineBoxPainter::InlineBoxPainter):
(WebCore::InlineBoxPainter::paint):
(WebCore::clipRectForNinePieceImageStrip):
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::style const):
(WebCore::InlineBoxPainter::constrainToLineTopAndBottomIfNeeded const):
(WebCore::InlineBoxPainter::paintFillLayers):
(WebCore::InlineBoxPainter::paintFillLayer):
(WebCore::InlineBoxPainter::paintBoxShadow):

  • rendering/InlineBoxPainter.h: Added.

(WebCore::InlineBoxPainter::renderer const):
(WebCore::InlineBoxPainter::isHorizontal const):

  • rendering/LegacyInlineFlowBox.cpp:

(WebCore::LegacyInlineFlowBox::paint):
(WebCore::LegacyInlineFlowBox::paintFillLayers): Deleted.
(WebCore::LegacyInlineFlowBox::paintFillLayer): Deleted.
(WebCore::LegacyInlineFlowBox::paintBoxShadow): Deleted.
(WebCore::LegacyInlineFlowBox::constrainToLineTopAndBottomIfNeeded const): Deleted.
(WebCore::clipRectForNinePieceImageStrip): Deleted.
(WebCore::LegacyInlineFlowBox::paintBoxDecorations): Deleted.
(WebCore::LegacyInlineFlowBox::paintMask): Deleted.

  • rendering/LegacyInlineFlowBox.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::getBackgroundRoundedRect const):
(WebCore::RenderBoxModelObject::backgroundRoundedRectAdjustedForBleedAvoidance const):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderImage.h:
  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderTableCell.h:
6:08 AM Changeset in webkit [282958] by Andres Gonzalez
  • 7 edits in trunk

Remove AXDRTElementIdAttribute from the AX object platform wrapper interface.
https://bugs.webkit.org/show_bug.cgi?id=230657
<rdar://problem/83424767>

Reviewed by Chris Fleizach.

Source/WebCore:

No change in functionality.

AXDRTElementIdAttribute is a duplicate of AXDOMIdentifier, thus removing
an unnecessary attribute from the platform wrapper's
accessibilityAttributeValue method.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • accessibility/win/AccessibilityObjectWrapperWin.cpp:

(WebCore::AccessibilityObjectWrapper::accessibilityAttributeValue):

Tools:

AXDRTElementIdAttribute is a duplicate of AXDOMIdentifier, thus removing
an unnecessary attribute from the platform wrapper's
accessibilityAttributeValue method, and making the corresponding change
to the DRT and WTR accessibilityControllers.

  • DumpRenderTree/mac/AccessibilityControllerMac.mm:

(findAccessibleObjectById):

  • DumpRenderTree/win/AccessibilityControllerWin.cpp:

(findAccessibleObjectById):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:

(WTR::findAccessibleObjectById):

4:55 AM Changeset in webkit [282957] by ntim@apple.com
  • 2 edits in trunk/Source/WebCore

Use visibleToHitTesting() in RenderLayerBacking::updateAfterDescendants() instead of pointer-events check
https://bugs.webkit.org/show_bug.cgi?id=230681

Reviewed by Antti Koivisto.

The new check should account for inert as well once we implement it in RenderStyle.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateAfterDescendants):

4:54 AM Changeset in webkit [282956] by ntim@apple.com
  • 6 edits in trunk/Source/WebCore

AX: Split out isInert from isAXHidden on AccessibilityObject
https://bugs.webkit.org/show_bug.cgi?id=230680

Reviewed by Antti Koivisto.

Reasons to do this are:

  • Naming of isAXHidden is a bit of a lie
  • We don't want to inherit inert state from parent to child like we do for aria-hidden, especially

in the document is blocked by modal dialog case, where the modal should be interactable unlike its ancestors/siblings.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isAXHidden const):
(WebCore::AccessibilityObject::isInert const):
(WebCore::AccessibilityObject::defaultObjectInclusion const):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::isInert const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
4:50 AM Changeset in webkit [282955] by ntim@apple.com
  • 3 edits in trunk/Source/WebCore

Replace axObject->isAXHidden() || axObject->isDOMHidden() with axObject->isHidden()
https://bugs.webkit.org/show_bug.cgi?id=230678

Reviewed by Antti Koivisto.

No behaviour change. The definition of isHidden is:

bool isHidden() const override { return isAXHidden() || isDOMHidden(); }

  • inspector/InspectorAuditAccessibilityObject.cpp:

(WebCore::InspectorAuditAccessibilityObject::getComputedProperties):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

2:54 AM Changeset in webkit [282954] by Jean-Yves Avenard
  • 9 edits in trunk/Source

Opus and Vorbis codecs aren't available on iPad.
https://bugs.webkit.org/show_bug.cgi?id=230595
rdar://problem/83382734

Vorbis and Opus are usable on platforms other than macOS and are being checked
Source/WebCore:

at runtime.

Reviewed by Eric Carlson.

Covered by existing tests.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::vorbisDecoderEnabled):
(WebCore::PlatformMediaSessionManager::setVorbisDecoderEnabled):
(WebCore::PlatformMediaSessionManager::opusDecoderEnabled):
(WebCore::PlatformMediaSessionManager::setOpusDecoderEnabled):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:

(WebCore::registerDecoderFactory):
(WebCore::isOpusDecoderAvailable):
(WebCore::registerOpusDecoderIfNeeded):
(WebCore::isVorbisDecoderAvailable):
(WebCore::registerVorbisDecoderIfNeeded):

Source/WebKit:

at runtime.

Reviewed by Eric Carlson.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

at runtime already.
Reviewed by Eric Carlson.

  • wtf/PlatformEnableCocoa.h:
1:19 AM Changeset in webkit [282953] by svillar@igalia.com
  • 2 edits in trunk/Tools

[Flatpak] Use NUMBER_OF_PROCESSORS if already defined
https://bugs.webkit.org/show_bug.cgi?id=230638

Reviewed by Martin Robinson.

The environment variable NUMBER_OF_PROCESSORS can be defined to instruct the build system
to spawn as many concurrent build commands as specified. By default flatpak was using 3x the number
of processors in the local system. However we might prefer to provide a more convenient number
by using the environment variable. Note that this approach is better than passing -j as
--makeargs because cmake would have to be reconfigured everytime the number passed to -j changes.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox): Use NUMBER_OF_PROCESSORS if already defined. Otherwise fallback
to 3x the number of processors.

1:18 AM Changeset in webkit [282952] by Chris Lord
  • 12 edits in trunk

[GTK] Allow sending precise mouse wheel events in LayoutTests
https://bugs.webkit.org/show_bug.cgi?id=230541

Reviewed by Tim Horton.

Source/WebKit:

Add code to be able to send precise synthetic mouse-wheel events in GTK.

  • Shared/NativeWebWheelEvent.h:
  • Shared/gtk/NativeWebWheelEventGtk.cpp:

(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSynthesizeWheelEvent):
(webkitWebViewBaseSetWheelHasPreciseDeltas):

  • UIProcess/API/gtk/WebKitWebViewBaseInternal.h:

Tools:

Add API to be able to send precise mouse-wheel events in EventSender.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::setWheelHasPreciseDeltas):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:

(WTR::toWebKitGLibAPI):
(WTR::EventSenderProxy::~EventSenderProxy):
(WTR::EventSenderProxy::setWheelHasPreciseDeltas):

1:16 AM Changeset in webkit [282951] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Improve the handling of CompositeEditCommand::splitTreeToNode() return values
https://bugs.webkit.org/show_bug.cgi?id=229470

Reviewed by Darin Adler.

splitTreeToNode() might return nullptr because, among other things, it might insert/remove nodes in
the DOM tree. It's well known that by doing so we're allowing the execution of arbitrary scripts
(see didFinishInsertingNode() for example). This means that there is a possibility that the node
that it's being splitted is no longer part of the DOM tree by the time splitTreeToNode() returns.
That's why we should bail out in those cases.

  • editing/FormatBlockCommand.cpp:

(WebCore::FormatBlockCommand::formatRange):

Note: See TracTimeline for information about the timeline view.