⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



May 29, 2021:

11:51 PM Changeset in webkit [278251] by Chris Dumez
  • 8 edits in trunk/Source

Stop using UncheckedLock in JSC::VMInspector
https://bugs.webkit.org/show_bug.cgi?id=226427

Reviewed by Mark Lam.

Source/JavaScriptCore:

Stop using UncheckedLock in JSC::VMInspector, as it is being phased out in favor
of Lock, which supports Clang thread safety analysis.

  • tools/HeapVerifier.cpp:

(JSC::HeapVerifier::checkIfRecorded):

  • tools/SigillCrashAnalyzer.cpp:

(JSC::SigillCrashAnalyzer::analyze):

  • tools/VMInspector.cpp:

(JSC::VMInspector::isValidExecutableMemory):
(JSC::VMInspector::codeBlockForMachinePC):
(JSC::VMInspector::lock): Deleted.

  • tools/VMInspector.h:

(JSC::VMInspector::WTF_RETURNS_LOCK):
(JSC::VMInspector::WTF_REQUIRES_LOCK):
(JSC::VMInspector::getLock): Deleted.
(JSC::VMInspector::iterate): Deleted.

Source/WTF:

Add Lock::tryLockWithTimeout(), similar to tryLock() but gives up after a
specified timeout. This used to be implemented in VMInspector but I think
Lock is a better place for it.

  • wtf/Lock.cpp:

(WTF::Lock::tryLockWithTimeout):

  • wtf/Lock.h:
11:13 PM Changeset in webkit [278250] by Ryan Haddad
  • 2 edits in trunk/Tools

[webkitpy] Add a delay between successive iOS simulator boots
https://bugs.webkit.org/show_bug.cgi?id=226376

Reviewed by Darin Adler.

In certain configurations, rapidly attempting to boot multiple
iOS simulators can cause them to fail to boot. Add a 10 second
delay to ensure that each one has a chance to initialize before
moving to the next one.

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager._boot_device):

10:35 PM Changeset in webkit [278249] by Chris Dumez
  • 6 edits in trunk/Source/JavaScriptCore

Stop using UncheckedLock in JSC::ConcurrentJSLock
https://bugs.webkit.org/show_bug.cgi?id=226428

Reviewed by Darin Adler.

Stop using UncheckedLock in JSC::ConcurrentJSLock as it is being phased out in
favor of Lock, which supports Clang thread safety analysis.

  • runtime/ConcurrentJSLock.h:

(JSC::ConcurrentJSLockerBase::ConcurrentJSLockerBase):

  • runtime/Structure.cpp:

(JSC::Structure::findStructuresAndMapForMaterialization):
(JSC::Structure::materializePropertyTable):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::forEachPropertyConcurrently):

  • yarr/YarrInterpreter.cpp:
10:22 PM Changeset in webkit [278248] by Chris Dumez
  • 11 edits in trunk

Adopt clang thread safety annotations in WTF::DataMutex
https://bugs.webkit.org/show_bug.cgi?id=226431

Reviewed by Darin Adler.

Source/WebCore:

Update code base due to DataMutex API changes.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::performTaskAtMediaTime):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcConstructed):
(webKitWebSrcGetProperty):
(webKitWebSrcSetContext):
(webKitWebSrcCreate):
(webKitWebSrcMakeRequest):
(webKitWebSrcStop):
(webKitWebSrcGetSize):
(webKitWebSrcIsSeekable):
(webKitWebSrcDoSeek):
(webKitWebSrcQuery):
(webKitWebSrcUnLock):
(webKitWebSrcUnLockStop):
(webKitWebSrcSetMediaPlayer):
(webKitSrcPassedCORSAccessCheck):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):
(webKitSrcWouldTaintOrigin):

  • platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp:

(WebCore::MediaSourceTrackGStreamer::isReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::notifyWhenReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::enqueueObject):
(WebCore::MediaSourceTrackGStreamer::clearQueue):

  • platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.h:
  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webKitMediaSrcActivateMode):
(webKitMediaSrcPadLinked):
(webKitMediaSrcLoop):
(webKitMediaSrcStreamFlush):

Source/WTF:

Adopt clang thread safety annotations in WTF::DataMutex. This allows us to
stop using UncheckedCondition in a few places.

  • wtf/DataMutex.h:

(WTF::DataMutex::DataMutex):

Tools:

Update API test due to DataMutex API changes.

  • TestWebKitAPI/Tests/WTF/DataMutex.cpp:

(TestWebKitAPI::TEST):

9:39 PM Changeset in webkit [278247] by weinig@apple.com
  • 2 edits in trunk/Source/ThirdParty

Remove selective compilation of libwebrtc as TestWebKitAPI depends on it for boringssl, so it is always needed
https://bugs.webkit.org/show_bug.cgi?id=226430

Reviewed by Tim Horton.

r244568 made TestWebKitAPI require linking the built boringssl from
the libwebrtc, so it really can't be selectively compiled. Over time,
we have re-enabled essentially all the platforms, when the intent of
disabling it at all originally was to avoid double building it for
Mac Catalyst, which we retain.

  • Makefile:
5:51 PM Changeset in webkit [278246] by weinig@apple.com
  • 14 edits
    38 adds
    4 deletes in trunk

Split calc() related files into 1-class per file structure
https://bugs.webkit.org/show_bug.cgi?id=226421

Reviewed by Chris Dumez.

Source/WebCore:

It's bothered me for a while that the calc related classes (both in css/
and in platform/) were bundled all in two big files. This change splits
them all out into their own header and implementation files that match
their name, and puts them in new calc/ subdirectories (css/calc/... and
platform/calc/...). This should hopefully make the modifications I need
to make to calc() to support relative color syntax a little easier.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSCalculationValue.cpp: Removed.
  • css/CSSCalculationValue.h: Removed.
  • css/CSSGradientValue.cpp:
  • css/CSSPrimitiveValue.cpp:
  • css/CSSPrimitiveValueMappings.h:
  • css/CSSValue.cpp:
  • css/calc: Added.
  • css/calc/CSSCalcCategoryMapping.cpp: Added.

(WebCore::calcUnitCategory):
(WebCore::calculationCategoryForCombination):
(WebCore::canonicalUnitTypeForCalculationCategory):
(WebCore::hasDoubleValue):

  • css/calc/CSSCalcCategoryMapping.h: Added.
  • css/calc/CSSCalcExpressionNode.cpp: Added.

(WebCore::operator<<):
(WebCore::prettyPrintNode):
(WebCore::prettyPrintNodes):

  • css/calc/CSSCalcExpressionNode.h: Added.

(WebCore::CSSCalcExpressionNode::equals const):
(WebCore::CSSCalcExpressionNode::category const):
(WebCore::CSSCalcExpressionNode::CSSCalcExpressionNode):

  • css/calc/CSSCalcExpressionNodeParser.cpp: Added.

(WebCore::CSSCalcExpressionNodeParser::parseCalc):
(WebCore::CSSCalcExpressionNodeParser::operatorValue):
(WebCore::checkDepthAndIndex):
(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseCalcValue):
(WebCore::CSSCalcExpressionNodeParser::parseCalcProduct):
(WebCore::CSSCalcExpressionNodeParser::parseCalcSum):

  • css/calc/CSSCalcExpressionNodeParser.h: Added.

(WebCore::CSSCalcExpressionNodeParser::CSSCalcExpressionNodeParser):

  • css/calc/CSSCalcInvertNode.cpp: Added.

(WebCore::CSSCalcInvertNode::createCalcExpression const):
(WebCore::CSSCalcInvertNode::doubleValue const):
(WebCore::CSSCalcInvertNode::computeLengthPx const):
(WebCore::CSSCalcInvertNode::dump const):

  • css/calc/CSSCalcInvertNode.h: Added.
  • css/calc/CSSCalcNegateNode.cpp: Added.

(WebCore::CSSCalcNegateNode::createCalcExpression const):
(WebCore::CSSCalcNegateNode::dump const):

  • css/calc/CSSCalcNegateNode.h: Added.
  • css/calc/CSSCalcOperationNode.cpp: Added.

(WebCore::determineCategory):
(WebCore::categoryForInvert):
(WebCore::resolvedTypeForMinOrMaxOrClamp):
(WebCore::isSamePair):
(WebCore::sortingCategoryForType):
(WebCore::sortingCategory):
(WebCore::primitiveTypeForCombination):
(WebCore::conversionToAddValuesWithTypes):
(WebCore::functionFromOperator):
(WebCore::CSSCalcOperationNode::create):
(WebCore::CSSCalcOperationNode::createSum):
(WebCore::CSSCalcOperationNode::createProduct):
(WebCore::CSSCalcOperationNode::createMinOrMaxOrClamp):
(WebCore::CSSCalcOperationNode::hoistChildrenWithOperator):
(WebCore::CSSCalcOperationNode::canCombineAllChildren const):
(WebCore::CSSCalcOperationNode::combineChildren):
(WebCore::CSSCalcOperationNode::simplify):
(WebCore::CSSCalcOperationNode::simplifyRecursive):
(WebCore::CSSCalcOperationNode::simplifyNode):
(WebCore::CSSCalcOperationNode::primitiveType const):
(WebCore::CSSCalcOperationNode::createCalcExpression const):
(WebCore::CSSCalcOperationNode::doubleValue const):
(WebCore::CSSCalcOperationNode::computeLengthPx const):
(WebCore::CSSCalcOperationNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcOperationNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcOperationNode::buildCSSText):
(WebCore::functionPrefixForOperator):
(WebCore::CSSCalcOperationNode::buildCSSTextRecursive):
(WebCore::CSSCalcOperationNode::dump const):
(WebCore::CSSCalcOperationNode::equals const):
(WebCore::CSSCalcOperationNode::evaluateOperator):

  • css/calc/CSSCalcOperationNode.h: Added.
  • css/calc/CSSCalcPrimitiveValueNode.cpp: Added.

(WebCore::CSSCalcPrimitiveValueNode::create):
(WebCore::CSSCalcPrimitiveValueNode::customCSSText const):
(WebCore::CSSCalcPrimitiveValueNode::primitiveType const):
(WebCore::CSSCalcPrimitiveValueNode::CSSCalcPrimitiveValueNode):
(WebCore::CSSCalcPrimitiveValueNode::isNumericValue const):
(WebCore::CSSCalcPrimitiveValueNode::isNegative const):
(WebCore::CSSCalcPrimitiveValueNode::negate):
(WebCore::CSSCalcPrimitiveValueNode::invert):
(WebCore::CSSCalcPrimitiveValueNode::add):
(WebCore::CSSCalcPrimitiveValueNode::multiply):
(WebCore::CSSCalcPrimitiveValueNode::convertToUnitType):
(WebCore::CSSCalcPrimitiveValueNode::canonicalizeUnit):
(WebCore::CSSCalcPrimitiveValueNode::createCalcExpression const):
(WebCore::CSSCalcPrimitiveValueNode::doubleValue const):
(WebCore::CSSCalcPrimitiveValueNode::computeLengthPx const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::isZero const):
(WebCore::CSSCalcPrimitiveValueNode::equals const):
(WebCore::CSSCalcPrimitiveValueNode::dump const):

  • css/calc/CSSCalcPrimitiveValueNode.h: Added.
  • css/calc/CSSCalcValue.cpp: Added.

(WebCore::createBlendHalf):
(WebCore::createCSS):
(WebCore::CSSCalcValue::CSSCalcValue):
(WebCore::CSSCalcValue::category const):
(WebCore::CSSCalcValue::primitiveType const):
(WebCore::CSSCalcValue::createCalculationValue const):
(WebCore::CSSCalcValue::setPermittedValueRange):
(WebCore::CSSCalcValue::collectDirectComputationalDependencies const):
(WebCore::CSSCalcValue::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcValue::customCSSText const):
(WebCore::CSSCalcValue::equals const):
(WebCore::CSSCalcValue::clampToPermittedRange const):
(WebCore::CSSCalcValue::doubleValue const):
(WebCore::CSSCalcValue::computeLengthPx const):
(WebCore::CSSCalcValue::isCalcFunction):
(WebCore::CSSCalcValue::dump const):
(WebCore::CSSCalcValue::create):
(WebCore::operator<<):

  • css/calc/CSSCalcValue.h: Added.
  • css/parser/CSSPropertyParserHelpers.cpp:
  • platform/CalculationValue.cpp: Removed.
  • platform/CalculationValue.h: Removed.
  • platform/Length.cpp:
  • platform/calc: Added.
  • platform/calc/CalcExpressionBlendLength.cpp: Added.

(WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength):
(WebCore::CalcExpressionBlendLength::evaluate const):
(WebCore::CalcExpressionBlendLength::operator== const):
(WebCore::CalcExpressionBlendLength::dump const):

  • platform/calc/CalcExpressionBlendLength.h: Added.

(WebCore::operator==):

  • platform/calc/CalcExpressionInversion.cpp: Added.

(WebCore::CalcExpressionInversion::evaluate const):
(WebCore::CalcExpressionInversion::dump const):
(WebCore::CalcExpressionInversion::operator== const):
(WebCore::operator==):

  • platform/calc/CalcExpressionInversion.h: Added.
  • platform/calc/CalcExpressionLength.cpp: Added.

(WebCore::CalcExpressionLength::evaluate const):
(WebCore::CalcExpressionLength::operator== const):
(WebCore::CalcExpressionLength::dump const):

  • platform/calc/CalcExpressionLength.h: Added.

(WebCore::CalcExpressionLength::CalcExpressionLength):
(WebCore::operator==):

  • platform/calc/CalcExpressionNegation.cpp: Added.

(WebCore::CalcExpressionNegation::evaluate const):
(WebCore::CalcExpressionNegation::operator== const):
(WebCore::CalcExpressionNegation::dump const):
(WebCore::operator==):

  • platform/calc/CalcExpressionNegation.h: Added.
  • platform/calc/CalcExpressionNode.cpp: Added.

(WebCore::operator<<):

  • platform/calc/CalcExpressionNode.h: Added.

(WebCore::CalcExpressionNode::type const):
(WebCore::CalcExpressionNode::CalcExpressionNode):

  • platform/calc/CalcExpressionNumber.cpp: Added.

(WebCore::CalcExpressionNumber::evaluate const):
(WebCore::CalcExpressionNumber::dump const):
(WebCore::CalcExpressionNumber::operator== const):

  • platform/calc/CalcExpressionNumber.h: Added.

(WebCore::CalcExpressionNumber::CalcExpressionNumber):
(WebCore::operator==):

  • platform/calc/CalcExpressionOperation.cpp: Added.

(WebCore::CalcExpressionOperation::evaluate const):
(WebCore::CalcExpressionOperation::operator== const):
(WebCore::operator==):
(WebCore::CalcExpressionOperation::dump const):

  • platform/calc/CalcExpressionOperation.h: Added.

(WebCore::CalcExpressionOperation::CalcExpressionOperation):

  • platform/calc/CalcOperator.cpp: Added.

(WebCore::operator<<):

  • platform/calc/CalcOperator.h: Added.
  • platform/calc/CalculationCategory.cpp: Added.

(WebCore::operator<<):

  • platform/calc/CalculationCategory.h: Added.
  • platform/calc/CalculationValue.cpp: Added.

(WebCore::CalculationValue::create):
(WebCore::CalculationValue::CalculationValue):
(WebCore::CalculationValue::evaluate const):
(WebCore::operator==):
(WebCore::operator<<):

  • platform/calc/CalculationValue.h: Added.

(WebCore::CalculationValue::shouldClampToNonNegative const):
(WebCore::CalculationValue::expression const):

  • style/StyleBuilderConverter.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/CalculationValue.cpp:

Update test to include additonal header now needed.

4:29 PM Changeset in webkit [278245] by Cameron McCormack
  • 14 edits in trunk

Rename Internals.mainThreadScrollingReasons to synchronousScrollingReasons
https://bugs.webkit.org/show_bug.cgi?id=226415

Reviewed by Simon Fraser.

Source/WebCore:

Brings the name into accordance with the term the C++ code uses.

  • testing/Internals.cpp:

(WebCore::Internals::synchronousScrollingReasons const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • compositing/layer-creation/fixed-position-in-view-dynamic.html:
  • compositing/layer-creation/fixed-position-no-content-scroll-reason-expected.txt:
  • compositing/layer-creation/fixed-position-no-content-scroll-reason.html:
  • compositing/layer-creation/fixed-position-out-of-view-dynamic.html:
  • compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html:
  • compositing/layer-creation/no-compositing-for-fixed-position-under-transform.html:
  • tiled-drawing/scrolling/slow-scrolling-background-toggle.html:
  • tiled-drawing/scrolling/slow-scrolling-hidden-background-toggle.html:
  • tiled-drawing/scrolling/slow-scrolling.html:
3:08 PM Changeset in webkit [278244] by Darin Adler
  • 85 edits in trunk

Clients of optional should use has_value instead of relying on hasValue macro
https://bugs.webkit.org/show_bug.cgi?id=226395

Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • bytecompiler/NodesCodegen.cpp:

(JSC::RegExpNode::emitBytecode): Don't use hasValue.

Source/WebCore:

In some files we are touching, moved from Optional to std::optional, but doing
that consistently in files we are not otherwise modifying is out of scope here.

In some places, use has_value instead of hasValue. In others, improved further
by not using has_value explicitly when it's clearer to do so. Wasn't 100%
consistent about that, but did aim to cover 100% of the hasValue call sites.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::create): Don't use hasValue.

  • Modules/webxr/WebXRFrame.cpp:

(WebCore::WebXRFrame::getViewerPose): Ditto.
(WebCore::WebXRFrame::getPose): Ditto.

  • Modules/webxr/WebXRGamepad.cpp:

(WebCore::WebXRGamepad::WebXRGamepad): Ditto.

  • Modules/webxr/WebXRInputSource.cpp:

(WebCore::WebXRInputSource::requiresInputSourceChange): Use has_value.

  • bindings/js/DOMPromiseProxy.h:

(WebCore::DOMPromiseProxy<IDLType>::isFulfilled const): Ditto.
(WebCore::DOMPromiseProxy<IDLUndefined>::isFulfilled const): Ditto.
(WebCore::DOMPromiseProxyWithResolveCallback<IDLType>::isFulfilled const): Ditto.

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readTerminal): Ditto.

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::addToFacesLookupTable): Removed unneeded double check
of optional value. !x and !x.has_value() check the same thing.
(WebCore::CSSFontFaceSet::remove): Ditto.
(WebCore::CSSFontFaceSet::fontFace): Simplified code with extra local variables
to use an idiom that does not use hasValue. Since using *, ->, or value() on an
optional already asserts, there is no need to explicitly assert in the caller.

  • css/CSSGradientValue.cpp:

(WebCore::GradientStop::isSpecified const): Use has_value.

  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::fontRanges): Removed unneeded calls to hasValue.

  • css/FontFace.cpp:

(WebCore::FontFace::family const): Use has_value.
(WebCore::FontFace::style const): Ditto.
(WebCore::FontFace::weight const): Ditto.
(WebCore::FontFace::stretch const): Ditto.
(WebCore::FontFace::unicodeRange const): Ditto.
(WebCore::FontFace::featureSettings const): Ditto.
(WebCore::FontFace::display const): Ditto.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::consumeANPlusB): Ditto.

  • display/css/DisplayStyle.h: Ditto.
  • dom/DataTransferItemList.h: Ditto.
  • dom/Document.cpp:

(WebCore::Document::updateHighlightPositions): Ditto.

  • dom/EventTarget.cpp:

(WebCore::EventTarget::addEventListener): Ditto.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::hasPendingCorrection const): Ditto.

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::applyInlineStyle): Don't call hasValue.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::captionDisplayMode): Ditto.

  • html/ImageBitmap.h: Ditto.
  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::setScreenSizeOverride): Use has_value.

  • layout/LayoutPhase.cpp:

(WebCore::Layout::PhaseScope::PhaseScope): Ditto.

  • layout/formattingContexts/inline/InlineContentBreaker.cpp:

(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const): Ditto.

  • layout/formattingContexts/inline/InlineLine.h: Ditto.
  • loader/CrossOriginPreflightResultCache.cpp:

(WebCore::parseAccessControlMaxAge): Ditto.

  • page/EventHandler.cpp:

(WebCore::EventHandler::defaultWheelEventHandler): Ditto.

  • page/ios/ContentChangeObserver.cpp:

(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope): Ditto.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::closestSnapOffsetWithInfoAndAxis): Ditto.

  • platform/ScrollController.cpp:

(WebCore::ScrollController::adjustScrollDestination): Don't use hasValue.

  • platform/cocoa/SystemBattery.mm:

(WebCore::systemHasBattery): Use has_value.
(WebCore::systemHasAC): Use has_value.

  • platform/graphics/Gradient.h: Ditto.
  • platform/graphics/ImageSource.h: Ditto.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::wouldTaintOrigin const): Changed idiom to not use hasValue.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(setGLContext): Do not use hasValue.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::ElementFactories::hasElementForMediaType const): Ditto.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::performTaskAtMediaTime): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint): Ditto.

  • platform/graphics/gstreamer/eme/CDMProxyThunder.cpp:

(WebCore::CDMProxyThunder::getDecryptionSession const): Use has_value.

  • platform/graphics/gstreamer/eme/CDMThunder.cpp:

(WebCore::ParsedResponseMessage::hasType const): Use has_value.
(WebCore::CDMInstanceSessionThunder::cdmInstanceThunder const): Use
a pointer for the erturn value instead of Optional<&>. This hasn't
compiled since we switched to std::optional so I suspect this code is
not compiled by EWS or the buildbot.

  • platform/graphics/gstreamer/eme/CDMThunder.h: Updated to match above.
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::parseDemuxerSrcPadCaps): Use value_or.
(WebCore::AppendPipeline::appsinkCapsChanged): Do not use has_value.

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected): Ditto.

  • platform/graphics/transforms/TransformState.h: Use has_value.
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(WebCore::supportsPictureInPicture): Ditto.

  • platform/mac/NSScrollerImpDetails.mm:

(WebCore::ScrollerStyle::recommendedScrollerStyle): Ditto.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::isSystemPreview const): Ditto.

  • platform/xr/openxr/OpenXRInputSource.cpp:

(PlatformXR::OpenXRInputSource::getInputSource const): Ditto.

  • rendering/EventRegion.h: Ditto.
  • rendering/GridTrackSizingAlgorithm.h: Remove unnecessary assertion, since

the * operator already does the assertion.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::canComputePercentageFlexBasis): Use has_value.

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::setExplicitValue): Ditto.

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::systemFocusRingColor): Ditto.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::removeAnonymousWrappersForInlineChildrenIfNeeded): Ditto.

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::createSVGTransformFromMatrix): Changed idiom to not
call hasValue.

  • svg/SVGTransform.h: Ditto.
  • testing/WebFakeXRDevice.cpp:

(WebCore::WebFakeXRDevice::setViews): Ditto.

Source/WebDriver:

  • socket/SessionHostSocket.cpp:

(WebDriver::SessionHost::isConnected const): Use has_value.

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h: Use std::optional; there was no hasValue

in here and I edited it by mistake, but we want to do this eventually.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: Removed using namespace WebCore.

(IPC::ArgumentCoder<Ref<WebCore::Font>>::decodePlatformData): Use has_value.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::getClientSDKVersion): Ditto.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::decodeImage): Changed idiom to not call hasValue.
(IPC::ArgumentCoder<Ref<Font>>::decode): Ditto.

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::finishParsing): Use has_value.
(WebKit::MediaFormatReader::copyProperty): Ditto.
(WebKit::MediaFormatReader::copyTrackArray): Ditto.

  • Shared/win/WebCoreArgumentCodersWin.cpp:

(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData): Do not call hasValue.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration encodeWithCoder:]): Changed idiom to not use hasValue.

  • UIProcess/API/glib/InputMethodFilter.cpp:

(WebKit::InputMethodFilter::setState): Use has_value.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::AutomationCommandError::toProtocolString): Changed idiom to not use hasValue.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::determineDataOwner const): Use has_value.

  • UIProcess/Inspector/socket/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::sendWebInspectorEvent): Changed idiom to not use hasValue.

  • UIProcess/glib/UserMediaPermissionRequestManagerProxyGLib.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::platformValidateUserMediaRequestConstraints): Ditto.

  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:

(WebKit::MediaSourcePrivateRemote::addSourceBuffer): Use has_value.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters): Ditto.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::notifyPreferencesChanged): Changed idiom to not
call hasValue.

Source/WTF:

  • wtf/Hasher.h: Use has_value.
  • wtf/Optional.h: Remove hasValue macro. Not needed any more, but also a bit

dangerous because of how widespread the use of hasValue is for things other
than WTF::Optional.

Tools:

  • TestWebKitAPI/Tests/WebCore/CBORReaderTest.cpp: Use has_value.
  • TestWebKitAPI/Tests/WebCore/CBORWriterTest.cpp: Ditto.
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp: Ditto.
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(AudioRenderingWebViewTest::handleStart): Ditto.

  • WebKitTestRunner/GeolocationProviderMock.cpp:

(WTR::GeolocationProviderMock::setPosition): Ditto.

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView canPerformAction:withSender:]): Ditto.

2:14 PM Changeset in webkit [278243] by Chris Dumez
  • 6 edits in trunk/Source/JavaScriptCore

Stop using UncheckedLock in JSC::SamplingProfiler
https://bugs.webkit.org/show_bug.cgi?id=226414

Reviewed by Darin Adler.

Stop using UncheckedLock in JSC::SamplingProfiler as it is being phased out in favor of Lock,
which supports clang thread safety analysis.

  • heap/Heap.cpp:

(JSC::visitSamplingProfiler):

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::InspectorScriptProfilerAgent::startTracking):
(Inspector::InspectorScriptProfilerAgent::trackingComplete):
(Inspector::InspectorScriptProfilerAgent::stopSamplingWhenDisconnecting):

  • runtime/JSGlobalObject.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::createThreadIfNecessary):
(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::startWithLock):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThreadWithLock):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::clearData):
(JSC::SamplingProfiler::releaseStackTraces):
(JSC::SamplingProfiler::stackTracesAsJSON):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::WTF_RETURNS_LOCK):
(JSC::SamplingProfiler::WTF_REQUIRES_LOCK):

2:09 PM Changeset in webkit [278242] by Chris Dumez
  • 2 edits in trunk/Source/JavaScriptCore

Stop using UncheckedLock in JSC::dumpJITMemory()
https://bugs.webkit.org/show_bug.cgi?id=226413

Reviewed by Darin Adler.

Stop using UncheckedLock in JSC::dumpJITMemory() as it is being phased out in favor of Lock,
which supports Clang thread safety analysis.

  • jit/ExecutableAllocator.cpp:

(JSC::dumpJITMemory):

2:08 PM Changeset in webkit [278241] by Chris Dumez
  • 4 edits in trunk/Source/JavaScriptCore

Stop using UncheckedLock in JSC::WasmCalleeRegistry
https://bugs.webkit.org/show_bug.cgi?id=226412

Reviewed by Darin Adler.

Stop using UncheckedLock in JSC::WasmCalleeRegistry, as it is being phased out in favor of
Lock, which supports Clang thread safety analysis.

  • runtime/SamplingProfiler.cpp:

(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::recordJITFrame):
(JSC::CFrameWalker::CFrameWalker):
(JSC::SamplingProfiler::takeSample):

  • wasm/WasmCalleeRegistry.h:

(JSC::Wasm::CalleeRegistry::WTF_RETURNS_LOCK):
(JSC::Wasm::CalleeRegistry::WTF_REQUIRES_LOCK):
(JSC::Wasm::CalleeRegistry::getLock): Deleted.
(JSC::Wasm::CalleeRegistry::isValidCallee): Deleted.

  • wasm/WasmFaultSignalHandler.cpp:

(JSC::Wasm::trapHandler):

9:59 AM Changeset in webkit [278240] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

VM::isTerminationException() should only be run on a non-null exception value.
https://bugs.webkit.org/show_bug.cgi?id=226417
rdar://78646170

Reviewed by Filip Pizlo.

  • jsc.cpp:

(runInteractive):

6:38 AM Changeset in webkit [278239] by Alan Bujtas
  • 9 edits
    2 adds in trunk

[LFC][TFC] Do not include vertical spacing when resolving percent height for table content
https://bugs.webkit.org/show_bug.cgi?id=226365

Source/WebCore:

Reviewed by Antti Koivisto.

<table style="height: 100px; border-spacing: 10px;"><tr><td style="height: 100%"></td></tr></table>
The <td>'s 100% height is resolved against 100px - (2 * 10px) -> 80px;

Test: fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::TableFormattingContext):

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::TableFormattingGeometry):
(WebCore::Layout::TableFormattingGeometry::computedCellBorder const):

  • layout/formattingContexts/table/TableFormattingGeometry.h:

(WebCore::Layout::TableFormattingGeometry::formattingContext const):

  • layout/formattingContexts/table/TableFormattingQuirks.cpp:

(WebCore::Layout::TableFormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):

  • layout/formattingContexts/table/TableFormattingQuirks.h:

(WebCore::Layout::TableFormattingQuirks::formattingContext const):

LayoutTests:

Reviewed by Antti Koivisto.

  • TestExpectations: WebKit table layout don't resolve the height percent properly when border spacing is present.
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing-expected.html: Added.
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html: Added.
5:12 AM Changeset in webkit [278238] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

[LFC] Transition containing block for loops to range loops
https://bugs.webkit.org/show_bug.cgi?id=226315

Reviewed by Antti Koivisto.

Add support for stayWithin.

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::mapTopLeftToFloatingStateRoot const):

  • layout/formattingContexts/FormattingGeometry.cpp:

(WebCore::Layout::FormattingGeometry::computedHeightValue const):

  • layout/formattingContexts/block/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isDescendantOf const):

  • layout/layouttree/LayoutBox.h:
  • layout/layouttree/LayoutContainingBlockChainIterator.h:

(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::begin):
(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::end):
(WebCore::Layout::LayoutContainingBlockChainIterator::LayoutContainingBlockChainIterator):
(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::LayoutContainingBlockChainIteratorAdapter):
(WebCore::Layout::containingBlockChain):

3:09 AM Changeset in webkit [278237] by Adrian Perez de Castro
  • 3 edits in trunk/Source/JavaScriptCore

Non-unified build fixes, late-ish May 2021 edition redux
https://bugs.webkit.org/show_bug.cgi?id=226401

Unreviewed non-unified build fixes.

  • jit/JITSizeStatistics.cpp: Add missing LinkBuffer.h header.
  • jit/JITSizeStatistics.h: Add missing CCallHelpers.h and wtf/text/WTFString.h headers;

remove unneeded CCallHelpers forward declaration.

May 28, 2021:

10:48 PM Changeset in webkit [278236] by achristensen@apple.com
  • 4 edits in trunk

Punycode encode U+0BE6 when not in context of other Tamil characters
https://bugs.webkit.org/show_bug.cgi?id=226409
<rdar://78160926>

Reviewed by Tim Horton.

Source/WTF:

It has quite legitimate use, so we don't want to always punycode encode it,
but when used in the context of non-Tamil characters we want to punycode encode it.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isLookalikeCharacterOfScriptType<USCRIPT_ARMENIAN>):
(WTF::URLHelpers::isLookalikeCharacterOfScriptType<USCRIPT_TAMIL>):
(WTF::URLHelpers::isOfScriptType):
(WTF::URLHelpers::isLookalikeSequence):
(WTF::URLHelpers::isLookalikeCharacter):
(WTF::URLHelpers::isArmenianLookalikeCharacter): Deleted.
(WTF::URLHelpers::isArmenianScriptCharacter): Deleted.
(WTF::URLHelpers::isArmenianLookalikeSequence): Deleted.

Tools:

  • TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

10:27 PM Changeset in webkit [278235] by Wenson Hsieh
  • 8 edits
    2 adds in trunk

Web process terminates when attempting to log in on bankid.no
https://bugs.webkit.org/show_bug.cgi?id=226411
rdar://77419432

Reviewed by Chris Dumez.

Source/WebCore:

On bankid.no, we hit an erroneous MESSAGE_CHECK after decoding and applying an EndClipToDrawingCommands while
the display list replayer's m_maskImageBuffer is null. This may occur as a result of the following sequence of
events:

  1. We call into clipToDrawingCommands inside CanvasRenderingContext2DBase, while drawing text with either

a gradient or pattern fill style.

  1. A BeginClipToDrawingCommands item is decoded and handled in the GPU process; we create and store a new

mask image buffer on the display list replayer in the GPU process.

  1. When we decode the DrawGlyphs item while drawing into the mask buffer, we see that the resource identifier

corresponding to the font is missing from the resource cache in the GPU process, and subsequently go to
sleep while we wait for the resource to arrive.

  1. The web font data arrives in the GPU process, and we add it to the cache; this allows us to continue

processing the display list from where we paused replay in step (3).

  1. Eventually, we handle the EndClipToDrawingCommands item; however, since this is now happening underneath

a different GPU process wakeup message than in (2), our mask image buffer from (1) is missing. This not only
causes all of the prior drawing commands to target the canvas' image buffer rather than the mask image
buffer, but also causes us to hit a MESSAGE_CHECK and terminate the web process.

To fix this, we add some DisplayList::Replayer::Delegate method hooks to call out into the replayer client when
a mask image buffer has been created or cleared out; in the GPU process, we then use these client hooks to keep
track of the current mask image buffer that is the target of display list replayer.

If we go to sleep and then resume display list processing later for any reason, we then pass this mask image
buffer back to the display list replayer upon construction, and simply let the display list replayer paint into
the maks image buffer's context.

Test: fast/canvas/fill-gradient-text-with-web-font.html

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::Replayer):
(WebCore::DisplayList::Replayer::applyItem):

Call into the client hooks below.

  • platform/graphics/displaylists/DisplayListReplayer.h:

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

When initializing a DisplayList::Replayer, make it possible to take in an initial mask image buffer as well.

(WebCore::DisplayList::Replayer::Delegate::didCreateMaskImageBuffer):
(WebCore::DisplayList::Replayer::Delegate::didResetMaskImageBuffer):

Add new replayer delegate hooks to inform the clients layer when the replayer's mask image buffer has been
created or cleared out. See WebKit ChangeLog for more information.

Source/WebKit:

See WebCore ChangeLog for more details.

  • GPUProcess/graphics/RemoteImageBuffer.h:

Implement the new display list replayer delegate hooks and plumb the calls over to the RemoteRenderingBackend.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::submit):

Keep track of m_currentMaskImageBuffer by implementing the methods below, and use this when initializing our
DisplayList::Replayer if needed.

(WebKit::RemoteRenderingBackend::didCreateMaskImageBuffer):
(WebKit::RemoteRenderingBackend::didResetMaskImageBuffer):

  • GPUProcess/graphics/RemoteRenderingBackend.h:

LayoutTests:

Add a layout test that exercises the crash by first serializing a large number of display list items, and then
calling fillText with a web font and a gradient fillStyle.

  • fast/canvas/fill-gradient-text-with-web-font-expected.html: Added.
  • fast/canvas/fill-gradient-text-with-web-font.html: Added.
9:34 PM Changeset in webkit [278234] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

[JSC] Escape $ only when run with SSH
https://bugs.webkit.org/show_bug.cgi?id=226385

Reviewed by Alexey Proskuryakov.

  • Scripts/run-jsc-stress-tests:
6:28 PM Changeset in webkit [278233] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Regression: Raw AudioBufferSourceNode playback causes repeated crackling sound
https://bugs.webkit.org/show_bug.cgi?id=222098
<rdar://problem/74546471>

Reviewed by Darin Adler.

The issue was due to certain audio nodes (such as AudioBufferSourceNode) staying in the audio
graph after they were no longer needed. As a result, the audio graph was becoming larger and
larger and the audio performance should degrade due to us traversing this increasingly large
graph.

The audio nodes that had trouble getting removed from the graphs were tail processing nodes.
Those are nodes that may still produce output for a while after they no longer have any
inputs. PannerNode and DelayNode are example of such nodes.

When a Node is no longer useful (the node no longer has any connections, m_connectionRefCount
is 0), we call disableOutputsIfNecessary() on it to disable its outputs and avoid doing any
processing of these outputs since they no longer have an input. disableOutputsIfNecessary()
would normally call disableOutputs() (if not already disabled) but there was an exception
in the case where the node requires tail processing. For such nodes, you wouldn't want to
disable them until they've finished processing their tail.

The issue was that once those nodes had finished processing their tail, we wouldn't come
back to them and disable their outputs later on. As a result, we would process more and
more (silent) nodes and the audio performance would seriously deteriorate.

To address this, we now add the node to the context's list of tail processing nodes in
disableOutputsIfNecessary() if the node requires tail processing. After each rendering
quantum, we go through those tail processing nodes and check if they have finished
processing their tail. If they have, we go ahead and disable their outputs at this point
and remove them from the list.

This is modeled after what Blink is doing for tail processing nodes in:

I have verified that on the following demo, the performance no longer deteriorates after
a while:

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::enableOutputsIfNecessary):
(WebCore::AudioNode::disableOutputsIfNecessary):

  • Modules/webaudio/AudioNode.h:

(WebCore::AudioNode::isTailProcessing const):
(WebCore::AudioNode::setIsTailProcessing):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::uninitialize):
(WebCore::BaseAudioContext::handlePostRenderTasks):
(WebCore::BaseAudioContext::addTailProcessingNode):
(WebCore::BaseAudioContext::removeTailProcessingNode):
(WebCore::BaseAudioContext::updateTailProcessingNodes):
(WebCore::BaseAudioContext::disableOutputsForFinishedTailProcessingNodes):
(WebCore::BaseAudioContext::finishTailProcessing):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::TailProcessingNode::TailProcessingNode):
(WebCore::BaseAudioContext::TailProcessingNode::~TailProcessingNode):
(WebCore::BaseAudioContext::TailProcessingNode::operator-> const):
(WebCore::BaseAudioContext::TailProcessingNode::operator== const):

6:05 PM Changeset in webkit [278232] by Chris Dumez
  • 9 edits in trunk

Stop using UncheckedLock in WTF::MetaAllocator
https://bugs.webkit.org/show_bug.cgi?id=226396

Reviewed by Darin Adler.

Stop using UncheckedLock in WTF::MetaAllocator, as it is being phased out in favor on Lock,
which supports Clang thread safety analysis.

Source/JavaScriptCore:

  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::getLock const):

  • jit/ExecutableAllocator.h:

(JSC::ExecutableAllocatorBase::WTF_RETURNS_LOCK):

  • tools/VMInspector.cpp:

(JSC::VMInspector::isValidExecutableMemory):

Source/WTF:

  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::release):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):

  • wtf/MetaAllocator.h:
5:52 PM Changeset in webkit [278231] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

DelayDSPKernel::process() is slow
https://bugs.webkit.org/show_bug.cgi?id=226358

Reviewed by Darin Adler.

When I profiled the demo at https://jsfiddle.net/KrisJohnson/s5vL24o1/123/ (in the context of Bug 222098),
I noticed that 20% of the CPU time was spent under DelayDSPKernel::process().

To improve this, we now vectorize DelayDSPKernel::process() in the common case where there is no automation
and the delay time is constant.

The implementation is very similar to the one in Blink:

Some differences compared to the Blink implementation:

  • I did not vectorize the A-rate case for simplicity. It is not as common and it is more complicated. We may consider doing this in the future if really needed.
  • On Cocoa, we leveage Accelerate's vDSP_vintb() to do the interpolation instead of doing 2 separate operations.

This doesn't fix Bug 222098 but it does improve the situation quite a bit. I also see that the CPU time
spent under DelayDSPKernel::process() went from ~20% to 1.2% on this demo.

No new tests, no Web-facing behavior change, just a performance optimization.

  • Modules/webaudio/DelayDSPKernel.cpp:

(WebCore::copyToCircularBuffer):
(WebCore::DelayDSPKernel::DelayDSPKernel):
(WebCore::DelayDSPKernel::bufferLengthForDelay const):
(WebCore::DelayDSPKernel::process):
(WebCore::DelayDSPKernel::processARate):
(WebCore::DelayDSPKernel::processKRate):

  • Modules/webaudio/DelayDSPKernel.h:
  • platform/audio/VectorMath.cpp:

(WebCore::VectorMath::substract):
(WebCore::VectorMath::interpolate):

  • platform/audio/VectorMath.h:
5:18 PM Changeset in webkit [278230] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

[Cocoa] Prevent GPU Process from attempt to connect to the AppSSO service (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=226393
<rdar://problem/78614833>

Reviewed by Eric Carlson.

In Bug 224834 I modified WebKit to use avoid invoking AppSSO in CFNetwork calls, since we make those
decisions prior to beginning our network interactions. I missed a media call where this was being done.

This patch corrects that mistake.

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

(WebCore::canonicalURL):

4:53 PM Changeset in webkit [278229] by Chris Dumez
  • 11 edits
    1 delete in trunk/Source

Stop using UncheckedLock in JSDOMGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=226281

Reviewed by Darin Adler.

Source/JavaScriptCore:

Drop JSC::lockDuringMarking() and its now empty header given that it does conditional
locking and it is not compatible with Clang thread safety analysis.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/UnlinkedCodeBlock.h:
  • heap/LockDuringMarking.h: Removed.

Source/WebCore:

Stop using UncheckedLock in JSDOMGlobalObject and use Lock instead of benefit from Clang thread
safety analysis. This is a step towards phasing out UncheckedLock and improving the thread
safety of our code.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildrenImpl):
(WebCore::JSDOMGlobalObject::clearDOMGuardedObjects):

  • bindings/js/JSDOMGlobalObject.h:

(WebCore::getDOMConstructor):

  • bindings/js/JSDOMGuardedObject.cpp:

(WebCore::DOMGuardedObject::DOMGuardedObject):
(WebCore::DOMGuardedObject::clear):
(WebCore::DOMGuardedObject::removeFromGlobalObject):

  • bindings/js/JSDOMGuardedObject.h:
  • bindings/js/JSDOMWrapperCache.cpp:

(WebCore::cacheDOMStructure):

3:52 PM Changeset in webkit [278228] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.0.9

Tag Safari-612.1.15.0.9.

2:53 PM Changeset in webkit [278227] by don.olmstead@sony.com
  • 4 edits in trunk/Source/WebKit

[Cocoa] HDR variants in HLS playlists not selected when screen is HDR
https://bugs.webkit.org/show_bug.cgi?id=226349
<rdar://76963977>

Unreviewed build fix after r278204.

Update the method signature of RemoteMediaPlayerProxy::prepareForPlayback for non-Cocoa
platforms.

  • GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):

  • GPUProcess/media/playstation/RemoteMediaPlayerProxyPlayStation.cpp:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):

  • GPUProcess/media/win/RemoteMediaPlayerProxyWin.cpp:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):

2:53 PM Changeset in webkit [278226] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Regression(r278179): m_serverLock is still held after WebIDBServer is destroyed
https://bugs.webkit.org/show_bug.cgi?id=226389

Reviewed by Chris Dumez.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::close):

1:18 PM Changeset in webkit [278225] by commit-queue@webkit.org
  • 5 edits in trunk

Prevent resetting scroll position in unnecessary cases during page load
https://bugs.webkit.org/show_bug.cgi?id=226338
rdar://75334651

Patch by Matt Gilligan <matthew_gilligan@apple.com> on 2021-05-28
Reviewed by Simon Fraser.

Source/WebKit:

When WKWebView's scroll view has a refresh control and is rubber banding along the top
edge, don't cancel scrolling animations or reset contentOffset within valid range due to
the page load. This can cause flickering during dragging and can prevent the bounce
animation from finishing.

Test: ScrollViewInsetTests.PreserveContentOffsetForRefreshControl

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _didCommitLoadForMainFrame]):
Avoid calling -_stopScrollingAndZoomingAnimations when rubber banding for a refresh control
to prevent cancelling a bounce animation.

(-[WKWebView _restoreScrollAndZoomStateForTransaction:]):
(-[WKWebView _didCommitLayerTree:]):
Don't adjust content offset to be within valid range when rubber banding for a refresh
control, or the scroll position will be reset while dragging or bouncing.

(-[WKWebView _scrollViewIsRubberBandingForRefreshControl]):
Return whether _scrollView has a refresh control and is rubber banding along the top edge.

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView _setContentSizePreservingContentOffsetDuringRubberband:]):
When the refresh control is dismissing, the scroll view will be rubber banding but not
dragging or bouncing. Treat a non-nil refreshControl as a hint that the scroll view might
be rubber banding.

Tools:

  • TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm:

(TestWebKitAPI::TEST):

1:17 PM Changeset in webkit [278224] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

Fix LikelyDenseUnsignedIntegerSet::clear()
https://bugs.webkit.org/show_bug.cgi?id=226388
JSTests:

rdar://78607433

Reviewed by Mark Lam.

  • stress/stack-allocation-regression.js: Added.

(foo):

Source/WTF:

Reviewed by Mark Lam.

There are two problems with it:
1) It calls BitVector::clearAll(), which does not free any memory.
Instead, it should call BitVector::~BitVector(), then do a placement new of a fresh BitVector (to get it back to its inline condition)
2) More problematically, it changes m_size before calling isBitVector() which relies crucially on the value of m_size.
So it is going to believe that it is in BitVector mode even when it is actually in HashSet mode.

  • wtf/LikelyDenseUnsignedIntegerSet.h:

(WTF::LikelyDenseUnsignedIntegerSet::clear):

1:13 PM Changeset in webkit [278223] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit

[Cocoa] Hang in WebM format reader when loading content from https://powerrangers.fandom.com/
https://bugs.webkit.org/show_bug.cgi?id=226128
<rdar://77645877>

Reviewed by Eric Carlson.

When creating a format reader, MediaToolbox will query for various properties including ones about
MetadataFormat and MetadataKeySpace. We don't support those properties, but we still block until
tracks are loaded before answering that we don't support them. Instead, just return early unless
the query is for the one property which we do support, Duration.

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::copyProperty):

1:08 PM Changeset in webkit [278222] by Jean-Yves Avenard
  • 5 edits
    2 adds in trunk

Add MediaSession.callActionHandler
https://bugs.webkit.org/show_bug.cgi?id=226077
rdar://77463304

Reviewed by Eric Carlson.

Source/WebCore:

Make it possible for JavaScript to be able to trigger a MediaSession action
handler so a MediaSession.coordinator polyfill such as one provided by an
external JS library will work.
Test: media/media-session/callActionHandler.html

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::callActionHandler):

  • Modules/mediasession/MediaSession.h:
  • Modules/mediasession/MediaSession.idl: Add method definition.

LayoutTests:

  • media/media-session/callActionHandler-expected.txt: Added.
  • media/media-session/callActionHandler.html: Added.
1:02 PM Changeset in webkit [278221] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Adjust logic when determining whether to enable image extraction actions in the callout bar
https://bugs.webkit.org/show_bug.cgi?id=226387
rdar://76781788

Reviewed by Tim Horton and Devin Rousso.

Call into the superclass (which contains additional restrictions beyond our isContentEditable check on the
editor state), and additionally refactor this helper function to take a selector and return whether or not it is
one of the image extraction action selectors (as opposed to returning the selector itself).

See Radar for more details.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):

12:54 PM Changeset in webkit [278220] by Alan Coon
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.9

12:51 PM Changeset in webkit [278219] by Alan Bujtas
  • 5 edits
    2 adds in trunk

CrashOnOverflow in WebCore::RenderTable::cellBefore(WebCore::RenderTableCell const*)
https://bugs.webkit.org/show_bug.cgi?id=225949

Reviewed by Antti Koivisto.

Source/WebCore:

The table section maintains a grid of rows and columns. This grid is used to jump to cells directly during layout (as opposed to tree walking).
It needs to be re-populated on tree mutations e.g when a new row is added to the table.
RenderTableSection::willInsertTableRow assumes that rows and cells are inserted subsequently, after each other and
it's ok to ignore the grid invalidation on appends as the subsequent ::addCell() call takes care of the grid.
However in some continuation split cases, we re-parent complete rows under table sections which means no subsequent ::addCell() calls.

This patch addresses this case by using the same pattern we have for block continuation invalidation in RenderTreeBuilder::splitAnonymousBoxesAroundChild().

Test: fast/table/table-split-on-insert-with-section-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::markBoxForRelayoutAfterSplit):
(WebCore::markBoxForRelayoutAfterSplit): Deleted.

  • rendering/updating/RenderTreeBuilder.h:
  • rendering/updating/RenderTreeBuilderInline.cpp:

(WebCore::RenderTreeBuilder::Inline::splitInlines):

LayoutTests:

  • fast/table/table-split-on-insert-with-section-crash-expected.txt: Added.
  • fast/table/table-split-on-insert-with-section-crash.html: Added.
12:40 PM Changeset in webkit [278218] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

[JSC] Fix run-jsc-stress-tests missing escape $
https://bugs.webkit.org/show_bug.cgi?id=226385

Reviewed by Alexey Proskuryakov.

  • Scripts/run-jsc-stress-tests:
11:54 AM Changeset in webkit [278217] by weinig@apple.com
  • 17 edits in trunk/Source

Add stub implementation of CA separated portal bits for GraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=226343

Reviewed by Simon Fraser.

Source/WebCore:

Plumbs isSeparatedPortal and isDescendentOfSeparatedPortal bits through GraphicsLayer.
Renames setSeparated to setIsSeparated for consistency.

Currently unused, but getting the bits in is big enough that its helpful
to land on its own.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::isIsSeparated const):
(WebCore::GraphicsLayer::setIsSeparated):
(WebCore::GraphicsLayer::isSeparatedPortal const):
(WebCore::GraphicsLayer::setIsSeparatedPortal):
(WebCore::GraphicsLayer::isDescendentOfSeparatedPortal const):
(WebCore::GraphicsLayer::setIsDescendentOfSeparatedPortal):
(WebCore::GraphicsLayer::isSeparated const): Deleted.
(WebCore::GraphicsLayer::setSeparated): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setIsSeparated):
(WebCore::GraphicsLayerCA::setIsSeparatedPortal):
(WebCore::GraphicsLayerCA::setIsDescendentOfSeparatedPortal):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateIsSeparated):
(WebCore::GraphicsLayerCA::updateIsSeparatedPortal):
(WebCore::GraphicsLayerCA::updateIsDescendentOfSeparatedPortal):
(WebCore::GraphicsLayerCA::setSeparated): Deleted.
(WebCore::GraphicsLayerCA::updateSeparated): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::setIsSeparated):
(WebCore::PlatformCALayerCocoa::isSeparatedPortal const):
(WebCore::PlatformCALayerCocoa::setIsSeparatedPortal):
(WebCore::PlatformCALayerCocoa::isDescendentOfSeparatedPortal const):
(WebCore::PlatformCALayerCocoa::setIsDescendentOfSeparatedPortal):
(WebCore::PlatformCALayerCocoa::setSeparated): Deleted.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):

Source/WebKit:

Plumbs isSeparatedPortal and isDescendentOfSeparatedPortal bits through GraphicsLayer.
Renames setSeparated to setIsSeparated for consistency.

Currently unused, but getting the bits in is big enough that its helpful
to land on its own.

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
(WebKit::dumpChangedLayers):
(WebKit::RemoteLayerTreeTransaction::RemoteLayerTreeTransaction): Deleted.
(WebKit::RemoteLayerTreeTransaction::~RemoteLayerTreeTransaction): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::setIsSeparated):
(WebKit::PlatformCALayerRemote::isSeparatedPortal const):
(WebKit::PlatformCALayerRemote::setIsSeparatedPortal):
(WebKit::PlatformCALayerRemote::isDescendentOfSeparatedPortal const):
(WebKit::PlatformCALayerRemote::setIsDescendentOfSeparatedPortal):
(WebKit::PlatformCALayerRemote::setSeparated): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

Source/WTF:

  • wtf/PlatformHave.h: Add HAVE_CORE_ANIMATION_SEPARATED_PORTALS.
11:47 AM Changeset in webkit [278216] by Russell Epstein
  • 1 copy in tags/Safari-611.3.6.1.3

Tag Safari-611.3.6.1.3.

11:45 AM Changeset in webkit [278215] by Russell Epstein
  • 2 edits in branches/safari-611.3.6.1-branch/Source/WTF

Cherry-pick r278209. rdar://problem/78595584

Unreviewed build fix after r277881.

Deal with IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES potentially not being defined on
older OSes.

  • wtf/cocoa/FileSystemCocoa.mm: (WTF::FileSystemImpl::setAllowsMaterializingDatalessFiles): (WTF::FileSystemImpl::allowsMaterializingDatalessFiles):

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

11:45 AM Changeset in webkit [278214] by Russell Epstein
  • 2 edits in branches/safari-611.3.6.1-branch/Source/WTF

Cherry-pick r278208. rdar://problem/78595584

Unreviewed build fix after r277881.

Add missing header include.

  • wtf/cocoa/FileSystemCocoa.mm:

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

11:36 AM Changeset in webkit [278213] by sbarati@apple.com
  • 11 edits
    2 adds in trunk/Source/JavaScriptCore

Add the ability to dump statistics about cumulative counts and code sizes of Baseline JIT opcodes and DFG nodes
https://bugs.webkit.org/show_bug.cgi?id=226200

Reviewed by Robin Morisset.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGSlowPathGenerator.h:

(JSC::DFG::SlowPathGenerator::currentNode const):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::runSlowPathGenerators):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::compileAndLinkWithoutFinalizing):

  • jit/JITSizeStatistics.cpp: Added.

(JSC::JITSizeStatistics::markStart):
(JSC::JITSizeStatistics::markEnd):
(JSC::JITSizeStatistics::dump const):

  • jit/JITSizeStatistics.h: Added.

(JSC::JITSizeStatistics::reset):

  • jsc.cpp:

(runJSC):

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

(JSC::VM::VM):

  • runtime/VM.h:
  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSDollarVM::finishCreation):

11:31 AM Changeset in webkit [278212] by Russell Epstein
  • 8 edits in branches/safari-611.3.6.1-branch/Source

Versioning.

WebKit-7611.3.6.1.3

11:13 AM Changeset in webkit [278211] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Don't sink arguments past the context of the inline call frame they were created in
https://bugs.webkit.org/show_bug.cgi?id=226363
<rdar://78392801>

Reviewed by Filip Pizlo.

JSTests:

  • stress/dont-sink-arguments-past-inline-call-frame.js: Added.

(foo):
(fooWrap):
(empty):
(bar):

Source/JavaScriptCore:

DFG OSR exit isn't set up to allow materializing phantom arguments objects
when the inline call frame is no longer present in the exit metadata. There
may be multiple reasons for this, but there's at least one I discovered:
We don't analyze any locals when reconstructing the variable event stream
if that local is past the extent of the inline call frame.

This patch makes it so we treat it as an escape if between the definition and
the last use of a sink candidate (either via an IR use or bytecode liveness)
there is an exit to a place in the graph where the inline call frame of the
definition is no longer present.

  • dfg/DFGVarargsForwardingPhase.cpp:
11:11 AM Changeset in webkit [278210] by stephan.szabo@sony.com
  • 14 edits in trunk/Source/JavaScriptCore

Regenerate builtins generator expectations after optional changes
https://bugs.webkit.org/show_bug.cgi?id=226381

Reviewed by Chris Dumez.

  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result:
  • Scripts/tests/builtins/expected/JavaScriptCore-InternalClashingNames-Combined.js-result:
  • Scripts/tests/builtins/expected/WebCore-AnotherGuardedInternalBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
  • Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:
10:59 AM Changeset in webkit [278209] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed build fix after r277881.

Deal with IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES potentially not being defined on
older OSes.

  • wtf/cocoa/FileSystemCocoa.mm:

(WTF::FileSystemImpl::setAllowsMaterializingDatalessFiles):
(WTF::FileSystemImpl::allowsMaterializingDatalessFiles):

10:47 AM Changeset in webkit [278208] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed build fix after r277881.

Add missing header include.

  • wtf/cocoa/FileSystemCocoa.mm:
10:23 AM Changeset in webkit [278207] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Buffer computations should use correct type
https://bugs.webkit.org/show_bug.cgi?id=226352
<rdar://problem/78116213>

Reviewed by Ryosuke Niwa.

The implementation of utf8Buffer holds the buffer size in an 'int', even though our buffer
APIs take size_t arguments. Let's make this consistent.

  • platform/SharedBuffer.cpp:

(WebCore::utf8Buffer):

9:58 AM Changeset in webkit [278206] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

The jsc shell should not continue executing after a termination has been received.
https://bugs.webkit.org/show_bug.cgi?id=226368
rdar://78013374

Reviewed by Saam Barati.

This patch makes the jsc shell forbid execution in all the places that it has
caught and seen a TerminationException.

  • jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):
(checkException):
(runWithOptions):
(runInteractive):

9:52 AM Changeset in webkit [278205] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk1] imported/w3c/web-platform-tests/css/css-contain/contain-paint-ignored-cases-ruby-stacking-and-clipping-001.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226377

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
9:44 AM Changeset in webkit [278204] by jer.noble@apple.com
  • 8 edits in trunk/Source/WebKit

[Cocoa] HDR variants in HLS playlists not selected when screen is HDR
https://bugs.webkit.org/show_bug.cgi?id=226349
<rdar://76963977>

Reviewed by Eric Carlson.

An existing test, http/tests/media/hls/hls-hdr-switch.html, should have caught this regression,
but is not currently functional as it depends on PHP, which has been removed.

The preferredDynamicRangeMode needs to be piped over from WebContent -> GPU process.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::setPreferredDynamicRangeMode):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):

  • Scripts/webkit/messages.py:

(headers_for_type):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
(WebKit::MediaPlayerPrivateRemote::setPreferredDynamicRangeMode):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
9:43 AM Changeset in webkit [278203] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Return immediately when asked to paint an AVPlayer that hasn't reached HaveCurrentData
https://bugs.webkit.org/show_bug.cgi?id=226350
rdar://77910715

Reviewed by Jer Noble.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer): Return immediately
if readyState < HaveCurrentData.
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoOutputHasAvailableFrame): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage): Ditto.

9:39 AM Changeset in webkit [278202] by Devin Rousso
  • 8 edits in trunk

[Modern Media Controls] put the localized information for tracks first if the track is not in the user's preferred language
https://bugs.webkit.org/show_bug.cgi?id=226361
<rdar://problem/78497853>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/modern-media-controls/tracks-support/sorted-by-user-preferred-languages.html

This makes it clearer/easier for the user to understand what's going on when the track label
is not in the user's preferred language. For example, if a <video> has an "English" audio
track, it's not very helpful to show "English (英语)" for Chinese users instead of something
like "英语 (English)".

If the track has a label and either matches the user's preferred language or its label
already contains the localized language name, combine the track's label with a localized
description of the track if that description isn't already in the label. Otherwise, add
the localized language name first, then the description of the track, and finally the label.

Here are some examples if the user's preferred language is English:

  • <track kind="subtitles" srclang="en"> would show "English"
  • <track kind="subtitles" srclang="en" label="Foo"> would show "Foo"
  • <track kind="captions" srclang="en"> would show "English Captions"
  • <track kind="captions" srclang="en" label="Foo"> would show "Foo Captions"
  • <track kind="captions" srclang="en" label="Captions"> would show "Captions"
  • <track kind="subtitles" srclang="fr"> would show "French"
  • <track kind="subtitles" srclang="fr" label="Foo"> would show "French (Foo)"
  • <track kind="captions" srclang="fr"> would show "French Captions"
  • <track kind="captions" srclang="fr" label="Foo"> would show "French Captions (Foo)"
  • <track kind="captions" srclang="fr" label="Captions"> would show "French Captions"
  • page/CaptionUserPreferences.cpp:

(WebCore::trackDisplayName):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::addTextTrackKindDisplayNameIfNeeded): Added.
(WebCore::addAudioTrackKindDisplayNameIfNeeded): Added.
(WebCore::addTrackKindDisplayNameIfNeeded): Added.
(WebCore::trackDisplayName):
(WebCore::CaptionUserPreferencesMediaAF::displayNameForTrack const):
(WebCore::textTrackCompare):
(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu):
(WebCore::buildDisplayStringForTrackBase): Deleted.

  • platform/LocalizedStrings.h:
  • platform/LocalizedStrings.cpp:

(WebCore::trackNoLabelText): Added.
(WebCore::textTrackOffMenuItemText): Added.
(WebCore::textTrackAutomaticMenuItemText): Added.
(WebCore::addTrackLabelAsSuffix): Added.
(WebCore::textTrackKindClosedCaptionsDisplayName): Added.
(WebCore::addTextTrackKindClosedCaptionsSuffix): Added.
(WebCore::textTrackKindCaptionsDisplayName): Added.
(WebCore::addTextTrackKindCaptionsSuffix): Added.
(WebCore::textTrackKindDescriptionsDisplayName): Added.
(WebCore::addTextTrackKindDescriptionsSuffix): Added.
(WebCore::textTrackKindChaptersDisplayName): Added.
(WebCore::addTextTrackKindChaptersSuffix): Added.
(WebCore::textTrackKindMetadataDisplayName): Added.
(WebCore::addTextTrackKindMetadataSuffix): Added.
(WebCore::textTrackKindSDHDisplayName): Added.
(WebCore::addTextTrackKindSDHSuffix): Added.
(WebCore::textTrackKindEasyReaderDisplayName): Added.
(WebCore::addTextTrackKindEasyReaderSuffix): Added.
(WebCore::textTrackKindForcedDisplayName): Added.
(WebCore::addTextTrackKindForcedSuffix): Added.
(WebCore::audioTrackKindDescriptionsDisplayName): Added.
(WebCore::addAudioTrackKindDescriptionsSuffix): Added.
(WebCore::audioTrackKindCommentaryDisplayName): Added.
(WebCore::addAudioTrackKindCommentarySuffix): Added.
(WebCore::textTrackNoLabelText): Deleted.
(WebCore::audioTrackNoLabelText): Deleted.
(WebCore::captionsTextTrackKindDisplayName): Deleted.
(WebCore::captionsTextTrackWithoutLabelMenuItemText): Deleted.
(WebCore::descriptionsTextTrackKindDisplayName): Deleted.
(WebCore::descriptionsTextTrackWithoutLabelMenuItemText): Deleted.
(WebCore::chaptersTextTrackKindDisplayName): Deleted.
(WebCore::chaptersTextTrackWithoutLabelMenuItemText): Deleted.
(WebCore::metadataTextTrackKindDisplayName): Deleted.
(WebCore::metadataTextTrackWithoutLabelMenuItemText): Deleted.
(WebCore::textTrackCountryAndLanguageMenuItemText): Deleted.
(WebCore::textTrackLanguageMenuItemText): Deleted.
(WebCore::closedCaptionKindTrackDisplayName): Deleted.
(WebCore::closedCaptionTrackMenuItemText): Deleted.
(WebCore::sdhTrackKindDisplayName): Deleted.
(WebCore::sdhTrackMenuItemText): Deleted.
(WebCore::easyReaderKindDisplayName): Deleted.
(WebCore::easyReaderTrackMenuItemText): Deleted.
(WebCore::forcedTrackKindDisplayName): Deleted.
(WebCore::forcedTrackMenuItemText): Deleted.
(WebCore::audioDescriptionTrackSuffixText): Deleted.

  • en.lproj/Localizable.strings:

Clean up localized string functions related to media controls.

LayoutTests:

  • media/modern-media-controls/tracks-support/sorted-by-user-preferred-languages-expected.txt:
9:26 AM Changeset in webkit [278201] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Unreviewed, reverting r278196.
https://bugs.webkit.org/show_bug.cgi?id=226379

Causes asserts in layoutformattingcontext

Reverted changeset:

"[LFC] Transition containing block for loops to range loops"
https://bugs.webkit.org/show_bug.cgi?id=226315
https://trac.webkit.org/changeset/278196

9:24 AM Changeset in webkit [278200] by commit-queue@webkit.org
  • 9 edits
    2 deletes in trunk

Unreviewed, reverting r278199.
https://bugs.webkit.org/show_bug.cgi?id=226378

Causes asserts in layoutformattingcontext

Reverted changeset:

"[LFC][TFC] Do not include vertical spacing when resolving
percent height for table content"
https://bugs.webkit.org/show_bug.cgi?id=226365
https://trac.webkit.org/changeset/278199

8:59 AM Changeset in webkit [278199] by Alan Bujtas
  • 9 edits
    2 adds in trunk

[LFC][TFC] Do not include vertical spacing when resolving percent height for table content
https://bugs.webkit.org/show_bug.cgi?id=226365

Source/WebCore:

Reviewed by Antti Koivisto.

<table style="height: 100px; border-spacing: 10px;"><tr><td style="height: 100%"></td></tr></table>
The <td>'s 100% height is resolved against 100px - (2 * 10px) -> 80px;

Test: fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::TableFormattingContext):

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::TableFormattingGeometry):
(WebCore::Layout::TableFormattingGeometry::computedCellBorder const):

  • layout/formattingContexts/table/TableFormattingGeometry.h:

(WebCore::Layout::TableFormattingGeometry::formattingContext const):

  • layout/formattingContexts/table/TableFormattingQuirks.cpp:

(WebCore::Layout::TableFormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):

  • layout/formattingContexts/table/TableFormattingQuirks.h:

(WebCore::Layout::TableFormattingQuirks::formattingContext const):

LayoutTests:

Reviewed by Antti Koivisto.

  • TestExpectations: WebKit table layout don't resolve the height percent properly when border spacing is present.
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing-expected.html: Added.
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html: Added.
8:56 AM Changeset in webkit [278198] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[WPE] Correctly compute wheel event phase for 2D axis events
https://bugs.webkit.org/show_bug.cgi?id=226370

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-05-28
Reviewed by Adrian Perez de Castro.

2D-capable wpe_input_axis_event objects don't have usable axis and delta
values set on the base struct, but keep all that information on the more
detailed wpe_input_axis_2d_event struct.

For such events, the correct phase then has to be special-cased,
otherwise the default determination marks both axes as inactive and only
PhaseEnded events are dispatched into the engine.

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):

8:50 AM Changeset in webkit [278197] by eric.carlson@apple.com
  • 5 edits
    2 adds in trunk

[GPUP] [Video/Audio/Text]TrackPrivateRemote.h should use startTimeVariance
https://bugs.webkit.org/show_bug.cgi?id=226355
rdar://77326202

Reviewed by Jer Noble.

Source/WebKit:

Test: http/tests/media/hls/hls-webvtt-seek-backwards.html

  • WebProcess/GPU/media/AudioTrackPrivateRemote.h: Use configuration.startTimeVariance.
  • WebProcess/GPU/media/TextTrackPrivateRemote.h: Ditto.
  • WebProcess/GPU/media/VideoTrackPrivateRemote.h: Ditto.

LayoutTests:

  • http/tests/media/hls/hls-webvtt-seek-backwards-expected.txt: Added.
  • http/tests/media/hls/hls-webvtt-seek-backwards.html: Added.
7:20 AM Changeset in webkit [278196] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

[LFC] Transition containing block for loops to range loops
https://bugs.webkit.org/show_bug.cgi?id=226315

Reviewed by Antti Koivisto.

Add support for stayWithin.

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::mapTopLeftToFloatingStateRoot const):

  • layout/formattingContexts/FormattingGeometry.cpp:

(WebCore::Layout::FormattingGeometry::computedHeightValue const):

  • layout/formattingContexts/block/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider):

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isDescendantOf const):

  • layout/layouttree/LayoutBox.h:
  • layout/layouttree/LayoutContainingBlockChainIterator.h:

(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::begin):
(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::end):
(WebCore::Layout::LayoutContainingBlockChainIterator::LayoutContainingBlockChainIterator):
(WebCore::Layout::LayoutContainingBlockChainIteratorAdapter::LayoutContainingBlockChainIteratorAdapter):
(WebCore::Layout::containingBlockChain):

6:23 AM Changeset in webkit [278195] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[SOUP] Implement NetworkDataTask::setPriority
https://bugs.webkit.org/show_bug.cgi?id=226371

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-28
Reviewed by Adrian Perez de Castro.

To update the soup message priority. In HTTP/2 soup can send a priority frame to prioritize the associated
stream.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::setPriority):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:
5:59 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
4:35 AM Changeset in webkit [278194] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Webkit doesn't calculate padding-top/-bottom in % correctly when parent has padding
https://bugs.webkit.org/show_bug.cgi?id=221202

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-28
Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

Add test for this.

  • web-platform-tests/css/css-position/position-absolute-padding-percentage-expected.txt: Added.
  • web-platform-tests/css/css-position/position-absolute-padding-percentage.html: Added.

Source/WebCore:

Absolute positioned elements should resolve %-ge padding against containing block padding-edge:
https://drafts.csswg.org/css-position-3/#absolute-positioning-containing-block

Test: imported/w3c/web-platform-tests/css/css-position/position-absolute-padding-percentage.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::containingBlockLogicalWidthForContent const):

1:59 AM Changeset in webkit [278193] by Martin Robinson
  • 8 edits
    2 adds in trunk

More readily layout when scroll-snap properties change
https://bugs.webkit.org/show_bug.cgi?id=225950

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-change-expected.txt: Updated expectation

for newly passing test.

Source/WebCore:

Do a layout when scroll-snap properties change instead of trying
to update scroll positions without a layout.

Test: css3/scroll-snap/scroll-snap-style-change-crash.html

  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleDidChange): Remove code dealing with scrollports
as this is now handled by the RenderStyle diff. Now trigger a layout for scrollports
when the scrolled children change their snap properties.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const): Made this return a non-const.

  • rendering/RenderObject.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout const): Added code to handle scrollport specific
properties.

LayoutTests:

  • css3/scroll-snap/scroll-snap-style-change-crash-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-style-change-crash.html: Added.
12:15 AM Changeset in webkit [278192] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal translator should always collect variables
https://bugs.webkit.org/show_bug.cgi?id=226261

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-05-28
Reviewed by Dean Jackson.

Always collect the variables when translating GLSL to Metal.
This way tests that invoke translation without SH_VARIABLES still
work.

  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect.h:
Note: See TracTimeline for information about the timeline view.