Timeline



Apr 14, 2021:

11:23 PM Changeset in webkit [276004] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update tests expected to fail but passing.

  • platform/gtk/TestExpectations:
11:17 PM Changeset in webkit [276003] by Antti Koivisto
  • 9 edits
    2 adds in trunk/Source/WebCore

Preloaded async scripts should use the same priority as the normally loaded ones
https://bugs.webkit.org/show_bug.cgi?id=224537

Reviewed by Sam Weinig.

Use the same priority (medium instead of low) when preloading.

Factor default priorities to a separate type making it easier to keep them in sync.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/LoadableClassicScript.cpp:

(WebCore::LoadableClassicScript::load):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):

  • html/parser/HTMLResourcePreloader.cpp:

(WebCore::PreloadRequest::resourceRequest):

  • loader/DefaultResourceLoadPriority.cpp: Added.

(WebCore::DefaultResourceLoadPriority::forResourceType):

  • loader/DefaultResourceLoadPriority.h: Added.
  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preloadIfNeeded):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::setLoadPriority):
(WebCore::CachedResource::defaultPriorityForResourceType): Deleted.

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::identifierForLoadWithoutResourceLoader const):

11:15 PM Changeset in webkit [276002] by commit-queue@webkit.org
  • 10 edits in trunk

Omit default position/angle when serializing radial & conic gradients
https://bugs.webkit.org/show_bug.cgi?id=223892

Patch by Tim Nguyen <ntim@apple.com> on 2021-04-14
Reviewed by Antti Koivisto.

Test: LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub.html

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-backgrounds/parsing/background-image-computed.sub-expected.txt:

Source/WebCore:

  • css/CSSGradientValue.cpp:

(WebCore::ConicGradientAdapter::normalizeStopsAndEndpointsOutsideRange):
(WebCore::CSSLinearGradientValue::customCSSText const):
(WebCore::CSSRadialGradientValue::customCSSText const):
(WebCore::CSSConicGradientValue::customCSSText const):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::isCenterPosition const):

  • css/CSSPrimitiveValue.h:

LayoutTests:

  • fast/gradients/unprefixed-gradient-parsing-expected.txt:
  • fast/gradients/unprefixed-gradient-parsing.html:
  • http/wpt/css/css-images-4/conic-gradient-parsing.html:
10:55 PM Changeset in webkit [276001] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebCore

[Nicosia] NicosiaGCGLLayer is unneeded when ENABLE_WEBGL is OFF
https://bugs.webkit.org/show_bug.cgi?id=224557

Reviewed by Michael Catanzaro.

Add an ENABLE(WEBGL) guard around NicosiaGCGLLayer.

  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:
  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.h:
10:53 PM Changeset in webkit [276000] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Add missing exception check in operationGetPrivateNameOptimize().
https://bugs.webkit.org/show_bug.cgi?id=224592
rdar://76645873

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/suppress-TerminationException-in-operationGetPrivateNameOptimize.js: Added.

Source/JavaScriptCore:

Though the fieldNameValue.toPropertyKey() call in operationGetPrivateNameOptimize()
would not normally throw an exception, it still can throw a TerminationException
because it contains RETURN_IF_EXCEPTION checks.

  • jit/JITOperations.cpp:
10:44 PM Changeset in webkit [275999] by Diego Pino Garcia
  • 16 edits
    2 copies
    13 adds in trunk/LayoutTests

[GTK][WPE] Unreviewed test gardening. Add missing images after r275996.

  • platform/gtk/css2.1/t100801-c544-valgn-03-d-agi-expected.png:
  • platform/gtk/fast/block/margin-collapse/block-inside-inline/001-expected.png:
  • platform/gtk/fast/block/margin-collapse/block-inside-inline/005-expected.png:
  • platform/gtk/fast/css/child-style-can-override-visited-style-expected.png:
  • platform/gtk/fast/dom/HTMLProgressElement/progress-element-expected.png:
  • platform/gtk/fast/images/image-map-anchor-children-expected.png:
  • platform/gtk/fast/inline-block/003-expected.png:
  • platform/gtk/fast/inline/002-expected.png:
  • platform/gtk/fast/invalid/018-expected.png:
  • platform/gtk/fast/table/frame-and-rules-expected.png:
  • platform/gtk/fast/table/table-display-types-strict-expected.png:
  • platform/gtk/fast/text/basic/012-expected.png:
  • platform/gtk/svg/custom/invisible-text-after-scrolling-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug14323-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2267-expected.png:
  • platform/wpe/css2.1/t100801-c544-valgn-03-d-agi-expected.png: Added.
  • platform/wpe/fast/block/margin-collapse/block-inside-inline/001-expected.png: Added.
  • platform/wpe/fast/block/margin-collapse/block-inside-inline/005-expected.png: Added.
  • platform/wpe/fast/css/child-style-can-override-visited-style-expected.png: Added.
  • platform/wpe/fast/dom/HTMLProgressElement/progress-element-expected.png: Added.
  • platform/wpe/fast/images/image-map-anchor-children-expected.png: Added.
  • platform/wpe/fast/inline-block/003-expected.png: Added.
  • platform/wpe/fast/inline/002-expected.png: Added.
  • platform/wpe/fast/invalid/018-expected.png: Added.
  • platform/wpe/fast/table/frame-and-rules-expected.png: Added.
  • platform/wpe/fast/table/table-display-types-strict-expected.png: Added.
  • platform/wpe/fast/text/basic/012-expected.png: Added.
  • platform/wpe/svg/custom/invisible-text-after-scrolling-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug14323-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug2267-expected.png: Added.
8:44 PM Changeset in webkit [275998] by Diego Pino Garcia
  • 44 edits
    1 move
    34 adds in trunk/LayoutTests

[WPE] Unreviewed test gardening. Update stale baselines.

Also add missing .png images.

  • platform/gtk/fast/css/word-space-extra-expected.png: Renamed from LayoutTests/platform/glib/fast/css/word-space-extra-expected.png.
  • platform/wpe/css1/box_properties/border-expected.png: Added.
  • platform/wpe/css1/box_properties/border-expected.txt:
  • platform/wpe/css1/text_properties/text_decoration-expected.png: Added.
  • platform/wpe/css1/text_properties/text_decoration-expected.txt:
  • platform/wpe/css1/text_properties/vertical_align-expected.png: Added.
  • platform/wpe/css1/text_properties/vertical_align-expected.txt:
  • platform/wpe/css1/text_properties/word_spacing-expected.txt:
  • platform/wpe/fast/block/basic/014-expected.png: Added.
  • platform/wpe/fast/block/basic/014-expected.txt:
  • platform/wpe/fast/block/positioning/057-expected.png: Added.
  • platform/wpe/fast/block/positioning/057-expected.txt:
  • platform/wpe/fast/css-generated-content/after-duplicated-after-split-expected.png: Added.
  • platform/wpe/fast/css-generated-content/after-duplicated-after-split-expected.txt:
  • platform/wpe/fast/css/word-space-extra-expected.png:
  • platform/wpe/fast/css/word-space-extra-expected.txt:
  • platform/wpe/fast/encoding/utf-16-big-endian-expected.png: Added.
  • platform/wpe/fast/encoding/utf-16-big-endian-expected.txt:
  • platform/wpe/fast/inline/drawStyledEmptyInlines-expected.png: Added.
  • platform/wpe/fast/inline/drawStyledEmptyInlines-expected.txt:
  • platform/wpe/fast/invalid/missing-end-tag-expected.png: Added.
  • platform/wpe/fast/invalid/missing-end-tag-expected.txt:
  • platform/wpe/fast/lists/marker-before-empty-inline-expected.png: Added.
  • platform/wpe/fast/lists/marker-before-empty-inline-expected.txt:
  • platform/wpe/fast/overflow/scrollRevealButton-expected.png: Added.
  • platform/wpe/fast/overflow/scrollRevealButton-expected.txt:
  • platform/wpe/fast/parser/nofoo-tags-inside-paragraph-expected.png: Added.
  • platform/wpe/fast/parser/nofoo-tags-inside-paragraph-expected.txt:
  • platform/wpe/fast/parser/xhtml-alternate-entities-expected.png: Added.
  • platform/wpe/fast/parser/xhtml-alternate-entities-expected.txt:
  • platform/wpe/fast/selectors/visited-descendant-expected.png: Added.
  • platform/wpe/fast/selectors/visited-descendant-expected.txt:
  • platform/wpe/fast/text/basic/013-expected.png: Added.
  • platform/wpe/fast/text/basic/013-expected.txt:
  • platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt:
  • platform/wpe/fast/text/whitespace/018-expected.png: Added.
  • platform/wpe/fast/text/whitespace/018-expected.txt:
  • platform/wpe/fast/text/word-break-expected.png: Added.
  • platform/wpe/fast/text/word-break-expected.txt:
  • platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
  • platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
  • platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
  • platform/wpe/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
  • platform/wpe/svg/custom/svg-fonts-in-html-expected.png: Added.
  • platform/wpe/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/wpe/svg/custom/svg-fonts-word-spacing-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug113235-1-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug113235-1-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug113235-2-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug113235-2-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1188-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug126742-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug126742-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1318-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug16252-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug18359-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug4527-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug57300-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug57300-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug57828-2-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug57828-2-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug7342-expected.png: Added.
  • platform/wpe/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/wpe/tables/mozilla/core/bloomberg-expected.png: Added.
  • platform/wpe/tables/mozilla/core/bloomberg-expected.txt:
  • platform/wpe/tables/mozilla/other/ms-expected.png: Added.
  • platform/wpe/tables/mozilla/other/ms-expected.txt:
  • platform/wpe/tables/mozilla/other/wa_table_thtd_rowspan-expected.png: Added.
  • platform/wpe/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/wpe/tables/mozilla/other/wa_table_tr_align-expected.png: Added.
  • platform/wpe/tables/mozilla/other/wa_table_tr_align-expected.txt:
  • platform/wpe/tables/mozilla_expected_failures/bugs/bug89315-expected.png: Added.
  • platform/wpe/tables/mozilla_expected_failures/bugs/bug89315-expected.txt:
8:34 PM Changeset in webkit [275997] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Avoid indirect load in ContainerNode::hasOneChild()
https://bugs.webkit.org/show_bug.cgi?id=224589

Reviewed by Chris Dumez.

Getting nextSibling() will involve loading the first child into the register.
Avoid that and just check m_firstChild and m_lastChild instead to avoid this extra memory load.

  • dom/ContainerNode.h:

(WebCore::ContainerNode::hasOneChild const):

8:31 PM Changeset in webkit [275996] by Diego Pino Garcia
  • 1 edit
    23 copies
    13 moves
    2 adds
    4 deletes in trunk/LayoutTests

[WPE] Unreviewed test gardening. Emit specific baselines for WPE.

Several baselines that were common to GTK and WPE are no longer valid.
It's necessary to move the common baseline to GTK and emit new baselines for WPE.

  • platform/gtk/css2.1/t100801-c544-valgn-03-d-agi-expected.txt: Copied from LayoutTests/platform/glib/css2.1/t100801-c544-valgn-03-d-agi-expected.txt.
  • platform/gtk/fast/block/margin-collapse/block-inside-inline/001-expected.txt: Copied from LayoutTests/platform/glib/fast/block/margin-collapse/block-inside-inline/001-expected.txt.
  • platform/gtk/fast/block/margin-collapse/block-inside-inline/005-expected.txt: Copied from LayoutTests/platform/glib/fast/block/margin-collapse/block-inside-inline/005-expected.txt.
  • platform/gtk/fast/css/child-style-can-override-visited-style-expected.txt: Copied from LayoutTests/platform/glib/fast/css/child-style-can-override-visited-style-expected.txt.
  • platform/gtk/fast/dom/HTMLProgressElement/progress-element-expected.txt: Copied from LayoutTests/platform/glib/fast/dom/HTMLProgressElement/progress-element-expected.txt.
  • platform/gtk/fast/images/image-map-anchor-children-expected.txt: Copied from LayoutTests/platform/glib/fast/images/image-map-anchor-children-expected.txt.
  • platform/gtk/fast/inline-block/002-expected.txt: Copied from LayoutTests/platform/glib/fast/inline-block/002-expected.txt.
  • platform/gtk/fast/inline-block/003-expected.txt: Copied from LayoutTests/platform/glib/fast/inline-block/003-expected.txt.
  • platform/gtk/fast/inline/002-expected.txt: Copied from LayoutTests/platform/glib/fast/inline/002-expected.txt.
  • platform/gtk/fast/invalid/018-expected.txt: Copied from LayoutTests/platform/glib/fast/invalid/018-expected.txt.
  • platform/gtk/fast/table/frame-and-rules-expected.txt: Copied from LayoutTests/platform/glib/fast/table/frame-and-rules-expected.txt.
  • platform/gtk/fast/table/table-display-types-strict-expected.txt: Copied from LayoutTests/platform/glib/fast/table/table-display-types-strict-expected.txt.
  • platform/gtk/fast/text/basic/012-expected.txt: Copied from LayoutTests/platform/glib/fast/text/basic/012-expected.txt.
  • platform/gtk/svg/custom/invisible-text-after-scrolling-expected.txt: Copied from LayoutTests/platform/glib/svg/custom/invisible-text-after-scrolling-expected.txt.
  • platform/gtk/svg/hixie/processing-model/003-expected.txt: Copied from LayoutTests/platform/glib/svg/hixie/processing-model/003-expected.txt.
  • platform/gtk/svg/hixie/processing-model/004-expected.txt: Copied from LayoutTests/platform/glib/svg/hixie/processing-model/004-expected.txt.
  • platform/gtk/tables/mozilla/bugs/bug14323-expected.txt: Copied from LayoutTests/platform/glib/tables/mozilla/bugs/bug14323-expected.txt.
  • platform/gtk/tables/mozilla/bugs/bug2267-expected.txt: Copied from LayoutTests/platform/glib/tables/mozilla/bugs/bug2267-expected.txt.
  • platform/wpe/css2.1/t100801-c544-valgn-03-d-agi-expected.txt: Renamed from LayoutTests/platform/glib/css2.1/t100801-c544-valgn-03-d-agi-expected.txt.
  • platform/wpe/fast/block/margin-collapse/block-inside-inline/001-expected.txt: Renamed from LayoutTests/platform/glib/fast/block/margin-collapse/block-inside-inline/001-expected.txt.
  • platform/wpe/fast/block/margin-collapse/block-inside-inline/005-expected.txt: Renamed from LayoutTests/platform/glib/fast/block/margin-collapse/block-inside-inline/005-expected.txt.
  • platform/wpe/fast/css/child-style-can-override-visited-style-expected.txt: Renamed from LayoutTests/platform/glib/fast/css/child-style-can-override-visited-style-expected.txt.
  • platform/wpe/fast/dom/HTMLProgressElement/progress-element-expected.txt: Renamed from LayoutTests/platform/glib/fast/dom/HTMLProgressElement/progress-element-expected.txt.
  • platform/wpe/fast/images/image-map-anchor-children-expected.txt: Renamed from LayoutTests/platform/glib/fast/images/image-map-anchor-children-expected.txt.
  • platform/wpe/fast/inline-block/002-expected.txt: Renamed from LayoutTests/platform/glib/fast/inline-block/002-expected.txt.
  • platform/wpe/fast/inline-block/003-expected.txt: Renamed from LayoutTests/platform/glib/fast/inline-block/003-expected.txt.
  • platform/wpe/fast/inline/002-expected.txt: Renamed from LayoutTests/platform/glib/fast/inline/002-expected.txt.
  • platform/wpe/fast/invalid/018-expected.txt: Renamed from LayoutTests/platform/glib/fast/invalid/018-expected.txt.
  • platform/wpe/fast/table/frame-and-rules-expected.txt: Renamed from LayoutTests/platform/glib/fast/table/frame-and-rules-expected.txt.
  • platform/wpe/fast/table/table-display-types-strict-expected.txt: Renamed from LayoutTests/platform/glib/fast/table/table-display-types-strict-expected.txt.
  • platform/wpe/fast/text/basic/012-expected.txt: Renamed from LayoutTests/platform/glib/fast/text/basic/012-expected.txt.
  • platform/wpe/svg/custom/invisible-text-after-scrolling-expected.txt: Renamed from LayoutTests/platform/glib/svg/custom/invisible-text-after-scrolling-expected.txt.
  • platform/wpe/svg/hixie/processing-model/003-expected.txt: Renamed from LayoutTests/platform/glib/svg/hixie/processing-model/003-expected.txt.
  • platform/wpe/svg/hixie/processing-model/004-expected.txt: Renamed from LayoutTests/platform/glib/svg/hixie/processing-model/004-expected.txt.
  • platform/wpe/tables/mozilla/bugs/bug14323-expected.txt: Renamed from LayoutTests/platform/glib/tables/mozilla/bugs/bug14323-expected.txt.
  • platform/wpe/tables/mozilla/bugs/bug2267-expected.txt: Renamed from LayoutTests/platform/glib/tables/mozilla/bugs/bug2267-expected.txt.
8:29 PM Changeset in webkit [275995] by ysuzuki@apple.com
  • 30 edits in trunk/Source/JavaScriptCore

[JSC] Do not copy SimpleJumpTable
https://bugs.webkit.org/show_bug.cgi?id=224472

Reviewed by Mark Lam.

This patch avoids copying UnlinkedSimpleJumpTable to SimpleJumpTable by decoupling CTI addresses from jump offset in SimpleJumpTable.
SimpleJumpTable and UnlinkedSimpleJumpTable are almost identical. SimpleJumpTable adds JIT jump target for each branch.
We should use data from UnlinkedSimpleJumpTable and jump via SimpleJumpTable. Do not need to have copy of branches from UnlinkedSimpleJumpTable.

This way removes Vector<SimpleJumpTable> from CodeBlock::RareData. And this is moved to CodeBlock::JITData. And it only includes jump target addresses,
and branch offset information is kept in UnlinkedSimpleJumpTable side. We no longer need to carefully copy these vectors in CodeBlock including DFG / FTL ones.

In LLInt, we instead use UnlinkedSimpleJumpTable for jumping.

In Baseline, we first allocate enough FixedVector<SimpleJumpTable> and fill content via SimpleJumpTable::ensureCTITable() call when compiling corresponding
switch opcode. Finally we fill these data structures with actual code locations in JIT::link function.

In DFG, we first collect UnlinkedSimpleJumpTable without copying. This is OK since it is kept by UnlinkedCodeBlock, and UnlinkedCodeBlock is kept by baseline CodeBlocks that
are handled by this DFG compilation. We hold Vector<const UnlinkedSimpleJumpTable*> in DFG::Graph and we materialize Vector<SimpleJumpTable> in DFG::Graph.
During DFG compilation, we touch this DFG::Graph's jump tables, and JIT compiler generates code via these tables. And when linking, we move the content to CodeBlock.

In FTL, while we use UnlinkedSimpleJumpTable in FTL code generation, FTL do not use SimpleJumpTable and instead FTL uses Switch in B3.

  • bytecode/BytecodeDumper.cpp:

(JSC::CodeBlockBytecodeDumper<Block>::dumpSwitchJumpTables):

  • bytecode/BytecodeDumper.h:
  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::run):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::shrinkToFit):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::switchJumpTable):
(JSC::CodeBlock::numberOfUnlinkedSwitchJumpTables const):
(JSC::CodeBlock::unlinkedSwitchJumpTable):
(JSC::CodeBlock::numberOfSwitchJumpTables const): Deleted.
(JSC::CodeBlock::clearSwitchJumpTables): Deleted.
(JSC::CodeBlock::addSwitchJumpTableFromProfiledCodeBlock): Deleted.

  • bytecode/JumpTable.cpp:

(JSC::SimpleJumpTable::offsetForValue): Deleted.

  • bytecode/JumpTable.h:

(JSC::SimpleJumpTable::ensureCTITable):
(JSC::SimpleJumpTable::ctiForValue const):
(JSC::SimpleJumpTable::isEmpty const):
(): Deleted.
(JSC::SimpleJumpTable::cloneNonJITPart const): Deleted.
(JSC::SimpleJumpTable::ctiForValue): Deleted.
(JSC::SimpleJumpTable::clear): Deleted.

  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedSimpleJumpTable::offsetForValue const):
(JSC::UnlinkedSimpleJumpTable::add):
(JSC::UnlinkedCodeBlock::numberOfUnlinkedSwitchJumpTables const):
(JSC::UnlinkedCodeBlock::unlinkedSwitchJumpTable const):
(JSC::UnlinkedCodeBlock::unlinkedStringSwitchJumpTable const):
(JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlock::switchJumpTable): Deleted.
(JSC::UnlinkedCodeBlock::unlinkedStringSwitchJumpTable): Deleted.

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::numberOfUnlinkedSwitchJumpTables const):
(JSC::UnlinkedCodeBlockGenerator::addUnlinkedSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::unlinkedSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::numberOfSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlockGenerator::addSwitchJumpTable): Deleted.
(JSC::UnlinkedCodeBlockGenerator::switchJumpTable): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::beginSwitch):
(JSC::prepareJumpTableForSwitch):
(JSC::BytecodeGenerator::endSwitch):

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGGraph.h:
  • dfg/DFGJITCompiler.cpp:

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

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

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

(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitchChar):
(JSC::DFG::SpeculativeJIT::emitSwitchString):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):
(JSC::JIT::link):

  • jit/JIT.h:

(JSC::SwitchRecord::SwitchRecord):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

(JSC::CachedSimpleJumpTable::encode):
(JSC::CachedSimpleJumpTable::decode const):
(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):

8:27 PM Changeset in webkit [275994] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in in ReplaceSelectionCommand::mergeEndIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=222941

Unreviewed. Address Darin's post-commit comment that we don't need to explicitly call copyRef here.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::mergeEndIfNeeded):

8:06 PM Changeset in webkit [275993] by zhifei_fang@apple.com
  • 14 edits in trunk/Websites/perf.webkit.org

Support Commit revision identifier in the Chart
https://bugs.webkit.org/show_bug.cgi?id=224496

Reviewed by Dewei Zhu.

In the measurement-set, we include the commit info but not the commit revision identifier column.
Make the API return the commit revision identifier as part of the commit data.

  • browser-tests/customizable-test-group-form-tests.js: Fix flaky tests.
  • browser-tests/index.html: Add commit revision identifier info.
  • browser-tests/time-series-chart-tests.js: Fix flaky tests.
  • public/api/measurement-set.php: Make this API provide commit revision identifier info.
  • public/include/build-requests-fetcher.php: Ditto.
  • public/v3/models/commit-set.js: Make the commit model can be constructed with the API respose format.
  • server-tests/api-measurement-set-tests.js: Adding test for commit revision identifier.
  • server-tests/api-build-requests-tests.js: Ditto.
  • unit-tests/analysis-task-tests.js: Ditto.

(measurementCluster):

  • unit-tests/commit-set-tests.js: Ditto.
  • unit-tests/measurement-adaptor-tests.js: Ditto.
  • unit-tests/measurement-set-tests.js: Ditto.
7:42 PM Changeset in webkit [275992] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WebKit

Fix WK_EXPORT macro for declspec compilers
https://bugs.webkit.org/show_bug.cgi?id=224583

Reviewed by Don Olmstead.

It displays warnings when macro is not defined. Actually it is defined only when
it builds WebKit. It should be defined(BUILDING_WebKit).

  • Shared/API/c/WKDeclarationSpecifiers.h:
7:23 PM Changeset in webkit [275991] by Diego Pino Garcia
  • 2 edits
    3 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update test expectations after r275515.

Two tests are returning an image failure.

html/dom/elements/the-innertext-idl-attribute/getter.html requires a new baseline.

  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt: Added.
7:11 PM Changeset in webkit [275990] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

6 http/wpt/webauthn layout-tests are constantly timing out
https://bugs.webkit.org/show_bug.cgi?id=224531
<rdar://76432480>

Reviewed by Brent Fulgham.

Covered by existing tests.

  • UIProcess/WebAuthentication/Mock/MockLocalService.mm:

(WebKit::MockLocalService::MockLocalService):
Needs to deal with the mock testing infrastructure according to internal requirements.

7:11 PM Changeset in webkit [275989] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Skip accessibility test added in r275664.

  • platform/glib/TestExpectations:
7:04 PM Changeset in webkit [275988] by Wenson Hsieh
  • 8 edits
    2 adds in trunk

[macOS] Make image extraction interactions work for elements inside links
https://bugs.webkit.org/show_bug.cgi?id=224576
<rdar://problem/76664721>

Reviewed by Devin Rousso.

Source/WebCore:

Make a slight adjustment to EventHandler::canMouseDownStartSelect to allow selection to begin when handling a
mousedown over text inside an image overlay.

Test: fast/images/image-extraction/mac/select-image-overlay-in-link-with-mouse-drag.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::isImageOverlayText):

Add an overloaded version of this helper method that takes a pointer instead of a reference, and use it in
several places where we current check the nullity of a Node* before dereferencing it and passing it into
isImageOverlayText().

  • html/HTMLElement.h:
  • page/DragController.cpp:

(WebCore::DragController::draggableElement const):

  • page/EventHandler.cpp:

(WebCore::EventHandler::canMouseDownStartSelect):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::updateSelectionForMouseDrag):

Additionally, make it so that we only invalidate a click (i.e. prevent mouse release from dispatching a click
event) in EventHandler::updateSelectionForMouseDrag in the case where we're selecting text in an image
overlay, if the selection hasn't actually changed.

Source/WebKit:

See WebCore ChangeLog for more details.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::elementPositionInformation):

LayoutTests:

Add a layout test to exercise the change.

  • fast/images/image-extraction/mac/select-image-overlay-in-link-with-mouse-drag-expected.txt: Added.
  • fast/images/image-extraction/mac/select-image-overlay-in-link-with-mouse-drag.html: Added.
6:57 PM Changeset in webkit [275987] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ wk2 ] http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=224566

Unreviewed test gardening.

Updating expectations to two more tests I found that are flakey crashing.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
6:52 PM Changeset in webkit [275986] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[Apple Pay] add WKA hooks for ApplePayModifier
https://bugs.webkit.org/show_bug.cgi?id=224585
<rdar://problem/76669793>

Reviewed by Wenson Hsieh.

  • Modules/applepay/paymentrequest/ApplePayModifier.h:
6:27 PM Changeset in webkit [275985] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Flaky crash under AudioSummingJunction::removeOutput() on Debug bots
https://bugs.webkit.org/show_bug.cgi?id=224584

Reviewed by Eric Carlson.

Add DisableMallocRestrictionsForCurrentThreadScope to allow the heap allocation until I can investigate
if we can avoid it.

  • Modules/webaudio/AudioSummingJunction.cpp:

(WebCore::AudioSummingJunction::removeOutput):

6:26 PM Changeset in webkit [275984] by Devin Rousso
  • 7 edits in trunk

Promote -[WKWebView _themeColor] SPI to API
https://bugs.webkit.org/show_bug.cgi?id=224571
<rdar://problem/75231602>

Reviewed by Geoffrey Garen.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView themeColor]): Added.
(-[WKWebView _themeColor]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::themeColorWillChange):
(WebKit::PageClientImplCocoa::themeColorDidChange):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/HTMLMetaThemeColor.mm:

(TEST.HTMLMetaThemeColor.OnLoad):
(TEST.HTMLMetaThemeColor.MultipleTags):
(-[WKWebViewThemeColorObserver initWithWebView:]):
(TEST.HTMLMetaThemeColor.KVO):
(TEST.HTMLMetaThemeColor.ExperimentalUseThemeColorForScrollAreaBackgroundColor):

5:32 PM Changeset in webkit [275983] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Mac WK2 ] fast/mediastream/audio-track-enabled.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=221985

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:18 PM Changeset in webkit [275982] by BJ Burg
  • 10 edits in trunk/Source

Web Inspector: add setting to allow inspecting Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=224082
<rdar://75695002>

Reviewed by Devin Rousso.

Source/WebCore:

Add a property to check if inspecting inspector is allowed,
and to enable/disable upon loading the frontend or toggling the setting.

  • en.lproj/Localizable.strings:
  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::inspectInspector):
(WebCore::InspectorFrontendHost::allowsInspectingInspector):
(WebCore::InspectorFrontendHost::setAllowsInspectingInspector):

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

Source/WebInspectorUI:

Instead of telling curious users to set the WebKitDeveloperExtras default,
expose an experimental setting that does the same thing.

  • UserInterface/Base/Main.js:

(WI.loaded):

  • UserInterface/Base/Setting.js:
  • UserInterface/Views/SettingsTabContentView.js:
5:15 PM Changeset in webkit [275981] by weinig@apple.com
  • 9 edits
    1 add in trunk/Source/WebCore

Use range-for loop in target contrast selection to simplify/improve code readability
https://bugs.webkit.org/show_bug.cgi?id=224512

Reviewed by Darin Adler.

Address some additional post landing feedback from Darin.

  • Use range-for loop in target contrast selection.
  • Use double to represent luminance, lightness and contrast everywhere. This avoid unnecessary conversions to and from float.
  • Rename Color::contrastRatio(Color, Color) to just contrastRatio(Color, Color) and move it ColorLuminance.h/cpp with the other contrastRatio overloads.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add ColorLuminance.cpp

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::selectFirstColorThatMeetsOrExceedsTargetContrast):
Convert colorsToCompareAgainst to an r-value since vector is never used after
calling this.

(WebCore::CSSPropertyParserHelpers::selectFirstColorWithHighestContrast):
Convert colorsToCompareAgainst to an r-value since vector is never used after
calling this. Also, switch to a range-for loop to aid readability.

(WebCore::CSSPropertyParserHelpers::parseColorContrastFunctionParameters):
Move colorsToCompareAgainst to the select functions.

  • platform/graphics/Color.h:
  • platform/graphics/Color.cpp:

(WebCore::Color::lightness const):
(WebCore::Color::luminance const):
Use double to represent lightness and luminance.

(WebCore::Color::contrastRatio): Deleted.
Moved to ColorLuminance.h/cpp

  • platform/graphics/ColorLuminance.cpp: Added.

(WebCore::contrastRatio):

  • platform/graphics/ColorLuminance.h:

(WebCore::relativeLuminance):
(WebCore::contrastRatio):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::disabledTextColor const):

  • rendering/TextPaintStyle.cpp:

(WebCore::textColorIsLegibleAgainstBackgroundColor):
Use double to represent luminance and constrast everywhere.

5:11 PM Changeset in webkit [275980] by Wenson Hsieh
  • 7 edits
    4 adds in trunk

[iOS] Make image extraction interactions work for elements inside links
https://bugs.webkit.org/show_bug.cgi?id=224517
<rdar://problem/76616431>

Reviewed by Devin Rousso.

Source/WebKit:

See comments below for more details.

Tests: fast/images/image-extraction/click-link-with-image-overlay.html

fast/images/image-extraction/ios/select-word-in-image-overlay-inside-link.html

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

Add imageElementContext, an optional element context that exists alongside elementContext. This is necessary
in the case where the user is interacting with an image element inside a link element because we need to know
about the inner hit-tested image element for the purposes of image extraction, but the clickable element we use
for the elementContext is the link element instead.

  • Shared/ios/InteractionInformationRequest.cpp:

(WebKit::InteractionInformationRequest::isValidForRequest const):

Make a slight adjustment here - since includeImageData may require image bitmap data in cases where only the
includeSnapshot flag is set, it's incorrect to assume that setting includeSnapshot fulfills all the needs of
includeImageData.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):

Consult imageElementContext instead of elementContext.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::imagePositionInformation):

Set the position information's imageElementContext.

(WebKit::elementPositionInformation):
(WebKit::WebPage::positionInformation):

Make a couple of adjustments here: (1) avoid requesting link position information if the hit-tested node is text
inside of an image overlay. (2) If the includeImageData request flag is set and the hit-tested node is an
image element but isImage is not set, then additionally supply the image data using the
imagePositionInformation helper function. This ensures that in the case where we're requesting image data and
the user is interacting with an image element inside a link, we'll send decoded image data back to the UI
process.

LayoutTests:

  • fast/images/image-extraction/click-link-with-image-overlay-expected.txt: Added.
  • fast/images/image-extraction/click-link-with-image-overlay.html: Added.

Add a test that verifies that activating different parts of an image in a link fires click events.

  • fast/images/image-extraction/ios/select-word-in-image-overlay-inside-link-expected.txt: Added.
  • fast/images/image-extraction/ios/select-word-in-image-overlay-inside-link.html: Added.

Add a test that selects image overlay text for an image element inside a link.

4:55 PM Changeset in webkit [275979] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Keep UniqueRef<MathICGenerationState> instead of MathICGenerationState in HashTables
https://bugs.webkit.org/show_bug.cgi?id=224569

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-14
Reviewed by Geoffrey Garen.

sizeof(KeyValuePair<const Instruction*, MathICGenerationState>) is 136 on some platforms.
That's on the big side for sparse HashTable entries. I think using UniqueRef will help performance.

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

(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):

  • jit/JITMathIC.h:
3:54 PM Changeset in webkit [275978] by Antti Koivisto
  • 3 edits
    2 adds in trunk

RunIterator::traverseNext/PreviousOnLineIgnoringLineBreak should skip over WBRs
https://bugs.webkit.org/show_bug.cgi?id=224545
rdar://76101143

Reviewed by Zalan Bujtas.
Source/WebCore:

Test: fast/editing/wbr-iterator-crash.html

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::traverseNextOnLineIgnoringLineBreak):
(WebCore::LayoutIntegration::RunIterator::traversePreviousOnLineIgnoringLineBreak):

Skip over (instead of bailing) runs with isLineBreak() set. It is true for <WBR> so there can be multiple on a line.

LayoutTests:

  • fast/editing/wbr-iterator-crash-expected.txt: Added.
  • fast/editing/wbr-iterator-crash.html: Added.
3:39 PM Changeset in webkit [275977] by Russell Epstein
  • 1 copy in tags/Safari-611.2.3

Tag Safari-611.2.3.

3:18 PM Changeset in webkit [275976] by Lauro Moura
  • 4 edits in trunk/Source/WebCore

REGRESSION(r275948) Wrap sh::ShaderVariable into UniqueRef to fit in HashMap
https://bugs.webkit.org/show_bug.cgi?id=224567

Unreviewed build fix.

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::getTranslatedShaderSourceANGLE):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::precisionsMatch const):
(WebCore::GraphicsContextGLOpenGL::mappedSymbolInShaderSourceMap):
(WebCore::GraphicsContextGLOpenGL::originalSymbolInShaderSourceMap):
(WebCore::GraphicsContextGLOpenGL::mappedSymbolName):
(WebCore::GraphicsContextGLOpenGL::shaderSource):

3:15 PM Changeset in webkit [275975] by youenn@apple.com
  • 4 edits in trunk

Update WKPageSet implementation according new MediaProducer::MutedState values
https://bugs.webkit.org/show_bug.cgi?id=224548

Reviewed by Eric Carlson.

Source/WebKit:

Covered by API test.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetMuted):
Translate WKMediaMutedState to WebCore::MediaProducer::MutedStateFlags properly.

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::doCaptureMuteTest):
(TestWebKitAPI::TEST):

3:11 PM Changeset in webkit [275974] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ wk2 ] http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=224566

Uneviewed test gardneing.

  • platform/mac-wk2/TestExpectations: Adding mac wk2 to Pass Crash expectations.
3:11 PM Changeset in webkit [275973] by achristensen@apple.com
  • 4 edits in trunk

Don't block proxy authentication challenges
https://bugs.webkit.org/show_bug.cgi?id=224564
Source/WebKit:

<rdar://76542907>

Reviewed by Brady Eidson.

You have to use SPI to get WebKit to tell CFNetwork to not handle proxy authentication by default,
but if you do it only works for first-party requests. Our challenge blocking to prevent cross-site fetches from
asking for basic auth credentials should not block challenges for proxy authentication. The radar has an application
that wants to handle them.

Covered by an API test.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveChallenge):

Tools:

Reviewed by Brady Eidson.

  • TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:

(TestWebKitAPI::proxyAuthenticationServer):
(TestWebKitAPI::webViewAndDelegate):
(TestWebKitAPI::TEST):

3:11 PM Changeset in webkit [275972] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in ReplaceSelectionCommand::removeUnrenderedTextNodesAtEnds()
https://bugs.webkit.org/show_bug.cgi?id=224520

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-04-14
Reviewed by Ryosuke Niwa.

Adopt RefPtr<Node> instead of using plain Node* here to avoid a crash.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::removeUnrenderedTextNodesAtEnds):

2:57 PM Changeset in webkit [275971] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Apply DeferTermination in some utility functions in the jsc shell.
https://bugs.webkit.org/show_bug.cgi?id=224572
rdar://76646089

Reviewed by Yusuke Suzuki.

This is to make sure that these functions don't get in the way of testing with
the watchdog. Since these are only test utility functions, just doing the simple
thing of using a DeferTermination scope is the right thing to do here.

  • jsc.cpp:
2:52 PM Changeset in webkit [275970] by Jonathan Bedard
  • 1 edit
    1 add in trunk/Tools

[GitHub] Add script to verify integrity of the mirror
https://bugs.webkit.org/show_bug.cgi?id=224514
<rdar://problem/76613576>

Reviewed by Aakash Jain.

  • Scripts/check-github-mirror-integrity: Added.
2:50 PM Changeset in webkit [275969] by mark.lam@apple.com
  • 7 edits
    1 add in trunk

Defer TerminationExceptions when evaluating ASSERT in HashMapIml::addNormalized().
https://bugs.webkit.org/show_bug.cgi?id=224565
rdar://76645980

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/suppress-TerrminationException-in-ASSERT-in-HashMapImpl-addNormalized.js: Added.

Source/JavaScriptCore:

HashMapImpl::addNormalized() has an ASSERT that calls jsMapHash(), which can
potentially throw exceptions. As a result, it has a RETURN_IF_EXCEPTION which
provides an opportunity to handle traps and throw a TerminationException. This
in turn causes the ASSERT to fail.

To fix this, we do:

  1. Introduce VMTraps::DeferAction, which gives us DeferForAWhile and DeferUntilEndOfScope.
  1. Templatize the DeferTermination RAII object on VMTraps::DeferAction. Introduce DeferTerrminationForAWhile, which is DeferTermination<VMTraps::DeferAction::DeferForAWhile>. DeferForAWhile means that the deferScope will not throw the TerminationException on exit. Instead, it will re-set the NeedTermination bit in the traps, and let the next trap check handle it.
  1. Introduce DEFER_TERMINATION_AND_ASSERT_WITH_MESSAGE (and friends) which creates a DeferTerrminationForAWhile scope before doing an ASSERT_WITH_MESSAGE.
  1. Use DEFER_TERMINATION_AND_ASSERT_WITH_MESSAGE instead in HashMapImpl::addNormalized().
  • runtime/DeferTermination.h:

(JSC::DeferTermination::DeferTermination):
(JSC::DeferTermination::~DeferTermination):

  • runtime/ExceptionHelpers.h:
  • runtime/HashMapImpl.h:

(JSC::HashMapImpl::addNormalized):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::deferTermination):
(JSC::VMTraps::undoDeferTermination):

  • runtime/VMTraps.h:
2:49 PM Changeset in webkit [275968] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebKit

[GPUP] RemoteGraphicsContextsGL shouldn't be referenced when ENABLE_WEBGL is off
https://bugs.webkit.org/show_bug.cgi?id=224560

Reviewed by Alex Christensen.

Add an ENABLE(WEBGL) guard.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::didClose):

2:37 PM Changeset in webkit [275967] by don.olmstead@sony.com
  • 2 edits in trunk

[PlayStation] Disable WebGL
https://bugs.webkit.org/show_bug.cgi?id=224562

Reviewed by Alex Christensen.

WebGL support on PlayStation platforms is deprecated.

  • Source/cmake/OptionsPlayStation.cmake:
2:35 PM Changeset in webkit [275966] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, a comment fix after r275847

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::verifyUser):
Explains why instead of what.

1:32 PM Changeset in webkit [275965] by guijemont@igalia.com
  • 2 edits in trunk/JSTests

[JSC] Unskip stress/intl-segmenter.js
https://bugs.webkit.org/show_bug.cgi?id=224553

Unreviewed test gardening.

It shouldn't fail any more on our bots now that our handling of libicu
is more robust.

  • stress/intl-segmenter.js:
1:00 PM Changeset in webkit [275964] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Temporarily fix more terminate_with_reason-related crashes
https://bugs.webkit.org/show_bug.cgi?id=224559
<rdar://76639741>

Reviewed by Geoff Garen.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::terminateWithReason):

12:58 PM Changeset in webkit [275963] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Revert "Cherry-pick r274877. rdar://problem/76373841"

This reverts commit r275741.

12:58 PM Changeset in webkit [275962] by Russell Epstein
  • 5 edits in branches/safari-611-branch

Revert "Cherry-pick r274199. rdar://problem/76416079"

This reverts commit r275744.

12:58 PM Changeset in webkit [275961] by Russell Epstein
  • 4 edits in branches/safari-611-branch/Source/WebCore

Revert "Cherry-pick r274357. rdar://problem/76374004"

This reverts commit r275745.

12:58 PM Changeset in webkit [275960] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Revert "Cherry-pick r274403. rdar://problem/76374004"

This reverts commit r274403.

12:58 PM Changeset in webkit [275959] by Russell Epstein
  • 3 edits in branches/safari-611-branch/Source/WebKit

Revert "Cherry-pick r274377. rdar://problem/76412582"

This reverts commit r275766.

12:58 PM Changeset in webkit [275958] by Russell Epstein
  • 5 edits in branches/safari-611-branch/Source/WebCore

Revert "Cherry-pick r274819. rdar://problem/76373741"

This reverts commit r275767.

12:58 PM Changeset in webkit [275957] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Revert "Unreviewed build fix for rdar://76617366."

This reverts commit r275919.

12:42 PM Changeset in webkit [275956] by Devin Rousso
  • 12 edits in trunk/Source

[iOS] limit how often WebAVPlayerController notifies the PlaybackSessionModel about changes to playback speed
https://bugs.webkit.org/show_bug.cgi?id=224515
<rdar://problem/75901463>

Reviewed by Eric Carlson.

This change will cause HTMLMediaElement::setPlaybackRate to not send IPC back and forth
between the WebProcess and UIProcess, as a modification to the WebAVPlayerController in
the UIProcess would notify its PlaybackSessionModel "delegate", which would in turn make
it's way back to the related HTMLMediaElement::setPlaybackRate in the WebProcess.

Source/WebCore:

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController init]):
(-[WebAVPlayerController dealloc]):
(-[WebAVPlayerController defaultPlaybackRate]): Added.
(-[WebAVPlayerController setDefaultPlaybackRate:]): Added.
(-[WebAVPlayerController rate]): Added.
(-[WebAVPlayerController setRate:]): Added.
(-[WebAVPlayerController observeValueForKeyPath:ofObject:change:context:]):
Instead of relying on ObjC KVO on self to handle changes to defaultPlaybackRate (and
rate), create an actual setDefaultPlaybackRate: so that we can handle cases where the
value is the same. Limit when we notify the PlaybackSessionModel to only when it has a
different value.

  • platform/cocoa/PlaybackSessionModel.h:
  • platform/cocoa/PlaybackSessionModelMediaElement.h:
  • platform/cocoa/PlaybackSessionModelMediaElement.mm:

(WebCore::PlaybackSessionModelMediaElement::setPlaybackRate): Added.

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::setPlaybackRate): Added.
Add support for handling when the rate of the AVPlayerController changes too.

Source/WebKit:

  • UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:

(WebKit::PlaybackSessionModelContext::setPlaybackRate): Added.
(WebKit::PlaybackSessionManagerProxy::setPlaybackRate): Added.

  • WebProcess/cocoa/PlaybackSessionManager.messages.in:
  • WebProcess/cocoa/PlaybackSessionManager.h:
  • WebProcess/cocoa/PlaybackSessionManager.mm:

(WebKit::PlaybackSessionManager::setPlaybackRate): Added.
Add support for handling when the rate of the AVPlayerController changes too.

11:47 AM Changeset in webkit [275955] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ wk2 ] http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=224566

Unrviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations: Updating test expectations to Pass Crash, while test is reviewed.
11:42 AM Changeset in webkit [275954] by achristensen@apple.com
  • 2 edits in trunk/Source/WTF

Revert important part of r275948
https://bugs.webkit.org/show_bug.cgi?id=224381

It caused an internal build failure.

  • wtf/HashTable.h:

(WTF::KeyTraits>::inlineLookup):

11:25 AM Changeset in webkit [275953] by Jonathan Bedard
  • 4 edits in trunk/Tools

[results.webkit.org] Document ref API argument
https://bugs.webkit.org/show_bug.cgi?id=224435
<rdar://problem/76599481>

Reviewed by Aakash Jain.

  • Scripts/libraries/resultsdbpy/resultsdbpy/init.py: Bump version.
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html:
  • Scripts/libraries/resultsdbpy/setup.py: Bump version.
10:54 AM Changeset in webkit [275952] by Kate Cheney
  • 17 edits in trunk

Service worker soft-update loads not being marked app-bound
https://bugs.webkit.org/show_bug.cgi?id=223200
<rdar://problem/75438555>

Reviewed by Youenn Fablet.

Source/WebCore:

We need to mark requests initiated by service worker soft updates as
app-bound based on the last navigation. We should get this value from the
NetworkResourceLoader and store it in SWServerRegistration so we can
use it to build a new request.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startScriptFetch):

  • workers/service/server/SWServer.h:

Pass the entire SWServerRegistration to SWServer::startScriptFetch
now that we need more than one value from it. Move shouldRefreshCache
logic here instead of SWServerJobQueue::runUpdateJob.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runUpdateJob):

  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::scheduleSoftUpdate):

  • workers/service/server/SWServerRegistration.h:

(WebCore::SWServerRegistration::isAppBound):

Source/WebKit:

We should pass the app-bound request value when doing a soft update.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::isAppBound):

  • NetworkProcess/NetworkResourceLoader.h:

Make a helper function to get the request's app-bound value.

  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::softUpdateIfNeeded):

  • NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:

(WebKit::ServiceWorkerSoftUpdateLoader::loadFromNetwork):

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::createFetchTask):

  • Shared/NavigatingToAppBoundDomain.h:

(WebKit::AppBoundNavigationTestingData::setDidPerformSoftUpdate):
(WebKit::AppBoundNavigationTestingData::clearAppBoundNavigationDataTesting):
(WebKit::AppBoundNavigationTestingData::encode const):
(WebKit::AppBoundNavigationTestingData::decode):

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _appBoundNavigationData:]):
Update testing struct to make sure a soft-update occurred before
checking app-bound data. This accounts for the delay between the
page load and the soft update.

Tools:

API test coverage. Refactor to avoid code duplication in other tests.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

A soft update might be delayed after the synthetic response comes
back. We should wait until we receive the test data indicating that
a soft update has occurred before checking the app-bound values.

10:39 AM Changeset in webkit [275951] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ wk2 ] 2 page-cache layout-tests are flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=224558

Unreviewed test gardening.

Updated expectations to Pass Crash for the following two tests for causing issues with EWS and Commit-Queue.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
9:55 AM Changeset in webkit [275950] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add support for using local-worker for build.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=224551

Reviewed by Carlos Alberto Lopez Perez.

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

(loadBuilderConfig): Added local-worker support.

  • CISupport/ews-build/loadConfig.py:

(loadBuilderConfig): Removed use_localhost_worker variable.

9:53 AM Changeset in webkit [275949] by eric.carlson@apple.com
  • 7 edits in trunk/Source/WebCore

Allow text tracks to purge cues outside of the buffered range
https://bugs.webkit.org/show_bug.cgi?id=224489

Reviewed by Jer Noble.

TextTrackCues associated in-band tracks live "forever" - until the video element
is deleted or reloaded. This is fine for relatively short files, but not so good
for long lived files (eg. a very long live stream), or for timed metadata where
the "cue" size can be much larger than a text sample.

Allow text tracks to opt in to purging cues who's time range does not intersect
with the buffered range, where audio and video data is also not available. Only
AVFoundation backed in-band tracks opt in at this time, because AVFoundation will
redeliver cues if a time range is played again.

Tested manually as the only way to test this currently would be with an HLS stream
that would have to play too long for a layout test, or with an MSE text track but
we won't support text tracks in MSE yet.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerBufferedTimeRangesChanged): Allow tracks
that support purging cues to do so.

  • html/HTMLMediaElement.h:
  • html/track/InbandDataTextTrack.h: Return true for shouldPurgeCuesFromUnbufferedRanges();
  • html/track/InbandGenericTextTrack.h: Ditto.
  • html/track/TextTrack.cpp:

(WebCore::TextTrack::removeCuesNotInTimeRanges): Remove all cues who's time range
does not intersect with the buffered range.

  • html/track/TextTrack.h:

(WebCore::TextTrack::shouldPurgeCuesFromUnbufferedRanges const):

9:19 AM Changeset in webkit [275948] by achristensen@apple.com
  • 5 edits in trunk/Source

Reduce maximum HashTable entry size to 128 bytes
https://bugs.webkit.org/show_bug.cgi?id=224381

Reviewed by Yusuke Suzuki.

Source/WebKit:

  • WebProcess/WebPage/ViewUpdateDispatcher.cpp:

(WebKit::ViewUpdateDispatcher::visibleContentRectUpdate):
(WebKit::ViewUpdateDispatcher::dispatchVisibleContentRectUpdate):

  • WebProcess/WebPage/ViewUpdateDispatcher.h:

(WebKit::ViewUpdateDispatcher::UpdateData::UpdateData):

Source/WTF:

It turns out that HashMaps use HashTable::Value as KeyValuePair, so sizeof(Key) + sizeof(Value) was double counting the key size.
This caused FontCascadeCache to be a false positive. It has a key size of a little over 100 bytes. Only counting it once reflects what is intended.
Also, the USE(ANGLE) exception was convenient for a downstream branch, but isn't needed. Next time they rebase they will use UniqueRef.

  • wtf/HashTable.h:

(WTF::KeyTraits>::inlineLookup):

9:07 AM Changeset in webkit [275947] by Ruben Turcios
  • 2 edits in branches/safari-612.1.11-branch/Source/WebKit

Cherry-pick r275918. rdar://problem/76648077

Unreviewed build fix after r275898; remove unnecessary files from the project.

  • WebKit.xcodeproj/project.pbxproj:

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

9:07 AM Changeset in webkit [275946] by Ruben Turcios
  • 20 edits in branches/safari-612.1.11-branch

Cherry-pick r275855. rdar://problem/76627715

Unreviewed, reverting r275793.
https://bugs.webkit.org/show_bug.cgi?id=224466

Caused crashes on <http://facebook.com|facebook.com>

Reverted changeset:

"calc() simplification for a multiplication should apply the
multiplication to each value of an addition"
https://bugs.webkit.org/show_bug.cgi?id=224376
https://trac.webkit.org/changeset/275793

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

8:42 AM Changeset in webkit [275945] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Remove unused InlineBox::next/previousLeafOnLineIgnoringLineBreak()
https://bugs.webkit.org/show_bug.cgi?id=224542

Reviewed by Zalan Bujtas.

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::nextLeafOnLineIgnoringLineBreak const): Deleted.
(WebCore::InlineBox::previousLeafOnLineIgnoringLineBreak const): Deleted.

  • rendering/InlineBox.h:
8:13 AM Changeset in webkit [275944] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Crash in RenderBlock::addOverflowFromChildren
https://bugs.webkit.org/show_bug.cgi?id=223539

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-14
Reviewed by Ryosuke Niwa.

Source/WebCore:

For an <svg> element that is a direct child of a <foreignObject>, a RenderSVGRoot is
generally created. However, a RenderSVGViewportContainer is currently created instead if
the element is inside a shadow tree. This is leading to bad state during the layout of
the foreign object, causing a debug assertion and a nullptr crash. This patch fixes this
issue by always treating direct <svg> child of <foreignObject> as an outermost SVG element.

Tests: svg/foreignObject/svg-child-of-foreign-object-in-shadow-tree-crash.html

svg/outermost-svg-root.html

  • svg/SVGElement.cpp:

(WebCore::SVGElement::isOutermostSVGSVGElement const): Lower down the priority of the rule
"is in shadow tree".

LayoutTests:

Add regressions tests for the crash and for isOutermostSVGSVGElement().

  • svg/foreignObject/svg-child-of-foreign-object-in-shadow-tree-crash-expected.txt: Added.
  • svg/foreignObject/svg-child-of-foreign-object-in-shadow-tree-crash.html: Added.
  • svg/outermost-svg-root-expected.txt: Added.
  • svg/outermost-svg-root.html: Added.
6:57 AM Changeset in webkit [275943] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

InlineBox should not hold a reference to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=224506

Reviewed by Antti Koivisto.

The InlineBox/RenderObject relationship is somewhat error-prone (see RenderBox::setInlineBoxWrapper vs. InlineElementBox::extractLine) and it's rather easy to delete one without letting the other know.

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::showNodeTreeForThis const):
(WebCore::InlineBox::showLineTreeForThis const):
(WebCore::InlineBox::caretMinOffset const):
(WebCore::InlineBox::caretMaxOffset const):
(WebCore::InlineBox::adjustPosition):
(WebCore::InlineBox::selectionState):
(WebCore::InlineBox::canAccommodateEllipsis const):
(WebCore::InlineBox::locationIncludingFlipping const):
(WebCore::InlineBox::flipForWritingMode const):

  • rendering/InlineBox.h:

(WebCore::InlineBox::renderer const):
(WebCore::InlineBox::boxModelObject const):
(WebCore::InlineBox::InlineBox):

6:30 AM Changeset in webkit [275942] by Aditya Keerthi
  • 3 edits in trunk/Source/WebCore

[iOS][FCR] Indeterminate progress bars should update at 60fps
https://bugs.webkit.org/show_bug.cgi?id=224372
<rdar://problem/76416848>

Reviewed by Wenson Hsieh.

  • rendering/RenderProgress.cpp:

(WebCore::RenderProgress::animationTimerFired):

Added a FIXME to state that progress bar animation should be performed
as part of the rendering update lifecycle. Progress bars have always
maintained their own timers for animation, however, the update interval
may not always match the display's refresh rate.

  • rendering/RenderThemeIOS.mm:

Ensure a smoother animation by increasing the frame rate to 60fps.

3:18 AM Changeset in webkit [275941] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Commit queue isn't skipping builds and test on revert patches
https://bugs.webkit.org/show_bug.cgi?id=224477

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(BugzillaMixin): Changed preamble to lower-case to match with new logic.

  • CISupport/ews-build/steps_unittest.py: Added unit-tests.
3:03 AM Changeset in webkit [275940] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK4] Use a while loop in PlatformWebView::dismissAllPopupMenus()
https://bugs.webkit.org/show_bug.cgi?id=224534

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-14
Reviewed by Philippe Normand.

The child might be destroyed during the loop iteration. Using a while loop we ensure we get the next sibling
before the current child is destroyed.

  • WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:

(WTR::PlatformWebView::dismissAllPopupMenus):

2:45 AM Changeset in webkit [275939] by Angelos Oikonomopoulos
  • 2 edits in trunk/JSTests

[JSC] Unskip typedarray-functions-with-neutered.js on MIPS
https://bugs.webkit.org/show_bug.cgi?id=224428

Unreviewed test gardening.

This appears to no longer fail.

  • stress/typedarray-functions-with-neutered.js:
2:42 AM Changeset in webkit [275938] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Do not reset computed style for element children with display contents style
https://bugs.webkit.org/show_bug.cgi?id=223794

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-14
Reviewed by Antti Koivisto.

We were checking hasDisplayContents() was false before calling resetComputedStyle() on the parent, but we don't
check it when iterating the children.

  • dom/Element.cpp:

(WebCore::Element::resetComputedStyle):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveComposedTree):

1:20 AM Changeset in webkit [275937] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[iOS] WKMouseDeviceObserver is calling WebProcessProxy::send() on a non-main thread
https://bugs.webkit.org/show_bug.cgi?id=224529
<rdar://76598710>

Reviewed by Tim Horton.

Make sure WKMouseDeviceObserver calls WebProcessProxy::notifyHasMouseDeviceChanged() on the main thread
since:

  1. It iterates over WebProcessProxy::allProcesses() which is only safe on the main thread
  2. It calls WebProcessProxy::send() wich is only safe on the main thread
  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/WKMouseDeviceObserver.mm:

(-[WKMouseDeviceObserver mousePointerDevicesDidChange:]):
(-[WKMouseDeviceObserver _setHasMouseDeviceForTesting:]):

  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::notifyHasMouseDeviceChanged):

12:44 AM Changeset in webkit [275936] by magomez@igalia.com
  • 10 edits in trunk

[GTK][WPE] Add a property to the WebKitWebView indicating whether the web process is responsive
https://bugs.webkit.org/show_bug.cgi?id=224359

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Add a property to WebKitWebView indicating whether the web processes used are responsive.

  • UIProcess/API/glib/WebKitNavigationClient.cpp:
  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):
(webkitWebViewGetProperty):
(webkit_web_view_class_init):
(webkitWebViewSetIsWebProcessResponsive):
(webkit_web_view_get_is_web_process_responsive):

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Added unit test for web process responsiveness API.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewIsWebProcessResponsive):
(beforeAll):

Apr 13, 2021:

11:59 PM Changeset in webkit [275935] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Make SVGElement::getBoundingBox retrieve bbox from RenderObject
https://bugs.webkit.org/show_bug.cgi?id=224482

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-13
Reviewed by Zalan Bujtas.

Make SVGElement::getBoundingBox retrieve bbox from RenderObject.
Also make it const and return an Optional.

  • dom/Element.cpp:

(WebCore::Element::boundsInRootViewSpace):
(WebCore::Element::absoluteEventBounds):
(WebCore::Element::boundingAbsoluteRectWithoutLayout):

  • page/ResizeObservation.cpp:

(WebCore::ResizeObservation::computeObservedSize const):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::getBoundingBox const):
(WebCore::SVGElement::getBoundingBox): Deleted.

  • svg/SVGElement.h:
11:24 PM Changeset in webkit [275934] by jer.noble@apple.com
  • 4 edits
    2 adds in trunk

[GPUP] MediaSource.addSourceBuffer() will throw if given the same parameter as a previous call to HTMLMediaElement.canPlayType()
https://bugs.webkit.org/show_bug.cgi?id=224273
<rdar://74805071>

Reviewed by Eric Carlson.

Source/WebKit:

Test: media/media-source/media-source-addsourcebuffer-after-canplaytype.html

RemoteMediaPlayerMIMETypeCache will receive requests to verify whether it can handle a MIME/codec combination,
as well as whether this indicates a MediaStream, MSE source, or neither. If a cache for the MSE back-end receives
a query for a MIME type, but the query parameters indicate this is not a MSE source, it will say no and cache the
response. However the cache is keyed solely on the MIME/codec, so when a subsequent call to create a SourceBuffer
hits the cache entry, it thinks it will be unable to handle the MIME and rejects.

Make the mime-type cache triple keyed: use both the raw ContentType (MIME & codecs) as well as the flags stating
whether the source is a MediaStream, MSE, or neither.

  • WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp:

(WebKit::RemoteMediaPlayerMIMETypeCache::supportsTypeAndCodecs):

  • WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.h:

LayoutTests:

  • media/media-source/media-source-addsourcebuffer-after-canplaytype-expected.txt: Added.
  • media/media-source/media-source-addsourcebuffer-after-canplaytype.html: Added.
11:12 PM Changeset in webkit [275933] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

AudioSourceProviderAVFObjC should lock all multithreaded objects
https://bugs.webkit.org/show_bug.cgi?id=224230

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-13
Reviewed by Eric Carlson.

Lock following objects with TapStorage::lock:

AudioSourceProviderAVFObjC::m_tapStorage
AudioSourceProviderAVFObjC::m_avPlayerItem

Do not clear the tapStorage nor the _this pointer from
the audio thread. This is a race that cannot be overcome
since the main thread needs to access the m_tapStorage pointer to
lock the m_tapStorage pointer for modification.

Initialize m_tap in more robust way, in case initialization fails.

Do not leave stale m_tapStorage present when destroying the mixer.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::~AudioSourceProviderAVFObjC):
(WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::initCallback):
(WebCore::AudioSourceProviderAVFObjC::finalizeCallback):

10:36 PM Changeset in webkit [275932] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Skip sframe tests added in r275656 and r275874.

Currently SFrames are not supported in GTK and WPE ports.

  • platform/glib/TestExpectations:
10:34 PM Changeset in webkit [275931] by Fujii Hironori
  • 3 edits
    2 adds in trunk

Table caption jumps to the bottom of the table after simplified table relayout
https://bugs.webkit.org/show_bug.cgi?id=187903
<rdar://problem/42506245>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/table/caption-simplified-layout.html

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::simplifiedNormalFlowLayout):
Do not call layoutCaptions().

LayoutTests:

  • fast/table/caption-simplified-layout-expected.html: Added.
  • fast/table/caption-simplified-layout.html: Added.
10:24 PM Changeset in webkit [275930] by Diego Pino Garcia
  • 3 edits
    4 adds in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update baselines after r275515.

r275515 updated several general baselines that resulted into test
failures for GTK. Emit new baselines for GTK. Other pre-existing GTK
baselines just required an update.

  • platform/glib/tables/mozilla/bugs/bug113424-expected.txt:
  • platform/gtk/fast/css/empty-inline-003-quirksmode-expected.txt: Added.
  • platform/gtk/fast/lists/marker-before-empty-inline-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-flexbox/orthogonal-flex-item-crash-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/innerText/getter-expected.txt: Added.
9:16 PM Changeset in webkit [275929] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Implement PlatformXRSystem::xrCoordinator() for USE(APPLE_INTERNAL_SDK)
https://bugs.webkit.org/show_bug.cgi?id=224510

Patch by Ada Chan <ada.chan@apple.com> on 2021-04-13
Reviewed by Dean Jackson.

Source/WebKit:

  • UIProcess/Cocoa/PlatformXRSystem.mm:

Source/WTF:

Update ENABLE_WEBXR flag

  • wtf/PlatformEnableCocoa.h:
8:47 PM Changeset in webkit [275928] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed fix after r275921 to address crashes on the iOS bots.

The crash would occur when the WebPage constructor would end up calling WebProcess::ensureGPUProcessConnection().
Since we're in the middle of constructing the page, the pageID has been added to m_pageMap but not the page yet.
ensureGPUProcessConnection() was iterating over m_pageMap and expecting pages in the map to be non-null.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::createWebPage):
(WebKit::WebProcess::ensureGPUProcessConnection):

8:43 PM Changeset in webkit [275927] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Several 'editing/selections' tests are flaky after r275810.

  • platform/gtk/TestExpectations:
8:26 PM Changeset in webkit [275926] by mmaxfield@apple.com
  • 2 edits in trunk/LayoutTests

[Mac] imported/w3c/web-platform-tests/css/css-fonts/font-feature-settings-tibetan.html is passing
<rdar://problem/66399069>

Unreviewed.

  • platform/mac/TestExpectations:
7:57 PM Changeset in webkit [275925] by mmaxfield@apple.com
  • 10 edits
    2 adds in trunk

[GPU Process] Simplify DisplayList::Iterator part 4: Move DisplayList::Iterator to its own .h/.cpp files
https://bugs.webkit.org/show_bug.cgi?id=224146

Reviewed by Wenson Hsieh.

Source/WebCore:

This doesn't actually change any lines of code; it just moves code into different files.
This patch isn't strictly necessary, but I think it helps, because the iterator contains
a non-trivial amount of logic.

No new tests because there is no behavior change.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::begin const):
(WebCore::DisplayList::DisplayList::end const):
(WebCore::DisplayList::DisplayList::iterator::atEnd const): Deleted.
(WebCore::DisplayList::DisplayList::iterator::updateCurrentDrawingItemExtent): Deleted.
(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem): Deleted.
(WebCore::DisplayList::DisplayList::iterator::advance): Deleted.
(WebCore::DisplayList::DisplayList::iterator::clearCurrentItem): Deleted.
(WebCore::DisplayList::DisplayList::iterator::moveToEnd): Deleted.
(WebCore::DisplayList::DisplayList::iterator::moveCursorToStartOfCurrentBuffer): Deleted.

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::iterator::iterator): Deleted.
(WebCore::DisplayList::DisplayList::iterator::~iterator): Deleted.
(WebCore::DisplayList::DisplayList::iterator::operator==): Deleted.
(WebCore::DisplayList::DisplayList::iterator::operator!=): Deleted.
(WebCore::DisplayList::DisplayList::iterator::operator++): Deleted.
(WebCore::DisplayList::DisplayList::iterator::operator* const): Deleted.
(WebCore::DisplayList::DisplayList::iterator::itemBuffer const): Deleted.
(WebCore::DisplayList::DisplayList::begin const): Deleted.
(WebCore::DisplayList::DisplayList::end const): Deleted.

  • platform/graphics/displaylists/DisplayListIterator.cpp: Added.

(WebCore::DisplayList::DisplayList::Iterator::atEnd const):
(WebCore::DisplayList::DisplayList::Iterator::updateCurrentDrawingItemExtent):
(WebCore::DisplayList::DisplayList::Iterator::updateCurrentItem):
(WebCore::DisplayList::DisplayList::Iterator::advance):
(WebCore::DisplayList::DisplayList::Iterator::clearCurrentItem):
(WebCore::DisplayList::DisplayList::Iterator::moveToEnd):
(WebCore::DisplayList::DisplayList::Iterator::moveCursorToStartOfCurrentBuffer):

  • platform/graphics/displaylists/DisplayListIterator.h: Added.

(WebCore::DisplayList::DisplayList::Iterator::Iterator):
(WebCore::DisplayList::DisplayList::Iterator::~Iterator):
(WebCore::DisplayList::DisplayList::Iterator::operator==):
(WebCore::DisplayList::DisplayList::Iterator::operator!=):
(WebCore::DisplayList::DisplayList::Iterator::operator++):
(WebCore::DisplayList::DisplayList::Iterator::operator* const):
(WebCore::DisplayList::DisplayList::Iterator::itemBuffer const):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:
7:19 PM Changeset in webkit [275924] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

The watchdog should not fire when it's not active.
https://bugs.webkit.org/show_bug.cgi?id=224494
rdar://76581259

Reviewed by Saam Barati and Yusuke Suzuki.

The watchdog is only active when we have entered the VM. If we haven't entered
the VM, we postpone starting the watchdog. For example, see Watchdog::enteredVM()
and Watchdog::exitedVM().

The underlying timer may still fire the NeedWatchdogCheck event after
Watchdog::stopTimer() is called. So, we need to just ignore the event if the
watchdog isn't active.

  • runtime/VMTraps.cpp:

(JSC::VMTraps::handleTraps):

  • runtime/Watchdog.h:

(JSC::Watchdog::isActive const):

6:48 PM Changeset in webkit [275923] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.2.3

6:00 PM Changeset in webkit [275922] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

RemoteRenderingBackendProxy should only relaunch the GPUProcess if it actually needs it
https://bugs.webkit.org/show_bug.cgi?id=224516

Reviewed by Geoff Garen.

Previously, RemoteRenderingBackendProxy would launch the GPUProcess as soon as it was
constructed. This went against the goals of r275887 to delay the GPUProcess launch
until it is actually needed. Also, in case a a GPUProcess crash/termination,
RemoteRenderingBackendProxy would relaunch the GPUProcess right away, even if it
did not need it (No live ImageBuffers). This patch addresses both issues.

This patch is a pre-requirement for terminating the GPUProcess on memory pressure when
it is not used by any tabs.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::~RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::ensureGPUProcessConnection):
(WebKit::RemoteRenderingBackendProxy::gpuProcessConnectionDidClose):
(WebKit::RemoteRenderingBackendProxy::messageSenderConnection const):
(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
5:37 PM Changeset in webkit [275921] by Chris Dumez
  • 13 edits in trunk/Source/WebKit

Stop requiring a RemoteRenderingBackend for visibility propagation views
https://bugs.webkit.org/show_bug.cgi?id=224513

Reviewed by Geoff Garen.

Stop requiring a RemoteRenderingBackend for visibility propagation views. This is
inconvenient because doing media playback in the GPUProcess does not require a
RemoteRenderingBackend. This was also making things difficult to exit the
GPUProcess on memory pressure when unused.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createVisibilityPropagationContextForPage):
(WebKit::GPUConnectionToWebProcess::destroyVisibilityPropagationContextForPage):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackendCreationParameters.h:

(WebKit::RemoteRenderingBackendCreationParameters::encode const):
(WebKit::RemoteRenderingBackendCreationParameters::decode):

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::createVisibilityPropagationContextForPage):
(WebKit::GPUProcessConnection::destroyVisibilityPropagationContextForPage):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):
(WebKit::WebPage::gpuProcessConnectionDidBecomeAvailable):
(WebKit::WebPage::~WebPage):
(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureGPUProcessConnection):

5:24 PM Changeset in webkit [275920] by Ross Kirsling
  • 6 edits
    1 copy in trunk/Source/JavaScriptCore

Move cloneUBreakIterator declaration to IntlWorkaround.h
https://bugs.webkit.org/show_bug.cgi?id=224511

Reviewed by Yusuke Suzuki.

Follow up to r275856. There's ultimately no reason IntlWorkaround.cpp needs to be headerless;
this was tied to some confusion about how to successfully include ubrk.h in two different ways.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/IntlSegmenter.cpp:
  • runtime/IntlSegmenter.h:
  • runtime/IntlSegments.cpp:
  • runtime/IntlWorkaround.cpp:
  • runtime/IntlWorkaround.h: Added.
5:04 PM Changeset in webkit [275919] by Ryan Haddad
  • 2 edits in branches/safari-611-branch/Source/WebCore

Unreviewed build fix for rdar://76617366.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFullscreenQuirk const):
(WebCore::Quirks::requiresUserGestureToLoadInPictureInPicture const):

4:56 PM Changeset in webkit [275918] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r275898; remove unnecessary files from the project.

  • WebKit.xcodeproj/project.pbxproj:
4:22 PM Changeset in webkit [275917] by Chris Gambrell
  • 179 edits
    5 moves
    19 adds
    18 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/security convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222668
<rdar://problem/74993152>

Reviewed by Jonathan Bedard.

  • TestExpectations:
  • http/tests/blink/sendbeacon/connect-src-beacon-allowed.html:
  • http/tests/cache/resources/iframe304.py:
  • http/tests/contentextensions/block-cookies-in-csp-report.py:
  • http/tests/css/resources/webfont-request.py:

(get_request_count): Deleted.
(set_request_count): Deleted.

  • http/tests/local/script-crossorigin-loads-file-scheme.html:
  • http/tests/media/resources/serve_video.py: Added.

(answering):

  • http/tests/resources/portabilityLayer.py:

(get_cookies): Add trailing newline.
(get_request): PHP equivalent of $_REQUEST which is used by numerous scripts.
(get_count): Added trailing newline.
(get_state): Added trailing newline.
(set_state): Changed open file's name to prevent confusion with parameter.
(step_state): Added trailing newline.

  • http/tests/security/401-logout/401-logout-expected.txt:
  • http/tests/security/401-logout/401-logout.php: Removed.
  • http/tests/security/401-logout/401-logout.py: Added.
  • http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html:
  • http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html:
  • http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored.html:
  • 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-cross-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html:
  • 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/frame-ancestors/report-frame-ancestors-same-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive.py:
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.php: Removed.
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.py: Added.
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports.py:
  • 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-policy.py:
  • 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-enforced-policy-and-blocked-by-report-policy2.py:
  • 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-policy.py:
  • 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-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • 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-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • 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-policy.py:
  • 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/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-css-report-only.py:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-allowed.html:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked.html:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report.py:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report.html:
  • http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-and-enforce.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri.py:
  • 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-cross-origin-no-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.py: Added.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect.html:
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.py: Added.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header.py:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.py:
  • http/tests/security/contentSecurityPolicy/report-only.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled.py:
  • 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-same-origin-with-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https.html:
  • 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-child-frame.html:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-in-meta-tag-ignored.html:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative.py:
  • http/tests/security/contentSecurityPolicy/report-uri.py:
  • http/tests/security/contentSecurityPolicy/resources/echo-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/echo-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.js:

(window.onload):

  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.py:
  • http/tests/security/contentSecurityPolicy/resources/image-document-default-src-none-iframe.py:
  • http/tests/security/contentSecurityPolicy/resources/redir.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report-file-path.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report_file_path.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save_report.py: Added.

(not_being_called):
(save_report):

  • http/tests/security/contentSecurityPolicy/resources/worker.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/worker.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/xhr-redirect-not-allowed.py:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report.py:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-allowed.html:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-eval-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-function-function-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-importscripts-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-multiple-csp-headers.html:
  • http/tests/security/contentSecurityPolicy/worker-script-src.html:
  • http/tests/security/contentSecurityPolicy/worker-set-timeout-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-without-own-csp.html:
  • http/tests/security/contentSecurityPolicy/xmlhttprequest-protected-resource-does-not-crash.html:
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.php: Removed.
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.py: Added.
  • http/tests/security/cookies/cookies-wrong-domain-rejected.py:
  • http/tests/security/cookies/resources/first-party-cookie-allow.xsl:
  • http/tests/security/cookies/resources/set-a-cookie.php: Removed.
  • http/tests/security/cookies/resources/set-a-cookie.py: Added.
  • http/tests/security/cookies/resources/third-party-cookie-blocking.xsl:
  • http/tests/security/cookies/third-party-cookie-blocking-main-frame.html:
  • http/tests/security/cookies/third-party-cookie-blocking-user-action.html:
  • http/tests/security/cookies/third-party-cookie-blocking.html:
  • http/tests/security/credentials-from-different-domains.html:
  • http/tests/security/credentials-iframes-allowCrossOriginSubresourcesToAskForCredentials-expected.txt:
  • http/tests/security/credentials-iframes-expected.txt:
  • http/tests/security/import-module-crossorigin-loads.html:
  • http/tests/security/import-script-crossorigin-loads-omit.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:
  • http/tests/security/module-crossorigin-error-event-information-expected.txt:
  • http/tests/security/module-crossorigin-error-event-information.html:
  • http/tests/security/module-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/module-crossorigin-loads-omit.html:
  • http/tests/security/module-crossorigin-onerror-information-expected.txt:
  • http/tests/security/module-crossorigin-onerror-information.html:
  • http/tests/security/private-browsing-http-auth-expected.txt:
  • http/tests/security/private-browsing-http-auth.html:
  • http/tests/security/referrer-policy-header-expected.txt:
  • http/tests/security/referrer-policy-header.html:
  • http/tests/security/resources/basic-auth.php: Removed.
  • http/tests/security/resources/basic-auth.py: Added.
  • http/tests/security/resources/cors-basic-auth.php: Removed.
  • http/tests/security/resources/cors-basic-auth.py: Added.
  • http/tests/security/resources/cors-script.php: Removed.
  • http/tests/security/resources/cors-script.py: Added.
  • http/tests/security/resources/credentials-from-different-domains-continued-1.html:
  • http/tests/security/resources/credentials-from-different-domains-continued-2.html:
  • http/tests/security/resources/credentials-iframes-different-domain.html:
  • http/tests/security/resources/credentials-iframes-same-domain.html:
  • http/tests/security/resources/credentials-main-resource.py:
  • http/tests/security/resources/import-module-crossorigin-loads-src.js:
  • http/tests/security/resources/reference-movie-cross-origin-allow.php: Removed.
  • http/tests/security/resources/reference-movie-cross-origin-allow.py: Added.
  • http/tests/security/resources/serve-referrer-policy-and-test.php: Removed.
  • http/tests/security/resources/serve-referrer-policy-and-test.py: Added.
  • http/tests/security/resources/video-cross-origin-allow-credentials.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow-credentials.py: Added.
  • http/tests/security/resources/video-cross-origin-allow.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow.py: Added.
  • http/tests/security/script-crossorigin-error-event-information-expected.txt:
  • http/tests/security/script-crossorigin-error-event-information.html:
  • http/tests/security/script-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/script-crossorigin-loads-correctly.html:
  • http/tests/security/script-crossorigin-onerror-information-expected.txt:
  • http/tests/security/script-crossorigin-onerror-information.html:
  • http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html:
  • http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html:
  • http/tests/security/sync-xhr-partition.html:
  • http/tests/security/video-cross-origin-caching.html:
  • http/tests/security/video-cross-origin-readback.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:
  • http/tests/security/xssAuditor/resources/echo-intertag.pl:
  • http/tests/security/xssAuditor/resources/tag-with-pause.py:
  • http/tests/ssl/curl/certificate-and-authentication.html:
  • http/tests/xmlhttprequest/resources/noContentLength.cgi:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/win/TestExpectations:
  • platform/win/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/wk2/TestExpectations:
  • platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
3:48 PM Changeset in webkit [275916] by commit-queue@webkit.org
  • 9 edits in trunk/Source

WebProcessPool should store Vector<Ref<WebProcessProxy>> instead of Vector<RefPtr>
https://bugs.webkit.org/show_bug.cgi?id=224412

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Chris Dumez.

Source/WebKit:

No change in behavior, except I also changed a raw pointer to a WeakPtr, so we should be a little safer.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::remoteWebInspectorEnabledCallback):
(WebKit::WebProcessPool::registerNotificationObservers):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::cacheMediaMIMETypes):

  • UIProcess/VisitedLinkStore.cpp:

(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::sendStoreHandleToProcess):
(WebKit::VisitedLinkStore::didUpdateSharedStringHashes):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::gpuProcessCrashed):
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::enableProcessTermination):
(WebKit::WebProcessPool::shouldTerminate):
(WebKit::WebProcessPool::processDidFinishLaunching):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::terminateAllWebContentProcesses):
(WebKit::webProcessProxyFromConnection):

  • UIProcess/WebProcessPool.h:

(WebKit::WebProcessPool::sendToAllProcesses):
(WebKit::WebProcessPool::sendToAllProcessesForSession):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

Source/WTF:

  • wtf/Ref.h:

(WTF::operator==):
(WTF::operator!=):

3:42 PM Changeset in webkit [275915] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

REGRESSION(r275262) [WebDriver] Make automation JS code aware of injected script headers
https://bugs.webkit.org/show_bug.cgi?id=224422

Reviewed by BJ Burg.

r275262 introduced "# sourceURL..." prefixes to injected scripts and
this broke Automation JS evaluation, as the code evaluated is wrapped
with "(async " + CODE + ")". This results in "Unexpected keyword 'function'.
Expected ')' to end a compound expression." errors.

Covered by existing tests.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(let.AutomationSessionProxy.prototype._execute): Move initial lines
with leading comments before the async expression.

2:54 PM Changeset in webkit [275914] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[iOS][FCR] Color picker sheet should use default height
https://bugs.webkit.org/show_bug.cgi?id=224371
<rdar://problem/76416775>

Reviewed by Wenson Hsieh.

System color pickers have a default height that is between a half-sheet
and a full sheet. WebKit should match the default so that users do not
need to swipe up and down to access all of the controls in the color
picker.

  • UIProcess/ios/forms/WKFormColorControl.mm:

(-[WKColorPicker configurePresentation]):

Always use UIModalPresentationPopover when presenting the
UIColorPickerViewController. In compact environments, this style
behaves the same as UIModalPresentationFormSheet, and the presented
height of the color picker matches the system default.

This method of presentation matches the logic in UIColorWell.

2:44 PM Changeset in webkit [275913] by Wenson Hsieh
  • 7 edits
    2 adds in trunk/Source/WebKit

[macOS] Refactor logic for presenting the shared QLPreviewPanel when revealing an image
https://bugs.webkit.org/show_bug.cgi?id=224445
<rdar://problem/76552762>

Reviewed by Andy Estes and Devin Rousso.

QLPreviewPanel.h states that QLPreviewPanel's state should never be modified by something that is not
currently controlling it (where "control" is determined through the QLPreviewPanelController category
methods declared in the same header file). Currently, WebKit code for revealing an image using the shared
QuickLook panel does not respect this requirement, and instead attempts to set the dataSource and delegate
properties of QLPreviewPanel out of band.

While this is not an issue if nothing in the responder chain accepts preview panel control (i.e. implements the
method -acceptsPreviewPanelControl: and returns YES), it leads to compatibility issues in apps like Mail
that override these methods and replace the dataSource and delegate properties on QLPreviewPanel. The end
result is that WebPageProxy ends up in an unexpected state where WKImageExtractionPreviewController has been
created, but will never be destroyed (until the web view itself is destroyed) because we're no longer the
delegate for the shared QLPreviewPanel, and therefore won't receive the teardown message when the preview
window is dismissed.

To address this, we refactor this logic so that WKWebView (or WKView, if applicable) is capable of accepting
preview panel control. See below for more details.

  • SourcesCocoa.txt:
  • UIProcess/API/mac/WKView.mm:

(-[WKView acceptsPreviewPanelControl:]):
(-[WKView beginPreviewPanelControl:]):
(-[WKView endPreviewPanelControl:]):

Implement QLPreviewPanelController hooks on WKView, and plumb directly into WebViewImpl.

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView acceptsPreviewPanelControl:]):
(-[WKWebView beginPreviewPanelControl:]):
(-[WKWebView endPreviewPanelControl:]):

Implement QLPreviewPanelController hooks on WKWebView, and plumb directly into WebViewImpl.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::acceptsPreviewPanelControl):

Only accept control of the preview panel if we have an active image extraction preview controller.

(WebKit::WebViewImpl::beginPreviewPanelControl):
(WebKit::WebViewImpl::endPreviewPanelControl):

When beginning to take control (and relinquishing control) of the preview panel, respectively set and unset the
dataSource and delegate properties to the active image extraction preview controller.

  • UIProcess/mac/WKImageExtractionPreviewController.h: Added.
  • UIProcess/mac/WKImageExtractionPreviewController.mm: Added.

(-[WKImageExtractionPreviewItem initWithURL:title:]):
(-[WKImageExtractionPreviewItem dealloc]):
(-[WKImageExtractionPreviewItem previewItemURL]):
(-[WKImageExtractionPreviewItem previewItemTitle]):
(-[WKImageExtractionPreviewController initWithPage:url:title:]):
(-[WKImageExtractionPreviewController numberOfPreviewItemsInPreviewPanel:]):
(-[WKImageExtractionPreviewController previewPanel:previewItemAtIndex:]):

Partially upstream _WKImageExtractionPreviewController to OpenSource, as WKImageExtractionPreviewController
(the underscore is unnecessary because this object is not SPI- or API-exposed). Additionally, move it out into
its own header and source, so that it can be imported elsewhere.

  • WebKit.xcodeproj/project.pbxproj:
2:20 PM Changeset in webkit [275912] by commit-queue@webkit.org
  • 6 edits in trunk

Remove support for NPAPI plugins in WebView
https://bugs.webkit.org/show_bug.cgi?id=224449

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Chris Dumez.

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(-[WebPreferences setPlugInsEnabled:]):

Source/WTF:

  • Scripts/Preferences/WebPreferences.yaml:

Tools:

Keep them on in tests until we remove the code.

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):

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

Disable YouTube Flash and QuickTime plug in replacements on iOS
https://bugs.webkit.org/show_bug.cgi?id=224453

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Chris Dumez.

  • page/Settings.yaml:
2:18 PM Changeset in webkit [275910] by commit-queue@webkit.org
  • 5 edits in trunk

Remove support for NPAPI plugins in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=224451

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Chris Dumez.

Source/WebKit:

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences encodeWithCoder:]):
(-[WKPreferences initWithCoder:]):
(-[WKPreferences plugInsEnabled]):
(-[WKPreferences setPlugInsEnabled:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/Copying.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[PlugInDelegate _webView:unavailablePlugInButtonClickedWithReason:plugInInfo:]): Deleted.

1:55 PM Changeset in webkit [275909] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Make MemoryPressureHandler::isUnderMemoryPressure() return true for 2 seconds after a simulated warning
https://bugs.webkit.org/show_bug.cgi?id=224505

Reviewed by Darin Adler.

Make MemoryPressureHandler::isUnderMemoryPressure() return true for 2 seconds after a simulated warning,
to make our simulated warning more realistic.

  • wtf/cocoa/MemoryPressureHandlerCocoa.mm:

(WTF::MemoryPressureHandler::install):

1:52 PM Changeset in webkit [275908] by commit-queue@webkit.org
  • 7 edits in trunk

[css-grid] Incorrect track sizing when using relative sized items in 'auto' column tracks
https://bugs.webkit.org/show_bug.cgi?id=191627

Patch by Ziran Sun <Ziran Sun> on 2021-04-13
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001-expected.txt:

Source/WebCore:

This is a reland of r274596. The original patch was reverted because Google logo is not visible
on google.com.

Containing block for a grid item is the grid area it's located in. During the GridTrackSizingAlgorithm,
we determine that this item has a relative size (percent in this case) and that the grid area is still
indefinite. Hence, we set nullopt for the grid area width and mark the item for layout. During the item's
layout, we call this RenderBox::containingBlockLogicalWidthForContent to determine the available height.
However, this method checks the containing block's width if the overridingContentLogicalWidth is nullopt,
which is incorrect for grid items. We should never use the grid container for resolving grid item's size.

This change is to return 0_lu for grid item when overridingContainingBlockContentLogicalWidth() returns
nullopt rather than use containing block's width. It also comments that there might be an issue with
RenderBox::containingBlockLogicalHeightForContent for grid item. It should return whatever value we get from
overridingContainingBlockContentLogicalHeight(), including WTF::nullopt.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::containingBlockLogicalWidthForContent const):
(WebCore::RenderBox::containingBlockLogicalHeightForContent const):

LayoutTests:

  • TestExpectations:
  • platform/ios-simulator-wk2/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001-expected.txt:
1:38 PM Changeset in webkit [275907] by Devin Rousso
  • 5 edits
    2 copies
    1 add in trunk/Source/WebCore

[WebIDL] includes for Conditional dictionary members should also be guarded
https://bugs.webkit.org/show_bug.cgi?id=224501
<rdar://problem/76598492>

Reviewed by Tim Horton.

WebKitAdditions sometimes needs to conditionally include IDL files and in those cases the
generated JS*.h might not get created even though the wrapped C++ type does exist. In
these cases, we should also guard the #include JS*.h (in addition to the already guarded
usage of the wrapped C++ type in convertDictionary).

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDictionaryImplementationContent):

  • bindings/scripts/test/TestDictionary.idl: Added.
  • bindings/scripts/test/JS/JSTestDictionary.h: Added.
  • bindings/scripts/test/JS/JSTestDictionary.cpp: Added.
  • bindings/scripts/test/TestDictionaryWithOnlyConditionalMembers.idl:
  • bindings/scripts/test/JS/JSTestDictionaryWithOnlyConditionalMembers.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
1:37 PM Changeset in webkit [275906] by Kate Cheney
  • 2 edits in trunk/LayoutTests

http/.../contentSecurityPolicy/report-document-uri-after-blocked-redirect.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=224498
<rdar://problem/76602331>

The error reported by the xhr may not always happen before the
document URI is reported. We should only end the test if both
the error and URI have been reported.

Reviewed by Jonathan Bedard.

  • http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect.html:
1:19 PM Changeset in webkit [275905] by Said Abou-Hallawa
  • 20 edits in trunk/Source

[GPU Process] Make ImageBuffer calculate its memoryCost() from its size
https://bugs.webkit.org/show_bug.cgi?id=224306

Reviewed by Simon Fraser.

Source/WebCore:

Instead of round-trip processes to get the backend memoryCost(), we can
calculate it from the size and the bytes alignment of each row in the
backend. These are static values so in the case of RemoteImageBufferProxy,
there is no need to ensure the backend is created in GPUP and it is mapped
in the Web Process.

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::calculateBackendSize):
(WebCore::ImageBufferBackend::calculateMemoryCost):
(WebCore::ImageBufferBackend::ImageBufferBackend):

  • platform/graphics/ImageBufferBackend.h:

(WebCore::ImageBufferBackend::calculateExternalMemoryCost):
(WebCore::ImageBufferBackend::memoryCost const): Deleted.
(WebCore::ImageBufferBackend::externalMemoryCost const): Deleted.
(WebCore::ImageBufferBackend::bytesPerRow const): Deleted.

  • This is the general case of the backend which is 4-bytes aligned rows.
  • calculateSafeBackendSize() returns the size whose bytesPerRow does not

overflow unsigned and whose memoryCost does not not overflow size_t.

  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.cpp:

(WebCore::ImageBufferCairoImageSurfaceBackend::calculateSafeBackendSize):
(WebCore::ImageBufferCairoImageSurfaceBackend::calculateBytesPerRow):
(WebCore::ImageBufferCairoImageSurfaceBackend::calculateMemoryCost):
(WebCore::ImageBufferCairoImageSurfaceBackend::create):
(WebCore::ImageBufferCairoImageSurfaceBackend::bytesPerRow const):

  • platform/graphics/cairo/ImageBufferCairoImageSurfaceBackend.h:

cairo_format_stride_for_width() is used to calculate the bytesPerRow()
for Cairo port.

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::calculateBytesPerRow):

  • platform/graphics/cg/ImageBufferCGBackend.h:

This is the CG case when the backend is 4-bytes aligned rows.

  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::calculateSafeBackendSize):
(WebCore::ImageBufferCGBitmapBackend::calculateMemoryCost):
(WebCore::ImageBufferCGBitmapBackend::create):
(WebCore::ImageBufferCGBitmapBackend::bytesPerRow const):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h:

This is the CG bitmap case where the backend is 4-bytes aligned rows.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::calculateSafeBackendSize):
(WebCore::ImageBufferIOSurfaceBackend::calculateBytesPerRow):
(WebCore::ImageBufferIOSurfaceBackend::calculateMemoryCost):
(WebCore::ImageBufferIOSurfaceBackend::calculateExternalMemoryCost):
(WebCore::ImageBufferIOSurfaceBackend::create):
(WebCore::ImageBufferIOSurfaceBackend::context const):
(WebCore::ImageBufferIOSurfaceBackend::calculateBackendSize): Deleted.
(WebCore::ImageBufferIOSurfaceBackend::memoryCost const): Deleted.
(WebCore::ImageBufferIOSurfaceBackend::externalMemoryCost const): Deleted.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:

IOSurfaceAlignProperty() is used to align the CG bytesPerRow to the proper
IOSurface alignment.

Source/WebKit:

  • Shared/ShareableBitmap.h:

Make ShareableBitmap::calculateBytesPerRow() public.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::configuration):
(WebKit::ImageBufferShareableBitmapBackend::calculateSafeBackendSize):
(WebKit::ImageBufferShareableBitmapBackend::calculateBytesPerRow):
(WebKit::ImageBufferShareableBitmapBackend::calculateMemoryCost):
(WebKit::ImageBufferShareableBitmapBackend::create):

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:

ShareableBitmap::calculateBytesPerRow() is used to get the bytesPerRow()
by giving it the scaled backend size.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::create):
Use the new name of the function calculateSafeBackendSize().

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableIOSurfaceBackend::calculateSafeBackendSize):
(WebKit::ImageBufferShareableIOSurfaceBackend::calculateMemoryCost):
(WebKit::ImageBufferShareableIOSurfaceBackend::calculateExternalMemoryCost):
(WebKit::ImageBufferShareableIOSurfaceBackend::bytesPerRow const):

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:

Implement these static functions and make them call the corresponding
functions from ImageBufferIOSurfaceBackend because this class is derived
from ImageBufferBackend.

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableMappedIOSurfaceBackend::create):
Use the new name of the function calculateSafeBackendSize().

1:09 PM Changeset in webkit [275904] by Razvan Caliman
  • 2 edits in trunk/Source/WebCore

Web Inspector: Forced color scheme should reset on page refresh
https://bugs.webkit.org/show_bug.cgi?id=224485
<rdar://76227216>

Reviewed by BJ Burg.

Reset the forced color scheme on page reload to keep in sync with Web Inspector
behavior for other forced states, like pseudo-classes.

  • page/Page.cpp:

(WebCore::Page::didCommitLoad):

1:06 PM Changeset in webkit [275903] by Ruben Turcios
  • 3 edits in branches/safari-612.1.11-branch/Source/WebKit

Cherry-pick r275898. rdar://problem/76520529

[Cocoa] remove link-time dependency on WebKitSwift
https://bugs.webkit.org/show_bug.cgi?id=224493

Reviewed by Eric Carlson.

  • Configurations/WebKit.xcconfig:
  • WebKit.xcodeproj/project.pbxproj:

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

12:56 PM Changeset in webkit [275902] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Use a JSString for the TerminationException value instead of a Symbol.
https://bugs.webkit.org/show_bug.cgi?id=224490

Reviewed by Yusuke Suzuki.

This makes it convertible to a String for clients that wish to report the exception.
Clients, in this case, does not apply to JS code, only C++ code that catches the
exception at the outermost point to handle the termination. The TerminationException
value is not visible to JS code because the TerminationException cannot be caught.
So, this change is transparent to JS code.

  • runtime/VM.cpp:

(JSC::VM::ensureTerminationException):

12:54 PM Changeset in webkit [275901] by ysuzuki@apple.com
  • 5 edits in trunk

[WTF] Add Vector&& move constructor / assignment to FixedVector and RefCountedArray
https://bugs.webkit.org/show_bug.cgi?id=224475

Reviewed by Ryosuke Niwa.

Source/WTF:

This patch adds move constructor and move-assignment taking Vector to FixedVector / RefCountedArray.
This allows transferring MoveOnly things from Vector to FixedVector.

  • wtf/FixedVector.h:

(WTF::FixedVector::FixedVector):
(WTF::FixedVector::operator=):

  • wtf/RefCountedArray.h:

(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::operator=):
(WTF::RefCountedArray::~RefCountedArray):
(WTF::RefCountedArray::allocateUninitializedData):
(WTF::RefCountedArray::assign):

Tools:

  • TestWebKitAPI/Tests/WTF/FixedVector.cpp:

(TestWebKitAPI::TEST):

12:51 PM Changeset in webkit [275900] by commit-queue@webkit.org
  • 5 edits in trunk

Remove SharedBuffer's equality operators with Ref<SharedBuffer>
https://bugs.webkit.org/show_bug.cgi?id=224464

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Chris Dumez.

Source/WebCore:

No change in behavior.

I'm doing this to make a Ref comparator for all Refs to remove another reason we use RefPtr instead of Ref, even when they're all non-null.
See bug 224412

  • platform/SharedBuffer.h:

(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.

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

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionForKeyIDs const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):

Tools:

  • TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):

12:46 PM Changeset in webkit [275899] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Revert r275172
https://bugs.webkit.org/show_bug.cgi?id=224499
<rdar://76396241>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-13
Reviewed by Tim Horton.

Source/WebKit:

It turns out that terminate_with_reason uses a different syscall than xpc_connection_kill in its implementation,
and the former is not allowed by Messages's sandbox yet. Revert for Messages until they add it.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
(IPC::Connection::kill):

  • Platform/spi/Cocoa/ReasonSPI.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::platformInvalidate):
(WebKit::terminateWithReason):

Source/WTF:

  • wtf/spi/darwin/XPCSPI.h:
12:10 PM Changeset in webkit [275898] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit

[Cocoa] remove link-time dependency on WebKitSwift
https://bugs.webkit.org/show_bug.cgi?id=224493

Reviewed by Eric Carlson.

  • Configurations/WebKit.xcconfig:
  • WebKit.xcodeproj/project.pbxproj:
11:35 AM Changeset in webkit [275897] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

AudioSourceProviderAVFObjC should check for m_client when dispatching setFormat
https://bugs.webkit.org/show_bug.cgi?id=224479

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-13
Reviewed by Eric Carlson.

Use a weak pointer to schedule the setFormat client callback.
If client is unset before any callback is run, cancel the
pending callbacks.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::prepare):

11:31 AM Changeset in webkit [275896] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

AudioSourceProviderAVFObjC::setClient should check for m_avAssetTrack
https://bugs.webkit.org/show_bug.cgi?id=224478

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-13
Reviewed by Eric Carlson.

Check for m_avAssetTrack when setting the client.
This is done for consistency, it is unclear if this affects
real world content.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::setClient):
(WebCore::AudioSourceProviderAVFObjC::setPlayerItem):
(WebCore::AudioSourceProviderAVFObjC::setAudioTrack):
(WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):

11:29 AM Changeset in webkit [275895] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r275867.
https://bugs.webkit.org/show_bug.cgi?id=224495

Need alternate fix.

Reverted changeset:

"Reduce functionWithHellaArguments3()'s number of arguments
from 5000 to 500."
https://bugs.webkit.org/show_bug.cgi?id=224474
https://trac.webkit.org/changeset/275867

10:52 AM Changeset in webkit [275894] by Devin Rousso
  • 4 edits in trunk

[iOS] Only use the theme color if it's valid when UseThemeColorForScrollAreaBackgroundColor is enabled
https://bugs.webkit.org/show_bug.cgi?id=224455

Reviewed by Wenson Hsieh.

Source/WebKit:

Without a check for isValid(), the m_themeColor would always be used, even if not set.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::scrollAreaBackgroundColor const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/HTMLMetaThemeColor.mm:

(createWebView): Added.
(TEST.HTMLMetaThemeColor.ExperimentalUseThemeColorForScrollAreaBackgroundColor): Added.

10:42 AM Changeset in webkit [275893] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Fix typo in GPUProcessConnection::enableVP9Decoders()
https://bugs.webkit.org/show_bug.cgi?id=224491

Reviewed by Darin Adler.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::enableVP9Decoders):

9:55 AM Changeset in webkit [275892] by commit-queue@webkit.org
  • 8 edits in trunk/Source

Unreviewed, reverting r275889.
https://bugs.webkit.org/show_bug.cgi?id=224488

Unintentional commit

Reverted changeset:

https://trac.webkit.org/changeset/275889

9:53 AM Changeset in webkit [275891] by sihui_liu@apple.com
  • 10 edits in trunk/Source

Make WebIDBServer not block main thread during initialization
https://bugs.webkit.org/show_bug.cgi?id=224299

Reviewed by Geoffrey Garen.

Source/WebCore:

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::IDBServer):

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::lock): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions):

Source/WebKit:

Move Lock from WebCore::IDBServer to WebIDBServer so we can block background thread in suspend() when m_server
is uninitialized.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::m_closeCallback):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::suspend):
(WebKit::WebIDBServer::resume):
(WebKit::WebIDBServer::openDatabase):
(WebKit::WebIDBServer::deleteDatabase):
(WebKit::WebIDBServer::abortTransaction):
(WebKit::WebIDBServer::commitTransaction):
(WebKit::WebIDBServer::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBServer::createObjectStore):
(WebKit::WebIDBServer::deleteObjectStore):
(WebKit::WebIDBServer::renameObjectStore):
(WebKit::WebIDBServer::clearObjectStore):
(WebKit::WebIDBServer::createIndex):
(WebKit::WebIDBServer::deleteIndex):
(WebKit::WebIDBServer::renameIndex):
(WebKit::WebIDBServer::putOrAdd):
(WebKit::WebIDBServer::getRecord):
(WebKit::WebIDBServer::getAllRecords):
(WebKit::WebIDBServer::getCount):
(WebKit::WebIDBServer::deleteRecord):
(WebKit::WebIDBServer::openCursor):
(WebKit::WebIDBServer::iterateCursor):
(WebKit::WebIDBServer::establishTransaction):
(WebKit::WebIDBServer::databaseConnectionPendingClose):
(WebKit::WebIDBServer::databaseConnectionClosed):
(WebKit::WebIDBServer::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBServer::didFireVersionChangeEvent):
(WebKit::WebIDBServer::openDBRequestCancelled):
(WebKit::WebIDBServer::getAllDatabaseNamesAndVersions):
(WebKit::WebIDBServer::addConnection):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::close):

  • NetworkProcess/IndexedDB/WebIDBServer.h:

Source/WebKitLegacy:

  • Storage/InProcessIDBServer.cpp:

(InProcessIDBServer::InProcessIDBServer):
(InProcessIDBServer::deleteDatabase):
(InProcessIDBServer::openDatabase):
(InProcessIDBServer::abortTransaction):
(InProcessIDBServer::commitTransaction):
(InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
(InProcessIDBServer::createObjectStore):
(InProcessIDBServer::deleteObjectStore):
(InProcessIDBServer::renameObjectStore):
(InProcessIDBServer::clearObjectStore):
(InProcessIDBServer::createIndex):
(InProcessIDBServer::deleteIndex):
(InProcessIDBServer::renameIndex):
(InProcessIDBServer::putOrAdd):
(InProcessIDBServer::getRecord):
(InProcessIDBServer::getAllRecords):
(InProcessIDBServer::getCount):
(InProcessIDBServer::deleteRecord):
(InProcessIDBServer::openCursor):
(InProcessIDBServer::iterateCursor):
(InProcessIDBServer::establishTransaction):
(InProcessIDBServer::databaseConnectionPendingClose):
(InProcessIDBServer::databaseConnectionClosed):
(InProcessIDBServer::abortOpenAndUpgradeNeeded):
(InProcessIDBServer::didFireVersionChangeEvent):
(InProcessIDBServer::openDBRequestCancelled):
(InProcessIDBServer::getAllDatabaseNamesAndVersions):
(InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):

  • Storage/InProcessIDBServer.h:
9:50 AM Changeset in webkit [275890] by Simon Fraser
  • 2 edits in trunk/Tools

REGRESSION (r275792): [ iOS wk2 ] TestWebKitAPI.IndexedDB.DatabaseProcessKill is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224454

Reviewed by Brady Eidson, Sihui Liu.

This test was racey; the content ran script immediately, and it was possible for
the first set of messages to be received before -_test_waitForDidFinishNavigation
returned; the test would then stall because nothing triggered any more messages.

Fix by having the content run the tests from a function, and call that function
from the test. Also handle the case where receivedScriptMessage can be true
before entering the first TestWebKitAPI::Util::run().

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBDatabaseProcessKill-1.html:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBDatabaseProcessKill.mm:

(TEST):

9:50 AM Changeset in webkit [275889] by Simon Fraser
  • 6 edits in trunk/Source

Try not to schedule updates every time

9:47 AM Changeset in webkit [275888] by Sam Sneddon
  • 5 edits in trunk/Tools

Test objects should know if they need servers
https://bugs.webkit.org/show_bug.cgi?id=224442

Reviewed by Jonathan Bedard.

This also removes the unused Manager.needs_servers

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

(LayoutTestFinder.init): Move known paths from Manager.init
(LayoutTestFinder.find_tests_by_path):

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

(Manager.init):
(Manager._is_http_test): Deleted.
(Manager._is_websocket_test): Deleted.
(Manager._needs_web_platform_test): Deleted.
(Manager._http_tests): Deleted.
(Manager._tests_to_run):
(Manager._test_input_for_file):
(Manager.needs_servers): Deleted.
(Manager.run):

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

(ManagerTest.test_needs_servers): Deleted.
(ManagerTest.integration_test_needs_servers): Deleted.

  • Scripts/webkitpy/layout_tests/models/test.py:

(Test):
(Test.needs_http_server):
(Test.needs_websocket_server):
(Test.needs_wpt_server):
(Test.needs_any_server):

9:36 AM Changeset in webkit [275887] by Chris Dumez
  • 11 edits in trunk

The GPUProcess should only launch when it is needed
https://bugs.webkit.org/show_bug.cgi?id=224461

Reviewed by Eric Carlson.

Source/WebKit:

The GPUProcess should only launch when it is needed. This avoids wasting memory
on simple pages, especially until we enable "DOM rendering in GPU Process".

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::GPUProcessConnection):
As soon as we create a GPUProcessConnection, if "Media in GPUProcess" is enabled
we do some media-related initialization that we used to do in
WebProcess::setUseGPUProcessForMedia(). setUseGPUProcessForMedia() gets called
when constructing a WebPage and this initialization requires a GPUProcess. We
thus want to delay the initialization until we actually need a GPUProcess.

(WebKit::GPUProcessConnection::enableVP9Decoders):
Rename function to make it clear it is only used for VP9.

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::create):
(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::~RemoteAudioSession):
(WebKit::RemoteAudioSession::gpuProcessConnectionDidClose):
(WebKit::RemoteAudioSession::ensureConnection):
(WebKit::RemoteAudioSession::configuration const):
(WebKit::RemoteAudioSession::configuration):
(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::setPreferredBufferSize):
(WebKit::RemoteAudioSession::tryToSetActiveInternal):
(WebKit::RemoteAudioSession::category const):
(WebKit::RemoteAudioSession::configurationChanged):

  • WebProcess/GPU/media/RemoteAudioSession.h:

Update RemoteAudioSession to lazily initiate the GPUProcess connection instead
of doing it on construction. The RemoteAudioSession gets created as soon as we
create a WebPage, at which point we may not need a GPUProcess yet.

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::RemoteMediaSessionHelper):
(WebKit::RemoteMediaSessionHelper::ensureConnection):
(WebKit::RemoteMediaSessionHelper::gpuProcessConnectionDidClose):
(WebKit::RemoteMediaSessionHelper::startMonitoringWirelessRoutesInternal):
(WebKit::RemoteMediaSessionHelper::stopMonitoringWirelessRoutesInternal):
(WebKit::RemoteMediaSessionHelper::providePresentingApplicationPID):

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:

Update RemoteMediaSessionHelper to lazily initiate the GPUProcess connection instead
of doing it on construction. The RemoteAudioSession gets created as soon as we
create a WebPage, at which point we may not need a GPUProcess yet.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • Update GPUProcessConnection::updateParameters() call to enableVP9Decoders() due to rename. This makes it clear it is only useful for VP9. We also only call it if there is already a GPUProcess connection. If there is no connection right now, the GPUProcessConnection constructor will take care of getting the latest values from the PlatformMediaSessionManager and send them to the GPUProcess.
  • Call ensureRemoteRenderingBackendProxy() only if we already have a GPUProcessConnection, to avoid eagerly launching the GPUProcess. If no GPUProcessConnection exists, WebProcess::ensureGPUProcessConnection() will take care of calling ensureRemoteRenderingBackendProxy() on its pages.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureGPUProcessConnection):
This logic used to happen in WebPage::updatePreferences(). However, I had to make it conditional on
have a GPUProcessConnection to avoid eagerly launching the GPUProcess. As a result, I now need some
logic when we initiate the GPUProcessConnection to call ensureRemoteRenderingBackendProxy() on the
WebPages. Note that this is a temporary workaround until we enable DOM Rendering in the GPUProcess.

(WebKit::WebProcess::setUseGPUProcessForMedia):
setUseGPUProcessForMedia() gets called when constructing a WebPage, at which point a GPUProcess is
not useful yet. As a result, we should make sure setUseGPUProcessForMedia() does not call
ensureGPUProcessConnection() to avoid eagerly launching the GPUProcess and potentially wasting memory.
To fix this, I moved some of the logic to the GPUProcessConnection constructor so that we do the
media-related GPUProcess initialization ONLY once we actually have a GPUProcess.

Tools:

Add layout test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

8:55 AM Changeset in webkit [275886] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebKit

StorageArea in LocalStorageNamespace can be abandoned
https://bugs.webkit.org/show_bug.cgi?id=224459

Reviewed by Geoffrey Garen.

Remove StorageArea from LocalStorageNamespace if it has no connection (no web page is using it).

  • NetworkProcess/WebStorage/LocalStorageNamespace.cpp:

(WebKit::LocalStorageNamespace::removeStorageArea):

  • NetworkProcess/WebStorage/LocalStorageNamespace.h:
  • NetworkProcess/WebStorage/StorageArea.cpp:

(WebKit::StorageArea::removeListener):

  • NetworkProcess/WebStorage/StorageManagerSet.cpp:

(WebKit::StorageManagerSet::removeConnection):
(WebKit::StorageManagerSet::disconnectFromStorageArea):

8:30 AM Changeset in webkit [275885] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK4] WTR crash in PlatformWebView::dismissAllPopupMenus()
https://bugs.webkit.org/show_bug.cgi?id=224487

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-13
Reviewed by Philippe Normand.

This is because we are using a for loop to iterate children that are destroyed. We should not be destroying the
children, though, we should just hide them, since they are owned by the web view.

  • WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:

(WTR::PlatformWebView::dismissAllPopupMenus):

7:20 AM Changeset in webkit [275884] by aakash_jain@apple.com
  • 1 edit
    8 deletes in trunk/Tools

Delete various old EWS specific scripts
https://bugs.webkit.org/show_bug.cgi?id=224460

Reviewed by Alexey Proskuryakov.

  • EWSTools/Start-Queue.ps1: Removed.
  • EWSTools/boot.sh: Removed.
  • EWSTools/build-boot-cmd.sh: Removed.
  • EWSTools/screen-config: Removed.
  • EWSTools/start-queue-mac.sh: Removed.
  • EWSTools/start-queue-win.sh: Removed.
  • EWSTools/start-queue.sh: Removed.
  • EWSTools/ubuntu-ews-packages: Removed.
7:10 AM Changeset in webkit [275883] by Peng Liu
  • 5 edits
    2 adds in trunk

[macOS] Netflix videos opened in background tab never become playable after foregrounding
https://bugs.webkit.org/show_bug.cgi?id=224384

Reviewed by Eric Carlson.

Source/WebKit:

When a page calls navigator.requestMediaKeySystemAccess() in a background tab, the request
will be added to a pending request hash map. However, the current implementation of
MediaKeySystemPermissionRequestManager does not send the request when the tab switches
to foreground. This patch fixes this issue by adding the MediaKeySystemPermissionRequestManager
object as a MediaCanStartListener of Document, so that it will send its pending requests
when the tab switches to foreground (mediaCanStart()).

  • WebKit.xcodeproj/project.pbxproj: Add two cpp files to the xcode project.
  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.cpp:

Add the object as a MediaCanStartListener so that it can send the MediaKeySystemRequest
to the UI process when the tab switches to foreground.
(WebKit::MediaKeySystemPermissionRequestManager::startMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::cancelMediaKeySystemRequest):
(WebKit::MediaKeySystemPermissionRequestManager::mediaCanStart):

  • WebProcess/EncryptedMedia/MediaKeySystemPermissionRequestManager.h:

LayoutTests:

  • media/encrypted-media/mock-navigator-requestMediaKeySystemAccess-in-background-expected.txt: Added.
  • media/encrypted-media/mock-navigator-requestMediaKeySystemAccess-in-background.html: Added.
7:08 AM Changeset in webkit [275882] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: !m_needExceptionCheck in CloneSerializer::serialize with postMessage({g:42})
https://bugs.webkit.org/show_bug.cgi?id=223785

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-13
Reviewed by Yusuke Suzuki.

Source/WebCore:

Test: js/dom/missing-exception-check-in-clone-serializer-serialize.html

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize): Use a local throw scope within this method and
handle potential exceptions.
(WebCore::CloneBase::shouldTerminate): Deleted.

LayoutTests:

Add regression test.

  • js/dom/missing-exception-check-in-clone-serializer-serialize-expected.txt: Added.
  • js/dom/missing-exception-check-in-clone-serializer-serialize.html: Added.
6:21 AM Changeset in webkit [275881] by Angelos Oikonomopoulos
  • 2 edits in trunk/JSTests

[JSC] Unskip stress/intl-displaynames.js on ARM
https://bugs.webkit.org/show_bug.cgi?id=224427

Unreviewed test gardening.

  • stress/intl-displaynames.js:
4:38 AM Changeset in webkit [275880] by commit-queue@webkit.org
  • 4 edits in trunk

[GTK][WPE] Avif decoder build broken
https://bugs.webkit.org/show_bug.cgi?id=224232

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-13
Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/OptionsGTK.cmake: Require 0.9.0 due to avifIO usage in the decoder.

Source/WebCore:

libavif 0.9.0 introduces an API break. avifDecoderParse() no
longer takes the image data as input. Instead, an avifIO object
needs to be associated with an avifDecoder and the avifDecoder
calls the read() method of the avifIO object to read image data
incrementally.

  • platform/image-decoders/avif/AVIFImageReader.cpp:

(WebCore::AVIFImageReader::parseHeader):
(WebCore::AVIFImageReader::decodeFrame):

4:13 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
4:11 AM Changeset in webkit [275879] by commit-queue@webkit.org
  • 177 edits
    1 copy
    5 moves
    17 adds
    19 deletes in trunk/LayoutTests

Unreviewed, reverting r275849.
https://bugs.webkit.org/show_bug.cgi?id=224476

caused few tests to flake

Reverted changeset:

"[LayoutTests] Convert http/tests/security convert PHP to
Python"
https://bugs.webkit.org/show_bug.cgi?id=222668
https://trac.webkit.org/changeset/275849

3:53 AM Changeset in webkit [275878] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer] CaptureDevice monitoring is not implemented
https://bugs.webkit.org/show_bug.cgi?id=222889

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-13
Reviewed by Xabier Rodriguez-Calvar.

GStreamer capture device events are notified through a message bus associated to the the
GstDeviceMonitor, so we need to watch out for those messages and notify the
RealtimeSourceMediaCenter accordingly.

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:

(WebCore::GStreamerCaptureDeviceManager::~GStreamerCaptureDeviceManager):
(WebCore::GStreamerCaptureDeviceManager::captureDevices):
(WebCore::GStreamerCaptureDeviceManager::addDevice):
(WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices):

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
3:26 AM Changeset in webkit [275877] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

ASSERTION FAILED: !m_needExceptionCheck in RTCPeerConnection::CertificateParameters
https://bugs.webkit.org/show_bug.cgi?id=223788

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-13
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: js/dom/missing-exception-check-in-convertNumbers.html

  • bindings/js/JSDOMConvertNumbers.h:

(WebCore::Converter<IDLFloat>::convert): Handle potential exceptions thrown by toNumber.
(WebCore::Converter<IDLDouble>::convert): Ditto.

LayoutTests:

Add regression test.

  • js/dom/missing-exception-check-in-convertNumbers-expected.txt: Added.
  • js/dom/missing-exception-check-in-convertNumbers.html: Added.
  • platform/win/TestExpectations: Skip test on windows since there is no WebRTC support.
3:17 AM Changeset in webkit [275876] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Skip style update
https://bugs.webkit.org/show_bug.cgi?id=223365

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-13
Reviewed by Ryosuke Niwa.

Skip style update for getting the SVG bounding box
since boundingClientRect already updated style.

  • dom/Element.cpp:

(WebCore::Element::boundingAbsoluteRectWithoutLayout):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::getBoundingBox):

3:04 AM Changeset in webkit [275875] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

Unreviewed. Upstream a test.

  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation.html:
2:26 AM Changeset in webkit [275874] by youenn@apple.com
  • 3 edits
    2 adds in trunk

SFrameTransform should be able to take array buffer views as input
https://bugs.webkit.org/show_bug.cgi?id=224437

Reviewed by Eric Carlson.

Source/WebCore:

Add support for processing ArrayBufferView.
We still output ArrayBuffer as output.

Test: webrtc/sframe-transform-buffer-source.html

  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::transformFrame):
(WebCore::RTCRtpSFrameTransform::createStreams):

LayoutTests:

  • webrtc/sframe-transform-buffer-source-expected.txt: Added.
  • webrtc/sframe-transform-buffer-source.html: Added.
2:14 AM Changeset in webkit [275873] by svillar@igalia.com
  • 8 edits
    1 add in trunk

[css-flexbox] CDC COVID Vaccine Tracker: Safari garbles data table
https://bugs.webkit.org/show_bug.cgi?id=222581

Reviewed by Zalan Bujtas.

PerformanceTests:

  • Layout/nested-flexboxes-percentage-flex-basis.html: Added.

Source/WebCore:

With nested flexboxes in which the flex-basis is a percentage the current code that stretches the item forces a relayout
of the children because it thinks it has percentage height descendants. That happens because we call
computePercentageLogicalHeights() with a mock percentage length to check whether a size is definite and that call performs
the addPercentageHeightDescendants() call. We should avoid calling the latter in those cases as we're just trying to
figure out whether we can compute the flex-basis used value or not.

Adding a new parameter to the aforementioned method so that the percentage height descendants map could be left untouched
in those cases where we just want to test size definiteness.

Apart from making the implementation more correct this brings some performance improvements for the cases described in the
first paragraph as it can be seen in the provided performance test (24.5% of improvement).

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computePercentageLogicalHeight const):

  • rendering/RenderBox.h:
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::canComputePercentageFlexBasis const):
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite const):
(WebCore::RenderFlexibleBox::useChildOverridingMainSizeForPercentageResolution):

  • rendering/RenderFlexibleBox.h:

LayoutTests:

2:05 AM Changeset in webkit [275872] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Use WTF::compactMap in HTMLSlotElement
https://bugs.webkit.org/show_bug.cgi?id=224470

Reviewed by Antti Koivisto.

Cleaned up the code in assignedNodes and assignedElements with WTF::compactMap.

  • html/HTMLSlotElement.cpp:

(WebCore::HTMLSlotElement::assignedNodes const):
(WebCore::HTMLSlotElement::assignedElements const):

1:38 AM Changeset in webkit [275871] by commit-queue@webkit.org
  • 9 edits in trunk/Source

[GStreamer] CaptureDevice monitor used from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=222888

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-13
Source/WebCore:

Reviewed by Youenn Fablet .

Move the device observer infrastructure from the WebKit UserMediaProcessManager to the
RealtimeMediaSourceCenter.

  • platform/mediastream/CaptureDevice.h:

(WebCore::haveDevicesChanged):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::RealtimeMediaSourceCenter):
(WebCore::RealtimeMediaSourceCenter::Observer::~Observer):
(WebCore::RealtimeMediaSourceCenter::addDevicesChangedObserver):
(WebCore::RealtimeMediaSourceCenter::removeDevicesChangedObserver):
(WebCore::RealtimeMediaSourceCenter::captureDevicesChanged):
(WebCore::RealtimeMediaSourceCenter::triggerDevicesChangedObservers):
(WebCore::RealtimeMediaSourceCenter::setDevicesChangedObserver): Deleted.

  • platform/mediastream/RealtimeMediaSourceCenter.h:

(WebCore::RealtimeMediaSourceCenter::Observer::devicesChanged):

Source/WebKit:

Reviewed by Youenn Fablet.

GStreamer ports aim to reduce usage of the GStreamer library in the UIProcess and thus
should not relay capture devicechange monitoring to the UIProcess. For the long term we plan
to migrate media processing to the GPUProcess but for now we have to maintain the media
pipelines in the WebProcess. Initializing GStreamer in multiple processes (including the
UIProcess) has a significant performance impact on embedded platforms, that's why we try to
avoid it as much as possible.

The device monitoring code from the UserMediaProcessManager was partly moved to the
RealtimeMediaSourceCenter so that it can be easily reused by GStreamer ports from the
UserMediaPermissionRequestManager.

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::UserMediaProcessManager):
(WebKit::UserMediaProcessManager::updateCaptureDevices):
(WebKit::UserMediaProcessManager::devicesChanged):
(WebKit::UserMediaProcessManager::beginMonitoringCaptureDevices):

  • UIProcess/UserMediaProcessManager.h:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::UserMediaPermissionRequestManager):
(WebKit::UserMediaPermissionRequestManager::updateCaptureDevices):
(WebKit::UserMediaPermissionRequestManager::DeviceObserver::devicesChanged):
(WebKit::UserMediaPermissionRequestManager::addDeviceChangeObserver):

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

(WebKit::UserMediaPermissionRequestManager::DeviceObserver::DeviceObserver):

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

Unreviewed, casting to unsigned long long to suppress warning
https://bugs.webkit.org/show_bug.cgi?id=224473

  • b3/B3ConstDoubleValue.cpp:

(JSC::B3::ConstDoubleValue::dumpMeta const):

1:08 AM Changeset in webkit [275869] by graouts@webkit.org
  • 20 edits in trunk

calc() simplification for a multiplication should apply the multiplication to each value of an addition
https://bugs.webkit.org/show_bug.cgi?id=224376

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Mark 99 WPT progressions.

  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

An expression such as calc(0.5 * (100% + 100px)) should be simplified to calc(50% + 50px). We produce
these types of expressions when blending between a percentage and a dimension, and they can also be
specified explicitly in style.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcOperationNode::combineChildren):

LayoutTests:

Rebase some non-WPT tests to account for new results.

  • css3/calc/simplification-expected.txt:
  • transitions/background-position-transitions-expected.txt:
  • transitions/background-position-transitions.html:
1:05 AM Changeset in webkit [275868] by Said Abou-Hallawa
  • 6 edits
    2 adds in trunk

SVG paced value animations overwrite user-provided keyTimes
https://bugs.webkit.org/show_bug.cgi?id=109010

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/svg/animations/scripted/paced-value-animation-overwrites-keyTimes-expected.txt:

Source/WebCore:

If the calcMode is Paced, the 'keyTimes' attribute is ignored. Distances
between the 'values' are used produce an even pace of change across the
animation.

When changing calcMode, times defined in the 'keyTimes' attribute should
be used instead. To fix this, SVGAnimationElement can maintain two lists
for keyTimes: (1) keyTimesFromAttribute (2) keyTimesForPaced.
One of these lists will be picked by a new function 'keyTimes()' based
on the current calcMode.

Specs: https://www.w3.org/TR/SVG11/animate.html#CalcModeAttribute

Test: svg/animations/animate-calcMode-paced-overwrite-key-times.html

  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::parseAttribute):
(WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced):
(WebCore::SVGAnimationElement::keyTimes const):
(WebCore::SVGAnimationElement::calculateKeyTimesIndex const):
(WebCore::SVGAnimationElement::calculatePercentFromKeyPoints const):
(WebCore::SVGAnimationElement::calculatePercentForFromTo const):
(WebCore::SVGAnimationElement::currentValuesFromKeyPoints const):
(WebCore::SVGAnimationElement::currentValuesForValuesAnimation):
(WebCore::SVGAnimationElement::startedActiveInterval):
(WebCore::SVGAnimationElement::updateAnimation):

  • svg/SVGAnimationElement.h:

LayoutTests:

Simplified from the WPT paced-value-animation-overwrites-keyTimes.html.

  • svg/animations/animate-calcMode-paced-overwrite-key-times-expected.html: Added.
  • svg/animations/animate-calcMode-paced-overwrite-key-times.html: Added.
1:04 AM Changeset in webkit [275867] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Reduce functionWithHellaArguments3()'s number of arguments from 5000 to 500.
https://bugs.webkit.org/show_bug.cgi?id=224474
rdar://73614896

Reviewed by Yusuke Suzuki.

Using 5000 arguments seems excessive, and may blow out the stack on more resource
constrained devices. 500 should be high enough.

  • b3/testb3_5.cpp:

(JSC_DEFINE_JIT_OPERATION):
(testCallFunctionWithHellaArguments3):

12:35 AM Changeset in webkit [275866] by ysuzuki@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] Remove CodeBlock::m_constantsSourceCodeRepresentation
https://bugs.webkit.org/show_bug.cgi?id=224473

Reviewed by Mark Lam.

CodeBlock::m_constantsSourceCodeRepresentation is identical to UnlinkedCodeBlock::m_constantsSourceCodeRepresentation.

  1. For all constants existing at bytecode compile time, elements of the above vectors are identical.
  2. For lazily added constants from DFG, it is always SourceCodeRepresentation::Other.

And the array is effectively accessed only when compiling DFG code. So we should remove copy of that in CodeBlock, and
get SourceCodeRepresentation from UnlinkedCodeBlock.

  • bytecode/BytecodeDumper.cpp:

(JSC::CodeBlockBytecodeDumper<Block>::dumpConstants):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::shrinkToFit):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::constants):
(JSC::CodeBlock::addConstant):
(JSC::CodeBlock::addConstantLazily):
(JSC::CodeBlock::constantSourceCodeRepresentation const):
(JSC::CodeBlock::constantsSourceCodeRepresentation): Deleted.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::constantSourceCodeRepresentation const):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::constantSourceCodeRepresentation const):
(JSC::UnlinkedCodeBlockGenerator::constantsSourceCodeRepresentation): Deleted.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::registerFrozenValues):

Apr 12, 2021:

11:11 PM Changeset in webkit [275865] by calvaris@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK] media/track/text-track-cue-is-reachable.html is flaky crashing in X11 release
https://bugs.webkit.org/show_bug.cgi?id=210370

Unreviewed.

  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations: Unflagged test.
11:11 PM Changeset in webkit [275864] by Fujii Hironori
  • 24 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo-wk1/http/tests/security/401-logout/401-logout-expected.txt:
  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/text_properties/vertical_align-expected.txt:
  • platform/wincairo/css1/text_properties/word_spacing-expected.txt:
  • platform/wincairo/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/wincairo/css2.1/t1602-c546-txt-align-00-b-expected.txt:
  • platform/wincairo/fast/css-generated-content/after-duplicated-after-split-expected.txt:
  • platform/wincairo/fast/css/child-style-can-override-visited-style-expected.txt:
  • platform/wincairo/fast/css/input-search-padding-expected.txt:
  • platform/wincairo/fast/css/word-space-extra-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/wincairo/fast/inline-block/003-expected.txt:
  • platform/wincairo/fast/text/basic/012-expected.txt:
  • platform/wincairo/fast/text/basic/013-expected.txt:
  • platform/wincairo/fast/text/basic/015-expected.txt:
  • platform/wincairo/fast/text/text-letter-spacing-expected.txt:
  • platform/wincairo/fast/text/textIteratorNilRenderer-expected.txt:
  • platform/wincairo/fast/text/wbr-expected.txt:
  • platform/wincairo/fast/text/whitespace/018-expected.txt:
  • platform/wincairo/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
  • platform/wincairo/fonts/sans-serif-expected.txt:
  • platform/wincairo/fonts/serif-expected.txt:
10:58 PM Changeset in webkit [275863] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer] media/media-source/media-source-seek-back.html is flaky crashing with 3 kinds of traces
https://bugs.webkit.org/show_bug.cgi?id=210528

Unreviewed.

  • platform/glib/TestExpectations: Unflagged test.
10:57 PM Changeset in webkit [275862] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] webrtc/video-update-often.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=210360

Unreviewed.

  • platform/gtk-wayland/TestExpectations: Unflag test, it's

passing.

9:57 PM Changeset in webkit [275861] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

[CoreIPC] Crash in logDiagnosticMessage code
https://bugs.webkit.org/show_bug.cgi?id=224390

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-04-12
Reviewed by Chris Dumez.

Source/WebKit:

Create new WebPageProxy::logDiagnosticMessage APIs designed to be called on messages that
need sanity checking, and hook that up to IPC handlers (while leaving existing APIs
for all other callers).

Test: ipc/analytics-logger-crash.html

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::logDiagnosticMessageWithValue):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::logDiagnosticMessageFromWebProcess):
(WebKit::ProvisionalPageProxy::logDiagnosticMessageWithEnhancedPrivacyFromWebProcess):
(WebKit::ProvisionalPageProxy::logDiagnosticMessageWithValueDictionaryFromWebProcess):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logDiagnosticMessageFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithResultFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithValueFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithEnhancedPrivacyFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithValueDictionaryFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithDomainFromWebProcess):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithEnhancedPrivacy):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValueDictionary):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithDomain):

LayoutTests:

Add a test for this crasher.

  • ipc/analytics-logger-crash-expected.txt: Added.
  • ipc/analytics-logger-crash.html: Added.
9:43 PM Changeset in webkit [275860] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Interpreter::executeProgram() should install its VMEntryScope at the top.
https://bugs.webkit.org/show_bug.cgi?id=224450
rdar://76530841

Reviewed by Yusuke Suzuki.

"top" includes before any VM code that can throw exceptions is run.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):

9:19 PM Changeset in webkit [275859] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

TextManipulationController should use weak pointers to Node
https://bugs.webkit.org/show_bug.cgi?id=215913

Reviewed by Wenson Hsieh.

Use WeakHashSet for m_manipulatedTextsWithNewContent, m_textNodesWithNewRenderer, and m_manipulatedNodes.

Also made TextManipulationController::removeNode take Node& instead of Node*.

  • dom/Node.cpp:

(WebCore::Node::~Node):
(WebCore::Node::moveNodeToNewDocument):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::observeParagraphs):
(WebCore::TextManipulationController::didCreateRendererForElement):
(WebCore::TextManipulationController::didUpdateContentForText):
(WebCore::TextManipulationController::didCreateRendererForTextNode):
(WebCore::TextManipulationController::scheduleObservationUpdate):
(WebCore::TextManipulationController::replace):
(WebCore::TextManipulationController::removeNode):

  • editing/TextManipulationController.h:
7:25 PM Changeset in webkit [275858] by don.olmstead@sony.com
  • 3 edits
    2 deletes in trunk/Source/WebCore

Remove GraphicsContextGLOpenGLPrivate
https://bugs.webkit.org/show_bug.cgi?id=224446

Reviewed by Myles C. Maxfield.

GraphicsContextGLOpenGLPrivate is dead code. It requires AppleWin to turn on WebGL which
it does not. This removes all references to it.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::create): Deleted.
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): Deleted.
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): Deleted.
(WebCore::GraphicsContextGLOpenGL::setContextLostCallback): Deleted.
(WebCore::GraphicsContextGLOpenGL::setErrorMessageCallback): Deleted.
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent): Deleted.
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus): Deleted.
(WebCore::GraphicsContextGLOpenGL::isGLES2Compliant const): Deleted.
(WebCore::GraphicsContextGLOpenGL::platformLayer const): Deleted.

  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp: Removed.
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.h: Removed.
7:06 PM Changeset in webkit [275857] by Peng Liu
  • 9 edits in trunk/Source/WebKitLegacy/mac

Fix some issues hidden by unified build
https://bugs.webkit.org/show_bug.cgi?id=224457

Reviewed by Eric Carlson.

Some small fixes and clean-up. The issues are hidden by the unified build mechanism
and were found in a local build.

  • DOM/DOMTokenList.mm:
  • Plugins/WebPluginController.mm:
  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebView/WebDataSource.mm:
  • WebView/WebFrameView.mm:
  • WebView/WebHTMLViewInternal.h:
  • WebView/WebImmediateActionController.mm:
  • WebView/WebPDFView.mm:
7:04 PM Changeset in webkit [275856] by Ross Kirsling
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

ICU 69 deprecates ubrk_safeClone in favor of ubrk_clone
https://bugs.webkit.org/show_bug.cgi?id=224093

Reviewed by Yusuke Suzuki.

In a shining example of "disappointing library practices", ICU 69 deprecates ubrk_safeClone in favor of
a new *draft* API ubrk_clone, meaning that no function with this functionality is exposed by default.

This patch introduces a function cloneUBreakIterator to abstract over this change; however, since we need to:

  1. confine the effects of disabling U_HIDE_DRAFT_API to a non-unified implementation file
  2. still be able to include ubrk.h from IntlSegmenter.h to instantiate ICUDeleter<ubrk_close> (*not* clone!)

...the new helper function is introduced in a *headerless* implementation file, IntlWorkaround.cpp.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::segment const):

  • runtime/IntlSegmenter.h:
  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::createSegmentIterator):

  • runtime/IntlWorkaround.cpp: Added.

(JSC::cloneUBreakIterator):

6:25 PM Changeset in webkit [275855] by commit-queue@webkit.org
  • 20 edits in trunk

Unreviewed, reverting r275793.
https://bugs.webkit.org/show_bug.cgi?id=224466

Caused crashes on <http://facebook.com|facebook.com>

Reverted changeset:

"calc() simplification for a multiplication should apply the
multiplication to each value of an addition"
https://bugs.webkit.org/show_bug.cgi?id=224376
https://trac.webkit.org/changeset/275793

6:06 PM Changeset in webkit [275854] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WTF

[PlayStation] Enable WTFCrashWithInfo implementation
https://bugs.webkit.org/show_bug.cgi?id=224458

Reviewed by Don Olmstead.

Enable WTFCrashWithInfo implementation for PlayStation platform. It is x86_64 and uses clang
so that it can share Darwin's implemetation with us.

  • wtf/Assertions.cpp:
5:48 PM Changeset in webkit [275853] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

Make Commit Queue robust by adding few git commands to clean up repository
https://bugs.webkit.org/show_bug.cgi?id=224444

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(CleanGitRepo): Build step to run few commands to cleanup git repository.
(CleanGitRepo.run):
(CleanGitRepo.getResultSummary): Custom failure message.

  • CISupport/ews-build/steps_unittest.py: Added unit-tests.
  • CISupport/ews-build/factories.py:

(CommitQueueFactory.init):

  • CISupport/ews-build/factories_unittest.py:

(TestCommitQueueFactory.test_commit_queue_factory): Updated unit-test.

5:47 PM Changeset in webkit [275852] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Unreviewed, reverting r275761.

Caused InlineBox invalidation bugs.

Reverted changeset:

"[RenderTreeBuilder] Cleanup the inline box wrappers when
moving subtrees"
https://bugs.webkit.org/show_bug.cgi?id=224342
https://commits.webkit.org/r275761

5:45 PM Changeset in webkit [275851] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] 4 webrtc/ Layout-tests are consistently timing out
https://bugs.webkit.org/show_bug.cgi?id=223043

Uneviewed test gardening.

  • platform/mac/TestExpectations: Adding crash to test expectations while test is under review.
5:36 PM Changeset in webkit [275850] by don.olmstead@sony.com
  • 4 edits in trunk/Source/JavaScriptCore

Inspector code is wrongly including some private headers
https://bugs.webkit.org/show_bug.cgi?id=224456

Reviewed by Alex Christensen.

These files were including some headers using #include <JavaScriptCore/Foo.h> style instead
of "Foo.h" style. This caused a build error when attempting to revive the Mac CMake build
since those headers were private and private headers are generated after the JavaScriptCore
build. No other ports were have ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS turned on so the
issue hadn't manifested until now.

  • API/JSContextRefInspectorSupport.h:
  • inspector/augmentable/AlternateDispatchableAgent.h:
  • inspector/augmentable/AugmentableInspectorController.h:
5:33 PM Changeset in webkit [275849] by Chris Gambrell
  • 177 edits
    5 moves
    19 adds
    18 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/security convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222668
<rdar://problem/74993152>

Reviewed by Jonathan Bedard.

  • TestExpectations:
  • http/tests/blink/sendbeacon/connect-src-beacon-allowed.html:
  • http/tests/contentextensions/block-cookies-in-csp-report.py:
  • http/tests/css/resources/webfont-request.py:

(get_request_count): Deleted.
(set_request_count): Deleted.

  • http/tests/local/script-crossorigin-loads-file-scheme.html:
  • http/tests/media/resources/serve_video.py: Added.

(answering):

  • http/tests/resources/portabilityLayer.py:

(get_cookies): Add trailing newline.
(get_request): PHP equivalent of $_REQUEST which is used by numerous scripts.
(get_count): Added trailing newline.
(get_state): Added trailing newline.
(set_state): Changed open file's name to prevent confusion with parameter.
(step_state): Added trailing newline.

  • http/tests/security/401-logout/401-logout-expected.txt:
  • http/tests/security/401-logout/401-logout.php: Removed.
  • http/tests/security/401-logout/401-logout.py: Added.
  • http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html:
  • http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html:
  • http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored.html:
  • 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-cross-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html:
  • 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/frame-ancestors/report-frame-ancestors-same-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive.py:
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.php: Removed.
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.py: Added.
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports.py:
  • 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-policy.py:
  • 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-enforced-policy-and-blocked-by-report-policy2.py:
  • 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-policy.py:
  • 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-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • 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-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • 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-policy.py:
  • 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/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-css-report-only.py:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-allowed.html:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked.html:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report.py:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report.html:
  • http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-and-enforce.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri.py:
  • 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-cross-origin-no-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.py: Added.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect.html:
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.py: Added.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header.py:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.py:
  • http/tests/security/contentSecurityPolicy/report-only.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled.py:
  • 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-same-origin-with-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https.html:
  • 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-child-frame.html:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-in-meta-tag-ignored.html:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative.py:
  • http/tests/security/contentSecurityPolicy/report-uri.py:
  • http/tests/security/contentSecurityPolicy/resources/echo-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/echo-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.js:

(window.onload):

  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.py:
  • http/tests/security/contentSecurityPolicy/resources/image-document-default-src-none-iframe.py:
  • http/tests/security/contentSecurityPolicy/resources/redir.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report-file-path.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report_file_path.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save_report.py: Added.

(not_being_called):
(save_report):

  • http/tests/security/contentSecurityPolicy/resources/worker.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/worker.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/xhr-redirect-not-allowed.py:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report.py:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-allowed.html:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-eval-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-function-function-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-importscripts-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-multiple-csp-headers.html:
  • http/tests/security/contentSecurityPolicy/worker-script-src.html:
  • http/tests/security/contentSecurityPolicy/worker-set-timeout-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-without-own-csp.html:
  • http/tests/security/contentSecurityPolicy/xmlhttprequest-protected-resource-does-not-crash.html:
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.php: Removed.
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.py: Added.
  • http/tests/security/cookies/cookies-wrong-domain-rejected.py:
  • http/tests/security/cookies/resources/first-party-cookie-allow.xsl:
  • http/tests/security/cookies/resources/set-a-cookie.php: Removed.
  • http/tests/security/cookies/resources/set-a-cookie.py: Added.
  • http/tests/security/cookies/resources/third-party-cookie-blocking.xsl:
  • http/tests/security/cookies/third-party-cookie-blocking-main-frame.html:
  • http/tests/security/cookies/third-party-cookie-blocking-user-action.html:
  • http/tests/security/cookies/third-party-cookie-blocking.html:
  • http/tests/security/credentials-from-different-domains.html:
  • http/tests/security/credentials-iframes-allowCrossOriginSubresourcesToAskForCredentials-expected.txt:
  • http/tests/security/credentials-iframes-expected.txt:
  • http/tests/security/import-module-crossorigin-loads.html:
  • http/tests/security/import-script-crossorigin-loads-omit.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:
  • http/tests/security/module-crossorigin-error-event-information-expected.txt:
  • http/tests/security/module-crossorigin-error-event-information.html:
  • http/tests/security/module-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/module-crossorigin-loads-omit.html:
  • http/tests/security/module-crossorigin-onerror-information-expected.txt:
  • http/tests/security/module-crossorigin-onerror-information.html:
  • http/tests/security/private-browsing-http-auth-expected.txt:
  • http/tests/security/private-browsing-http-auth.html:
  • http/tests/security/referrer-policy-header-expected.txt:
  • http/tests/security/referrer-policy-header.html:
  • http/tests/security/resources/basic-auth.php: Removed.
  • http/tests/security/resources/basic-auth.py: Added.
  • http/tests/security/resources/cors-basic-auth.php: Removed.
  • http/tests/security/resources/cors-basic-auth.py: Added.
  • http/tests/security/resources/cors-script.php: Removed.
  • http/tests/security/resources/cors-script.py: Added.
  • http/tests/security/resources/credentials-from-different-domains-continued-1.html:
  • http/tests/security/resources/credentials-from-different-domains-continued-2.html:
  • http/tests/security/resources/credentials-iframes-different-domain.html:
  • http/tests/security/resources/credentials-iframes-same-domain.html:
  • http/tests/security/resources/credentials-main-resource.py:
  • http/tests/security/resources/import-module-crossorigin-loads-src.js:
  • http/tests/security/resources/reference-movie-cross-origin-allow.php: Removed.
  • http/tests/security/resources/reference-movie-cross-origin-allow.py: Added.
  • http/tests/security/resources/serve-referrer-policy-and-test.php: Removed.
  • http/tests/security/resources/serve-referrer-policy-and-test.py: Added.
  • http/tests/security/resources/video-cross-origin-allow-credentials.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow-credentials.py: Added.
  • http/tests/security/resources/video-cross-origin-allow.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow.py: Added.
  • http/tests/security/script-crossorigin-error-event-information-expected.txt:
  • http/tests/security/script-crossorigin-error-event-information.html:
  • http/tests/security/script-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/script-crossorigin-loads-correctly.html:
  • http/tests/security/script-crossorigin-onerror-information-expected.txt:
  • http/tests/security/script-crossorigin-onerror-information.html:
  • http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html:
  • http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html:
  • http/tests/security/sync-xhr-partition.html:
  • http/tests/security/video-cross-origin-caching.html:
  • http/tests/security/video-cross-origin-readback.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:
  • http/tests/security/xssAuditor/resources/echo-intertag.pl:
  • http/tests/security/xssAuditor/resources/tag-with-pause.py:
  • http/tests/ssl/curl/certificate-and-authentication.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/win/TestExpectations:
  • platform/win/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/wk2/TestExpectations:
  • platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
5:14 PM Changeset in webkit [275848] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Debug wk2 ARM64 ] webrtc/disable-encryption.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224463

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to Pass Timeout while test is reviewed.
4:54 PM Changeset in webkit [275847] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Force the WebAuthn compatible mode to always show UI
https://bugs.webkit.org/show_bug.cgi?id=224402
<rdar://75757362>

Reviewed by Brent Fulgham.

Covered by manual tests.

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::verifyUser):

4:43 PM Changeset in webkit [275846] by sihui_liu@apple.com
  • 8 edits in trunk/Source/WebKit

Create WebIDBServer only when it is needed
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

Reviewed by Alex Christensen.

Currently each WebIDBServer has a separate thread, so we don't want to create or keep WebIDBServer if it's not
in use. There are two cases where network process needs a WebIDBServer:

  1. handle requests from UI process to collect or remove data
  2. handle requests from Web process to perform IDB operations

Previously, we created a WebIDBServer when network process connects to a web process, but that does not mean web
process will perform IDB operations and we may create a thread that's not used. To avoid this, add a new message
AddIDBConnection for web process to ensure network process has WebIDBServer when it's about to perform operation.

Also, previously network process removes a WebIDBServer when session is removed and WebIDBServer is not binded
with any web process connection. Now we remove WebIDBServer when it's done handling requests, that is count of
pending requests from UI process is 0 and WebIDBServer is not binded with web process connection. We also remove
WebIDBServer at when network process is about to be destroyed (NetworkProcess::didClose) so we can break the
reference cycle of NetworkProcess-WebIDBServer-IDBServer, and make sure thread exits.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::create):
(WebKit::WebIDBServer::WebIDBServer):
(WebKit::m_closeCallback):
(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::close):
(WebKit::WebIDBServer::tryClose):

  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::addIDBConnection):

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

(WebKit::NetworkProcess::didClose):
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::createWebIDBServer):
(WebKit::NetworkProcess::connectionToWebProcessClosed):
(WebKit::NetworkProcess::removeWebIDBServerIfPossible): Deleted. Move the removal code to WebIDBServer.

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):

4:14 PM Changeset in webkit [275845] by BJ Burg
  • 12 edits in trunk/Source

Modernize uses of ConsoleClient
https://bugs.webkit.org/show_bug.cgi?id=224398

Reviewed by David Kilzer.

ConsoleClient acts like a delegate, so its callers
should be using weak references to it.

Source/JavaScriptCore:

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::consoleClient const):

  • inspector/JSGlobalObjectInspectorController.h:
  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::consoleLogWithLevel):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::setConsoleClient):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::consoleClient const):
(JSC::JSGlobalObject::setConsoleClient): Deleted.

Source/WebCore:

  • bindings/js/ScriptCachedFrameData.cpp:

(WebCore::ScriptCachedFrameData::restore):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initScriptForWindowProxy):

  • bindings/js/WindowProxy.cpp:

(WebCore::WindowProxy::setDOMWindow):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::initScriptWithSubclass):

4:12 PM Changeset in webkit [275844] by Alan Coon
  • 1 copy in tags/Safari-611.1.22.4.1

Tag Safari-611.1.22.4.1.

4:06 PM Changeset in webkit [275843] by Alan Coon
  • 8 edits in branches/safari-611.1.22.4-branch/Source

Versioning.

WebKit-7611.1.22.4.1

3:46 PM Changeset in webkit [275842] by Alan Coon
  • 1 copy in branches/safari-611.1.22.4-branch

New branch.

3:41 PM Changeset in webkit [275841] by commit-queue@webkit.org
  • 10 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (Metal ANGLE): [Catalina] 6 consistent WebGL failures / timeouts
https://bugs.webkit.org/show_bug.cgi?id=224016
<rdar://problem/76070325>

Patch by John Cunningham <johncunnigham@apple.com>
Patch by Dean Jackson <dino@apple.com> on 2021-04-12
Reviewed by Dean Jackson.

Implement a workaround for Intel GPUs where we explicitly type cast floating
point values to booleans. This is only needed for Catalina systems.

  • include/GLSLANG/ShaderLang.h:
  • include/platform/FeaturesMtl.h:
  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.cpp:

(sh::Rewriter::Rewriter):
(sh::AddExplicitTypeCasts):

  • src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.h:
  • src/compiler/translator/TranslatorMetalDirect/AstHelpers.cpp:

(sh::SubVector):
(sh::CoerceSimple):

  • src/compiler/translator/TranslatorMetalDirect/AstHelpers.h:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeFeatures):

  • src/libANGLE/renderer/metal/ShaderMtl.mm:

(rx::ShaderMtl::compile):

3:01 PM Changeset in webkit [275840] by ysuzuki@apple.com
  • 22 edits in trunk/Source/JavaScriptCore

[JSC] Do not copy StringSwitchJumpTable
https://bugs.webkit.org/show_bug.cgi?id=224414

Reviewed by Keith Miller.

Previously, we were copying UnlinkedStringJumpTable to CodeBlock's StringJumpTable because we embed CodeLocation pointer
inside CodeBlock's StringJumpTable. This is copying a mostly identical hashtable to each CodeBlock even in DFG and FTL. This
even prevents us from inlining op_switch_string in DFG and FTL because (1) we don't want to copy this string tables collected from
each inlined CodeBlock into a new DFG / FTL CodeBlock and (2) we cannot ref/deref StringImpl inside DFG / FTL compilers so copying
these tables in the compiler threads need additional "DesiredStringSwitchJumpTable" etc.

In this patch, we stop copying StringSwitchJumpTable. We decouple CodeLocation pointers from the hashtable so that we can use
UnlinkedStringJumpTable in UnlinkedCodeBlock. UnlinkedStringJumpTable's hashtable inclues m_indexInTable in each entry so that
we can have array of CodeLocation pointers in CodeBlock's JITData to have JIT jump targets separately. This design prevents us
from copying unnecessary hashtables, and even this paves the way to inlining switch_string in DFG and FTL.

  • bytecode/BytecodeDumper.cpp:

(JSC::CodeBlockBytecodeDumper<Block>::dumpStringSwitchJumpTables):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::shrinkToFit):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::stringSwitchJumpTable):
(JSC::CodeBlock::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::CodeBlock::unlinkedStringSwitchJumpTable):
(JSC::CodeBlock::numberOfStringSwitchJumpTables const): Deleted.

  • bytecode/JumpTable.h:

(JSC::StringJumpTable::ctiForValue const):
(JSC::StringJumpTable::offsetForValue): Deleted.
(JSC::StringJumpTable::ctiForValue): Deleted.
(JSC::StringJumpTable::clear): Deleted.

  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedStringJumpTable::offsetForValue const):
(JSC::UnlinkedCodeBlock::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlock::unlinkedStringSwitchJumpTable):
(JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
(JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlockGenerator::addUnlinkedStringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::unlinkedStringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::numberOfStringSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlockGenerator::addStringSwitchJumpTable): Deleted.
(JSC::UnlinkedCodeBlockGenerator::stringSwitchJumpTable): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::beginSwitch):
(JSC::prepareJumpTableForStringSwitch):
(JSC::BytecodeGenerator::endSwitch):

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGJITCompiler.cpp:

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

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:

(JSC::SwitchRecord::SwitchRecord):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_switch_string):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_switch_string):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CachedTypes.cpp:

(JSC::CachedStringJumpTable::encode):
(JSC::CachedStringJumpTable::decode const):
(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):

2:28 PM Changeset in webkit [275839] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Make sure AuxiliaryProcessProxy::sendMessage() is called on the main thread
https://bugs.webkit.org/show_bug.cgi?id=224448

Reviewed by Geoffrey Garen.

Make sure AuxiliaryProcessProxy::sendMessage() is called on the main thread. This is a follow-up to
Bug 224377 but for trunk.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::sendMessage):
(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
(WebKit::AuxiliaryProcessProxy::replyToPendingMessages):

2:28 PM Changeset in webkit [275838] by Chris Dumez
  • 9 edits
    4 adds in trunk

webaudio/AudioListener/audiolistener-set-position.html is leaking PannerNodes
https://bugs.webkit.org/show_bug.cgi?id=224399

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline existing WPT test. It is still passing but the exception message is different.

  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume-expected.txt:

Source/WebCore:

The test was leaking all its nodes and contexts due to several logic issues in our code.

Tests: webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once.html

webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes.html

  • Modules/webaudio/AudioScheduledSourceNode.cpp:

(WebCore::AudioScheduledSourceNode::AudioScheduledSourceNode):
(WebCore::AudioScheduledSourceNode::virtualHasPendingActivity const):
(WebCore::AudioScheduledSourceNode::finish):

  • Modules/webaudio/AudioScheduledSourceNode.h:
  1. Stop using an ActiveDOMObject::PendingActivity to keep our wrapper alive as this was causing a reference cycle. PendingActivity keeps a ref to |this| and this is ref'ing the PendingActivity. 2 things could break the cycle:
    • finish() gets called but the audio context may go away without finish getting called.
    • didBecomeMarkedForDeletion() gets called. However, it was getting called from AudioNode::markNodeForDeletionIfNecessary(). This function would early return if m_normalRefCount is not 0. Here m_normalRefCount could NOT be 0, since PendingActity was ref'ing the Node.
  2. Instead of a PendingActivity, we now override ActiveDOMObject::virtualHasPendingActivity() to keep the wrapper alive. The behavior is the same since its return true when the state is not finished and the node has not been marked for deletion. However, I added a condition to make sure it starts returning false as soon as the context is closed. There is also no need to keep the JS wrapper alive if there is no 'ended' event listener.
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::lazyInitialize):
Early return if lazyInitialize() gets called for an audiocontext is closed. Nothing prevents JS from
creating an AudioNode after the AudioContext is closed. Constructing an AudioNode ends up lazy
initializing the audio context. In such case, we would already early return in release because if the
m_isAudioThreadFinished check. However, we would crash in debug because of the m_isAudioThreadFinished
ASSERT().

  • Modules/webaudio/BaseAudioContext.h:

Make clear() member function protected so it can get called by OfflineAudioContext when rendering is
complete.

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::uninitialize):
Stop rejecting the suspend promises when the OfflineAudioContext gets uninitialized. Previously this
would only happen on navigation so we did not notice the issue. However, the OfflineAudioContext now
gets uninitialized as soon as it is done rendering and rejecting those promises in this case would
start causing test failures.

(WebCore::OfflineAudioContext::didFinishOfflineRendering):

  • Stop clearing the m_didStartOfflineRendering flag when rendering is finished. This flag is called rendering started in the WebAudio specification [1]. As per the specification, it gets set to true in startRendering() and never gets reset to false. This means that an offline audio context cannot start rendering again once it is done rendering. I have added a layout test for this behavior change and verified that this test is passing is both Firefox and Chrome. [1] https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontext-startrendering
  • Call uninitialize() and clear() when rendering has finished to clear as much memory as possible as soon as we can. This is acceptable because it is no longer possible to start rendering again once it's finished. Previously, uninitialize() / clear() would only happen when navigating away and when the document would get destroyed.

LayoutTests:

Add layout test coverage.

  • webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once-expected.txt: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once.html: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes-expected.txt: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes.html: Added.
1:31 PM Changeset in webkit [275837] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

ASSERTION FAILED: &layoutState().establishedFormattingState(layoutBox.formattingContextRoot()) == this in WebCore::Layout::FormattingState::boxGeometry
https://bugs.webkit.org/show_bug.cgi?id=219905
<rdar://problem/72350516>

The underlying issue (non-synchronized settings update) has been addressed by r275810.

Reviewed by Simon Fraser.

  • platform/mac-wk2/TestExpectations:
1:25 PM Changeset in webkit [275836] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.10.2

Tag Safari-612.1.10.2.

12:38 PM Changeset in webkit [275835] by commit-queue@webkit.org
  • 19 edits
    6 copies
    3 adds in trunk/Source

Initial implementation of WebChromeClient::enumerateImmersiveXRDevices() and XRDeviceProxy
https://bugs.webkit.org/show_bug.cgi?id=224353

Patch by Ada Chan <ada.chan@apple.com> on 2021-04-12
Source/WebCore:

Reviewed by Dean Jackson.

Remove PlatformXRDeviceCocoa as WebKit::XRDeviceProxy will be implementing PlatformXR::Device.
Implement the encode/decode methods to enable PlatformXR::Device::FrameData to
be sent over IPC.

  • platform/xr/PlatformXR.h:

(PlatformXR::Device::trackingAndRenderingClient const):
(PlatformXR::Device::FrameData::FloatQuaternion::encode const):
(PlatformXR::Device::FrameData::FloatQuaternion::decode):
(PlatformXR::Device::FrameData::Pose::encode const):
(PlatformXR::Device::FrameData::Pose::decode):
(PlatformXR::Device::FrameData::Fov::encode const):
(PlatformXR::Device::FrameData::Fov::decode):
(PlatformXR::Device::FrameData::View::encode const):
(PlatformXR::Device::FrameData::View::decode):
(PlatformXR::Device::FrameData::StageParameters::encode const):
(PlatformXR::Device::FrameData::StageParameters::decode):
(PlatformXR::Device::FrameData::LayerData::encode const):
(PlatformXR::Device::FrameData::LayerData::decode):
(PlatformXR::Device::FrameData::encode const):
(PlatformXR::Device::FrameData::decode):

  • platform/xr/cocoa/PlatformXRCocoa.h:

(): Deleted.

Source/WebKit:

Reviewed by Dean Jackson

  • Add XRDeviceProxy which implements PlatformXR::Device.
  • Implement WebChromeClient::enumerateImmersiveXRDevices(), which calls PlatformXRSystemProxy

to get the list of XRDeviceProxy.

  • XRDeviceProxy goes through PlatformXRSystemProxy to handle its operations.

PlatformXRSystemProxy sends messages over IPC to PlatformXRSystem on the UI process side,
which handles XR device discovery and manages sessions via the PlatformXRCoordinator interface.
PlatformXRSystem::xrCoordinator() returns null for now and will be handled in a later patch.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Platform/Logging.h:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):
(headers_for_type):

  • Shared/Cocoa/XRDeviceProxy.h: Added.
  • Shared/Cocoa/XRDeviceProxy.mm: Added.

(WebKit::XRDeviceProxy::create):
(WebKit::XRDeviceProxy::XRDeviceProxy):
Initialize its data members based on the XRDeviceInfo passed in.
Keep a weak pointer to PlatformXRSystemProxy (as PlatformXRSystemProxy has
strong references to its list of XRDeviceProxy).
(WebKit::XRDeviceProxy::sessionDidEnd):
Notify the TrackingAndRenderingClient that the session has ended.
(WebKit::XRDeviceProxy::initializeTrackingAndRendering):
(WebKit::XRDeviceProxy::shutDownTrackingAndRendering):
(WebKit::XRDeviceProxy::views const):
Return left and right views if the device supports stereo rendering.
Otherwise return just one view.
(WebKit::XRDeviceProxy::requestFrame):

  • Shared/WebCoreArgumentCoders.h:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/PlatformXRCoordinator.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.

Initial interface for communicating with the platform regarding XR devices and sessions.
For now, the interface covers session creation and termination, and scheduling frame updates.

  • UIProcess/Cocoa/PlatformXRSystem.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • UIProcess/Cocoa/PlatformXRSystem.messages.in: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • UIProcess/Cocoa/PlatformXRSystem.mm: Added.

(WebKit::PlatformXRSystem::PlatformXRSystem):
(WebKit::PlatformXRSystem::~PlatformXRSystem):
(WebKit::PlatformXRSystem::invalidate):
End any existing session on invalidation.
(WebKit::PlatformXRSystem::enumerateImmersiveXRDevices):
(WebKit::PlatformXRSystem::initializeTrackingAndRendering):
(WebKit::PlatformXRSystem::shutDownTrackingAndRendering):
(WebKit::PlatformXRSystem::requestFrame):
(WebKit::PlatformXRSystem::xrCoordinator):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didAttachToRunningProcess):
Set up the PlatformXRSystem held by the WebPageProxy.
(WebKit::WebPageProxy::resetState):
Invalidate m_xrSystem so existing session is ended properly.

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/HighPerformanceGPUManager.h:

Include WeakHashSet.h due to recent type change of m_processesRequiringHighPerformance
from HashSet to WeakHashSet.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::enumerateImmersiveXRDevices):
Get the list of XRDeviceInfo that represents the immersive devices returned
from PlatformXRSystem. Reuse any existing XRDeviceProxy instances that have the same
XRDeviceIdentifier. Otherwise, create new ones.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::xrSystemProxy):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/cocoa/PlatformXRSystemProxy.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • WebProcess/cocoa/PlatformXRSystemProxy.messages.in: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • WebProcess/cocoa/PlatformXRSystemProxy.mm: Added.

(WebKit::PlatformXRSystemProxy::PlatformXRSystemProxy):
(WebKit::PlatformXRSystemProxy::~PlatformXRSystemProxy):
(WebKit::PlatformXRSystemProxy::enumerateImmersiveXRDevices):
(WebKit::PlatformXRSystemProxy::initializeTrackingAndRendering):
(WebKit::PlatformXRSystemProxy::shutDownTrackingAndRendering):
(WebKit::PlatformXRSystemProxy::requestFrame):
(WebKit::PlatformXRSystemProxy::sessionDidEnd):
(WebKit::PlatformXRSystemProxy::deviceByIdentifier):

12:31 PM Changeset in webkit [275834] by graouts@webkit.org
  • 5 edits in trunk

border-image-width computed values should be a calc() value if it contains a percentage
https://bugs.webkit.org/show_bug.cgi?id=224420

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

We now pass the final test that was a FAIL result for the border-image-width computed style test.
We also pass a fair few border-image-width interpolation tests since we used to fail them as a
result of the expected value being expected to be a resolved value rather than a calc() value
due the computed style we returned for such values. There are a few PASS results than became
FAIL results because we now correctly expect a calc() value, but we return the keyframe value
as-is for 0 and 1 progress, a bug we will fix shortly.

  • web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed-expected.txt:

Source/WebCore:

When handling calc() values containing a percentage, we must retain the calc() form when creating
the computed style for border-image-width.

  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapNinePieceImageQuad):

12:20 PM Changeset in webkit [275833] by Ruben Turcios
  • 8 edits in branches/safari-612.1.10-branch/Source

Versioning.

WebKit-7612.1.10.2

12:01 PM Changeset in webkit [275832] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/Source/ThirdParty/ANGLE

Crash in webgl/2.0.y/conformance/glsl/misc/uninitialized-local-global-variables.html ANGLE+METAL
https://bugs.webkit.org/show_bug.cgi?id=223923

Anonymous structs require a name in MSL, add a default name ANGLEunnamed$id to any structs.
Also add a unit test to ensure this works.
Patch by Kyle Piddington <Kyle Piddington> on 2021-04-12
Reviewed by Kenneth Russell.

  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:

(sh::Separator::Separator):
(sh::SeparateCompoundStructDeclarations):

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.h:
  • src/tests/BUILD.gn:
  • src/tests/angle_unittests.gni:
  • src/tests/compiler_tests/MSLOutput_Test.cpp:
11:48 AM Changeset in webkit [275831] by youenn@apple.com
  • 9 edits in trunk

Block loading for port 10080
https://bugs.webkit.org/show_bug.cgi?id=224432

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-bad-port.any-expected.txt:
  • web-platform-tests/fetch/api/request/request-bad-port.any.js:
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.js:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WTF:

Follow Chrome and Firefox by blocking port 10080.

  • wtf/URL.cpp:

(WTF::portAllowed):

11:45 AM Changeset in webkit [275830] by youenn@apple.com
  • 12 edits
    3 adds in trunk

Add support for RTCEncodedFrame metadata
https://bugs.webkit.org/show_bug.cgi?id=224430

Reviewed by Eric Carlson.

Source/WebCore:

Expose metadata given from backend.
Audio sender side uses a regular TransformableFrameInterface instead of a TransformableAudioFrameInterface.
Make sure to not call GetHeader() in that case.

Test: http/wpt/webrtc/metadata-transform.html

  • Modules/mediastream/RTCEncodedAudioFrame.cpp:

(WebCore::RTCEncodedAudioFrame::timestamp const):
(WebCore::RTCEncodedAudioFrame::getMetadata):

  • Modules/mediastream/RTCEncodedAudioFrame.h:
  • Modules/mediastream/RTCEncodedAudioFrame.idl:
  • Modules/mediastream/RTCEncodedVideoFrame.cpp:

(WebCore::RTCEncodedVideoFrame::timestamp const):
(WebCore::RTCEncodedVideoFrame::getMetadata):

  • Modules/mediastream/RTCEncodedVideoFrame.h:
  • Modules/mediastream/RTCEncodedVideoFrame.idl:
  • Modules/mediastream/RTCRtpTransformableFrame.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp:

(WebCore::LibWebRTCRtpTransformBackend::Transform):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.cpp:

(WebCore::LibWebRTCRtpTransformableFrame::LibWebRTCRtpTransformableFrame):
(WebCore::LibWebRTCRtpTransformableFrame::timestamp const):
(WebCore::LibWebRTCRtpTransformableFrame::audioMetadata const):
(WebCore::LibWebRTCRtpTransformableFrame::videoMetadata const):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.h:

LayoutTests:

  • http/wpt/webrtc/metadata-transform-expected.txt: Added.
  • http/wpt/webrtc/metadata-transform-worker.js: Added.

(onrtctransform.process):
(onrtctransform):

  • http/wpt/webrtc/metadata-transform.html: Added.
10:37 AM Changeset in webkit [275829] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Remove unused 'DefaultDefineOwnProperty' extended attribute support
https://bugs.webkit.org/show_bug.cgi?id=224436

Reviewed by Antti Koivisto.

The old CSSStyleDeclaration named-getter based implementation was
the last user so this can now be removed.

  • bindings/scripts/CodeGeneratorJS.pm:

(InstanceOverridesDefineOwnProperty):

  • bindings/scripts/IDLAttributes.json:
10:26 AM Changeset in webkit [275828] by weinig@apple.com
  • 75 edits in trunk/LayoutTests/imported/w3c

Update WPT css/css-color tests
https://bugs.webkit.org/show_bug.cgi?id=224419

Reviewed by Antti Koivisto.

Update to the latest version of the css/css-color tests.

  • web-platform-tests/css/css-color/META.yml:
  • web-platform-tests/css/css-color/hex-001-expected.html:
  • web-platform-tests/css/css-color/hex-001.html:
  • web-platform-tests/css/css-color/hex-002-expected.html:
  • web-platform-tests/css/css-color/hex-002.html:
  • web-platform-tests/css/css-color/hex-003-expected.html:
  • web-platform-tests/css/css-color/hex-003.html:
  • web-platform-tests/css/css-color/hex-004-expected.html:
  • web-platform-tests/css/css-color/hex-004.html:
  • web-platform-tests/css/css-color/hsl-001-expected.html:
  • web-platform-tests/css/css-color/hsl-001.html:
  • web-platform-tests/css/css-color/hsl-002-expected.html:
  • web-platform-tests/css/css-color/hsl-002.html:
  • web-platform-tests/css/css-color/hsl-003-expected.html:
  • web-platform-tests/css/css-color/hsl-003.html:
  • web-platform-tests/css/css-color/hsl-004-expected.html:
  • web-platform-tests/css/css-color/hsl-004.html:
  • web-platform-tests/css/css-color/hsl-005-expected.html:
  • web-platform-tests/css/css-color/hsl-005.html:
  • web-platform-tests/css/css-color/hsl-006-expected.html:
  • web-platform-tests/css/css-color/hsl-006.html:
  • web-platform-tests/css/css-color/hsl-007-expected.html:
  • web-platform-tests/css/css-color/hsl-007.html:
  • web-platform-tests/css/css-color/hsl-008-expected.html:
  • web-platform-tests/css/css-color/hsl-008.html:
  • web-platform-tests/css/css-color/hsla-001-expected.html:
  • web-platform-tests/css/css-color/hsla-001.html:
  • web-platform-tests/css/css-color/hsla-002-expected.html:
  • web-platform-tests/css/css-color/hsla-002.html:
  • web-platform-tests/css/css-color/hsla-003-expected.html:
  • web-platform-tests/css/css-color/hsla-003.html:
  • web-platform-tests/css/css-color/hsla-004-expected.html:
  • web-platform-tests/css/css-color/hsla-004.html:
  • web-platform-tests/css/css-color/hsla-005-expected.html:
  • web-platform-tests/css/css-color/hsla-005.html:
  • web-platform-tests/css/css-color/hsla-006-expected.html:
  • web-platform-tests/css/css-color/hsla-006.html:
  • web-platform-tests/css/css-color/hsla-007-expected.html:
  • web-platform-tests/css/css-color/hsla-007.html:
  • web-platform-tests/css/css-color/hsla-008-expected.html:
  • web-platform-tests/css/css-color/hsla-008.html:
  • web-platform-tests/css/css-color/rgb-001-expected.html:
  • web-platform-tests/css/css-color/rgb-001.html:
  • web-platform-tests/css/css-color/rgb-002-expected.html:
  • web-platform-tests/css/css-color/rgb-002.html:
  • web-platform-tests/css/css-color/rgb-003-expected.html:
  • web-platform-tests/css/css-color/rgb-003.html:
  • web-platform-tests/css/css-color/rgb-004-expected.html:
  • web-platform-tests/css/css-color/rgb-004.html:
  • web-platform-tests/css/css-color/rgb-005-expected.html:
  • web-platform-tests/css/css-color/rgb-005.html:
  • web-platform-tests/css/css-color/rgb-006-expected.html:
  • web-platform-tests/css/css-color/rgb-006.html:
  • web-platform-tests/css/css-color/rgb-007-expected.html:
  • web-platform-tests/css/css-color/rgb-007.html:
  • web-platform-tests/css/css-color/rgb-008-expected.html:
  • web-platform-tests/css/css-color/rgb-008.html:
  • web-platform-tests/css/css-color/rgba-001-expected.html:
  • web-platform-tests/css/css-color/rgba-001.html:
  • web-platform-tests/css/css-color/rgba-002-expected.html:
  • web-platform-tests/css/css-color/rgba-002.html:
  • web-platform-tests/css/css-color/rgba-003-expected.html:
  • web-platform-tests/css/css-color/rgba-003.html:
  • web-platform-tests/css/css-color/rgba-004-expected.html:
  • web-platform-tests/css/css-color/rgba-004.html:
  • web-platform-tests/css/css-color/rgba-005-expected.html:
  • web-platform-tests/css/css-color/rgba-005.html:
  • web-platform-tests/css/css-color/rgba-006-expected.html:
  • web-platform-tests/css/css-color/rgba-006.html:
  • web-platform-tests/css/css-color/rgba-007-expected.html:
  • web-platform-tests/css/css-color/rgba-007.html:
  • web-platform-tests/css/css-color/rgba-008-expected.html:
  • web-platform-tests/css/css-color/rgba-008.html:
  • web-platform-tests/css/css-color/w3c-import.log:
10:18 AM Changeset in webkit [275827] by commit-queue@webkit.org
  • 9 edits in trunk

[GStreamer][WebRTC] An audio track should be muted when capture is interrupted by the OS.
https://bugs.webkit.org/show_bug.cgi?id=196606

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-12
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Add basic interruption support in the audio capture source and mock audio capture source.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:

(WebCore::GStreamerAudioCaptureSource::interrupted const):
(WebCore::GStreamerAudioCaptureSource::setInterruptedForTesting):

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::setupPipeline):
(WebCore::GStreamerCapturer::interrupted const):
(WebCore::GStreamerCapturer::setInterrupted):

  • platform/mediastream/gstreamer/GStreamerCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:

(WebCore::MockRealtimeAudioSourceGStreamer::setInterruptedForTesting):

  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:

LayoutTests:

  • platform/glib/TestExpectations: fast/mediastream/media-stream-track-interrupted.html is now passing.
9:53 AM Changeset in webkit [275826] by weinig@apple.com
  • 6 edits in trunk

Update color-contrast() to support a target contrast ratio
https://bugs.webkit.org/show_bug.cgi?id=224411

Reviewed by Antti Koivisto.

Source/WebCore:

Updated fast/css/parsing-color-contrast.html with new test cases.

  • css/CSSValueKeywords.in:

Add new keywords, AA and AA-large which are constants for contrast ratios of 4.5
and 3.0 respectively.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
Remove now incorrect comment about adding support for fallback as fallback
has been removed from the spec.

(WebCore::CSSPropertyParserHelpers::selectFirstColorThatMeetsOrExceedsTargetContrast):
(WebCore::CSSPropertyParserHelpers::selectFirstColorWithHighestContrast):
(WebCore::CSSPropertyParserHelpers::parseColorContrastFunctionParameters):
Add support for the new optional target contrast ratio in color-contrast() that was
recently added to CSS Color 5.

LayoutTests:

Add tests and update results for target contrast ratios in color-contrast().

  • fast/css/parsing-color-contrast-expected.txt:
  • fast/css/parsing-color-contrast.html:
9:49 AM Changeset in webkit [275825] by Antti Koivisto
  • 7 edits
    2 adds in trunk

Descendant style relations are sometimes reset when they shouldn't
https://bugs.webkit.org/show_bug.cgi?id=224431
rdar://76267783

Reviewed by Sam Weinig.
Source/WebCore:

Some style relations computed during resolution of descendants are set on a parent element.
The parent element shouldn't reset them unless we are actually also computing the descendants.

Test: fast/css/first-letter-style-relation-crash.html

  • dom/Element.cpp:

(WebCore::Element::resetStyleRelations):
(WebCore::Element::resetChildStyleRelations):
(WebCore::Element::resetAllDescendantStyleRelations):

Split resetStyleRelations into separate parts.

  • dom/Element.h:

(WebCore::Element::styleAffectedByEmpty const):
(WebCore::Element::childrenAffectedByForwardPositionalRules const):
(WebCore::Element::descendantsAffectedByForwardPositionalRules const):
(WebCore::Element::childrenAffectedByBackwardPositionalRules const):
(WebCore::Element::descendantsAffectedByBackwardPositionalRules const):
(WebCore::Element::childrenAffectedByPropertyBasedBackwardPositionalRules const):
(WebCore::Element::setStyleAffectedByEmpty):
(WebCore::Element::setChildrenAffectedByForwardPositionalRules):
(WebCore::Element::setDescendantsAffectedByForwardPositionalRules):
(WebCore::Element::setChildrenAffectedByBackwardPositionalRules):
(WebCore::Element::setDescendantsAffectedByBackwardPositionalRules):
(WebCore::Element::setChildrenAffectedByPropertyBasedBackwardPositionalRules):

  • dom/ElementRareData.h:

(WebCore::ElementRareData::resetStyleRelations): Deleted.

  • dom/Node.h:

(WebCore::Node::StyleBitfields::clearFlags):
(WebCore::Node::clearStyleFlags):
(WebCore::Node::StyleBitfields::dynamicStyleRelations const): Deleted.
(WebCore::Node::StyleBitfields::setDynamicStyleRelation): Deleted.
(WebCore::Node::StyleBitfields::clearDynamicStyleRelations): Deleted.
(WebCore::Node::hasDynamicStyleRelationFlag const): Deleted.
(WebCore::Node::setDynamicStyleRelationFlag): Deleted.

Remove the meaningless DynamicStyleRelation concept and merge these flags with the others.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

Only clear the descendant or child style relation bits if we are actually re-resolving
descendants or children.

LayoutTests:

  • fast/css/first-letter-style-relation-crash-expected.txt: Added.
  • fast/css/first-letter-style-relation-crash.html: Added.
9:36 AM Changeset in webkit [275824] by youenn@apple.com
  • 23 edits in trunk/LayoutTests/imported/w3c

Update WPT streams test to ToT
https://bugs.webkit.org/show_bug.cgi?id=224284

Reviewed by Alex Christensen.

  • web-platform-tests/streams/README.md:
  • web-platform-tests/streams/piping/general.any-expected.txt:
  • web-platform-tests/streams/piping/general.any.js:

(promise_test.t.const.rs.new.ReadableStream.start):

  • web-platform-tests/streams/piping/general.any.worker-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.worker-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.any-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.any.js:

(test):

  • web-platform-tests/streams/readable-byte-streams/general.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/async-iterator.any-expected.txt:
  • web-platform-tests/streams/readable-streams/async-iterator.any.js:

(promise_test.async const):
(promise_test):

  • web-platform-tests/streams/readable-streams/async-iterator.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/default-reader.any-expected.txt:
  • web-platform-tests/streams/readable-streams/default-reader.any.js:

(promise_test.t.const.rs.new.ReadableStream.start):

  • web-platform-tests/streams/readable-streams/default-reader.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/general.any-expected.txt:
  • web-platform-tests/streams/readable-streams/general.any.js:

(promise_test):

  • web-platform-tests/streams/readable-streams/general.any.worker-expected.txt:
  • web-platform-tests/streams/transform-streams/patched-global.any-expected.txt:
  • web-platform-tests/streams/transform-streams/patched-global.any.js:
  • web-platform-tests/streams/transform-streams/patched-global.any.worker-expected.txt:
8:08 AM Changeset in webkit [275823] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Clamp overridingContentLogicalWidth/Height to zero
https://bugs.webkit.org/show_bug.cgi?id=224310

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-12
Reviewed by Sergio Villar Senin.

Source/WebCore:

Clamp overridingContentLogicalWidth/Height to zero.

Test: fast/css-grid-layout/negative-overriding-content-logical-height-crash.html

  • rendering/RenderBox.h:

(WebCore::RenderBox::overridingContentLogicalWidth const):
(WebCore::RenderBox::overridingContentLogicalHeight const):

LayoutTests:

Add test for this.

  • fast/css-grid-layout/negative-overriding-content-logical-height-crash-expected.txt: Added.
  • fast/css-grid-layout/negative-overriding-content-logical-height-crash.html: Added.
6:52 AM Changeset in webkit [275822] by youenn@apple.com
  • 5 edits in trunk/LayoutTests

[ macOS wk2 ] webrtc/libwebrtc/release-while-creating-offer.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=224256
<rdar://problem/76296126>

Reviewed by Eric Carlson.

Pass a valid candidate to remove the rejection message.

  • platform/mac-wk2/TestExpectations:
  • webrtc/libwebrtc/release-while-creating-offer-expected.txt:
  • webrtc/libwebrtc/release-while-creating-offer.html:
  • webrtc/libwebrtc/release-while-setting-local-description.html:
6:46 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
6:41 AM Changeset in webkit [275821] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[MSE][GStreamer] Crash in WebCore::PlaybackPipeline::addSourceBuffer when setting duration and preload is set to none
https://bugs.webkit.org/show_bug.cgi?id=224260

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-12
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Disable delayed loading for the GStreamer MSE player, we want the MSE source element to be
configured ASAP, otherwise the playback pipeline will fail in various ways (duration
notifications sent too early, crashes in addSourceBuffer, crashes in attachTracks, and so
on).

Test: media/media-source/media-source-no-preload-set-duration-crash.html

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):

LayoutTests:

  • media/media-source/media-source-no-preload-set-duration-crash-expected.txt: Added.
  • media/media-source/media-source-no-preload-set-duration-crash.html: Added.
6:23 AM Changeset in webkit [275820] by Philippe Normand
  • 2 edits in trunk/Tools/buildstream

Unreviewed, update libsoup 2.99.3 ref

  • elements/sdk/libsoup3.bst: Previous ref had 2.99.2 version set in meson.build.
6:15 AM Changeset in webkit [275819] by youenn@apple.com
  • 18 edits
    3 adds in trunk

Make sure all frames get transformed when overriding a transform with another one
https://bugs.webkit.org/show_bug.cgi?id=224367

Reviewed by Eric Carlson.

Source/WebCore:

We were previously removing the old transform, then attaching the new transforn.
There was a time where no transform was attached and a few samples could get missed.
To prevent this, we add a new code path where we transfer a backend from one transform to another.
In that case, we synchronoulsy change the input callback from the old one to the new one instead of setting it to null in between.

Test: http/wpt/webrtc/change-encoded-transform.html

  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::setTransform):

  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpReceiverBackend.h:
  • Modules/mediastream/RTCRtpScriptTransform.cpp:

(WebCore::RTCRtpScriptTransform::~RTCRtpScriptTransform):
(WebCore::RTCRtpScriptTransform::willClearBackend):
(WebCore::RTCRtpScriptTransform::clear):

  • Modules/mediastream/RTCRtpScriptTransform.h:
  • Modules/mediastream/RTCRtpScriptTransformer.cpp:

(WebCore::RTCRtpScriptTransformer::clear):

  • Modules/mediastream/RTCRtpScriptTransformer.h:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::setTransform):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/RTCRtpTransform.cpp:

(WebCore::RTCRtpTransform::from):
(WebCore::RTCRtpTransform::attachToReceiver):
(WebCore::RTCRtpTransform::attachToSender):
(WebCore::RTCRtpTransform::backendTransferedToNewTransform):

  • Modules/mediastream/RTCRtpTransform.h:

(WebCore::RTCRtpTransform::takeBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:

(WebCore::LibWebRTCRtpReceiverBackend::rtcRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::LibWebRTCRtpSenderBackend):
(WebCore::LibWebRTCRtpSenderBackend::rtcRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

LayoutTests:

  • http/wpt/webrtc/change-encoded-transform-expected.txt: Added.
  • http/wpt/webrtc/change-encoded-transform.html: Added.
  • http/wpt/webrtc/change-encoded-transform.js: Added.

(appendToBuffer):
(onrtctransform.process):
(onrtctransform):

5:26 AM Changeset in webkit [275818] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Out of memory crash with find('a'.repeat(230))
https://bugs.webkit.org/show_bug.cgi?id=223787

Source/WebCore:

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-12
Reviewed by Ryosuke Niwa.

SearchBuffer::SearchBuffer allocates a buffer whose capacity is at least 8 times the size of
the searched text and at least 8192. It's possible to hit an out-of-memory crash by passing
a very long string to window.find. Since there is no reason to search for arbitrary large
text, limit it to a maximum length of 64kB.

Test: editing/find/find-long-string-crash.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::find const): Exit early if the string length is larger than a limit.

LayoutTests:

Patch by Frederic Wang <fred.wang@free.fr> on 2021-04-12
Reviewed by Ryosuke Niwa.

Add regression test.

  • editing/find/find-short-and-long-strings-expected.txt: Added.
  • editing/find/find-short-and-long-strings.html: Added.
2:26 AM Changeset in webkit [275817] by Chris Lord
  • 17 edits
    4 adds in trunk/Source/WebCore

Refactor font loading to make it possible for Worker to implement it
https://bugs.webkit.org/show_bug.cgi?id=224277

Reviewed by Darin Adler.

Introduce FontLoadRequest and FontLoadRequestClient as an abstraction
separate from CachedFont and CachedFontClient to allow for separate
implementations. Also move Document-specific font-loading behaviour
from CSSFontSelector into Document and add non-Document specific
accessors to ScriptExecutionContext.

These changes should allow for custom font loading to be implementable
on a Worker, which will be necessary for FontFace support in
OffscreenCanvas.

No new tests, no change in behavior.

  • Headers.cmake: Added FontLoadRequest.h, CachedFontLoadRequest.h and DocumentFontLoader.h.
  • Sources.txt: Added DocumentFontLoader.cpp.
  • WebCore.xcodeproj/project.pbxproj: Added files listed above.
  • css/CSSFontFace.cpp: Update to not require Document for custom font loading.

(WebCore::CSSFontFace::appendSources):

  • css/CSSFontFaceSource.cpp: Update to use FontLoadRequest instead of CachedFont.

(WebCore::CSSFontFaceSource::CSSFontFaceSource):
(WebCore::CSSFontFaceSource::~CSSFontFaceSource):
(WebCore::CSSFontFaceSource::opportunisticallyStartFontDataURLLoading):
(WebCore::CSSFontFaceSource::fontLoaded):
(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):
(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):

  • css/CSSFontFaceSource.h:
  • css/CSSFontFaceSrcValue.cpp: Update to use FontLoadRequest and ScriptExecutionContext instead of CachedResourceLoader.

(WebCore::CSSFontFaceSrcValue::fontLoadRequest):

  • css/CSSFontFaceSrcValue.h:
  • css/CSSFontSelector.cpp: Remove Document-specific code.

(WebCore::CSSFontSelector::CSSFontSelector):
(WebCore::CSSFontSelector::~CSSFontSelector):
(WebCore::CSSFontSelector::clearFonts):

  • css/CSSFontSelector.h:
  • dom/Document.cpp: Implement ScriptExecutionContext::fontLoadRequest and ::beginLoadingFontSoon.

(WebCore::Document::~Document):
(WebCore::Document::removedLastRef):
(WebCore::Document::resolveStyle):
(WebCore::Document::suspendFontLoading):
(WebCore::Document::fontLoadRequest):
(WebCore::Document::beginLoadingFontSoon):
(WebCore::Document::suspend):
(WebCore::Document::resume):

  • dom/Document.h:
  • dom/DocumentFontLoader.cpp: Added. New class to handle Document-specific font-loading code that was previously in CSSFontSelector and CSSFontFaceSrcValue.

(WebCore::DocumentFontLoader::DocumentFontLoader):
(WebCore::DocumentFontLoader::~DocumentFontLoader):
(WebCore::DocumentFontLoader::cachedFont):
(WebCore::DocumentFontLoader::beginLoadingFontSoon):
(WebCore::DocumentFontLoader::loadPendingFonts):
(WebCore::DocumentFontLoader::fontLoadingTimerFired):
(WebCore::DocumentFontLoader::stopLoadingAndClearFonts):
(WebCore::DocumentFontLoader::suspendFontLoading):
(WebCore::DocumentFontLoader::resumeFontLoading):

  • dom/DocumentFontLoader.h:
  • dom/ScriptExecutionContext.cpp: Add functions to initiate font load requests.

(WebCore::ScriptExecutionContext::fontLoadRequest):

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::beginLoadingFontSoon):

  • loader/DocumentLoader.cpp: CSSFontSelector::suspendFontLoadingTimer is now Document::suspendFontLoading.

(WebCore::DocumentLoader::stopLoading):

  • loader/FontLoadRequest.h: Added. An interface to manage font loading that abstracts some of the behaviour of CachedResource, CachedFont and CachedFontClient.

(WebCore::FontLoadRequestClient::fontLoaded):
(WebCore::FontLoadRequestClient::isCachedFontLoadRequest const):

  • loader/cache/CachedFontLoadRequest.h: Added. An implementation of FontLoadRequest for CachedFont.
  • workers/WorkerGlobalScope.cpp: Remove now-redundant CSSFontSelector call.

(WebCore::WorkerGlobalScope::~WorkerGlobalScope):

1:13 AM Changeset in webkit [275816] by Adrian Perez de Castro
  • 17 edits in trunk/Source

[WPE][GTK] Use g_object_notify_by_pspec() whenever possible
https://bugs.webkit.org/show_bug.cgi?id=224366

Reviewed by Carlos Garcia Campos.

Keep a static array with the GParamSpec pointer for each property, and trigger
property change notifications using g_object_notify_by_pspec() to avoid looking
up by its name each time.

Source/WebCore:

No new tests needed.

  • platform/graphics/gstreamer/TextCombinerPadGStreamer.cpp:

(webkit_text_combiner_pad_class_init):

Source/WebKit:

  • Shared/API/glib/WebKitURIRequest.cpp:

(webkit_uri_request_class_init):
(webkit_uri_request_set_uri):

  • UIProcess/API/glib/WebKitDownload.cpp:

(webkitDownloadDecideDestination):
(webkit_download_class_init):
(webkitDownloadSetResponse):
(webkitDownloadNotifyProgress):
(webkit_download_set_destination):
(webkit_download_set_allow_overwrite):

  • UIProcess/API/glib/WebKitEditorState.cpp:

(webkit_editor_state_class_init):
(webkitEditorStateSetTypingAttributes):

  • UIProcess/API/glib/WebKitGeolocationManager.cpp:

(webkitGeolocationManagerSetEnableHighAccuracy):
(webkit_geolocation_manager_class_init):

  • UIProcess/API/glib/WebKitInputMethodContext.cpp:

(webkit_input_method_context_class_init):
(webkit_input_method_context_set_input_purpose):
(webkit_input_method_context_set_input_hints):

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):
(webkit_settings_set_enable_javascript):
(webkit_settings_set_auto_load_images):
(webkit_settings_set_load_icons_ignoring_image_load_setting):
(webkit_settings_set_enable_offline_web_application_cache):
(webkit_settings_set_enable_html5_local_storage):
(webkit_settings_set_enable_html5_database):
(webkit_settings_set_enable_xss_auditor):
(webkit_settings_set_enable_frame_flattening):
(webkit_settings_set_enable_java):
(webkit_settings_set_javascript_can_open_windows_automatically):
(webkit_settings_set_enable_hyperlink_auditing):
(webkit_settings_set_default_font_family):
(webkit_settings_set_monospace_font_family):
(webkit_settings_set_serif_font_family):
(webkit_settings_set_sans_serif_font_family):
(webkit_settings_set_cursive_font_family):
(webkit_settings_set_fantasy_font_family):
(webkit_settings_set_pictograph_font_family):
(webkit_settings_set_default_font_size):
(webkit_settings_set_default_monospace_font_size):
(webkit_settings_set_minimum_font_size):
(webkit_settings_set_default_charset):
(webkit_settings_set_enable_developer_extras):
(webkit_settings_set_enable_resizable_text_areas):
(webkit_settings_set_enable_tabs_to_links):
(webkit_settings_set_enable_dns_prefetching):
(webkit_settings_set_enable_caret_browsing):
(webkit_settings_set_enable_fullscreen):
(webkit_settings_set_print_backgrounds):
(webkit_settings_set_enable_webaudio):
(webkit_settings_set_enable_webgl):
(webkit_settings_set_allow_modal_dialogs):
(webkit_settings_set_zoom_text_only):
(webkit_settings_set_javascript_can_access_clipboard):
(webkit_settings_set_media_playback_requires_user_gesture):
(webkit_settings_set_media_playback_allows_inline):
(webkit_settings_set_draw_compositing_indicators):
(webkit_settings_set_enable_site_specific_quirks):
(webkit_settings_set_enable_page_cache):
(webkit_settings_set_user_agent):
(webkit_settings_set_enable_smooth_scrolling):
(webkit_settings_set_enable_write_console_messages_to_stdout):
(webkit_settings_set_enable_media_stream):
(webkit_settings_set_enable_mock_capture_devices):
(webkit_settings_set_enable_spatial_navigation):
(webkit_settings_set_enable_mediasource):
(webkit_settings_set_enable_encrypted_media):
(webkit_settings_set_enable_media_capabilities):
(webkit_settings_set_allow_file_access_from_file_urls):
(webkit_settings_set_allow_universal_access_from_file_urls):
(webkit_settings_set_allow_top_navigation_to_data_urls):
(webkit_settings_set_hardware_acceleration_policy):
(webkit_settings_set_enable_back_forward_navigation_gestures):
(webkit_settings_set_enable_javascript_markup):
(webkit_settings_set_enable_media):
(webkit_settings_set_media_content_types_requiring_hardware_support):

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextGetProperty):
(webkitWebContextSetProperty):
(webkit_web_context_class_init):
(webkit_web_context_set_use_system_appearance_for_scrollbars):

  • UIProcess/API/glib/WebKitWebResource.cpp:

(webkit_web_resource_class_init):
(webkitWebResourceUpdateURI):
(webkitWebResourceSetResponse):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewSetIsLoading):
(webkitWebViewIsPlayingAudioChanged):
(webkitWebViewUpdateFavicon):
(webkit_web_view_class_init):
(webkitWebViewLoadChanged):
(webkitWebViewDidChangePageID):
(webkit_web_view_set_is_muted):
(webkit_web_view_set_settings):
(webkit_web_view_set_zoom_level):
(webkit_web_view_set_editable):

  • UIProcess/API/glib/WebKitWindowProperties.cpp:

(webkit_window_properties_class_init):
(webkitWindowPropertiesSetGeometry):
(webkitWindowPropertiesSetToolbarVisible):
(webkitWindowPropertiesSetMenubarVisible):
(webkitWindowPropertiesSetStatusbarVisible):
(webkitWindowPropertiesSetLocationbarVisible):
(webkitWindowPropertiesSetScrollbarsVisible):
(webkitWindowPropertiesSetResizable):
(webkitWindowPropertiesSetFullscreen):

  • UIProcess/API/gtk/WebKitColorChooserRequest.cpp:

(webkit_color_chooser_request_class_init):
(webkit_color_chooser_request_set_rgba):

  • UIProcess/API/gtk/WebKitPrintOperation.cpp:

(webkit_print_operation_class_init):
(webkit_print_operation_set_print_settings):
(webkit_print_operation_set_page_setup):

  • UIProcess/API/gtk/WebKitWebInspector.cpp:

(webkit_web_inspector_class_init):

  • WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(webkitWebPageSetURI):
(webkit_web_page_class_init):

1:05 AM Changeset in webkit [275815] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Use DestructionThread::Main for RTCRtpScriptTransform
https://bugs.webkit.org/show_bug.cgi?id=224368
<rdar://76404727>

Reviewed by Eric Carlson.

It is safer to make it DestructionThread::Main to guarantee it is destroyed in main thread.

  • Modules/mediastream/RTCRtpScriptTransform.h:

Apr 11, 2021:

11:02 PM Changeset in webkit [275814] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Unreviewed, reverting r275801.
https://bugs.webkit.org/show_bug.cgi?id=224423

run-jsc-stress-tests output includes a lot of texts

Reverted changeset:

"[JSC] detect infrastructure failure for remote stress tests"
https://bugs.webkit.org/show_bug.cgi?id=222601
https://trac.webkit.org/changeset/275801

8:02 PM Changeset in webkit [275813] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.12

8:00 PM Changeset in webkit [275812] by Ruben Turcios
  • 1 copy in branches/safari-612.1.11-branch

New branch.

3:53 PM Changeset in webkit [275811] by Cameron McCormack
  • 4 edits
    4 adds in trunk

Fix initial horizontal scrollbar position when vertical scrollbar is on the left.
https://bugs.webkit.org/show_bug.cgi?id=224409

Reviewed by Darin Adler.

Source/WebCore:

Scrollable elements that place their vertical scrollbar on the left
(e.g. when they're direction: rtl or when the OS language is RTL and
the relevant setting to always follow OS scrollbar side is used) have
an incorrect scroll origin, which leads to creating a horizontal
scrollbar with an incorrect initial offset. This is because
RenderLayerScrollableArea::computeScrollDimensions runs prior to the
scrollbars being created. So whenever we start or stop having a
(non-overlay) vertical scrollbar on the left, we need to recompute
the scroll origin and fix up the horizontal scrollbar's offset.

Tests: fast/scrolling/rtl-scrollbars-initial-position-dynamic.html

fast/scrolling/rtl-scrollbars-initial-position.html

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::computeScrollDimensions):
(WebCore::RenderLayerScrollableArea::computeScrollOrigin): Split this
out of computeScrollDimensions so we can call it from
updateScrollbarsAfterLayout and updateScrollbarsAfterStyleChange, and
have it ask the horizontal scrollbar to update its offset. We could
condition this on the scroll origin actually having changed, but
that's going to be a similar check that Scrollbar::offsetDidChange
does to ensure the offset value did indeed change. We don't want to
condition this on shouldPlaceBlockDirectionScrollbarOnLeft(), since
that's dependent on the current style, and we may be reacting to a
style change removed the vertical scrollbar on the left.
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterStyleChange):

  • rendering/RenderLayerScrollableArea.h:

LayoutTests:

  • fast/scrolling/rtl-scrollbars-initial-position-dynamic-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position-dynamic.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position.html: Added.
1:11 PM Changeset in webkit [275810] by weinig@apple.com
  • 16 edits in trunk

Simplify WebKitTestRunner preference reset to be more like DRT
https://bugs.webkit.org/show_bug.cgi?id=224410

Reviewed by Darin Adler.

Source/WebKit:

Add WKPreferencesStartBatchingUpdates/WKPreferencesEndBatchingUpdates
to support batching preferences updates by clients.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesStartBatchingUpdates):
(WKPreferencesEndBatchingUpdates):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/WebPreferences.h:

Tools:

  • Use boolWebPreferenceFeatures consistently for accessibilityIsolatedTreeMode
  • Adopt new WKPreferencesStartBatchingUpdates/WKPreferencesEndBatchingUpdates to ensure all preferences updates are batched.
  • Move all preference overrides that can be moved (two still require some specialized handling for now) to TestOptions defaults.
  • Remove now unnecessary platformResetPreferencesToConsistentValues() platform configuration point.
  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionAccessibilityIsolatedTreeMode):

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

(WTR::TestController::initialize):
(WTR::batchUpdatePreferences):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):

  • WebKitTestRunner/TestController.h:

(WTR::TestController::accessibilityIsolatedTreeMode const): Deleted.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::accessibilityIsolatedTreeMode const):

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

12:33 PM Changeset in webkit [275809] by Darin Adler
  • 3 edits in trunk/Source/WebCore

[Mac] Add a missing null check to slider thumb focus rendering
https://bugs.webkit.org/show_bug.cgi?id=224418
rdar://76450584

Reviewed by Sam Weinig.

  • rendering/RenderThemeMac.h: Changed updateFocusedState to take a pointer.
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::updateFocusedState): Check pointer for null. This was the
missing null check.
(WebCore::RenderThemeMac::paintSliderThumb): Pass delegate pointer instead of reference.
Also made sure we always update the focused state. Old code took the approach of just not
updating focus state when it encountered null for the focus delegate, but that's not a
good strategy. In future we may also want to change the focusDelegate function signature
to make it clear it will never return null, but that's not critical right now.
(WebCore::RenderThemeMac::setSearchCellState): Update since updateFocusedState now
takes a pointer.

10:06 AM Changeset in webkit [275808] by weinig@apple.com
  • 26 edits
    2 moves
    1 add
    1 delete in trunk

Reduce compile time and binary size cost of enabling proper CSSStyleDeclaration property access behavior
https://bugs.webkit.org/show_bug.cgi?id=222518
<rdar://problem/75136887>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/cssom/cssstyledeclaration-properties-expected.txt:

Update test result now that it is passing.

Source/WebCore:

Re-implement proper (not using named-getters) support for the CSSStyleDeclaration bindings
using a new DelegateToSharedSyntheticAttribute extended atttribute which allows IDL attributes
to share a custom getter / setter implementation and delegate their implementation to it. When
using this functionality, the synthetic attribute's implementation is passed the original property
name so it can implement functionality based on it.

We use this for CSSStyleDeclaration by breaking the huge list of generated properties into
four groups, each with their own synthetic attribute. The groups are based on the different
transformation rules in the spec.

  • bindings/js/JSDOMAttribute.h:

(WebCore::IDLAttribute::setPassingPropertyName):
(WebCore::IDLAttribute::getPassingPropertyName):
Add overloads of get/set that pass the property name to the provided function. These can't
be simple overloads of get/set as MSVC does not allow overloading with only a non-type
template parameters differentiating.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateInterface):
Eagerly generate the any synthetic attributes before the rest of code generation,
matching the behavior of other synthetic constructions like map/set/stringifiers.

(GetAttributeGetterName):
(GetAttributeSetterName):
Add special cases to getter/setter name generation to forward to the generated
name of the synthetic attribute when delegating.

(GenerateImplementation):
Extract attribute function forward declaration genation into a new GenerateAttributeGetterAndSetterDeclaration
subroutine and use it for generation of both normal and synthetic attributes. Also adds
synthetic attributes to the list of attributes to generate function implementations for.

(GenerateAttributeGetterAndSetterDeclaration):
Extracted from GenerateImplementation. Adds extra condition to bail if DelegateToSharedSyntheticAttribute
is specified.

(GenerateAttributeGetterBodyDefinition):
Add support for the new CallWith=PropertyName extended attribute by adding a PropertyName
argument to the signature of getter body if it is present. Removes now unnecessary support
for the CSSProperty extended attribute.

(GenerateAttributeGetterTrampolineDefinition):
Switch function name from get to getPassingPropertyName if CallWith=PropertyName is specified.

(GenerateAttributeGetterDefinition):
Adds extra condition to bail if DelegateToSharedSyntheticAttribute is specified.

(GenerateAttributeSetterBodyDefinition):
Add support for the new CallWith=PropertyName extended attribute by adding a PropertyName
argument to the signature of getter body if it is present. Removes now unnecessary support
for the CSSProperty extended attribute.

(GenerateAttributeSetterTrampolineDefinition):
Switch function name from get to getPassingPropertyName if CallWith=PropertyName is specified.

(GenerateAttributeSetterDefinition):
Adds extra condition to bail if DelegateToSharedSyntheticAttribute is specified.

(GenerateCallWith):
Add support for the PropertyName value to CallWith.

(MakeSharedSyntheticAttribute):
Helper to generate the synthetic attribute from the base attribute with DelegateToSharedSyntheticAttribute
specefied. Maintains all existing extended attributes of the base attribute except
DelegateToSharedSyntheticAttribute is replaced with IsSharedSyntheticAttribute to avoid
infinite recursion.

(AddSharedSyntheticAttributesIfNeeded):
Helper to find all delegating attributes and generate / store the synthetic attributes.

(GetSharedSyntheticAttribute):
Helper to get the corresponding synthetic attribute given an attribute with
DelegateToSharedSyntheticAttribute specified on it.

  • bindings/scripts/IDLAttributes.json:

Removes CSSProperty. Adds DelegateToSharedSyntheticAttribute. Adds PropertyName value to
CallWith and SetterCallWith.

  • css/CSSStyleDeclaration.cpp:

(WebCore::lookupCSSPropertyFromIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForCamelCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForCamelCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForWebKitCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForWebKitCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForDashedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForDashedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForEpubCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForEpubCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::namedItem): Deleted.
(WebCore::CSSStyleDeclaration::setNamedItem): Deleted.
(WebCore::CSSStyleDeclaration::supportedPropertyNames const): Deleted.

  • css/CSSStyleDeclaration.h:

Replace named-getter based implementation with helpers based on the definitions
in the CSSOM spec (plus one special set for 'epub' specializations we currently
maintain).

  • css/CSSStyleDeclaration.idl:

Remove !ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION sections now that
we can fully support ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION.

  • css/makeprop.pl:

Remove !ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION sections now that
we can fully support ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION.
Replaces CSSProperty extended attributes with DelegateToSharedSyntheticAttribute and
CallWith=PropertyName, which together allow us to implement all the attributes with just
8 implementation functions.

  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/JSTestCSSProperty.cpp: Removed.
  • bindings/scripts/test/JS/JSTestCSSProperty.h: Removed.
  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp: Added.
  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h: Added.
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestCSSProperty.idl: Removed.
  • bindings/scripts/test/TestDelegateToSharedSyntheticAttribute.idl: Added.

Replace CSSProperty tests with DelegateToSharedSyntheticAttribute tests and update results
all around for new generation.

Source/WTF:

  • wtf/PlatformEnable.h:

Remove ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION, as it is now the default and on everwhere.

LayoutTests:

  • fast/css/style-enumerate-properties-expected.txt:
  • fast/css/style-enumerate-properties.html:
  • fast/dom/domListEnumeration-expected.txt:
  • fast/dom/domListEnumeration.html:

Remove existing tests for iteration order, which is not standardized, and not consistent among
browsers. Adds a new one that checks invariants of the 4 groupings of properties which we currently
expect to hold, at least in our implementation.

  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor-expected.txt:
  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor.html:

Update now that the properties are proper attributes on the prototype.

  • js/dom/put-override-should-not-use-ic.html:

Switch to using a DOMStringList as the object that overrides put, since CSSStyleDeclaration no longer does.

  • transitions/transitions-parsing-expected.txt:
  • transitions/transitions-parsing.html:

Remove Object.keys() aspect of the test, which is no longer meaningful since the
properties should no longer exist in the result set.

7:35 AM Changeset in webkit [275807] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Store InputType in a Ref before calling setValueAsDecimal
https://bugs.webkit.org/show_bug.cgi?id=223535

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-11
Reviewed by Ryosuke Niwa.

Store InputType in a Ref before calling setValueAsDecimal.

  • html/InputType.cpp:

(WebCore::InputType::applyStep):

5:04 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)

Apr 10, 2021:

7:57 PM Changeset in webkit [275806] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Use WeakHashSet<WebProcessProxy> instead of HashSet<WebProcessProxy*>
https://bugs.webkit.org/show_bug.cgi?id=224393

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::requestHighPerformanceGPU):
(WebKit::WebProcessProxy::releaseHighPerformanceGPU):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):
(WebKit::WebProcessPool::enableProcessTermination):
(WebKit::WebProcessPool::shouldTerminate):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::startedUsingGamepads):
(WebKit::WebProcessPool::stoppedUsingGamepads):
(WebKit::WebProcessPool::processStoppedUsingGamepads):
(WebKit::WebProcessPool::gamepadConnected):
(WebKit::WebProcessPool::gamepadDisconnected):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):

  • UIProcess/mac/HighPerformanceGPUManager.mm:

(WebKit::HighPerformanceGPUManager::addProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::removeProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::updateState):

5:48 PM Changeset in webkit [275805] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

Crash under WebProcessProxy::shouldSendPendingMessage()
https://bugs.webkit.org/show_bug.cgi?id=224377
<rdar://75329251>

Reviewed by David Kilzer.

We are crashing with a null-dereference of pendingMessage.encoder inside WebProcessProxy::shouldSendPendingMessage().
However, pendingMessage.encoder is a UniqueRef<> and thus cannot be null. Also, we know that the WebProcessProxy
is alive because WebProcessProxy::didFinishLaunching() has a protector.

One thing that I believe could theoretically happen and would not be safe though is AuxiliaryProcessProxy::sendMessage()
being called on a non-main thread. Sending IPC off the main thread is safe in general and something we commonly do with
an IPC::Connection. To make this safe, IPC::Connection uses a Lock to protect its vector of messages. However, sending
IPC via an AuxiliaryProcessProxy is currently not thread safe as it relies on the process state (which gets updated on
the main thread) and access to the m_pendingMessages is not synchronized.

As a speculative fix, I have added logic in AuxiliaryProcessProxy::sendMessage() to dispatch to the main thread if
we're not already on it. I have also used WTF::DestructionThread::MainRunLoop to make sure all AuxiliaryProcessProxy
objects get destroyed on the main thread.

In a follow-up, I am planning to add a release assertion in AuxiliaryProcessProxy::sendMessage() to make sure we're
on a main thread. We'll then be able to drop the "dispatching the main thread" logic. For now though, I think we
should start with the "dispatch to main thread" logic, so that we have a patch that we can cherry-pick to a branch.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::sendMessage):
(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
(WebKit::AuxiliaryProcessProxy::replyToPendingMessages):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:

(WebKit::WebAuthnProcessProxy::singleton):

  • UIProcess/WebProcessProxy.h:
3:41 PM Changeset in webkit [275804] by Chris Dumez
  • 3 edits
    2 adds in trunk

Regression(r275668) Potential null pointer deref in AudioParam::exponentialRampToValueAtTime(float, double)
https://bugs.webkit.org/show_bug.cgi?id=224400
<rdar://76450376>

Reviewed by Ryosuke Niwa.

Source/WebCore:

In r275668, I added null-checks for the AudioContext in AudioParam, now that it holds a WeakPtr to its
context. However, I missed a null-check in AudioParam::exponentialRampToValueAtTime(). This patch adds
the missing check.

Test: webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash.html

  • Modules/webaudio/AudioParam.cpp:

LayoutTests:

Add layout test coverage.

  • webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash-expected.txt: Added.
  • webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash.html: Added.
3:37 PM Changeset in webkit [275803] by Chris Dumez
  • 4 edits in trunk/LayoutTests

[ macOS ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223966
<rdar://problem/76028345>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test as per:

Make sure subtests are run one after another, not in parallel, so that PASS lines are printed out in a
consistent order.

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html:

LayoutTests:

Unskip test that should no longer be flaky.

  • platform/mac/TestExpectations:
3:02 PM Changeset in webkit [275802] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Properly use CompletionHandler when USE_OPENGL_OR_ES is set to OFF
https://bugs.webkit.org/show_bug.cgi?id=224149

Patch by Charlène Wendling <julianaito@posteo.jp> on 2021-04-10
Reviewed by Fujii Hironori.

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:

(WebKit::LayerTreeHost::forceRepaintAsync):

1:14 PM Changeset in webkit [275801] by Angelos Oikonomopoulos
  • 4 edits in trunk/Tools

[JSC] detect infrastructure failure for remote stress tests
https://bugs.webkit.org/show_bug.cgi?id=222601

Reviewed by Yusuke Suzuki.

run-jsc-stress-tests currently detects failures by the absence of
a failure file (that is generated by each failing test). This is
fragile to begin with, as it assumes that tests that fail to run
(e.g. because of an error in the runner script) are successful by
default.

However, the main motivation for this patch is to make execution
more robust when using remote hosts. Currently,
--gnu-parallel-runner will transparently reschedule jobs on a
different host when a remote host goes away. But detectFailures
expects to be able to connect to all hosts and fetch the failure
files, which fails if a remote host is still down when the run
finishes.

Instead, this patch changes the runners to always generate a status
file with the exit code. detectFailures then fetches all status
files from all hosts that are live on exit. Tests that failed to
run are explicitly accounted for as 'noreport' and are set to
ERROR in the final report.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
12:00 PM Changeset in webkit [275800] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] B3 reduce-double-to-float should reduce only when constant double is canonical one to reduced float value
https://bugs.webkit.org/show_bug.cgi?id=224403
<rdar://problem/76259599>

Reviewed by Mark Lam.

When reducing double-constant value to float in B3, we should check whether the double value is a canonical one
which can be converted back from the reduced float value. For example, double 1.1 is not the one since it is truncated
into float 1.1 by removing some bits.

static_cast<double>(static_cast<float>(1.1)) != 1.1

Reducing such a double to float changes the semantics.

  • b3/B3ConstDoubleValue.cpp:

(JSC::B3::ConstDoubleValue::dumpMeta const):

  • b3/B3ConstFloatValue.cpp:

(JSC::B3::ConstFloatValue::dumpMeta const):

  • b3/B3ReduceDoubleToFloat.cpp:
  • b3/B3ReduceStrength.cpp:
  • b3/testb3.h:

(populateWithInterestingValues):

  • b3/testb3_1.cpp:

(run):

  • b3/testb3_3.cpp:

(testConvertDoubleToFloatToDouble):
(testConvertDoubleToFloatEqual):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::JSC_DEFINE_JIT_OPERATION_WITH_ATTRIBUTES):
(JSC::FTL::DFG::LowerDFGToB3::crash):
(JSC::FTL::DFG::ftlUnreachable): Deleted.

10:56 AM Changeset in webkit [275799] by sihui_liu@apple.com
  • 8 edits in trunk/Source/WebKit

Unreviewed, reverting r275794, r275784, r275779

r275779 caused bots to crash and r275794, r275784 didn't fully fix it; reverting the patches to investigate.

Reverted changeset:

"Create WebIDBServer only when it is needed"
https://bugs.webkit.org/show_bug.cgi?id=224305
https://commits.webkit.org/r275779

10:11 AM Changeset in webkit [275798] by Chris Dumez
  • 13 edits
    1 add in trunk

[ macOS ] 3 webaudio/OfflineAudioContext/ layout-tests are flakey text failures
https://bugs.webkit.org/show_bug.cgi?id=224387
<rdar://problem/76468058>

Reviewed by Eric Carlson.

Source/WebCore:

Replace internals.numberOfBaseAudioContexts() test infrastructure with
internals.baseAudioContextIdentifier() & internals.isBaseAudioContextAlive().
This allows tests to check if specific BaseAudioContext instances created by the
tests are actually alive. As a result, the tests are no longer impacted by tests
running before them (and potentially leaking, see Bug 224399) or in parallel to
them in the same process.

This is the same approach we used for leak testing Documents (internals.documentIdentifier()
& internals.isDocumentAlive()).

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::generateAudioContextID):
(WebCore::liveAudioContexts):
(WebCore::BaseAudioContext::BaseAudioContext):
(WebCore::BaseAudioContext::~BaseAudioContext):
(WebCore::BaseAudioContext::isContextAlive):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::contextID const):

  • testing/Internals.cpp:

(WebCore::Internals::countMatchesForText):
(WebCore::Internals::baseAudioContextIdentifier):
(WebCore::Internals::isBaseAudioContextAlive):

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

LayoutTests:

Update OfflineAudioContext leak tests to use the new test infrastructure. They are no longer impacted
by tests running before them or in parallel to them.

  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering.html:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-while-suspended-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-while-suspended.html:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak.html:
  • webaudio/resources/audiocontext-leak-test.js: Added.

(didGCAtLeastOneContext):
(gcAndCheckForContextLeaks):

9:12 AM Changeset in webkit [275797] by mark.lam@apple.com
  • 35 edits
    2 adds in trunk

Enable VMTraps checks in RETURN_IF_EXCEPTION.
https://bugs.webkit.org/show_bug.cgi?id=224078
rdar://75037057

Reviewed by Keith Miller.

JSTests:

  • stress/watchdog-fire-while-in-forEachInIterable.js: Added.

Source/JavaScriptCore:

In pre-existing code, termination of a VM's execution can already be requested
asynchronously (with respect to the mutator thread). For example, sources of such
a request can be a watchdog timer firing, or a request to stop execution issued
from a main web thread to a worker thread.

This request is made by firing the VMTraps::NeedTermination event on VMTraps.
Firing the event here only means setting a flag to indicate the presence of the
request. We still have to wait till the mutator thread reaches one of the
pre-designated polling check points to call VMTraps::handleTraps() in order to
service the request. As a result of this need to wait for a polling check point,
if the mutator is executing in a long running C++ loop, then a termination request
may not be serviced for a long time.

However, we observed that a lot of our C++ loops already have RETURN_IF_EXCEPTION
checks. Hence, if we can check VMTraps::needHandling() there, we can service the
VMTraps events more frequently even in a lot of C++ loops, and get a better response.

Full details of what this patch changes:

  1. Shorten some type and methods names in the VMTraps class to make code easier to read e.g. EventType => Event, needTrapHandling => needHandling.
  1. Remove the VMTraps::Mask class. Mask was introduced so that we can express a concatenation of multiple VMTraps events to form a bit mask in a simple way. In the end, it isn't flexible enough but makes the code more complicated than necessary. It is now replaced by the simpler solution of using macros to define the Events as bit fields. Having Events as bit fields intrinsically make them easy to concatenate (bitwise or) or filter (bitwise and).

Also removed the unused VMTraps::Error class.

  1. Make VMTraps::BitField a uint32_t. There was always unused padding in VMTraps to allow for this. So, we'll just extend it to a full 32-bit to make it easier to add more events in the future for other uses.
  1. Add NeedExceptionHandling as a VMTrap::Event.
  1. Make VMTraps::m_trapBits Atomic. This makes it easier to set and clear the NeedExceptionHandling bit from the mutator without a lock.
  1. RETURN_IF_EXCEPTION now checks VMTraps::m_trapBits (via VMTraps::needHandling()) instead of checking VM::m_exception. If the VMTraps::m_trapBits is non-null, the macro will call VM:hasExceptionsAfterHandlingTraps() to service VMTraps events as appropriate before returning whether an exception is being thrown. The result of VM:hasExceptionsAfterHandlingTraps() will determine if RETURN_IF_EXCEPTION returns or not.

VM:hasExceptionsAfterHandlingTraps() is intentionally designed to take a minimum
of arguments (just the VM as this pointer). This is because RETURN_IF_EXCEPTION
is called from many places, and we would like to minimize code size bloating
from this change.

  1. Simplify paramaters of VMTraps::handleTraps().

NeedDebuggerBreak's callFrame argument was always vm.topCallFrame anyway.
So, the patch makes it explicit, and removes the callFrame parameter.

NeedWatchdogCheck's globalObject argument should have always been
vm.entryScope->globalObject(), and we can remove the globalObject parameter.

Before this, we pass in whichever globalObject was convenient to grab hold of.
However, the idea of the watchdog is to time out the current script executing
on the stack. Hence, it makes sense to identify thay script by the globalObject
in use at VM entry.

So far, the only clients that uses the watchdog mechanism only operates in
scenarios with only one globalObject anyway. So this formalization to use
VMEntryScope's globalObject does not change the expected behavior.

  1. Make the execution of termination more robust. Before reading this, please read the description of the Events in VMTraps.h first, especially the section on NeedTermination.

Here's the life cycle of a termination:

  1. a client requests termination of the current execution stack by calling VM::notifyNeedTermination(). notifyNeedTermination() does 2 things:
  1. fire the NeedTermination event on VMTraps.
  1. set the VM::m_terminationInProgress flag.
  1. Firing the NeedTermination event on VMTraps means setting the NeedTermination bit on VMTraps::m_trapBits. This bit will be polled by the mutator thread later at various designated points (including RETURN_IF_EXCEPTION, which we added in this patch).

Once the mutator sees the NeedTermination bit is set, it will clear the bit
and throw the TerminationException (see VMTraps::handleTraps()). This is
unless the mutator thread is currently in a DeferTermination scope (see (8)
below). If in a DeferTermination scope, then it will not throw the
TerminationException.

Since the NeedTermination bit is cleared, the VM will no longer call
VMTraps::handleTraps() to service the event. If the mutator thread is in
a DeferTermination scope, then on exiting the scope (at scope destruction),
the scope will see that VM::m_terminationInProgress is set, and throw the
deferred TerminationException then.

  1. The TerminationException will trigger unwinding out of the current stack until we get to the outermost VMEntryScope.
  1. At the the outermost VMEntryScope, we will clear VM::m_terminationInProgress if the NeedTermination bit in VMtraps::m_trapBits is cleared.

If the NeedTermination bit is set, then that means we haven't thrown the
TerminationException yet. Currently, clients expect that we must throw the
TerminationException if NeedTermination was requested (again, read comments
at the top of VMTraps.h).

If the NeedTermination bit is set, we'll leave VM::m_terminationInProgress
set until the next time we re-enter the VM and exit to the outermost
VMEntryScope.

  1. The purpose of VM::m_terminationInProgress is to provide a summary of the fact that the VM is in a state of trying to terminate the current stack.

Note that this state is first indicated by the NeedTermination bit being set
in VMTraps::m_trapBits. Then, in VMTraps::handleTraps(), the state is
handed of with the NeedTermination bit being cleared, and the
TerminationException being thrown.

While the VM is in this termination state, we need to prevent new DFG/FTL
JIT code from being compiled and run. The reason is the firing of the
NeedTermination event has invalidated DFG/FTL code on the stack, thereby
allowing their baseline / LLInt versions which have VMTraps polling checks
to run. We don't want to compile new DFG / FTL code and possibly get stuck
in loops in there before the termination is complete.

In operationOptimize(), we check if VM::m_terminationInProgress is set, and
prevent new DFG (and therefore FTL) code from being compiled if needed.
Note: it is easier to check a single flag, VM::m_terminationInProgress,
then to check both if the NeedTermination bit is set or if the
TerminationException is being being thrown.

  1. One complication of being able to service VMTraps in RETURN_IF_EXCEPTION checks is that some of our code (usually for lengthier initializations and bootstrapping) currently does not handle exceptions well, e.g. JSGlobalObject::init(). They rely on the code crashing if an exception is thrown while still initializing.

However, for a worker thread, a TerminationException (requested by the main
thread) may arrive before the initialization is complete. This can lead to
crashes because part of the initialization may be aborted in the presence of
an exception, while other parts still expect everything prior to have been
initialized correctly. For resource exhaustion cases (which is abnormal), it
is OK to crash. For the TerminationException (which can be part of normal
operation), we should not be crashing.

To work around this, we introduce a DeferTermination RAII scope object that we
deploy in this type of initialization code. With the scope in effect,

  1. if a TerminationException arrives but hasn't been thrown yet, it will be deferred till the scope ends before being thrown.
  2. if a TerminationException has already been thrown, the scope will stash the exception, clear it from the VM so that the initialization code can run to completion, and then re-throw the exception when the scope ends.

Currently, we only need to use the DeferTermination scope in a few places
where we know that initialization code will only run for a short period of time.

DeferTermination should not be used for code that can block waiting on an
external event for a long time. Obviously, doing so will prevent the VM
termination mechanism from working.

  1. Replaced llint_slow_path_check_if_exception_is_uncatchable_and_notify_profiler

and operationCheckIfExceptionIsUncatchableAndNotifyProfiler with
llint_slow_path_retrieve_and_clear_exception_if_catchable and
operationRetrieveAndClearExceptionIfCatchable.

The 2 runtime functions doesn't actually do anything to notify a profiler.
So, we drop that part of the name.

After returning from these runtime functions respectively, the previous LLInt
and JIT code, which calls these runtimes functions, would go on to load
VM::m_exception, and then store a nullptr there to clear it. This is wasteful.

This patch changes the runtime function to clear and return the Exception
instead. As a result, the calling LLInt and JIT code is simplified a bit.

Note also that clearing an exception now also entails clearing the
NeedExceptionHandling bit in VMTraps::m_trapBits in an atomic way. The above
change makes it easy to do this clearing with C++ code.

  1. Fix ScriptFunctionCall::call() to handle exceptions correctly. Previously,

it had one case where it propagates an exception, while another eats it.
Change this function to eat the exception in both cases. This is approproiate
because ScriptFunctionCall is only used to execute some Inspector instrumentation
calls. It doesn't make sense to propagate the exception back to user code.

  1. Fix the lazy initialization of JSGlobalObject::m_defaultCollator to be able to

handle the TerminationException.

  1. Not related to TerminationException, but this patch also fixes

MarkedArgumentBuffer::expandCapacity() to use Gigacage::tryMalloc() instead of
Gigacage::malloc(). This is needed as one of the fixes to make the
accompanying test case work.

This patch increases code size by 320K (144K for JSC, 176K for WebCore) measured
on x86_64.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::branchTest32):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::branchTest32):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branchTest32):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::branchTest32):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptFunctionCall::call):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckTraps):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckTraps):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::execute):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_check_traps):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_catch):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

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

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::expandCapacity):

  • runtime/DeferTermination.h: Added.

(JSC::DeferTermination::DeferTermination):
(JSC::DeferTermination::~DeferTermination):

  • runtime/ExceptionScope.h:

(JSC::ExceptionScope::exception const):
(JSC::ExceptionScope::exception): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::finishCreation):

  • runtime/LazyPropertyInlines.h:

(JSC::ElementType>::callFunc):

  • runtime/StringPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/VM.cpp:

(JSC::VM::hasExceptionsAfterHandlingTraps):
(JSC::VM::clearException):
(JSC::VM::setException):
(JSC::VM::throwTerminationException):
(JSC::VM::throwException):

  • runtime/VM.h:

(JSC::VM::terminationInProgress const):
(JSC::VM::setTerminationInProgress):
(JSC::VM::notifyNeedTermination):
(JSC::VM::DeferExceptionScope::DeferExceptionScope):
(JSC::VM::DeferExceptionScope::~DeferExceptionScope):
(JSC::VM::handleTraps): Deleted.
(JSC::VM::needTrapHandling): Deleted.
(JSC::VM::needTrapHandlingAddress): Deleted.
(JSC::VM::setException): Deleted.
(JSC::VM::clearException): Deleted.

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::~VMEntryScope):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::fireTrap):
(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):
(JSC::VMTraps::deferTermination):
(JSC::VMTraps::undoDeferTermination):

  • runtime/VMTraps.h:

(JSC::VMTraps::onlyContainsAsyncEvents):
(JSC::VMTraps::needHandling const):
(JSC::VMTraps::trapBitsAddress):
(JSC::VMTraps::isDeferringTermination const):
(JSC::VMTraps::notifyGrabAllLocks):
(JSC::VMTraps::hasTrapBit):
(JSC::VMTraps::clearTrapBit):
(JSC::VMTraps::setTrapBit):
(JSC::VMTraps::Mask::Mask): Deleted.
(JSC::VMTraps::Mask::allEventTypes): Deleted.
(JSC::VMTraps::Mask::bits const): Deleted.
(JSC::VMTraps::Mask::init): Deleted.
(JSC::VMTraps::interruptingTraps): Deleted.
(JSC::VMTraps::needTrapHandling): Deleted.
(JSC::VMTraps::needTrapHandlingAddress): Deleted.
(JSC::VMTraps::hasTrapForEvent): Deleted.
(JSC::VMTraps::setTrapForEvent): Deleted.
(JSC::VMTraps::clearTrapForEvent): Deleted.

Source/WebCore:

  1. Add DeferTermination in WorkerOrWorkletScriptController::initScript(). This allows us to avoid having to make all exception checking in WorkerOrWorkletScriptController::initScript() very thorough and complete. Currently, they aren't.
  1. Fix WorkerOrWorkletScriptController::evaluate() to handle the TerminationException.
  1. Fix JSEventListener::handleEvent() to handle the TerminationException correctly. Previously, in one case, it was checking scope.exception() for the exception, but the exception has already been taken out of there.
  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::evaluate):
(WebCore::WorkerOrWorkletScriptController::initScript):

5:31 AM Changeset in webkit [275796] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderFlexibleBox::m_hasDefiniteHeight should not need to be mutable
https://bugs.webkit.org/show_bug.cgi?id=224404

Reviewed by Antti Koivisto.

Let's just fix constness instead.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth):
(WebCore::RenderFlexibleBox::crossAxisIntrinsicExtentForChild):
(WebCore::RenderFlexibleBox::useChildAspectRatio):
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite):
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite):
(WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize):
(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth const): Deleted.
(WebCore::RenderFlexibleBox::crossAxisIntrinsicExtentForChild const): Deleted.
(WebCore::RenderFlexibleBox::useChildAspectRatio const): Deleted.
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite const): Deleted.
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const): Deleted.
(WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize const): Deleted.

  • rendering/RenderFlexibleBox.h:
4:20 AM Changeset in webkit [275795] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Improve step description when compile-webkit step is skipped
https://bugs.webkit.org/show_bug.cgi?id=224373

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(CompileWebKit.getResultSummary): Set custom summary when this step is skipped.

  • CISupport/ews-build/steps_unittest.py: Updated unit-tests.
1:39 AM Changeset in webkit [275794] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix test crashes after r275779
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::WebIDBServer): rolling back change on setting thread name as we see crash in
pthread_setname_np.

Note: See TracTimeline for information about the timeline view.