Timeline
Nov 27, 2020:
- 9:17 PM Changeset in webkit [270215] by
-
- 13 edits2 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
-
- 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 performi64-expected-value <cmp> loaded-zero-extended-1byte-value
. For example, if the expected value is0xffffffff_ffffff00
,
and the value stored in the memory is0x00
, then the wasm op needs to fail since0x00
is not0xffffffff_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
-
- 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
-
- 3 edits1 add1 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
-
- 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
-
- 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
-
- 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
-
- 38 edits9 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
-
- 11 edits11 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
-
- 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
-
- 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
-
- 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
-
- 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
andMetaCommandEnd
. 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 allowingRemoteRenderingBackend
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 withStopReplayReason::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 byMetaCommandChangeDestinationImageBuffer
items, and may span one or more item buffers, separated
byMetaCommandChangeItemBuffer
items; finally, it will conclude with aMetaCommandEnd
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
toMetaCommandChangeItemBuffer
, such that it is
consistent with the newMetaCommandChangeDestinationImageBuffer
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 newMetaCommandChangeDestinationImageBuffer
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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 3 edits1 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
-
- 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
-
- 3 edits2 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
-
- 8 edits1 copy1 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 2 edits2 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
-
- 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
-
- 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 inprocessIncomingMessage
by setting the decoder of
m_waitingForMessage
and notifying the condition variable.
(Main) The main thread wakes up and starts to process
N
, clearing outm_waitingForMessage
in the process.
(IPC) A second message
N
arrives. We see thatm_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, setm_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 messageN
intom_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 setm_waitingForMessage
's
decoder and wake up the main thread in the case wherewaitForMessage
is called beforeprocessIncomingMessage
,
or we'll bail early inwaitForMessage
with the enqueued IPC message in the case whereprocessIncomingMessage
runs beforewaitForMessage
.
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 12 edits9 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
-
- 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
-
- 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
-
- 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
-
- 7 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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: