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

Timeline



Mar 12, 2022:

7:34 AM Changeset in webkit [291217] by Angelos Oikonomopoulos
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Use addressTempRegister in loadValue(void *) on 32 bits
https://bugs.webkit.org/show_bug.cgi?id=237773

Reviewed by Žan Doberšek.

Instead of using one of the destination registers as an address
temporary, use addressTempRegister instead. This allows reusing
the value in addressTempRegister (with an appropriate offset) if
possible, which results in a >25% size reduction for DFGOSRExit
(JS2) on ARMv7 (though not a significant size reduction overall).
Technically, this change could be killing some address reuse that
was previously possible because loadValue was not clobbering
addressTempRegister but, if so, this seems to be balanced out for
JS2.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::BoundsNonDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::BoundsDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::absoluteAddressWithinShortOffset):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::loadPair32):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):

Mar 12, 2022:

11:23 PM Changeset in webkit [291216] by Jean-Yves Avenard
  • 8 edits
    7 adds in trunk

Safari produces scrambled output for some webm videos with vp8 codec.
https://bugs.webkit.org/show_bug.cgi?id=236754
Source/ThirdParty/libwebrtc:

rdar://80869041

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:

(webrtc::WebKitDecoderReceiver::decoderFailed): Tell CoreMedia if a frame
was silently dropped by the decoder.

Source/WebCore:

rdar://80869041

Reviewed by Eric Carlson.

The MediaFormatReader plugin and the MSE SourceBufferPrivate are using
a SampleMap to store all the media samples timing information: one sorted
by DTS order and the other in PTS order.
Those SampleMap use the sample's presentation time as unique key.
The VP8 codec can define hidden samples that are to be fed to the decoder
but will not decode into an actual image. Those samples are typically
packed together in the webm container in two or more consecutive blocks
with the same presentation time (similar behaviour can also be found in
webm where multiple frames may be stored with the same presentation
time).
When stored in the SampleMap, only the latest sample added would be kept
after overwriting the previous one with the same time.
To get around this issue, we pack all samples with the same presentation
time in a single MediaSamplesBlock so that they can be stored together in
the map without any losses.
Upon decoding, all those sub-samples will be retrieved and fed to the
decoder.

The CoreMedia MediaFormatReader backend however has a bug where it will
enter in an infinite if we return successive frames with the same
timestamp which will cause memory exhaustion and a crash.
To get around this, we make the grouped samples appear as discrete,
making each hidden sample have a duration of 1us followed by the
visible frames (which will see its duration shorten by 1us).

Tests: media/media-source/media-source-vp8-hiddenframes.html

media/media-vp8-hiddenframes.html

New tests had to be disabled due to bug 236755. We currently have no
way to guarantee which frame is currently displayed after either a seek
operation or reaching the end of playback.

  • platform/MediaSample.h:

(WebCore::MediaSamplesBlock::append):
(WebCore::MediaSamplesBlock::clear):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::WebMParser::parse):
(WebCore::WebMParser::OnFrame):
(WebCore::WebMParser::flushPendingVideoSamples):
(WebCore::WebMParser::VideoTrackData::resetCompletedFramesState):
(WebCore::WebMParser::VideoTrackData::consumeFrameData):
(WebCore::WebMParser::VideoTrackData::processPendingMediaSamples):
(WebCore::WebMParser::VideoTrackData::flushPendingSamples):
(WebCore::WebMParser::AudioTrackData::consumeFrameData):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

(WebCore::WebMParser::TrackData::consumeFrameData):
(WebCore::WebMParser::TrackData::resetCompletedFramesState):
(WebCore::WebMParser::TrackData::drainPendingSamples):

LayoutTests:

Reviewed by Eric Carlson.

VP8 files were generated such that alternative reference frames were used:
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 1 test-vp8-hiddenframes.webm
$ fmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 2 test-vp8-hiddenframes.webm

The command used to extract the last frame in png format was:
$ ffmpeg -sseof -3 -i test-vp8-hiddenframes.webm -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -update 1 -q:v 1 test-vp8-hiddenframes.png

  • TestExpectations:
  • media/content/test-vp8-hiddenframes.png: Added.
  • media/content/test-vp8-hiddenframes.webm: Added.
  • media/media-source/media-source-vp8-hiddenframes-expected.html: Added.
  • media/media-source/media-source-vp8-hiddenframes.html: Added.
  • media/media-vp8-hiddenframes-expected.html: Added.
  • media/media-vp8-hiddenframes.html: Added.
  • media/utilities.js: Added.

(once):
(fetchWithXHR):
(loadSegment):

8:55 PM Changeset in webkit [291215] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] Add InlineIterator::Line::selectionPhysicalRect
https://bugs.webkit.org/show_bug.cgi?id=237796

Reviewed by Antti Koivisto.

Introduce selectionPhysicalRect() so that the clients don't need to convert/flip the logical coords and
also rename selectionRect() to selectionLogicalRect() to clear up any ambiguity.

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::selectionLogicalRect const):
(WebCore::InlineIterator::Line::selectionPhysicalRect const):
(WebCore::InlineIterator::Line::selectionRect const): Deleted.

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):

8:54 PM Changeset in webkit [291214] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

In RemoteLayerBackingStore, group makeFrontBufferNonVolatile() and swapToValidFrontBuffer() into a single function
https://bugs.webkit.org/show_bug.cgi?id=237806

Reviewed by Tim Horton.

As a step towards reducing the number of sync IPC calls when displaying layers, refactor
code in RemoteLayerBackingStore so that we can do the makeFrontBufferNonVolatile()
and swapToValidFrontBuffer() in a single function. Its return value indicates whether
we need to do any display, or a full display.

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

(WebKit::operator<<):
(WebKit::RemoteLayerBackingStore::prepareToDisplay):
(WebKit::RemoteLayerBackingStore::prepareBuffers):
(WebKit::RemoteLayerBackingStore::paintContents): Fix an assertion that fired for WebGL.
(WebKit::RemoteLayerBackingStore::swapBuffers): Deleted.

7:01 PM Changeset in webkit [291213] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WTF

Fail the build if Internal or Experimental web preferences are missing human readable names
https://bugs.webkit.org/show_bug.cgi?id=237813

Reviewed by Alex Christensen.

  • Scripts/GeneratePreferences.rb:

Ensure that all preferences that expose human readable strings to the
API client actually have such a name.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Add one missing human readable preference name.

3:29 PM Changeset in webkit [291212] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r291209.
https://bugs.webkit.org/show_bug.cgi?id=237811

Re-land 290754 due to mis-blaming

Reverted changeset:

"Unreviewed, reverting r290754."
https://bugs.webkit.org/show_bug.cgi?id=237808
https://commits.webkit.org/r291209

3:15 PM Changeset in webkit [291211] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[IFC][Integration] Replace generic InlineIterator::Line::legacyRootInlineBox() with 2 dedicated functions
https://bugs.webkit.org/show_bug.cgi?id=237807

Reviewed by Antti Koivisto.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::containingFragment const):
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const):
(WebCore::InlineIterator::Line::legacyRootInlineBox const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorLegacyPath::legacyRootInlineBox const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const):
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineIteratorModernPath::legacyRootInlineBox const): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::collectSelectionGeometries):

3:12 PM Changeset in webkit [291210] by timothy_horton@apple.com
  • 44 edits in trunk

Adopt FALLBACK_PLATFORM_NAME in place of FALLBACK_PLATFORM
https://bugs.webkit.org/show_bug.cgi?id=237809

Reviewed by Per Arne Vollan.

PerformanceTests:

  • MediaTime/Configurations/SDKVariant.xcconfig:

Source/bmalloc:

  • Configurations/SDKVariant.xcconfig:

Source/JavaScriptCore:

  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty:

  • gtest/xcode/Config/SDKVariant.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/SDKVariant.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/SDKVariant.xcconfig:

Source/WebCore:

  • Configurations/SDKVariant.xcconfig:

Source/WebCore/PAL:

  • Configurations/SDKVariant.xcconfig:

Source/WebGPU:

  • Configurations/SDKVariant.xcconfig:

Source/WebInspectorUI:

  • Configurations/SDKVariant.xcconfig:

Source/WebKit:

  • Configurations/SDKVariant.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/SDKVariant.xcconfig:

Source/WTF:

  • Configurations/SDKVariant.xcconfig:

Tools:

  • ContentExtensionTester/Configurations/SDKVariant.xcconfig:
  • DumpRenderTree/mac/Configurations/SDKVariant.xcconfig:
  • ImageDiff/cg/Configurations/SDKVariant.xcconfig:
  • MiniBrowser/Configurations/SDKVariant.xcconfig:
  • MobileMiniBrowser/Configurations/SDKVariant.xcconfig:
  • TestWebKitAPI/Configurations/SDKVariant.xcconfig:
  • WebEditingTester/Configurations/SDKVariant.xcconfig:
  • WebKitTestRunner/Configurations/SDKVariant.xcconfig:
  • lldb/lldbWebKitTester/Configurations/SDKVariant.xcconfig:
12:53 PM Changeset in webkit [291209] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r290754.
https://bugs.webkit.org/show_bug.cgi?id=237808

Introduced launch regression

Reverted changeset:

"[iOS] Seatbelt sandbox profile entitlement is deprecated"
https://bugs.webkit.org/show_bug.cgi?id=237374
https://commits.webkit.org/r290754

11:10 AM Changeset in webkit [291208] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] previousLinePosition/nextLinePosition should use Line::lineBoxHeight
https://bugs.webkit.org/show_bug.cgi?id=237788

Reviewed by Antti Koivisto.

Line::lineBoxHeight() should be sufficient for checking if the line is empty for VisualPosition.

  • editing/VisibleUnits.cpp:

(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::Line::lineBoxHeight const):
(WebCore::InlineIterator::Line::logicalHeight const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorLegacyPath::logicalHeight const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const):
(WebCore::InlineIterator::LineIteratorModernPath::logicalHeight const): Deleted.

6:30 AM Changeset in webkit [291207] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[IFC][Integration] RenderBlockFlow::findClosestTextAtAbsolutePoint should use root inline box iterator
https://bugs.webkit.org/show_bug.cgi?id=237786

Reviewed by Antti Koivisto.

Let's remove root inline box APIs from the line iterator interface.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint): Replace line iterator with root inline box iterator
and check whether the local point is in between these root inline boxes.

Note: See TracTimeline for information about the timeline view.