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

Timeline



Jun 19, 2021:

7:05 PM Changeset in webkit [279051] by weinig@apple.com
  • 5 edits in trunk/Source/WTF

Adopt Span in Base64.h
https://bugs.webkit.org/show_bug.cgi?id=227132

Reviewed by Chris Dumez.

Replaces overloads taking Vectors with ones taking Spans
and add overloads for Span<const std::byte> which all the
others are now implemented in terms of. This is useful since
any Span can be turned into one of type Span<const std::byte>
just by calling asBytes(existingSpan).

This leaves most of the existing overloads in place (though
simplifies them by implementing them as Span contructions)
though we should consider removing some in a separate pass.

  • wtf/Vector.h:

Add value_type typedef so that Vector<T> can be automatically
deduced as Span<T>.

  • wtf/text/CString.h:

Add bytes() and bytesInludingNullTerminator() (only the former
is used in this patch, but the later will be needed shortly)
which return Span<const uint8_t> of the CString. I chose to use
an explicit function, rather than making it converible to Span
like Vector, because some callers will want the null terminator
and some will not.

  • wtf/text/Base64.cpp:
  • wtf/text/Base64.h:

Canonicalize all input buffers either as a Span<const std::byte> or
a StringView, making all the other overloads just forward to one of
those two (String -> StringView, everything else -> Span<const std::byte>).

Clean up the header a bit by putting all the declarations at the top of
the file.

1:31 PM Changeset in webkit [279050] by Darin Adler
  • 40 edits in trunk

Fix CSS serialization issues affecting css-counter-styles tests
https://bugs.webkit.org/show_bug.cgi?id=226708

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-counter-styles/counter-style-additive-symbols-syntax-expected.txt:
  • web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:
  • web-platform-tests/css/css-syntax/url-whitespace-consumption-expected.txt:

Updated to reflect progressions.

Source/WebCore:

Fix two serialization isssues affecting css-counter-styles tests:

1) URLs were serializing the full resolved URL, rather than the

partial URL string from the style sheet.

2) Items in additive-symbols that had both an integer and a string

would incorrectly serialize with a comma within the item.

  • css/CSSCrossfadeValue.cpp:

(WebCore::CSSCrossfadeValue::valueWithStylesResolved): Added.
Calls resolveImageStyles on the image values.

  • css/CSSCrossfadeValue.h: Updated for the above.
  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::CSSCursorImageValue): Changed the hot spot
to use std::optional instead of a separate boolean.
(WebCore::CSSCursorImageValue::create): Moved this out of the header
because it's not better for inlining to have it there.
(WebCore::CSSCursorImageValue::customCSSText const): Updated for the
m_hotSpot changes.
(WebCore::CSSCursorImageValue::updateCursorElement): Removed unneeded
check of hasFragmentIdentifier, which is already done by the
SVGURIReference::targetElementFromIRIString function. Updated to use
m_originalSpecifiedURLString, and added a FIXME about the strange way
this just keeps accumulating more and more clients in a set, but did
not change that behavior.
(WebCore::CSSCursorImageValue::cursorElementRemoved): Added a FIXME.
(WebCore::CSSCursorImageValue::cursorElementChanged): Updated for the
change to m_hotSpot and addded some FIXME.
(WebCore::CSSCursorImageValue::equals const): Updated for the m_hotSpot
change; much simpler since std::optional does the right thing.
(WebCore::CSSCursorImageValue::valueWithStylesResolved): Added.
Calls resolveImageStyles on the image value.

  • css/CSSCursorImageValue.h: Updated for the above changes.
  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::valueWithStylesResolved): Added.
Calls resolveImageStyles on the image value and also calls
createFilterOperations.

  • css/CSSFilterImageValue.h: Updated for the above.
  • css/CSSGradientValue.cpp:

(WebCore::CSSGradientValue::valueWithStylesResolved): Renamed from
gradientWithStylesResolved.

  • css/CSSGradientValue.h: Updated for the above.
  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::valueWithStylesResolved): Renamed from
imageSetWithStylesResolved. Optimized the case where the resolved
version is not different to re-use the original CSSImageSetValue.

  • css/CSSImageSetValue.h: Updated for the above.
  • css/CSSImageValue.cpp:

(WebCore::operator==): Added. Check if two ResolvedURL are equal.
(WebCore::makeResolvedURL): Added. Make a ResolvedURL from an
existing URL without the original specified string.
(WebCore::CSSImageValue::CSSImageValue): Take ResolvedURL instead
of a URL. Also updated to use std::optional instead of a separate
m_accessedImage boolean.
(WebCore::CSSImageValue::create): Added an overload that takes
ResolvedURL argument and also moved here from the header since we
don't get any benefit from inlining.
(WebCore::CSSImageValue::isPending const): Updates since m_cachedImage
is now a std::optional, and the std::nullopt case is used for this.
(WebCore::CSSImageValue::reresolvedURL const): Added. Used so we can
share code between the following functions.
(WebCore::CSSImageValue::valueWithStylesResolved): Added. Computes
the fully resolved URL and makes a new image value if needed that
always uses it. Also points the new value at the old one so we can
update m_cachedImage in both.
(WebCore::CSSImageValue::loadImage): Use the new reresolvedURL function.
Also update m_cachedImage in any underlying objects.
(WebCore::CSSImageValue::traverseSubresources): Updated for change
to m_cachedImage.
(WebCore::CSSImageValue::equals const): Updated for change to use
ResolvedURL.
(WebCore::CSSImageValue::customCSSText const): Ditto. This is the
only place where we use specifiedURLString.
(WebCore::CSSImageValue::createDeprecatedCSSOMWrapper const): Updated
for change from m_url.
(WebCore::CSSImageValue::knownToBeOpaque const): Updated for change
to m_cachedImage.

  • css/CSSImageValue.h: Added ResolvedURL, new create

overloads. Replaced url() function with location() function, which
returns a string. Note that this always returns the resolved string,
only customCSSText returns the original string. Replaced m_url with
m_location, eliminated m_accessedImage and made m_cachedImage use
std::optional instead. Added m_unresolvedValue.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::completeURL const): Deleted unused function.

  • css/StyleSheetContents.h: Ditto.
  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::completeURL const): Updated to return
ResolvedURL instead of a URL.

  • css/parser/CSSParserContext.h: Ditto.
  • css/parser/CSSParserIdioms.cpp:

(WebCore::completeURL): Deleted unused function.

  • css/parser/CSSParserIdioms.h: Ditto.
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeCursor): Use std::optional for the hot spot.
(WebCore::consumeCounterStyleAdditiveSymbols): Put the integer/symbol
pair into a separate space-separated list instead of appending both
to the top level command-separated list. Also removed support for
non-standard "image without symbol" and "symbol without image".
Neither the specification nor the web platform tests currently call
for that.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumeImage): Call the new
overload of CSSImageValue::create, passing a ResolvedURL.

  • css/parser/CSSPropertyParserWorkerSafe.cpp:

(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontFaceSrcURI):
Update for the change to completeURL and refactor a bit. Later we could
make the same kind of fix for CSSFontFaceSrcValue that we did in this
patch for CSSImageValue, but did not try that for now.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::addCursor): Updated to take a std::optional for
the hot spot.

  • rendering/style/RenderStyle.h: Ditto.
  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::imageURL): Updated for CSSImageValue::imageURL.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueContent): Call
resolveImageStyles consistently.

  • style/StyleBuilderState.cpp:

(WebCore::Style::BuilderState::resolveImageStyles): Call the new
valueWithStylesResolved function on all the different image value
types. This unifies the approach across all 6 classes.
(WebCore::Style::BuilderState::createStyleImage): Tweaked style.

LayoutTests:

  • fast/css/parse-border-image-repeat-null-crash-expected.txt: Update to reflect correct

path; the path is not really relevant to what was being tested here either way.

  • fast/css/uri-token-parsing-expected.txt: Updated to expect behavior that is sensible

and also matches Firefox.

  • fast/css/uri-token-parsing.html: Ditto.
  • fast/fast/css/url-with-multi-byte-unicode-escape-expected.txt: Updated to expect that

URL is still encoded as UTF-8, not yet re-URL-encoded as it will be for loading. The
one that will be used for loading can still be seen in computed style. The test still
covers correclty parsig this URL.

  • fast/fast/css/url-with-multi-byte-unicode-escape.html: Ditto.
  • fast/filter-image/parse-filter-image-expected.txt: Updated to no longer test addition

of trailing slashes to peculiar URLs that are made by using filenames as host names.
Now this checks URLs that just contain filenames, which makes more logical sense, and
no trailing slash addition is expected.

  • fast/filter-image/parse-filter-image.html: Ditto.
  • fast/innerHTML/innerHTML-uri-resolution.html: Updated test to use computed style so

it no longer depends on WebKit-only behavior to run correctly.

1:25 AM Changeset in webkit [279049] by mark.lam@apple.com
  • 13 edits in trunk/Source/JavaScriptCore

[Revert r278576] Put the Baseline JIT prologue and op_loop_hint code in JIT thunks.
https://bugs.webkit.org/show_bug.cgi?id=226375

Not reviewed.

Suspect regresses Speedometer2.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::untagReturnAddress):
(JSC::AbstractMacroAssembler::untagReturnAddressWithoutExtraValidation): Deleted.

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::untagReturnAddress):
(JSC::MacroAssemblerARM64E::untagReturnAddressWithoutExtraValidation): Deleted.

  • assembler/MacroAssemblerARMv7.h:
  • assembler/MacroAssemblerMIPS.h:
  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addressOfNumParameters):
(JSC::CodeBlock::offsetOfNumParameters):
(JSC::CodeBlock::offsetOfInstructionsRawPointer):
(JSC::CodeBlock::offsetOfNumCalleeLocals): Deleted.
(JSC::CodeBlock::offsetOfNumVars): Deleted.
(JSC::CodeBlock::offsetOfArgumentValueProfiles): Deleted.
(JSC::CodeBlock::offsetOfShouldAlwaysBeInlined): Deleted.

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitSaveCalleeSavesFor):
(JSC::AssemblyHelpers::emitSaveCalleeSavesForBaselineJIT): Deleted.
(JSC::AssemblyHelpers::emitRestoreCalleeSavesForBaselineJIT): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::privateCompileExceptionHandlers):
(JSC::prologueGeneratorSelector): Deleted.
(JSC::JIT::prologueGenerator): Deleted.
(JSC::JIT::arityFixupPrologueGenerator): Deleted.

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::emitNakedNearCall):

  • jit/JITOpcodes.cpp:

(JSC::JIT::op_ret_handlerGenerator):
(JSC::JIT::emit_op_enter):
(JSC::JIT::op_enter_handlerGenerator):
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_loop_hint):
(JSC::JIT::op_enter_Generator): Deleted.
(JSC::JIT::op_enter_canBeOptimized_Generator): Deleted.
(JSC::JIT::op_enter_cannotBeOptimized_Generator): Deleted.
(JSC::JIT::op_loop_hint_Generator): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_enter):

  • jit/ThunkGenerators.cpp:

(JSC::popThunkStackPreservesAndHandleExceptionGenerator):

12:19 AM Changeset in webkit [279048] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, reverting r278699.
https://bugs.webkit.org/show_bug.cgi?id=227174

Regressed JetStream2/WSL

Reverted changeset:

"[JSC] Remove useDataICInOptimizingJIT option"
https://bugs.webkit.org/show_bug.cgi?id=226862
https://trac.webkit.org/changeset/278699

Jun 18, 2021:

7:16 PM Changeset in webkit [279047] by Chris Dumez
  • 9 edits in trunk

[WebIDL] Assigning a value outside the float range to a 'float' attribute should throw a TypeError
https://bugs.webkit.org/show_bug.cgi?id=227146

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now fully passing.

  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/pannernode-setposition-throws-expected.txt:

Source/WebCore:

Assigning a value outside the float range to a 'float' attribute should throw a TypeError, as per:

Blink follows the specification but WebKit was just casting the double to a float. This patch
addresses this issue.

This patch also makes sure that values outside the float range properly get resolved to -Infinity
or Infinity if the attribute is of type 'unrestricted float', as per:

No new tests, updated existing tests.

  • bindings/js/JSDOMConvertNumbers.h:

(WebCore::Converter<IDLFloat>::convert):
(WebCore::Converter<IDLUnrestrictedFloat>::convert):

  • testing/TypeConversions.h:

(WebCore::TypeConversions::testFloat const):
(WebCore::TypeConversions::setTestFloat):
(WebCore::TypeConversions::testUnrestrictedFloat const):
(WebCore::TypeConversions::setTestUnrestrictedFloat):

  • testing/TypeConversions.idl:

LayoutTests:

Add layout test coverage.

  • js/dom/webidl-type-mapping-expected.txt:
  • js/dom/webidl-type-mapping.html:
1:41 PM Changeset in webkit [279046] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Curl] Add curl option CURLOPT_NOSIGNAL to omit numerous sigaction calls
https://bugs.webkit.org/show_bug.cgi?id=227118

Patch by Soujyu TANAKA <soujyu.tanaka@access-company.com> on 2021-06-18
Reviewed by Fujii Hironori.

As we increase file handles registered by curl_multi_add_handle(),
number of times of sigaction executions in Curl grows rapidly. That can
cause unignorable download speed drop.

With a curl option CURLOPT_NOSIGNAL enabled, Curl doesn't use the
syscall to ignore SIGPIPE signals. It's safe as long as we configure to
prevent SIGPIPE from being triggered.

No new tests.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::CurlHandle):

1:36 PM Changeset in webkit [279045] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Clear state after process crash so that we know to re-issue sandbox extensions
https://bugs.webkit.org/show_bug.cgi?id=227103
<rdar://problem/77588760>

Reviewed by Tim Horton.

Follow-up patch that corrects a problem when switching between processes (for example, when
a provisional load moves to a committed load.) The parameters for the new process would fail
to pass the necessary sandbox extensions for the <attachment> element if they had been vended
to the provisional load. Instead, we should be checking if the new process has been given
the necessary extensions.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters): Use the new process, not the process state we are
copying from when deciding whether we need to extend sandbox powers to the new process.

12:44 PM Changeset in webkit [279044] by Oriol Brufau
  • 7 edits in trunk

[css-logical] Fix cssom "set a CSS declaration" for logical properties
https://bugs.webkit.org/show_bug.cgi?id=226461

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

This test is now passing.

  • web-platform-tests/css/cssom/cssstyledeclaration-setter-logical-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-setter-logical.html

Before this patch, setting a value to a property already in the list of
declarations, would just update its value, without reordering.

The problem was that the order is important when there is a mix of
logical and physical properties:

el.style.paddingTop = "1px";
el.style.paddingBlockStart = "2px";
el.style.cssText; "padding-top: 1px; padding-block-start: 2px"
el.style.paddingTop = "3px";
el.style.cssText;
"padding-top: 3px; padding-block-start: 2px"
getComputedStyle(el).paddingTop; "2px" -- no effect!

Therefore, this patch implements this part of the spec:

If there are CSS declarations in declarations whose property name is
in the same logical property group as property, but has a different
mapping logic, target declaration must be at an index after all of
those CSS declarations.

This change is based on this Chromium CL:
https://chromium-review.googlesource.com/c/chromium/src/+/2575081/

  • css/CSSProperty.h:
  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::canUpdateInPlace const):
(WebCore::MutableStyleProperties::setProperty):

  • css/StyleProperties.h:
  • css/makeprop.pl:
12:15 PM Changeset in webkit [279043] by Peng Liu
  • 19 edits in trunk/Source

[iOS] Fullscreen video playback gets stuck after interacting with the playback controls
https://bugs.webkit.org/show_bug.cgi?id=227047

Reviewed by Eric Carlson.

When we scrub a playing video, the video element may enter a temporarily stalled
state - the player is still playing, but it does not have enough data. In WebKit,
the rate of the player will be 0. But we cannot set the rate of WebAVPlayerController
to 0 in this case, because AVKit will believe the video playback is paused when
its rate is 0. In r261587, we defined a magic rate (0.00000001f) for this case.

Unfortunately, with the changes in r275956, WebAVPlayerController will
align its defaultPlaybackRate with rate when rate is not 0. Under stress
tests, e.g., keep scrubbing a video, a video element will eventually enter a state
in which both defaultPlaybackRate and rate are the magic rate. And the video
appears to be stuck for users.

To fix the issue, this patch removes the magic rate and defines a new state: stalled.
A video will be in the stalled state when it is playing but does not have enough data.
WebKit will only change the rate of WebAVPlayerController when the video
is not stalled.

To avoid potential problems due to the conversions between "float" and "double"
back and forth, this patch updates the types of playbackRate and defaultPlaybackRate.

Source/WebCore:

  • platform/cocoa/PlaybackSessionModel.h:

(WebCore::PlaybackSessionModelClient::rateChanged):

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

(WebCore::PlaybackSessionModelMediaElement::updateForEventName):
(WebCore::PlaybackSessionModelMediaElement::setDefaultPlaybackRate):
(WebCore::PlaybackSessionModelMediaElement::setPlaybackRate):
(WebCore::PlaybackSessionModelMediaElement::defaultPlaybackRate const):
(WebCore::PlaybackSessionModelMediaElement::playbackRate const):

  • platform/ios/PlaybackSessionInterfaceAVKit.h:
  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::PlaybackSessionInterfaceAVKit):
(WebCore::PlaybackSessionInterfaceAVKit::rateChanged):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(VideoFullscreenControllerContext::rateChanged):
(VideoFullscreenControllerContext::setDefaultPlaybackRate):
(VideoFullscreenControllerContext::setPlaybackRate):
(VideoFullscreenControllerContext::isStalled const):
(VideoFullscreenControllerContext::defaultPlaybackRate const):
(VideoFullscreenControllerContext::playbackRate const):

  • platform/mac/PlaybackSessionInterfaceMac.h:
  • platform/mac/PlaybackSessionInterfaceMac.mm:

(WebCore::PlaybackSessionInterfaceMac::rateChanged):

  • platform/mac/VideoFullscreenInterfaceMac.h:
  • platform/mac/VideoFullscreenInterfaceMac.mm:

(WebCore::VideoFullscreenInterfaceMac::rateChanged):

Source/WebKit:

  • Scripts/webkit/messages.py:

(headers_for_type):

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

(WebKit::PlaybackSessionModelContext::setDefaultPlaybackRate):
(WebKit::PlaybackSessionModelContext::setPlaybackRate):
(WebKit::PlaybackSessionModelContext::rateChanged):
(WebKit::PlaybackSessionManagerProxy::rateChanged):
(WebKit::PlaybackSessionManagerProxy::setDefaultPlaybackRate):
(WebKit::PlaybackSessionManagerProxy::setPlaybackRate):

  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
  • WebProcess/cocoa/PlaybackSessionManager.h:
  • WebProcess/cocoa/PlaybackSessionManager.mm:

(WebKit::PlaybackSessionInterfaceContext::rateChanged):
(WebKit::PlaybackSessionManager::rateChanged):

11:25 AM Changeset in webkit [279042] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Add a new pattern to B3ReduceStrength based on Bug 226984
https://bugs.webkit.org/show_bug.cgi?id=227138

Patch by Yijia Huang <Yijia Huang> on 2021-06-18
Reviewed by Filip Pizlo.

In the previous patch bug 226984, a new pattern could be introduced to
B3ReduceStrength.cpp for further optimization, which is that:

dest = (src >> shiftAmount) & mask

is equivalent to

src >> shiftAmount

under these constraints:

  1. shiftAmount >= 0
  2. mask has a binary format in contiguous ones starting from the least significant bit.
  3. shiftAmount + bitCount(mask) == maxBitWidth

For instance (32-bit):

(src >> 12) & 0x000fffff == src >> 12

This reduction is more beneficial than UBFX in this case.

B3 IR
Int @0 = ArgumentReg(%0)
Int @1 = 12
Int @2 = ZShr(@0, @1)
Int @3 = 0x000fffff
Int @4 = BitAnd(@2, @3))
Void@5 = Return(@4, Terminal)

w/o the pattern:
Old optimized AIR
Ubfx %0, $12, $20, %0, @4
Ret %0, @5

w/ the pattern:
New optimized AIR
Urshift %0, $12, %0, @3
Ret32 %0, @6

  • b3/B3ReduceStrength.cpp:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testBitAndZeroShiftRightImmMask32):
(testBitAndZeroShiftRightImmMask64):
(addBitTests):

10:17 AM Changeset in webkit [279041] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[DFG] Untyped branches should eliminate checks based on results from the AbstractInterpreter
https://bugs.webkit.org/show_bug.cgi?id=227159

Reviewed by Filip Pizlo.

We currently emit a ton of code for Untyped branches, as we use branchIfTruthy which does not know anything about the abstract interpreter.
Even worse: we call branchIfTruthy after emitting some fast paths, and branchIfTruthy replicates these fast paths (Int32 and Booleans).
While I plan to reduce the number of Untyped branches in some separate patches, there is a very long tail of predicted types visible in benchmarks, so I expect some of them to remain no matter what, justifying making the code emitted in that case more reasonable.

The implementation in this patch is fairly straightforward, as it follows very closely branchOnValue() from AssemblyHelpers (which was previously called through branchIfTruthy).

It was tested on the JSC stress tests, as well as on JetStream2.

On JetStream2, it reduced the average number of bytes emitted for Branch by the DFG from 30.1 to 27.5 (highly significant, it only changes by about 0.1 between runs).
Since only about 1.5k branches are untyped out of 34k in that benchmark, it means that this patch reduces the amount of code emitted for untyped branches by about 50 bytes on average.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::branchDoubleZeroOrNaN):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitUntypedBranch):
(JSC::DFG::SpeculativeJIT::emitBranch):

10:10 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
9:45 AM Changeset in webkit [279040] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS 14-Simulator WK2] editing/deleting/smart-delete-paragraph-004.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226906

Unreviewed test gardening.

  • platform/ios/TestExpectations: Mark test as flaky.
9:21 AM Changeset in webkit [279039] by commit-queue@webkit.org
  • 4 edits in trunk

[MSE][GStreamer] Soundcloud serves MP4 audio with empty tfdt boxes
https://bugs.webkit.org/show_bug.cgi?id=191419

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-18
Reviewed by Michael Catanzaro.

Source/WebCore:

When MSE is used the player receives broken audio fragments, perhaps because the server
expects the client to repair them. Not much we can do about this on GStreamer side though,
so behave as a Chrome UserAgent and then MSE is not used, the player receives an MP3 stream.

  • platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresChromeBrowser):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST): Add a test for the soundcloud quirk.

9:13 AM Changeset in webkit [279038] by commit-queue@webkit.org
  • 2 edits
    1 delete in trunk/LayoutTests

Unreviewed test gardening.
https://bugs.webkit.org/show_bug.cgi?id=227168

Updated glib baseline/expectations.

Patch by Eleni Maria Stea <hikiko> on 2021-06-18

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/margin-003-expected.txt: Removed.
7:58 AM WebKitGTK/2.32.x edited by zandobersek@gmail.com
(diff)
7:01 AM Changeset in webkit [279037] by commit-queue@webkit.org
  • 5 edits
    2 moves in trunk/Source/WebKit

[WPE] Rework touch-based gesture controller
https://bugs.webkit.org/show_bug.cgi?id=226456

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-06-18
Reviewed by Alejandro G. Castro.

Rename WPE's ScrollGestureController to TouchGestureController since now
it also handles production of touch-based click events.

TouchGestureController now internally manages all the related state,
tracking the touch interaction and determining whether it progresses
into a scrolling gesture or whether, upon finishing, it should be
translated into a simple click event.

In PageClientImpl, any unhandled event is pushed into
TouchGestureController and a variant of different outcomes is returned.
No-event result is ignored, and click or axis events are dispatched as
appropriate.

In WPEView, where the touch events arrive into the engine, we keep the
shortcut where touch events are piped directly into the controller if
said controller is already gesturing scrolling behavior. In that case
the touch events are not dispatched into the engine, with the exception
of touch-up events which are, to provide matching closure for the
touch-down events.

  • SourcesWPE.txt:
  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent):

  • UIProcess/API/wpe/TouchGestureController.cpp: Renamed from Source/WebKit/UIProcess/API/wpe/ScrollGestureController.cpp.

(WebKit::TouchGestureController::handleEvent):

  • UIProcess/API/wpe/TouchGestureController.h: Renamed from Source/WebKit/UIProcess/API/wpe/ScrollGestureController.h.

(WebKit::TouchGestureController::gesturedEvent const):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::View):
(WKWPE::m_backend):

  • UIProcess/API/wpe/WPEView.h:

(WKWPE::View::touchGestureController const):
(WKWPE::View::scrollGestureController const): Deleted.

6:37 AM Changeset in webkit [279036] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[LFC][WPE] Build failure with GCC 8.x
https://bugs.webkit.org/show_bug.cgi?id=227166

Reviewed by Alan Bujtas.

The build fails with the error: converting to 'std::in_place_t' from initializer list
would use explicit constructor 'constexpr std::in_place_t::in_place_t()'

No new tests, is a build fix.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::prepareLayoutState):

3:58 AM Changeset in webkit [279035] by svillar@igalia.com
  • 2 edits in trunk

Ignore clangd's directory with index files
https://bugs.webkit.org/show_bug.cgi?id=227162

Reviewed by Žan Doberšek.

clangd stores its indexes in a .cache directory. Let git ignore it.

  • .gitignore:
3:35 AM Changeset in webkit [279034] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[GStreamer] imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html is failing since r273645
https://bugs.webkit.org/show_bug.cgi?id=223508

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

Source/WebCore:

Per spec, prevent seeks, playback rate changes and preload state updates on media elements backed by
the GStreamer MediaStream source element.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):

LayoutTests:

Unflag and add glib baseline for test now passing.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https-expected.txt: Added.
1:37 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
1:29 AM Changeset in webkit [279033] by Philippe Normand
  • 4 edits in trunk

[WebRTC][GStreamer] fast/mediastream/MediaStream-video-element-remove-track.html is failing
https://bugs.webkit.org/show_bug.cgi?id=191886

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Trigger source pad removal in the mediastream source element when a track has been removed.

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

(WebKitMediaStreamObserver::didRemoveTrack):

LayoutTests:

  • platform/glib/TestExpectations: Unflag test now passing.
1:05 AM Changeset in webkit [279032] by Carlos Garcia Campos
  • 6 edits in trunk

[SOUP] Add Timing-Allow-Origin checks to NetworkDataTaskSoup
https://bugs.webkit.org/show_bug.cgi?id=227008
<rdar://problem/79384792>

Reviewed by Adrian Perez de Castro.

Source/WebKit:

Add missing TAO checks to Soup backend.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:

LayoutTests:

  • platform/glib/TestExpectations:
Note: See TracTimeline for information about the timeline view.