Timeline



Nov 27, 2020:

9:17 PM Changeset in webkit [270215] by Simon Fraser
  • 13 edits
    2 copies in trunk/Source/WebCore

[LFC Display] Implement basic overflow:hidden clipping
https://bugs.webkit.org/show_bug.cgi?id=219311

Reviewed by Zalan Bujtas.

Add BoxClip which represents the clip generated by walking the containing block ancestor chain
of a box. Display::BoxModelBox optionally has a BoxClip if it's a box that paints out of order
(i.e. participates in z-order sorting, so positioned or stacking context). That BoxClip
represents the clip contributed by ancestors, and it's applied before painting this box.
If a Box has overflow clip, then that is also additionally applied before painting the
in-flow descendants of the box.

To compute BoxClip, ask the display box for the relevant containing block for its clip,
which takes the clip from ancestors and appends the clip for that box (if any).

Also move accessors for borderRoundedRect() and innerBorderRoundedRect() onto Display::BoxModelBox
since they are needed for clipping as well as painting.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/css/DisplayBoxClip.cpp: Copied from Source/WebCore/display/css/DisplayBoxModelBox.cpp.

(WebCore::Display::BoxClip::BoxClip):
(WebCore::Display::BoxClip::copy const):
(WebCore::Display::BoxClip::pushClip):
(WebCore::Display::BoxClip::pushRoundedClip):

  • display/css/DisplayBoxClip.h: Copied from Source/WebCore/display/css/DisplayBoxModelBox.cpp.

(WebCore::Display::BoxClip::create):
(WebCore::Display::BoxClip::clipRect const):
(WebCore::Display::BoxClip::affectedByBorderRadius const):
(WebCore::Display::BoxClip::clipStack const):

  • display/css/DisplayBoxDecorationData.cpp:

(WebCore::Display::roundedRectWithIncludedRadii):
(WebCore::Display::roundedInsetBorderForRect):

  • display/css/DisplayBoxDecorationData.h:
  • display/css/DisplayBoxDecorationPainter.cpp:

(WebCore::Display::BoxDecorationPainter::innerBorderRoundedRect const):
(WebCore::Display::roundedRectWithIncludedRadii): Deleted.
(WebCore::Display::roundedInsetBorderForRect): Deleted.

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::setupBoxModelBox const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::borderRoundedRect const):
(WebCore::Display::BoxModelBox::innerBorderRoundedRect const):
(WebCore::Display::BoxModelBox::setAncestorClip):
(WebCore::Display::BoxModelBox::clipForDescendants const):
(WebCore::Display::BoxModelBox::debugDescription const):

  • display/css/DisplayBoxModelBox.h:

(WebCore::Display::BoxModelBox::ancestorClip const):

  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::applyClipIfNecessary):
(WebCore::Display::applyAncestorClip):
(WebCore::Display::CSSPainter::recursivePaintDescendantsForPhase):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):

  • display/css/DisplayContainerBox.cpp:

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

  • display/css/DisplayStyle.cpp:

(WebCore::Display::Style::Style):

  • display/css/DisplayStyle.h:

(WebCore::Display::Style::hasClippedOverflow const):

8:31 PM Changeset in webkit [270214] by ysuzuki@apple.com
  • 18 edits in trunk

[JSC] Use ARM atomic ops in wasm
https://bugs.webkit.org/show_bug.cgi?id=219281

Reviewed by Filip Pizlo.

JSTests:

  • wasm/threads-spec-tests/atomic-signed.wast.js:
  • wasm/threads-spec-tests/resources/atomic-signed.wast:

Source/JavaScriptCore:

This patch uses ARM LSE Atomic instructions in wasm atomic operations. This includes support in MacroAssembler, offlineasm, Air and B3,
so that FTL atomic operations automatically leverage ARM LSE atomic instructions too. Later we can extend DFG JIT to use it too.

One interesting thing is that this includes a fix for cmpxchg wasm operation implementations. Unfortunately, current wasm cmpxchg ops
are not the same to ARM cas / X86 cmpxchg. For example, i64.atomic.rmw8.cmpxchg_u takes i64 expected value. And the spec requires that
we should perform i64-expected-value <cmp> loaded-zero-extended-1byte-value. For example, if the expected value is 0xffffffff_ffffff00,
and the value stored in the memory is 0x00, then the wasm op needs to fail since 0x00 is not 0xffffffff_ffffff00. But x86 and ARM
cmpxchg / cas ops behave differently since it truncates expected value to 1byte when performing 1byte cmpxchg. So we need to have a check
which performs the value is within 1byte range in this operation.

  • assembler/ARM64EAssembler.h:

(JSC::ARM64EAssembler::exoticAtomicLoadStore):
(JSC::ARM64EAssembler::exoticAtomicCAS):
(JSC::ARM64EAssembler::ldaddal):
(JSC::ARM64EAssembler::ldeoral):
(JSC::ARM64EAssembler::ldclral):
(JSC::ARM64EAssembler::ldsetal):
(JSC::ARM64EAssembler::swpal):
(JSC::ARM64EAssembler::casal):

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::atomicXchgAdd8):
(JSC::MacroAssemblerARM64E::atomicXchgAdd16):
(JSC::MacroAssemblerARM64E::atomicXchgAdd32):
(JSC::MacroAssemblerARM64E::atomicXchgAdd64):
(JSC::MacroAssemblerARM64E::atomicXchgXor8):
(JSC::MacroAssemblerARM64E::atomicXchgXor16):
(JSC::MacroAssemblerARM64E::atomicXchgXor32):
(JSC::MacroAssemblerARM64E::atomicXchgXor64):
(JSC::MacroAssemblerARM64E::atomicXchgOr8):
(JSC::MacroAssemblerARM64E::atomicXchgOr16):
(JSC::MacroAssemblerARM64E::atomicXchgOr32):
(JSC::MacroAssemblerARM64E::atomicXchgOr64):
(JSC::MacroAssemblerARM64E::atomicXchgClear8):
(JSC::MacroAssemblerARM64E::atomicXchgClear16):
(JSC::MacroAssemblerARM64E::atomicXchgClear32):
(JSC::MacroAssemblerARM64E::atomicXchgClear64):
(JSC::MacroAssemblerARM64E::atomicXchg8):
(JSC::MacroAssemblerARM64E::atomicXchg16):
(JSC::MacroAssemblerARM64E::atomicXchg32):
(JSC::MacroAssemblerARM64E::atomicXchg64):
(JSC::MacroAssemblerARM64E::atomicStrongCAS8):
(JSC::MacroAssemblerARM64E::atomicStrongCAS16):
(JSC::MacroAssemblerARM64E::atomicStrongCAS32):
(JSC::MacroAssemblerARM64E::atomicStrongCAS64):

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/air/opcode_generator.rb:
  • disassembler/ARM64/A64DOpcode.cpp:

(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::format):
(JSC::ARM64Disassembler::A64DOpcodeSwapAtomic::format):
(JSC::ARM64Disassembler::A64DOpcodeCAS::format):

  • disassembler/ARM64/A64DOpcode.h:

(JSC::ARM64Disassembler::A64DOpcode::appendInstructionName):
(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::opName):
(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::rs):
(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::opc):
(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::ar):
(JSC::ARM64Disassembler::A64DOpcodeLoadAtomic::opNumber):
(JSC::ARM64Disassembler::A64DOpcodeSwapAtomic::opName):
(JSC::ARM64Disassembler::A64DOpcodeSwapAtomic::rs):
(JSC::ARM64Disassembler::A64DOpcodeSwapAtomic::ar):
(JSC::ARM64Disassembler::A64DOpcodeSwapAtomic::opNumber):
(JSC::ARM64Disassembler::A64DOpcodeCAS::opName):
(JSC::ARM64Disassembler::A64DOpcodeCAS::rs):
(JSC::ARM64Disassembler::A64DOpcodeCAS::o1):
(JSC::ARM64Disassembler::A64DOpcodeCAS::l):
(JSC::ARM64Disassembler::A64DOpcodeCAS::opNumber):

  • llint/WebAssembly.asm:
  • offlineasm/arm64.rb:
  • offlineasm/instructions.rb:
  • offlineasm/x86.rb:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::sanitizeAtomicResult):
(JSC::Wasm::AirIRGenerator::appendGeneralAtomic):
(JSC::Wasm::AirIRGenerator::appendStrongCAS):
(JSC::Wasm::AirIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::AirIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::AirIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::AirIRGenerator::emitAtomicCompareExchange):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::emitAtomicCompareExchange):

8:29 PM Changeset in webkit [270213] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r270210.

It broke TestWebKitAPI.GPUProcess.CrashWhilePlayingVideo on
iOS

Reverted changeset:

"[WinCairo?] GPU process remains alive even after web process
exited"
https://bugs.webkit.org/show_bug.cgi?id=219321
https://trac.webkit.org/changeset/270210

7:56 PM Changeset in webkit [270212] by Fujii Hironori
  • 3 edits
    1 add
    1 delete in trunk/Source/ThirdParty/ANGLE

[ANGLE] Convert adjust-angle-include-paths.sh to a Python script for Windows without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=219299

Reviewed by Kenneth Russell.

WinCairo port can't use shell scripts because it isn't using
Cygwin.

  • ANGLE.xcodeproj/project.pbxproj:
  • CMakeLists.txt:
  • adjust-angle-include-paths.py: Added.
  • adjust-angle-include-paths.sh: Removed.
7:51 PM Changeset in webkit [270211] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Remove unnecessary passes after r270017.

  • platform/wpe/TestExpectations:
7:21 PM Changeset in webkit [270210] by Fujii Hironori
  • 3 edits in trunk/Source/WebKit

[WinCairo?] GPU process remains alive even after web process exited
https://bugs.webkit.org/show_bug.cgi?id=219321

Reviewed by Don Olmstead.

AuxiliaryProcess::didClose is calling _exit. However, GPUProcess
overrode AuxiliaryProcess::didClose but it did nothing. GPUProcess
doesn't need to override it.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::didClose): Deleted.

  • GPUProcess/GPUProcess.h:
6:31 PM Changeset in webkit [270209] by Simon Fraser
  • 9 edits in trunk

[LFC Display] Fix box locations for positioned elements
https://bugs.webkit.org/show_bug.cgi?id=219310

Source/WebCore:

Reviewed by Zalan Bujtas.

The code assumed that layout boxes were always positioned relative to their parents,
but border box geometry is actually relative to containing block. To keep track
of this when building the display tree, add PositioningContext which tracks
containing blocks for three types of positioning (fixed, absolute and in-flow),
and root-relative offsets for each.

The code then passes the appropriate containing block box + offset into the Display::BoxFactory
code, which uses the offset to compute absolute box rects.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::PositioningContext::PositioningContext):
(WebCore::Display::PositioningContext::m_absolutePositionContainer):
(WebCore::Display::PositioningContext::m_inFlowContainer):
(WebCore::Display::PositioningContext::contextForDescendants const):
(WebCore::Display::PositioningContext::containingBlockContextForLayoutBox const):
(WebCore::Display::PositioningContext::inFlowContainingBlockContext const):
(WebCore::Display::TreeBuilder::build):
(WebCore::Display::TreeBuilder::buildInlineDisplayTree const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForBodyBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::displayBoxForTextRun const):
(WebCore::Display::BoxFactory::setupBoxGeometry const):
(WebCore::Display::BoxFactory::constructBoxDecorationData const):
(WebCore::Display::BoxFactory::setupBoxModelBox const):

  • display/css/DisplayBoxFactory.h:
  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::containingBlock const):

  • layout/layouttree/LayoutBox.h:

(WebCore::Layout::Box::isContainingBlockForInFlow const):
(WebCore::Layout::Box::isContainingBlockForFixedPosition const):
(WebCore::Layout::Box::isContainingBlockForOutOfFlowPosition const):

LayoutTests:

Reviewed by NOBODY (OOPS!).

Two table tests are now image failures because of webkit.org/b/219322.

4:02 PM Changeset in webkit [270208] by ysuzuki@apple.com
  • 38 edits
    9 adds in trunk

[JSC] Add wasm atomics instructions
https://bugs.webkit.org/show_bug.cgi?id=218954

Reviewed by Filip Pizlo.

JSTests:

  • wasm.yaml:
  • wasm/Builder.js:

(const._importMemoryContinuation):
(export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):

  • wasm/Builder_WebAssemblyBinary.js:

(const.putResizableLimits):
(const.emitters.Import):
(const.emitters.Memory):

  • wasm/function-tests/trap-load-shared.js:
  • wasm/function-tests/trap-store-shared.js:
  • wasm/stress/atomic-decrement.js: Added.

(i.agent.start.import.string_appeared_here.then):
(i.async error):

  • wasm/stress/atomic-increment.js: Added.

(i.agent.start.import.string_appeared_here.then):
(i.async error):

  • wasm/stress/memory-fence.js: Added.

(async try):
(catch):

  • wasm/threads-spec-tests/atomic-signed.wast.js: Added.
  • wasm/threads-spec-tests/atomic.wast.js: Added.
  • wasm/threads-spec-tests/memory.wast.js: Added.
  • wasm/threads-spec-tests/resources/atomic-signed.wast: Added.
  • wasm/wasm.json:

Source/JavaScriptCore:

This patch implements wasm threading's atomic operations[1] in X86_64 and ARM64. Currently, all ARM64 atomic operations are implemented by using LL/SC.
Later, we will use ARM64 CAS operations if possible, at least in ARM64E.

To test it easily, we also extend jsc shell's worker to support transferring shared WebAssembly.Memory so that we can use wasm atomic operations in several
workers in jsc shell.

[1]: https://github.com/WebAssembly/threads

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::atomicXchg8):
(JSC::MacroAssemblerX86Common::atomicXchg16):
(JSC::MacroAssemblerX86Common::atomicXchg32):

  • b3/B3Kind.h:

(JSC::B3::Kind::hasTraps const):

  • b3/B3LowerToAir.cpp:
  • b3/B3Width.h:

(JSC::B3::bytesForWidth):

  • b3/testb3_8.cpp:

(testAtomicXchg):

  • bytecode/BytecodeList.rb:
  • interpreter/Register.h:

(JSC::Register::unboxedInt64 const):
(JSC::Register::asanUnsafeUnboxedInt64 const):

  • jsc.cpp:

(Message::releaseContents):
(Message::Message):
(JSC_DEFINE_HOST_FUNCTION):

  • llint/WebAssembly.asm:
  • offlineasm/arm64.rb:
  • offlineasm/instructions.rb:
  • offlineasm/x86.rb:
  • runtime/OptionsList.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::appendEffectful):
(JSC::Wasm::accessWidth):
(JSC::Wasm::sizeOfAtomicOpMemoryAccess):
(JSC::Wasm::AirIRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::AirIRGenerator::sanitizeAtomicResult):
(JSC::Wasm::AirIRGenerator::appendGeneralAtomic):
(JSC::Wasm::AirIRGenerator::appendStrongCAS):
(JSC::Wasm::AirIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::AirIRGenerator::atomicLoad):
(JSC::Wasm::AirIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::AirIRGenerator::atomicStore):
(JSC::Wasm::AirIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::AirIRGenerator::atomicBinaryRMW):
(JSC::Wasm::AirIRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::AirIRGenerator::atomicCompareExchange):
(JSC::Wasm::AirIRGenerator::atomicWait):
(JSC::Wasm::AirIRGenerator::atomicNotify):
(JSC::Wasm::AirIRGenerator::atomicFence):
(JSC::Wasm::AirIRGenerator::addCall):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::B3IRGenerator::memoryKind):
(JSC::Wasm::accessWidth):
(JSC::Wasm::sizeOfAtomicOpMemoryAccess):
(JSC::Wasm::B3IRGenerator::sanitizeAtomicResult):
(JSC::Wasm::B3IRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::B3IRGenerator::emitAtomicLoadOp):
(JSC::Wasm::B3IRGenerator::atomicLoad):
(JSC::Wasm::B3IRGenerator::emitAtomicStoreOp):
(JSC::Wasm::B3IRGenerator::atomicStore):
(JSC::Wasm::B3IRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::B3IRGenerator::atomicBinaryRMW):
(JSC::Wasm::B3IRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::B3IRGenerator::atomicCompareExchange):
(JSC::Wasm::B3IRGenerator::atomicWait):
(JSC::Wasm::B3IRGenerator::atomicNotify):
(JSC::Wasm::B3IRGenerator::atomicFence):
(JSC::Wasm::B3IRGenerator::addCall):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::atomicLoad):
(JSC::Wasm::FunctionParser<Context>::atomicStore):
(JSC::Wasm::FunctionParser<Context>::atomicBinaryRMW):
(JSC::Wasm::FunctionParser<Context>::atomicCompareExchange):
(JSC::Wasm::FunctionParser<Context>::atomicWait):
(JSC::Wasm::FunctionParser<Context>::atomicNotify):
(JSC::Wasm::FunctionParser<Context>::atomicFence):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::atomicLoad):
(JSC::Wasm::LLIntGenerator::atomicStore):
(JSC::Wasm::LLIntGenerator::atomicBinaryRMW):
(JSC::Wasm::LLIntGenerator::atomicCompareExchange):
(JSC::Wasm::LLIntGenerator::atomicWait):
(JSC::Wasm::LLIntGenerator::atomicNotify):
(JSC::Wasm::LLIntGenerator::atomicFence):

  • wasm/WasmMemory.h:
  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::MemoryInformation::MemoryInformation):

  • wasm/WasmMemoryInformation.h:

(JSC::Wasm::MemoryInformation::isShared const):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::wait):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseResizableLimits):
(JSC::Wasm::SectionParser::parseTableHelper):
(JSC::Wasm::SectionParser::parseMemoryHelper):

  • wasm/WasmSectionParser.h:
  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmSlowPaths.h:
  • wasm/generateWasm.py:

(isAtomic):
(isAtomicLoad):
(isAtomicStore):
(isAtomicBinaryRMW):
(memoryLog2Alignment):

  • wasm/generateWasmOpsHeader.py:

(atomicMemoryLoadMacroizer):
(atomicMemoryLoadMacroizer.modifier):
(atomicMemoryStoreMacroizer):
(atomicMemoryStoreMacroizer.modifier):
(atomicBinaryRMWMacroizer):
(atomicBinaryRMWMacroizer.modifier):
(memoryLog2AlignmentGenerator):
(atomicMemoryLog2AlignmentGenerator):
(ExtAtomicOpType):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::tryCreate):

  • wasm/wasm.json:
1:31 PM Changeset in webkit [270207] by Aditya Keerthi
  • 11 edits
    11 adds in trunk

[iOS][FCR] Add new look for meter element
https://bugs.webkit.org/show_bug.cgi?id=219103
<rdar://problem/71549155>

Reviewed by Wenson Hsieh.

Source/WebCore:

Tests: fast/forms/ios/form-control-refresh/meter/border.html

fast/forms/ios/form-control-refresh/meter/even-less-good-appearance.html
fast/forms/ios/form-control-refresh/meter/optimal-appearance.html
fast/forms/ios/form-control-refresh/meter/suboptimal-appearance.html
fast/forms/ios/form-control-refresh/meter/width-height.html

  • html/HTMLMeterElement.cpp:

(WebCore::HTMLMeterElement::createElementRenderer):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::supportsMeter const):

  • rendering/RenderTheme.h:

Added additional parameter to supportsMeter to control support at runtime.

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::supportsMeter const):

Implement this method so that a native meter is painted on iOS. Note that
a native appearance for meter is currently supported on macOS, but is
unsupported on iOS.

(WebCore::RenderThemeIOS::paintMeter):

Paint a meter element using the new appearance. The color of the filled
portion matches the element's gauge region, and can be one of three
colors. If the style has an RTL direction, flip the filled portion to
start from the right side of the element. This matches the RTL behavior
for progress bars.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::supportsMeter const):

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::supportsMeter const):

  • rendering/RenderThemeWin.h:

LayoutTests:

Added tests to verify the stylability of native meters and to
verify that different states are painted with a different appearance.

  • fast/forms/ios/form-control-refresh/meter/border-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/meter/border.html: Added.
  • fast/forms/ios/form-control-refresh/meter/even-less-good-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/meter/even-less-good-appearance.html: Added.
  • fast/forms/ios/form-control-refresh/meter/optimal-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/meter/optimal-appearance.html: Added.
  • fast/forms/ios/form-control-refresh/meter/suboptimal-appearance-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/meter/suboptimal-appearance.html: Added.
  • fast/forms/ios/form-control-refresh/meter/width-height-expected-mismatch.html: Added.
  • fast/forms/ios/form-control-refresh/meter/width-height.html: Added.
12:38 PM Changeset in webkit [270206] by don.olmstead@sony.com
  • 6 edits in trunk/Source

Non-unified build fixes, late November 2020 edition, take two
https://bugs.webkit.org/show_bug.cgi?id=219317

Unreviewed non-unified build fixes.

Source/WebCore:

  • display/css/DisplayBox.cpp:
  • layout/integration/LayoutIntegrationLineLayout.cpp:
  • rendering/RenderBlockFlow.cpp:

Source/WebKit:

  • Shared/WebPreferencesDefaultValues.cpp:
12:36 PM Changeset in webkit [270205] by don.olmstead@sony.com
  • 4 edits in trunk/Source/WebKit

Fix build when ENABLE_RESOURCE_LOAD_STATISTICS is disabled
https://bugs.webkit.org/show_bug.cgi?id=219316

Unreviewed build fix.

Add ENABLE(RESOURCE_LOAD_STATISTICS) guards around NetworkSession requests for
resource load statistics. Move firePrivateClickMeasurementTimerImmediately out of
a ENABLE(RESOURCE_LOAD_STATISTICS) guard and place it where its ordered in the header.

This originally broke the PlayStation build before ENABLE_RESOURCE_LOAD_STATISTICS
was turned on.

No new tests. No change in behavior.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::simulateResourceLoadStatisticsSessionRestart):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::firePrivateClickMeasurementTimerImmediately):

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::clearSentAttributions):
(WebKit::PrivateClickMeasurementManager::updateTimerLastFired):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):
(WebKit::PrivateClickMeasurementManager::clear):
(WebKit::PrivateClickMeasurementManager::clearForRegistrableDomain):
(WebKit::PrivateClickMeasurementManager::clearExpired):
(WebKit::PrivateClickMeasurementManager::toString const):
(WebKit::PrivateClickMeasurementManager::markAllUnattributedAsExpiredForTesting):
(WebKit::PrivateClickMeasurementManager::markAttributedPrivateClickMeasurementsAsExpiredForTesting):

12:34 PM Changeset in webkit [270204] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[WinCairo][Clang] html/canvas/WebGLDrawBuffers.cpp(77,29): error: non-constant-expression cannot be narrowed from type 'WebCore::GraphicsContextGL::(anonymous enum at GraphicsContextGL.h:64:5)' to 'GCGLenum' (aka 'unsigned int') in initializer list
https://bugs.webkit.org/show_bug.cgi?id=219320

Unreviewed build fix for WinCairo clang-cl build.

  • html/canvas/WebGLDrawBuffers.cpp:

(WebCore::WebGLDrawBuffers::drawBuffersWEBGL): Added static_cast<GCGLenum> for the initializer list.

12:07 PM Changeset in webkit [270203] by Wenson Hsieh
  • 15 edits in trunk

Introduce new display list meta commands in preparation for webkit.org/b/219091
https://bugs.webkit.org/show_bug.cgi?id=219262

Reviewed by Ryosuke Niwa.

Source/WebCore:

Introduces two new display list items: MetaCommandChangeDestinationImageBuffer and MetaCommandEnd. These
meta commands will be used in a future patch to synchronize display list drawing commands between multiple
destination image buffers when using the GPU process by allowing RemoteRenderingBackend to process display
data that contains commands targeting more than one destination image buffer.

MetaCommandChangeDestinationImageBuffer is used to inform the replayer that the destination image buffer (in
which commands are replayed) should be changed to the new image buffer indicated by the rendering resource
identifier in the item. When replaying, we'll bail with StopReplayReason::ChangeDestinationImageBuffer and set
nextDestinationImageBuffer to the identifier of this next buffer.

MetaCommandEnd is used to inform the replayer that it should expect no more display list items; in a future
patch, RemoteRenderingBackend will take this as a cue to immediately stop waiting for more display list data
and go to sleep.

A stream of display list data will eventually consist of data targeting one or more destination image buffers,
separated by MetaCommandChangeDestinationImageBuffer items, and may span one or more item buffers, separated
by MetaCommandChangeItemBuffer items; finally, it will conclude with a MetaCommandEnd item.
The below diagram depicts one such stream of display list data, where we have two destination image buffers
(denoted by A and B), and display list item data spanning two item buffers (denoted by 1 and 2).

Wakeup message initiates display list processing with Image Buffer A and Item Buffer 1

|
| MetaCommandChangeItemBuffer(2)
| |
| MetaCommandChangeDestinationImageBuffer(B) |
| | |
| | |
v v v
+-----------------------+--------------------------------++
| +--------------------+ +------------------------------+ |
| | Destination | | Destination | | Item Buffer 1
| | Image Buffer A | | Image Buffer B | |
| +--------------------+ +------------------------------+ |
+---------------------------------------------------------+

+---------------------------------------------------------+
| +--------------+ +-----------------------+ |
| | Dst. Image | | Destination Image | Unused | Item Buffer 2
| | Buffer B | | Buffer A | Capacity |
| +--------------+ +-----------------------+ |
+-----------------+-------------------------+-------------+


| |
| |
| MetaCommandEnd
|

MetaCommandChangeDestinationImageBuffer(A)

Additionally, rename MetaCommandSwitchToItemBuffer to MetaCommandChangeItemBuffer, such that it is
consistent with the new MetaCommandChangeDestinationImageBuffer item.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::copyTo const):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::MetaCommandChangeItemBuffer::MetaCommandChangeItemBuffer):
(WebCore::DisplayList::MetaCommandChangeDestinationImageBuffer::MetaCommandChangeDestinationImageBuffer):
(WebCore::DisplayList::MetaCommandChangeDestinationImageBuffer::identifier const):
(WebCore::DisplayList::MetaCommandSwitchToItemBuffer::MetaCommandSwitchToItemBuffer): Deleted.
(WebCore::DisplayList::MetaCommandSwitchToItemBuffer::identifier const): Deleted.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:

Source/WebKit:

See WebCore ChangeLog for more information. Additionally, rename MetaCommandSwitchToItemBuffer to
MetaCommandChangeItemBuffer, for consistency with the new MetaCommandChangeDestinationImageBuffer item.

  • GPUProcess/graphics/RemoteImageBuffer.h:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::decodeItem):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

Tools:

Rename MetaCommandSwitchToItemBuffer.

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

10:56 AM Changeset in webkit [270202] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

Remove some extraneous PLATFORM(IOS_FAMILY) guards in WKContentViewInteraction
https://bugs.webkit.org/show_bug.cgi?id=219289

Reviewed by Sam Weinig.

Remove several redundant uses of PLATFORM(IOS_FAMILY). The entire class is already conditional on
IOS_FAMILY, so adding additional compile-time guards for iOS family is not necessary.

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

(-[WKContentView setTimePickerValueToHour:minute:]):
(-[WKContentView timePickerValueHour]):
(-[WKContentView timePickerValueMinute]):

10:53 AM Changeset in webkit [270201] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] use lz4 compression for improving buildbot performance
https://bugs.webkit.org/show_bug.cgi?id=219133

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/master_buildbot2.cfg:
10:50 AM Changeset in webkit [270200] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

[LFC Display] Clean up CSS stacking context painting code
https://bugs.webkit.org/show_bug.cgi?id=219307

Reviewed by Antti Koivisto.

Clarify the code in Display::CSSPainter that paints stacking contexts and positioned
elements. Non-stacking positioned elements paint atomically, but don't paint descendant
stacking contexts (sometimes these are called "pseudo-stacking contexts" but that term
is avoided here to reduce confusion). Share code between painting these and stacking
contexts via paintAtomicallyPaintedBox().

Also make sure we paint the contents of non-container child boxes, so that things like
positioned images paint.

Remove some incorrect image painting code in BoxPainter::paintBox().

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):

  • display/css/DisplayBoxPainter.cpp:

(WebCore::Display::BoxPainter::paintBox):

  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::recursivePaintDescendantsForPhase):
(WebCore::Display::CSSPainter::recursivePaintDescendants):
(WebCore::Display::CSSPainter::paintAtomicallyPaintedBox):
(WebCore::Display::CSSPainter::paintStackingContext):
(WebCore::Display::CSSPainter::participatesInZOrderSorting):
(WebCore::Display::CSSPainter::collectStackingContextDescendants):
(WebCore::Display::CSSPainter::recursiveCollectLayers):

  • display/css/DisplayCSSPainter.h:
10:49 AM Changeset in webkit [270199] by Lauro Moura
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update GTK4 to 3.99.4
https://bugs.webkit.org/show_bug.cgi?id=219269

Reviewed by Philippe Normand.

  • elements/sdk/gtk.bst: Update to track tags instead of individual commits and

specify 3.99.4 as the latest tag. Also added new meson flags to disable the ffmpeg
media backend and cloud printing after GTK changed some more options into features[1]

[1] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/2708

9:45 AM Changeset in webkit [270198] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

[LFC Display] A ContainerBox can establish an inline formatting context and have box children
https://bugs.webkit.org/show_bug.cgi?id=218736

Reviewed by Zalan Bujtas.

If a layout box establishes an inline formatting context, then the only descendant container
boxes that we should make display boxes for while traversing non-inline descendants
are those which are out of flow.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):

9:26 AM Changeset in webkit [270197] by Adrian Perez de Castro
  • 12 edits in trunk/Source

Non-unified build fixes, late November 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=219306

Unreviewed non-unified build fixes.

Source/WebCore:

  • dom/SimpleRange.cpp: Add missing Frame.h header.
  • html/canvas/CanvasRenderingContext2D.cpp: Removed fontStyleIsWithinRange() from here, as

it is not used in this source file.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::isSpaceThatNeedsReplacing): Moved here from CanvasRenderingContext2D.cpp

  • inspector/InspectorNodeFinder.cpp: Add missing Frame.h header.
  • page/FrameTree.h: Added missing wtf/Forward.h header
  • style/StyleResolveForFontRaw.cpp: Add missing CSSToLengthConversionData.h,

FontCascade.h, and Settings.h headers.

  • style/StyleResolveForFontRaw.h: Add forward declaration for FontCascadeDescription.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: Add missing

PrivateClickMeasurementManager.h header.

  • NetworkProcess/PrivateClickMeasurementManager.cpp: Add missing NetworkSession.h header.
  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::handleRequest): Add missing WebCore:: namespace to uses
of the WebCore::SpeechRecognizer and WebCore::SpeechRecognitionUpdateType types.

9:05 AM Changeset in webkit [270196] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

[LFC Display] Add support for painting box shadows
https://bugs.webkit.org/show_bug.cgi?id=219265

Reviewed by Zalan Bujtas.

Clone the ShadowData linked list into Display::Style, fixing up the color,
and add code to BoxDecorationPainter to paint outset and inset shadows.

The pixel snapping isn't quite right yet; we really need to pixel-snap the
rect that results from the border/padding box with shadow offset and spread applied,
but that would require storing more shadow-related data at tree building time.

The boxShadowShouldBeAppliedToBackground() code path isn't supported yet.

  • display/css/DisplayBoxDecorationPainter.cpp:

(WebCore::Display::BoxDecorationPainter::BoxDecorationPainter):
(WebCore::Display::BoxDecorationPainter::paintBoxShadow const):
(WebCore::Display::BoxDecorationPainter::innerBorderRoundedRect const):
(WebCore::Display::BoxDecorationPainter::backgroundRoundedRectAdjustedForBleedAvoidance const):
(WebCore::Display::BoxDecorationPainter::paintBackgroundAndBorders const):

  • display/css/DisplayBoxDecorationPainter.h:
  • display/css/DisplayStyle.cpp:

(WebCore::Display::deepCopy):
(WebCore::Display::Style::Style):

  • display/css/DisplayStyle.h:

(WebCore::Display::Style::boxShadow const):

  • platform/graphics/LayoutSize.h:

(WebCore::roundSizeToDevicePixels):

  • rendering/style/ShadowData.h:

(WebCore::ShadowData::setColor):
(WebCore::ShadowData::setNext):

8:52 AM Changeset in webkit [270195] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Initial display:inline support
https://bugs.webkit.org/show_bug.cgi?id=219301

Reviewed by Zalan Bujtas.

<span> etc.

Not enabled yet.

  • layout/integration/LayoutIntegrationBoxTree.cpp:

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

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):
(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationInlineContent.h:

(WebCore::LayoutIntegration::InlineContent::InlineBox::InlineBox):
(WebCore::LayoutIntegration::InlineContent::InlineBox::layoutBox const):
(WebCore::LayoutIntegration::InlineContent::InlineBox::lineIndex const):
(WebCore::LayoutIntegration::InlineContent::InlineBox::rect const):
(WebCore::LayoutIntegration::InlineContent::shrinkToFit):

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::build const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayInlineBoxes const):

  • layout/integration/LayoutIntegrationInlineContentBuilder.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::containing):
(WebCore::LayoutIntegration::LineLayout::enclosingBorderBoxRectFor const):
(WebCore::LayoutIntegration::LineLayout::paint):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutModernLines):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::styleDidChange):
(WebCore::RenderInline::linesBoundingBox const):

8:31 AM Changeset in webkit [270194] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Fix ANGLE CMakeLists.txt warnings
https://bugs.webkit.org/show_bug.cgi?id=219260

Patch by Rob Buis <rbuis@igalia.com> on 2020-11-27
Reviewed by Philippe Normand.

Fix warning when building on GTK:
Make Warning (dev) at Source/ThirdParty/ANGLE/CMakeLists.txt:103:
Syntax Warning in cmake code at column 37

Argument not separated from preceding token by whitespace.
This warning is for project developers. Use -Wno-dev to suppress it.

  • CMakeLists.txt:
6:48 AM Changeset in webkit [270193] by Philippe Normand
  • 3 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Add clangd
https://bugs.webkit.org/show_bug.cgi?id=219302

Reviewed by Adrian Perez de Castro.

clangd can be used as an alternative to ccls in IDEs supporting the LSP protocol.

  • elements/sdk-platform.bst:
  • elements/sdk/clangd.bst: Added.
  • project.conf:
4:21 AM Changeset in webkit [270192] by commit-queue@webkit.org
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update ccls
https://bugs.webkit.org/show_bug.cgi?id=219303

Patch by Philippe Normand <pnormand@igalia.com> on 2020-11-27
Reviewed by Adrian Perez de Castro.

  • elements/sdk/ccls.bst: Update to latest release, 0.20201025.
4:16 AM Changeset in webkit [270191] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk/Tools/buildstream

[Flatpak SDK] Add cmake-lsp recipe
https://bugs.webkit.org/show_bug.cgi?id=219234

Patch by Philippe Normand <pnormand@igalia.com> on 2020-11-27
Reviewed by Adrian Perez de Castro.

Add CMake LSP server for use in IDEs.

  • elements/sdk-platform.bst:
  • elements/sdk/cmake-lsp.bst: Added.
  • elements/sdk/pygls.bst: Added.
  • project.conf:
3:57 AM Changeset in webkit [270190] by commit-queue@webkit.org
  • 8 edits
    1 copy
    1 add in trunk

REGRESSION(r269642) [GStreamer][WebRTC] Unexpected results after update to M87
https://bugs.webkit.org/show_bug.cgi?id=218787

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-11-27
Reviewed by Philippe Normand.

Source/WebCore:

Describe more specifically the H264 SDP. It uses a hardcoded list with the minimun
requirement: ConstrainedBaseline and Baseline profiles which are supported by the video
decoders used in GStreamer.

No new tests required.

  • platform/GStreamer.cmake:
  • platform/mediastream/libwebrtc/GStreamerVideoCommon.cpp: Added.

(WebCore::createH264Format):
(WebCore::gstreamerSupportedH264Codecs):

  • platform/mediastream/libwebrtc/GStreamerVideoCommon.h: Added.
  • platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp: Removed unused headers.

(WebCore::GStreamerVideoDecoder::AddDecoderIfSupported): Pass argument by reference.
(WebCore::GStreamerVideoDecoder::ConfigureSupportedDecoder): Instead of a single SDP returns
a vector of them.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: Removed unused headers.

(WebCore::GStreamerVideoEncoder::AddCodecIfSupported): Pass argument by reference.
(WebCore::GStreamerVideoEncoder::ConfigureSupportedCodec): Instead of a single SDP returns
a vector of them and remove the unused argument.
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h: Fixed a typo.

LayoutTests:

Update expectations with fixed tests.
Also fixed a typo.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
3:21 AM Changeset in webkit [270189] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, clang build fix after r270185

  • platform/graphics/GraphicsTypesGL.h: Fixup nullptr_t namespace.

(GCGLSpan::GCGLSpan):
(std::numeric_limits<size_t>::max):

3:03 AM Changeset in webkit [270188] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed, GLib webaudio gardening

  • platform/glib/TestExpectations: webaudio/AudioParam/audioparam-processing.html

consistently passing since r270139.

2:21 AM Changeset in webkit [270187] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[GStreamer] refactor video encoder with WebKit style
https://bugs.webkit.org/show_bug.cgi?id=218748

Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2020-11-27
Reviewed by Philippe Normand.

Apply WebKit code style to GStreamerVideoEncoder

No new tests required since it's a refactor.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:

(Encoders::singleton): Instead of an array with the available encoders, a singleton map is
used, with better memory handling.
(Encoders::registerEncoder): static method to register a possible encoder to handle
(Encoders::definition): getter
(webrtcVideoEncoderGetProperty): renamed
(webrtcVideoEncoderSetBitrate): renamed
(webrtcVideoEncoderSetFormat): Use getter for static pads; GRefPtr for memory handling;
don't call gst_ghost_pad_set_target() inside a g_assert since it can be disabled.
(webrtcVideoEncoderSetProperty): renamed
(setupX264enc): renamed
(setupOpenh264enc): renamed
(setupOmxh264enc): renamed
(setBitrateKbitPerSec): renamed
(setBitrateBitPerSec): renamed
(webrtc_video_encoder_class_init): renamed
(webrtc_video_encoder_init): renamed

  • platform/mediastream/libwebrtc/GStreamerVideoEncoder.h: use G_DECLARE_FINAL_TYPE macro and

change the name of the glib type to WEBRTC_TYPE_VIDEO_ENCODER

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: remove unused macro

(WebCore::GStreamerVideoEncoderFactory::GStreamerVideoEncoderFactory): Don't register the
element as primary, but none.

2:02 AM Changeset in webkit [270186] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

[GTK] MiniBroeser add an option to quit the browser after loading finishes
https://bugs.webkit.org/show_bug.cgi?id=219081

Reviewed by Carlos Alberto Lopez Perez.

It's useful to run benchmarks or test case reduction tools.

  • MiniBrowser/gtk/BrowserTab.c:

(webProcessTerminatedCallback): Show a warning when the web process crashes.
(browserTabConstructed): Connect to web-process-terminated signal.

  • MiniBrowser/gtk/main.c:

(quitApplication): Quit the MiniBrowser.
(exitAfterWebViewLoadFinishesCallback): Schedule a browser quit to the next run loop iteration.
(exitAfterWebProcessCrashed): Call exitAfterWebViewLoadFinishesCallback with WEBKIT_LOAD_FINISHED.
(exitAfterWebViewLoadFinishes): Connect to load-changed and web-process-terminated signals
(activate): Ensure the browser is exited after the load finishes or web process crashes when --exit-after-load is passed.

1:51 AM Changeset in webkit [270185] by commit-queue@webkit.org
  • 25 edits in trunk/Source/WebCore

GraphicsContextGL should have robust multivalue setters
https://bugs.webkit.org/show_bug.cgi?id=219256

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-11-27
Reviewed by Dean Jackson.

Replace bufSize, pointer pairs and plain pointers in GraphicsContextGL
with GCGLSpan. This makes it easier to understand how many values there
are pointed by the pointer. This is needed for simpler implementation of GPU
process IPC, where the IPC layer does not need to interpret the OpenGL
properties.

In WebGL implementation, changes the validation functions to return
the memory reference that will be touched by the valid function call.
On validation failure, nullopt will be returned.

Makes the existing GraphicsContextGL texture image manipulation functions
to support robust invocation. Removes the robust APIs from ExtensionsGL.
Adds the missing texture image manipulation functions from ExtensionGL
to GraphicsContextGL. Implementations for the moved methods
exist only for ANGLE implementation of GraphicsContextGLOpenGL.

Changes the ANGLE variant of GraphicsContextGL::texImage2D to be
implemented as ExtensionsGLANGLE::texImage2DRobustANGLE. Before, for
ANGLE the GraphicsContextGL::texImage2D was unused.

No new tests, a refactor.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::invalidateFramebuffer):
(WebCore::WebGL2RenderingContext::invalidateSubFramebuffer):
(WebCore::WebGL2RenderingContext::uniform1uiv):
(WebCore::WebGL2RenderingContext::uniform2uiv):
(WebCore::WebGL2RenderingContext::uniform3uiv):
(WebCore::WebGL2RenderingContext::uniform4uiv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x3fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix2x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3x4fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4x3fv):
(WebCore::WebGL2RenderingContext::vertexAttribI4iv):
(WebCore::WebGL2RenderingContext::vertexAttribI4uiv):
(WebCore::WebGL2RenderingContext::drawBuffers):
(WebCore::WebGL2RenderingContext::clearBufferiv):
(WebCore::WebGL2RenderingContext::clearBufferuiv):
(WebCore::WebGL2RenderingContext::clearBufferfv):
(WebCore::WebGL2RenderingContext::validateClearBuffer):
(WebCore::WebGL2RenderingContext::uniform1fv):
(WebCore::WebGL2RenderingContext::uniform2fv):
(WebCore::WebGL2RenderingContext::uniform3fv):
(WebCore::WebGL2RenderingContext::uniform4fv):
(WebCore::WebGL2RenderingContext::uniform1iv):
(WebCore::WebGL2RenderingContext::uniform2iv):
(WebCore::WebGL2RenderingContext::uniform3iv):
(WebCore::WebGL2RenderingContext::uniform4iv):
(WebCore::WebGL2RenderingContext::uniformMatrix2fv):
(WebCore::WebGL2RenderingContext::uniformMatrix3fv):
(WebCore::WebGL2RenderingContext::uniformMatrix4fv):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLDrawBuffers.cpp:

(WebCore::WebGLDrawBuffers::drawBuffersWEBGL):

  • html/canvas/WebGLFramebuffer.cpp:

(WebCore::WebGLFramebuffer::drawBuffersIfNecessary):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::bufferData):
(WebCore::WebGLRenderingContextBase::bufferSubData):
(WebCore::WebGLRenderingContextBase::uniform1fv):
(WebCore::WebGLRenderingContextBase::uniform2fv):
(WebCore::WebGLRenderingContextBase::uniform3fv):
(WebCore::WebGLRenderingContextBase::uniform4fv):
(WebCore::WebGLRenderingContextBase::uniform1iv):
(WebCore::WebGLRenderingContextBase::uniform2iv):
(WebCore::WebGLRenderingContextBase::uniform3iv):
(WebCore::WebGLRenderingContextBase::uniform4iv):
(WebCore::WebGLRenderingContextBase::uniformMatrix2fv):
(WebCore::WebGLRenderingContextBase::uniformMatrix3fv):
(WebCore::WebGLRenderingContextBase::uniformMatrix4fv):
(WebCore::WebGLRenderingContextBase::validateUniformMatrixParameters):
(WebCore::WebGLRenderingContextBase::vertexAttribfvImpl):

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::WebGLRenderingContextBase::validateUniformParameters):

  • platform/graphics/ExtensionsGL.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsTypesGL.h:

(GCGLSpan::GCGLSpan):
(std::numeric_limits<size_t>::max):
(makeGCGLSpan):

  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::drawBuffersEXT):

  • platform/graphics/angle/ExtensionsGLANGLE.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::bufferData):
(WebCore::GraphicsContextGLOpenGL::bufferSubData):
(WebCore::GraphicsContextGLOpenGL::uniform1fv):
(WebCore::GraphicsContextGLOpenGL::uniform2fv):
(WebCore::GraphicsContextGLOpenGL::uniform3fv):
(WebCore::GraphicsContextGLOpenGL::uniform4fv):
(WebCore::GraphicsContextGLOpenGL::uniform1iv):
(WebCore::GraphicsContextGLOpenGL::uniform2iv):
(WebCore::GraphicsContextGLOpenGL::uniform3iv):
(WebCore::GraphicsContextGLOpenGL::uniform4iv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix2fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix3fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix4fv):
(WebCore::GraphicsContextGLOpenGL::vertexAttrib1fv):
(WebCore::GraphicsContextGLOpenGL::vertexAttrib2fv):
(WebCore::GraphicsContextGLOpenGL::vertexAttrib3fv):
(WebCore::GraphicsContextGLOpenGL::vertexAttrib4fv):
(WebCore::GraphicsContextGLOpenGL::invalidateFramebuffer):
(WebCore::GraphicsContextGLOpenGL::invalidateSubFramebuffer):
(WebCore::GraphicsContextGLOpenGL::uniform1uiv):
(WebCore::GraphicsContextGLOpenGL::uniform2uiv):
(WebCore::GraphicsContextGLOpenGL::uniform3uiv):
(WebCore::GraphicsContextGLOpenGL::uniform4uiv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix2x3fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix3x2fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix2x4fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix4x2fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix3x4fv):
(WebCore::GraphicsContextGLOpenGL::uniformMatrix4x3fv):
(WebCore::GraphicsContextGLOpenGL::vertexAttribI4iv):
(WebCore::GraphicsContextGLOpenGL::vertexAttribI4uiv):
(WebCore::GraphicsContextGLOpenGL::drawBuffers):
(WebCore::GraphicsContextGLOpenGL::clearBufferiv):
(WebCore::GraphicsContextGLOpenGL::clearBufferuiv):
(WebCore::GraphicsContextGLOpenGL::clearBufferfv):

  • platform/graphics/cv/GraphicsContextGLCVANGLE.cpp:

(WebCore::GraphicsContextGLCVANGLE::initializeUVContextObjects):
(WebCore::GraphicsContextGLCVANGLE::copyPixelBufferToTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
1:08 AM Changeset in webkit [270184] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] AudioSourceProvider can potentially invoke an already-freed client
https://bugs.webkit.org/show_bug.cgi?id=217952

Reviewed by Xabier Rodriguez-Calvar.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::deinterleavePadsConfigured): Check the provider has
a client before setting up the audio format.

12:51 AM Changeset in webkit [270183] by youenn@apple.com
  • 4 edits in trunk/LayoutTests

[WebRTC] webrtc/audio-sframe.html is flaky crashing since added in r269830
https://bugs.webkit.org/show_bug.cgi?id=219066
<rdar://problem/71747778>

Unreviewed.

webrtc/audio-sframe.html is no longer crashing after revision 270107.
Update test expectations accordingly.

  • platform/glib/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac/TestExpectations:
12:28 AM Changeset in webkit [270182] by yoshiaki.jitsukawa@sony.com
  • 2 edits
    2 adds in trunk/Source/WebKit

[PlayStation] Define platform argument coders for Font
https://bugs.webkit.org/show_bug.cgi?id=219300

Reviewed by Fujii Hironori.

  • PlatformPlayStation.cmake:
  • Shared/playstation/WebCoreArgumentCodersPlayStation.cpp: Added.

Define required member functions of ArgumentCoder<Ref<WebCore::Font>> class.

12:07 AM Changeset in webkit [270181] by youenn@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

RTCVideoEncoderH264 does not need to support case without ENABLE_VCP_ENCODER and without HAVE_VTB_REQUIREDLOWLATENCY
https://bugs.webkit.org/show_bug.cgi?id=219224

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h:

Make sure to compile the same with public SDK

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):
Remove code path that is no longer useful.

Nov 26, 2020:

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

Calling waitForAndDispatchImmediately<M> on a loop fails when multiple M messages arrive simultaneously
https://bugs.webkit.org/show_bug.cgi?id=219240

Reviewed by Chris Dumez.

Fixes a race that may occur when calling waitForAndDispatchImmediately<N> in a loop, when multiple messages
N arrive on the IPC thread simultaneously. This may result from the following sequence of events (note that
(Main) and (IPC) in the timeline below refer to the main thread and IPC background thread, respectively):

(Main) Call waitForAndDispatchImmediately, and begin waiting.

(IPC) A message N arrives, and is handled in processIncomingMessage by setting the decoder of

m_waitingForMessage and notifying the condition variable.

(Main) The main thread wakes up and starts to process N, clearing out m_waitingForMessage in the process.

(IPC) A second message N arrives. We see that m_waitingForMessage is null, so we don't set the decoder

and bail. Instead, we prepare to call enqueueIncomingMessage and push the message onto the main
thread, *but importantly*, we haven't done so yet.

(Main) Call waitForAndDispatchImmediately again, set m_waitingForMessage, and begin waiting. Since the

incoming message that was just received above has not been enqueued yet, we are unable to avoid waiting
due to the incoming message.

(IPC) We finally call enqueueIncomingMessage, which pushes the message N into m_incomingMessages and

dispatches onto the main thread. However, this is too late, since the main thread is already stuck
waiting for the incoming IPC message that we've now just enqueued.

Two minor adjustments are required to fix this, described in the below comments. The combination of these two
changes ensures that the scenario described above is impossible, since we'll either set m_waitingForMessage's
decoder and wake up the main thread in the case where waitForMessage is called before processIncomingMessage,
or we'll bail early in waitForMessage with the enqueued IPC message in the case where processIncomingMessage
runs before waitForMessage.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForMessage):

Move logic that checks the incoming messages queue when calling Connection::waitForMessage into the
m_waitForMessageMutex critical section.

(IPC::Connection::processIncomingMessage):

Extend the critical section of m_waitForMessageMutex when processing an incoming message, such that it
encompasses the part that enqueues the incoming message.

8:41 PM Changeset in webkit [270179] by Lauro Moura
  • 2 edits in trunk/Tools

[GTK] Unreviewed. Remove leftover test case after Internet Explorer quirks changes

The test cases were still expecting Linux platform for
drive.google.com, which now uses the IE quirk and thus the Windows
platform.

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

8:21 PM Changeset in webkit [270178] by Lauro Moura
  • 4 edits in trunk

[GTK][GTK4] Building with GObject-Introspection support does not work
https://bugs.webkit.org/show_bug.cgi?id=219221

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/OptionsGTK.cmake: Allow introspection with GTK4.

Source/WebKit:

  • PlatformGTK.cmake: Forward GTK version to gir scanner and use correct pkg-config package.
6:55 PM Changeset in webkit [270177] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

[GTK4] Declare lambda return type to avoid build error deducing it
https://bugs.webkit.org/show_bug.cgi?id=219268

Reviewed by Adrian Perez de Castro.

  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::createPopupMenu):

6:53 PM Changeset in webkit [270176] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[GTK4] Build fix. Add cast when taking const data ownership
https://bugs.webkit.org/show_bug.cgi?id=219267

Reviewed by Carlos Garcia Campos.

r269614 introduced the NativeImage class, which returns a const platform image and
uses an Observer scheme to release the data.

  • platform/graphics/gtk/ImageGtk.cpp:

(WebCore::BitmapImage::gdkTexture): Keep using the direct approach and use a const_cast
to release the data.

6:18 PM Changeset in webkit [270175] by Fujii Hironori
  • 12 edits
    9 adds in trunk

[WinCairo] Enable GPU process
https://bugs.webkit.org/show_bug.cgi?id=219294

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWin.cmake: Turned ENABLE_GPU_PROCESS on for WinCairo.

Source/WebCore:

  • platform/graphics/FontPlatformData.cpp:
  • platform/graphics/win/FontPlatformDataCairoWin.cpp:

(WebCore::FontPlatformData::familyName const): Added.

Source/WebKit:

Added stub functions to build GPU process.

Invoke the following command to enable GPU process:

reg add HKEY_CURRENT_USER\Software\WebKit /v gpu_process_canvas_rendering /t REG_DWORD /d 1 /f

Invoke the following command to disable GPU process:

reg delete HKEY_CURRENT_USER\Software\WebKit /v gpu_process_canvas_rendering /f

  • GPUProcess/media/win/RemoteMediaPlayerProxyWin.cpp: Added.

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged):
(WebKit::RemoteMediaPlayerProxy::enterFullscreen):
(WebKit::RemoteMediaPlayerProxy::exitFullscreen):

  • GPUProcess/win/GPUProcessMainWin.cpp: Added.

(WebKit::initializeAuxiliaryProcess<GPUProcess>):
(WebKit::GPUProcessMain):

  • GPUProcess/win/GPUProcessWin.cpp: Added.

(WebKit::GPUProcess::initializeProcess):
(WebKit::GPUProcess::initializeProcessName):
(WebKit::GPUProcess::initializeSandbox):

  • PlatformWin.cmake:
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/curl/WebCoreArgumentCodersCurl.cpp:

(IPC::ArgumentCoder<FontAttributes>::encodePlatformData): Deleted.
(IPC::ArgumentCoder<FontAttributes>::decodePlatformData): Deleted.
(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData): Deleted.
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData): Deleted.

  • Shared/win/WebCoreArgumentCodersWin.cpp: Added.

(IPC::ArgumentCoder<FontAttributes>::encodePlatformData):
(IPC::ArgumentCoder<FontAttributes>::decodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):

  • Shared/win/WebPreferencesDefaultValuesWin.cpp: Added.

(WebKit::isFeatureFlagEnabled):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::submitDisplayList):
(WebKit::RemoteRenderingBackendProxy::createItemBuffer):

  • WebProcess/GPU/media/win/VideoLayerRemoteWin.cpp: Added.

(WebKit::createVideoLayerRemote):

Source/WTF:

  • wtf/PlatformHave.h: Turned HAVE_SYSTEM_FEATURE_FLAGS on for Windows.
6:14 PM Changeset in webkit [270174] by Fujii Hironori
  • 24 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/formatting_model/height_of_lines-expected.txt:
  • platform/wincairo/css1/text_properties/vertical_align-expected.txt:
  • platform/wincairo/css2.1/20110323/replaced-intrinsic-ratio-001-expected.txt:
  • platform/wincairo/editing/input/caret-at-the-edge-of-contenteditable-expected.txt:
  • platform/wincairo/editing/input/reveal-caret-of-multiline-input-expected.txt:
  • platform/wincairo/editing/inserting/paragraph-separator-in-table-1-expected.txt:
  • platform/wincairo/fast/css/named-images-expected.txt:
  • platform/wincairo/fast/css/text-overflow-input-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-element-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt:
  • platform/wincairo/fast/dom/HTMLMeterElement/meter-styles-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/indeterminate-progress-001-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/native-progress-bar-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/wincairo/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
  • platform/wincairo/fast/text/basic/generic-family-reset-expected.txt:
  • platform/wincairo/fast/text/hyphenate-limit-before-after-expected.txt:
  • platform/wincairo/fast/text/international/bidi-LDB-2-CSS-expected.txt:
  • platform/wincairo/fast/text/international/bidi-LDB-2-HTML-expected.txt:
  • platform/wincairo/fast/text/international/bidi-LDB-2-formatting-characters-expected.txt:
6:05 PM Changeset in webkit [270173] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Update Run32bitJSCTests step for new buildbot
https://bugs.webkit.org/show_bug.cgi?id=219085

Reviewed by Jonathan Bedard.

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

(Run32bitJSCTests):
(Run32bitJSCTests.start): Initialized log observer.
(Run32bitJSCTests.parseOutputLine): Parse each log line as they come.
(Run32bitJSCTests.countFailures): Updated to return failedTestCount.

5:21 PM Changeset in webkit [270172] by yoshiaki.jitsukawa@sony.com
  • 2 edits in trunk/Source/WebCore

AXObjectCache::focusedObjectForPage() is not defined when ENABLE(ACCESSIBILITY) is off
https://bugs.webkit.org/show_bug.cgi?id=219290

Reviewed by Chris Fleizach.

Define AXObjectCache::focusedObjectForPage() as a function which
returns a nullptr.

  • accessibility/AXObjectCache.h:

(WebCore::AXObjectCache::focusedObjectForPage): Defined.

4:48 PM Changeset in webkit [270171] by youenn@apple.com
  • 7 edits
    2 adds in trunk

https://collab-project.github.io/videojs-record/demo/video-only.html is not working
https://bugs.webkit.org/show_bug.cgi?id=219258
<rdar://problem/69759808>

Reviewed by Eric Carlson.

Source/WebCore:

Make 'HTMLMediaElement.srcObject = blob' functional by making sure to register a blob URL before trying to load.
Clean-up internal slots when srcObject is set to make sure we do not load a MediaStream even if the current MediaProvider is a Blob.

Fix a Use-After-Move bug that can be triggered in case of synchronous media loading failure.

Test: http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::setSrcObject):
(WebCore::HTMLMediaElement::loadResource):

  • html/HTMLMediaElement.h:
  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:

(WebCore::WebCoreAVFResourceLoader::startLoading):

Source/WebKit:

Fixed a potential null pointer crash in case load is aborted by WebCore at creation time.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::requestResource):

LayoutTests:

  • http/wpt/mediarecorder/set-srcObject-MediaStream-Blob-expected.txt: Added.
  • http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html: Added.
4:40 PM Changeset in webkit [270170] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

[GTK] Allow WebKitTestServer to run non-loopback addresses for API tests
https://bugs.webkit.org/show_bug.cgi?id=219257

GTK API tests currently assumes that loopback IP addresses can be treated as mixed content
in order to test WEBKIT_INSECURE_CONTENT_RUN and WEBKIT_INSECURE_CONTENT_DISPLAYED APIs.
After bug 218623, this will no longer be true so this patch adds an option to
WebKitTestServer so that it can run a server listening to "localhost" instead. This approach
will work until bug 171934 is fixed, but we might add a way to launch a server listening to
non-localhost addresses (bug 219198) or review the whole mixed content handling in the
future (bug 140625). This patch also tweaks a bit WebKitTestServer options, so they use a
bitset instead.

Patch by Frederic Wang <fwang@igalia.com> on 2020-11-26
Reviewed by Michael Catanzaro.

  • TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:

(beforeAll): Add a ServerNonLoopback bit to the HTTPS server used by the tests, so that
insecure content APIs will still work after bug 218623. Also remove explicit options for the
HTTP server since it just uses the default (no bits set).

  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.cpp:

(WebKitTestServer::WebKitTestServer): Use the new bitset syntax. Starts a server listening to
"localhost" if the ServerNonLoopback bit is set.

  • TestWebKitAPI/glib/WebKitGLib/WebKitTestServer.h: Make the enum a list of bit positions

and the parameter a bitset of options. Add the new ServerNonLoopback option and remove
ServerHTTP, which corresponds to the default value (no bits set).

4:38 PM Changeset in webkit [270169] by yoshiaki.jitsukawa@sony.com
  • 4 edits in trunk

[PlayStation] Enable ResourceLoadStatistics
https://bugs.webkit.org/show_bug.cgi?id=219292

Reviewed by Fujii Hironori.

.:

  • Source/cmake/OptionsPlayStation.cmake:

Source/WebKit:

  • PlatformPlayStation.cmake:
4:36 PM Changeset in webkit [270168] by commit-queue@webkit.org
  • 6 edits in trunk

[WPE][GTK] Use Internet Explorer quirk for Google Docs
https://bugs.webkit.org/show_bug.cgi?id=219278

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-11-26
Reviewed by Carlos Garcia Campos.

Source/WebCore:

Since r266584, we've suffered from an annoying unsupported browser warning when using Google
Docs. We don't have many options to avoid it. I'm afraid that Firefox or Chrome quirks are
too risky, since these seem to tempt Google into using web platform features that WebKit
does not support. The safest quirk is the macOS platform quirk, but that doesn't work well
here because it breaks various keyboard shortcuts like Ctrl+A and Ctrl+Z. So an Internet
Explorer quirk is really the last card we have left.

I think this is the safest Google quirk we've ever had, in that it's pretty unlikely that
Google will try to send Internet Explorer anything that doesn't work in WebKit. However, it
will break eventually, whenever Google decides that Internet Explorer is no longer
supported. I guess that date is probably at least five years away, so we can only hope that
Google drops this anticompetitive nonsense before then.

P.S. Let's also switch Google Drive to this new quirk. The unsupported browser warning on
Google Drive seems to be completely independent, but the IE quirk seems safer that the
existing Firefox quirk, so why not?

  • platform/UserAgentQuirks.cpp:

(WebCore::isGoogle):
(WebCore::urlRequiresInternetExplorerBrowser):
(WebCore::urlRequiresWindowsPlatform):
(WebCore::urlRequiresLinuxDesktopPlatform):
(WebCore::UserAgentQuirks::quirksForURL):
(WebCore::UserAgentQuirks::stringForQuirk):

  • platform/UserAgentQuirks.h:
  • platform/glib/UserAgentGLib.cpp:

(WebCore::buildUserAgentString):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::assertUserAgentForURLHasChromeBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasFirefoxBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasInternetExplorerBrowserQuirk):
(TestWebKitAPI::assertUserAgentForURLHasWindowsPlatformQuirk):
(TestWebKitAPI::TEST):

3:59 PM Changeset in webkit [270167] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Fix non-unified build problem in CSSPropertyParserHelpers.cpp along with a little refactoring
https://bugs.webkit.org/show_bug.cgi?id=219222

Reviewed by Sam Weinig.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::fontStyleIsWithinRange): Deleted.
(WebCore::consumeFontStyleRange): Updated for name change to isFontStyleAngleInRange,
don't force angles to float since the values are stored as double. Use local variables
to avoid multiple calls to doubleValue.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::isCSSWideKeyword): Moved inline function here
from the header since it's only used inside this file.
(WebCore::CSSPropertyParserHelpers::consumeFontStyleRaw): Updated for the name change
of isFontStyleAngleInRange, and also eliminated local since it's clear without it.

  • css/parser/CSSPropertyParserHelpers.h:

(WebCore::CSSPropertyParserHelpers::isCSSWideKeyword): Deleted. This had "static" on it
in a header, which is not good style, but also didn't need to be in a header.
(WebCore::CSSPropertyParserHelpers::isFontStyleAngleInRange): Moved this here so we can
use it in two different .cpp files. Also renamed it for improved clarity, and used an
inline function because this is super simple.

3:56 PM Changeset in webkit [270166] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[WPE][GTK] Fix build with GCC 11
https://bugs.webkit.org/show_bug.cgi?id=219264

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-11-26
Reviewed by Carlos Garcia Campos.

It's not uncommon for really old code like this to abuse volatile as if it were a
synchronization primitive. It's not. This code is already synchronized by use of GOnce, so
it can be safely removed. References:

https://gitlab.gnome.org/GNOME/glib/-/issues/600#note_877282
http://isvolatileusefulwiththreads.in/C++/

  • wtf/glib/WTFGType.h:
Note: See TracTimeline for information about the timeline view.