Timeline



Jun 28, 2021:

11:11 PM Changeset in webkit [279363] by calvaris@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer][EME] Fix resources release when a MediaKeySession is closed
https://bugs.webkit.org/show_bug.cgi?id=227403

Reviewed by Philippe Normand.

Thunder sessions should be a BoxPtr, already when stored at the
CDMInstanceSessionThunder, it does not make sense to store then in
a unique_ptr. This way the same session lives in the
MediaKeySession wrapper (CDMInstanceSessionThunder) and inside the
KeyStores.

Removed the CDMInstanceProxy key store. It is not needed.

When a session is closed in Thunder, there should be a cascade to
remove it from the other synced stores, that's why we introduce
the removeAllKeysFrom logic.

Regular key stores do not manage key session references
anymore. They are only needed in the CDMProxy class, which is
where the keys are shared among different sessions. We were
managing key session references in other stores and they were
messing up with the key references in the CDMProxy class. In
those cases, a key kept in a local store could have a reference
that would prevent the CDMProxy key store from removing it when
asked from it. There were also cases of removing keys from local
stores that were creating negative reference numbers, which
created the opposite effect, this is, leaving in place keys in the
CDMProxy store that should be released.

  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::KeyStore::merge): Simplified to just add keys.
(WebCore::KeyStore::add): Adds references (if needed) and merges
if needed.
(WebCore::KeyStore::unrefAllKeys): Renamed. Unrefs all keys from a
store by copying itself and calling unrefAllKeysFrom that copy.
(WebCore::KeyStore::unref): Renamed. Uses proper refefencing.
(WebCore::CDMProxy::unrefAllKeysFrom): Method to unref all keys
that are contained in some other store.
(WebCore::CDMInstanceProxy::mergeKeysFrom): There is no more key
store in this class.
(WebCore::CDMInstanceProxy::unrefAllKeysFrom): Renamed. Calls the
CDMproxy to unref the keys from there.

  • platform/encryptedmedia/CDMProxy.h:

(WebCore::KeyHandle::mergeKeyInto): Merges one key into self by
copying status, data and summing reference count.
(WebCore::KeyHandle::numSessionReferences const): Turn int.
(WebCore::KeyHandle::hasReferences const): Added.
(WebCore::KeyStore::addSessionReferenceTo const):
(WebCore::KeyStore::removeSessionReferenceFrom const): Helpers to
check if the store is reference counted or not. Default is do
nothing and but the ReferenceAwareKeyStore redefines them to do
reference counting.
(WebCore::KeyStore::unrefAllKeys): Deleted.

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::CDMInstanceSessionClearKey::updateLicense):
(WebCore::CDMInstanceSessionClearKey::removeSessionData): Use
renamed methods.

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

(WebCore::CDMInstanceSessionThunder::status const):
(WebCore::CDMInstanceSessionThunder::keyUpdatedCallback):
(WebCore::CDMInstanceSessionThunder::requestLicense):
(WebCore::CDMInstanceSessionThunder::updateLicense):
(WebCore::CDMInstanceSessionThunder::removeSessionData):
(WebCore::CDMInstanceSessionThunder::loadSession): Use BoxPtr in
the session.
(WebCore::CDMInstanceSessionThunder::closeSession): Close the
current session, release the BoxPtr, notify the instance and
therefore the proxy to unref all they key IDs in this session and
empty the local key store.

9:05 PM Changeset in webkit [279362] by commit-queue@webkit.org
  • 11 edits in trunk/Source/JavaScriptCore

Add a new pattern to instruction selector to use BIC supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=227202

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

This patch includes three modifications:

  1. Add bit clear (BIC), or not (ORN), and extract and insert bitfield at lower end (FBXIL) to Air opcode to serve intruciton selector.
  2. Add bitfield clear (BFC) to MacroAssembler.
  3. Do refactoring - rename Air opcodes added in the previous patches.

### Part A BIC ###


Given the operation:

bic Rd, Rn, Rm

The BIC (Bit Clear) instruction performs an AND operation on the bits in Rn with the
complements of the corresponding bits in the value of Rm. The instruction selector can
utilize this to lowering certain patterns in B3 IR before further Air optimization.
The equivalent patterns of this instruction are:

Pattern 1:

d = n & (-m - 1)

Pattern 2:

d = n & (m -1)

In order to get benefits for complement operation, current instruction selector uses
mvn instruction to lower the pattern value -1. Then, a new strength reduction rule is
introduced:

Turn this: -value - 1
Into this: value -1

So, d = n & (m -1) is selected as the canonical form.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = -1
Int @3 = BitXor(@1, @2)
Int @4 = BitAnd(@0, @3)
Void@5 = Return(@4, Terminal)

Before Adding BIC:
Old optimized AIR
Not %x1, %x1, @3
And %x0, %x1, %x0, @4
Ret %x0, @5

After Adding BIC:
New optimized AIR
Bic %x0, %x1, %x0, @4
Ret %x0, @5


### Part A ORN ###


Given the operation:

orn Rd, Rn, Rm

Bitwise OR NOT (shifted register) performs a bitwise (inclusive) OR of a register value
Rn and the complement of an optionally-shifted register value Rm, and writes the result
to the destination register Rd.

The equivalent patterns of this instruction are:

Pattern 1:

d = n | (-m - 1)

Pattern 2:

d = n | (m -1)

Then, d = n | (m -1) is selected as the canonical form.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = -1
Int @3 = BitXor(@1, @2)
Int @4 = BitOr(@0, @3)
Void@5 = Return(@4, Terminal)

Before Adding BIC:
Old optimized AIR
Not %x1, %x1, @3
Or %x0, %x1, %x0, @4
Ret %x0, @5

After Adding BIC:
New optimized AIR
Orn %x0, %x1, %x0, @4
Ret %x0, @5


### Part A FBXIL ###


Given the operation:

bfxil Rd, Rn, lsb, width

Bitfield extract and insert at low end(FBXIL) copies any number of low-order bits
from a source register into the same number of adjacent bits at the low end in
the destination register, leaving other bits unchanged.

The equivalent patterns of this instruction are:

Pattern 1:
mask1 = (1 << width) - 1
mask2 = ~mask1
((n >> lsb) & mask1) | (d & mask2)

Pattern 2:
mask1 = ((1 << width) - 1) << lsb
mask2 = ~(mask1 >> lsb)
((n & mask1) >> lsb) | (d & mask2)

Then, introduce a strength reduction rule for easier recognization.
Turn this: (v & maskShift) >> shiftAmount
Into this: (v >> shiftAmount) & mask

with constraints:

  1. maskShift = mask << lsb
  2. mask = (1 << width) - 1
  3. 0 <= shiftAmount < datasize
  4. 0 < width < datasize
  5. shiftAmount + width <= datasize

The canonical form to match FBXIL is d = ((n >> lsb) & mask1) | (d & mask2).

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = lsb
Int @3 = mask1
Int @4 = mask2
Int @5 = BitAnd(@1, @3)
Int @6 = BitAnd(@0, @4))
Int @7 = ZShr(@5, @2)
Int @8 = BitOr(@7, @6)
Void@9 = Return(@8, Terminal)

Before Adding BIC:
Old optimized AIR
And mask2, %x0, %x0, @6
ExtractUnsignedBitfield %x1, lsb, width, %x1, @7
Or %x0, %x1, %x0, @8
Ret %x0, @9

After Adding BIC:
New optimized AIR
ExtractInsertBitfieldAtLowEnd %x1, lsb, width, %x0, @8
Ret64 %x0, @9


### Part B ###


The Bitfield Clear (BFC), leaving other bits unchanged, is similar to BFI which is an
alias of BFM. Given the operation:

bfc Rd, lsb, width

The equivalent pattern of this instruction is:

mask = ((1 << width) - 1) << lsb
d = d & ~mask

Since mask is a constant and B3 performs constant fold in the optimization phase, this
pattern will directly lower to the BitAnd binary operation. So, no need to match this pattern.


### Part C ###


At MacroAssembler level, the emitters are exepected to be expressed in english
(e.g. something like clearBitField for BFC). Do refactoring to rename Air opcode for
UBFX, UBFIZ, BFI, and BIC.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::bfc):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::extractUnsignedBitfield32):
(JSC::MacroAssemblerARM64::extractUnsignedBitfield64):
(JSC::MacroAssemblerARM64::insertUnsignedBitfieldInZero32):
(JSC::MacroAssemblerARM64::insertUnsignedBitfieldInZero64):
(JSC::MacroAssemblerARM64::insertBitField32):
(JSC::MacroAssemblerARM64::insertBitField64):
(JSC::MacroAssemblerARM64::clearBitField32):
(JSC::MacroAssemblerARM64::clearBitField64):
(JSC::MacroAssemblerARM64::clearBitsWithMask32):
(JSC::MacroAssemblerARM64::clearBitsWithMask64):
(JSC::MacroAssemblerARM64::orNot32):
(JSC::MacroAssemblerARM64::orNot64):
(JSC::MacroAssemblerARM64::ubfx32): Deleted.
(JSC::MacroAssemblerARM64::ubfx64): Deleted.
(JSC::MacroAssemblerARM64::ubfiz32): Deleted.
(JSC::MacroAssemblerARM64::ubfiz64): Deleted.
(JSC::MacroAssemblerARM64::bitFieldInsert32): Deleted.
(JSC::MacroAssemblerARM64::bitFieldInsert64): Deleted.

  • assembler/testmasm.cpp:

(JSC::testMultiplySignExtend32):
(JSC::testMultiplySubSignExtend32):
(JSC::testExtractUnsignedBitfield32):
(JSC::testExtractUnsignedBitfield64):
(JSC::testInsertUnsignedBitfieldInZero32):
(JSC::testInsertUnsignedBitfieldInZero64):
(JSC::testInsertBitField32):
(JSC::testInsertBitField64):
(JSC::testClearBitField32):
(JSC::testClearBitField64):
(JSC::testClearBitsWithMask32):
(JSC::testClearBitsWithMask64):
(JSC::testOrNot32):
(JSC::testOrNot64):
(JSC::testMul32SignExtend): Deleted.
(JSC::testMulSubSignExtend32): Deleted.
(JSC::testUbfx32): Deleted.
(JSC::testUbfx64): Deleted.
(JSC::testUbfiz32): Deleted.
(JSC::testUbfiz64): Deleted.
(JSC::testBitFieldInsert32): Deleted.
(JSC::testBitFieldInsert64): Deleted.

  • b3/B3LowerToAir.cpp:
  • b3/B3ReduceStrength.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testInsertBitField32):
(testInsertBitField64):
(testBIC32):
(testBIC64):
(testOrNot32):
(testOrNot64):
(addBitTests):
(testBitFieldInsert32): Deleted.
(testBitFieldInsert64): Deleted.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::cageWithoutUntagging):
(JSC::AssemblyHelpers::cageConditionallyAndUntag):

8:11 PM Changeset in webkit [279361] by Wenson Hsieh
  • 13 edits
    2 adds in trunk

REGRESSION (r279310): Occasional crash when focusing login fields on iPad with a software keyboard
https://bugs.webkit.org/show_bug.cgi?id=227472
rdar://79876040

Reviewed by Tim Horton.

Source/WebKit:

I added a mechanism in r279310 to defer calling -[WKContentView _setSuppressSoftwareKeyboard:NO] until we've
gotten a response from the web process containing an up-to-date autocorrection context. However, in the case
where the WKWebView client sets _suppressSoftwareKeyboard to YES and then immediately to NO underneath the
scope of a call to -_webView:willStartInputSession:, we'll end up calling into -_setSuppressSoftwareKeyboard:
inside the scope of -requestAutocorrectionContextWithCompletionHandler:, when we've received an
autocorrection context while sync-waiting. This is problematic because it breaks UIKeyboardTaskQueue's state,
since the call to -_setSuppressSoftwareKeyboard: will attempt to enqueue a new task after the previous task's
context has already returned execution to the parent.

To fix this, we instead invoke self._suppressSoftwareKeyboard = NO; *before* calling the completion block in
-_handleAutocorrectionContext:. This allows the request for an autocorrection context underneath
-_setSuppressSoftwareKeyboard: to be handled (and completed) as a child task of the previous task, which keeps
UIKeyboardTaskQueue in a valid state.

Test: fast/forms/ios/suppress-software-keyboard-while-focusing-input.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _handleAutocorrectionContext:]):

Tools:

Make it possible to induce the crash (prior to the fix) by introducing two new testing primitives on iOS:

  • UIScriptController.suppressSoftwareKeyboard, a readwrite attribute that can be used to suppress the

appearance of the software keyboard on iOS by calling -[WKWebView _setSuppressSoftwareKeyboard:].

  • UIScriptController.willStartInputSessionCallback, a callback that is invoked when we're about to start a

UI-process-side input session. On iOS, this corresponds to
-[_WKInputDelegate _webView:willStartInputSession:].

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptContext.h:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::suppressSoftwareKeyboard const):
(WTR::UIScriptController::setSuppressSoftwareKeyboard):

  • TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp:

(WTR::UIScriptController::setWillStartInputSessionCallback):
(WTR::UIScriptController::willStartInputSessionCallback const):

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView initWithFrame:configuration:]):
(-[TestRunnerWKWebView resetInteractionCallbacks]):
(-[TestRunnerWKWebView _webView:willStartInputSession:]):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

Make sure that we revert _suppressSoftwareKeyboard to NO, in case a layout test ends while leaving this on,
to prevent subsequent layout tests from behaving in unexpected ways.

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::setWillStartInputSessionCallback):
(WTR::UIScriptControllerIOS::suppressSoftwareKeyboard const):
(WTR::UIScriptControllerIOS::setSuppressSoftwareKeyboard):

LayoutTests:

Add a new layout test to exercise the crash. See Tools and Source/WebKit ChangeLogs for more information.
This new test suppresses and then immediately un-suppresses the software keyboard inside the
-_webView:willStartInputSession: input delegate hook while focusing a regular text field.

  • fast/forms/ios/suppress-software-keyboard-while-focusing-input-expected.txt: Added.
  • fast/forms/ios/suppress-software-keyboard-while-focusing-input.html: Added.
6:44 PM Changeset in webkit [279360] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] Mark media/track/video/video-track-mkv-{vorbis,theora}-language.html as passing
https://bugs.webkit.org/show_bug.cgi?id=227458

Unreviewed test gardening. These tests were fixed by r278860.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-28

  • platform/glib/TestExpectations:
6:35 PM Changeset in webkit [279359] by Alan Coon
  • 2 edits in branches/safari-612.1.21-branch/Source/WebKit

Cherry-pick r279352. rdar://problem/79891891

REGRESSION (r279305) [Mac DEBUG] 4 SOAuthorizationRedirect Tests are Crashing with Assert: !m_sheetWindow
https://bugs.webkit.org/show_bug.cgi?id=227454
<rdar://problem/79871423>

Reviewed by Kate Cheney.

The new assertion is wrong in the case that the app is hidden. When minimized (or hidden) we need to remember
to dismiss the sheet once Cocoa restores the app to visible state. So the m_sheetWindow may still exist after
returning from 'dismissViewController'. We should assert that either m_sheetWindow is nullptr, or that both
m_sheetWindow and m_sheetWindowWillCloseObserver exist.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: (WebKit::SOAuthorizationSession::becomeCompleted):

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

6:34 PM Changeset in webkit [279358] by Darin Adler
  • 38 edits in trunk

CSS parser "consume declaration" algorithm does not handle whitespace correctly
https://bugs.webkit.org/show_bug.cgi?id=227368

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-properties-values-api/at-property-animation-expected.txt:
  • web-platform-tests/css/css-properties-values-api/at-property-expected.txt:
  • web-platform-tests/css/css-properties-values-api/at-property-shadow-expected.txt:
  • web-platform-tests/css/css-properties-values-api/determine-registration-expected.txt:
  • web-platform-tests/css/css-properties-values-api/registered-property-cssom-expected.txt:
  • web-platform-tests/css/css-properties-values-api/var-reference-registered-properties-expected.txt:

Regenerated to reflect the whitespace trimming: one new pass, no new failures. Some of
these tests will also need updates to match the newer CSS specification. Not doing those
here right now.

  • web-platform-tests/css/css-properties-values-api/at-property.html:

Pulled down a newer version of this test from the WPT repository with expectations in line
with newer CSS specification.

  • web-platform-tests/css/css-syntax/declarations-trim-whitespace-expected.txt:
  • web-platform-tests/css/css-variables/variable-cssText-expected.txt:

Expect most tests to pass instead of fail. There are still some failures. Given my reading
of the CSS specification I suspect it is the tests that are incorrect.

  • web-platform-tests/css/css-variables/variable-definition-expected.txt:
  • web-platform-tests/css/css-variables/variable-definition.html:

Pulled down a newer version of this test from the WPT repository with expectations in line
with newer CSS specification. Some tests are still failing because of expectations about
trailing whitespace. Given my reading of the CSS specification I suspect it is the tests
that are incorrect.

  • web-platform-tests/css/css-variables/variable-reference-expected.txt:
  • web-platform-tests/css/css-variables/variable-reference.html:
  • web-platform-tests/css/css-variables/variable-substitution-variable-declaration-expected.txt:
  • web-platform-tests/css/css-variables/variable-substitution-variable-declaration.html:

Pulled down a newer version of these tests from the WPT repository with expectations in
line with newer CSS specification.

  • web-platform-tests/css/cssom/variable-names-expected.txt: Expect tests to pass, not fail.

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/css-syntax/declarations-trim-whitespace.html

To avoid creating regressions in CSS variable behavior, had to make
changes there to handle whitespace correctly at the same time as the
change to the "consume declaration" algorithm.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::customPropertyValue): Restructured
to not have a case for each variant custom value type. This lets us
support the new Empty value type without extra code here.

  • css/CSSCustomPropertyValue.cpp:

(WebCore::CSSCustomPropertyValue::createEmpty): Added. Used for a new
Empty value type for properties that have empty string as their value,
which is a new capability added to the CSS specification.
(WebCore::CSSCustomPropertyValue::equals const): Removed unneeded pointer
comparison optimization. Added support for Empty value.
(WebCore::CSSCustomPropertyValue::customCSSText const): Updated to use
null string for m_stringValue instead of a separate m_serialized flag.
Added support for Empty value.
(WebCore::CSSCustomPropertyValue::tokens const): Added support for
Empty value. Also call directly to customCSSText instead of calling
through cssText.

  • css/CSSCustomPropertyValue.h: Updated for the above, adding Empty value.

Removed m_serialized. Greatly simplified the copy constructor since Ref
now has a copy constructor.

  • css/CSSVariableReferenceValue.cpp:

(WebCore::resolveVariableFallback): Consume whitespace after the comma,
matching what is now called for in the CSS specification.

  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalcFunction): Use
consumeCommaIncludingWhitespace to simplify the code. No behavior change,
just refactoring.

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeDeclaration): Updated algorithm to match
the CSS specification, trimming whitespace correctly.
(WebCore::CSSParserImpl::consumeCustomPropertyValue): Added support for
a custom property value with no declaration value, as now called for in
the CSS specification, using CSSCustomPropertyValue::createEmpty.

  • css/parser/CSSVariableParser.cpp:

(WebCore::isValidVariableReference): Allow empty fallback, as now called
for in the CSS specification.
(WebCore::isValidConstantReference): Ditto.

LayoutTests:

  • css-custom-properties-api/inline.html: Update expectations to expect leading

whitespace to be trimmed.

  • fast/css/variables/test-suite/011.html: Updated to expect a variable reference

with no fallback tokens to be valid. Change in the CSS specification since this
test was written.

  • fast/css/variables/test-suite/013.html: Ditto.
  • fast/css/variables/test-suite/041.html: Ditto.
  • fast/css/variables/test-suite/043.html: Ditto.
  • fast/css/variables/test-suite/061.html: Updated to expect a value with no tokens

to be valid. Change in the CSS specification since this test was written.

  • fast/css/variables/test-suite/100.html: Updated to expect a variable reference

with no fallback tokens to be valid. Change in the CSS specification since this
test was written.

  • fast/css/variables/test-suite/105.html: Ditto.
  • fast/css/variables/test-suite/136.html: Ditto.
  • fast/css/variables/test-suite/170.html: Updated to expect a value with no tokens

to be valid. Change in the CSS specification since this test was written.

  • fast/css/variables/test-suite/171.html: Ditto.
  • platform/mac/TestExpectations: Removed a line for a test that no longer exists

(not changed in this patch).

6:29 PM Changeset in webkit [279357] by Alan Coon
  • 1 copy in branches/safari-612.1.21-branch

New branch.

6:10 PM Changeset in webkit [279356] by Cameron McCormack
  • 6 edits in trunk/LayoutTests

Fix canvas color stroke test stroke widths
https://bugs.webkit.org/show_bug.cgi?id=223005
<rdar://75239330>

Reviewed by Simon Fraser.

The lineWidth should be the same in both test and reference.

  • fast/text/canvas-color-fonts/stroke-color-COLR.html:
  • fast/text/canvas-color-fonts/stroke-color-shadow-COLR.html:
  • http/tests/canvas/color-fonts/stroke-color-sbix.html:
  • http/tests/canvas/color-fonts/stroke-color-shadow-sbix.html:
  • platform/mac/TestExpectations:
5:39 PM Changeset in webkit [279355] by commit-queue@webkit.org
  • 13 edits
    2 adds in trunk/Source

Refactor MacOS keyboard scrolling and use KeyboardScroll struct
https://bugs.webkit.org/show_bug.cgi?id=226986

Patch by Dana Estra <destra@apple.com> on 2021-06-28
Reviewed by Tim Horton.
Source/WebCore:

No tests yet.

  • page/EventHandler.cpp:

(WebCore::EventHandler::defaultSpaceEventHandler):

Added usage of switch EventDrivenSmoothKeyboardScrolling
that when enabled sends KeyboardEvent to
HandleKeyboardScrolling.

(WebCore::EventHandler::scrollDistance):
(WebCore::EventHandler::handleKeyboardScrolling):

Makes KeyboardScroll and calls scrollRecursively.

(WebCore::EventHandler::defaultArrowEventHandler):

Added usage of switch EventDrivenSmoothKeyboardScrolling
that when enabled sends KeyboardEvent to
HandleKeyboardScrolling.

  • page/EventHandler.h:
  • page/KeyboardScroll.cpp: Added.
  • page/KeyboardScroll.h: Added.

Source/WebKit:

In addition to notes underneath, changed usage of WebKit::KeyboardScroll, WebKit::ScrollingIncrement, and WebKit::ScrollingDirection to
WebCore::KeyboardScroll, WebCore::ScrollGranularity, and WebCore::ScrollDirection, respectively.

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

(-[WKKeyboardScrollingAnimator parameters]):

Deleted. Now lives in WebCore/KeyboardScroll.h.

(unitVector):

Deleted. Now lives in WebCore/KeyboardScroll.h.

(perpendicularAbsoluteUnitVector):
(boxSide):
(-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
(-[WKKeyboardScrollingAnimator beginWithEvent:]):
(farthestPointInDirection):
(-[WKKeyboardScrollViewAnimator distanceForIncrement:inDirection:]):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::handleEditingKeyboardEvent):
(WebKit::WebPage::performNonEditingBehaviorForSelector):

Added switch that removes selectors that are now handled by
EventHandler when EventHandlerDrivenSmoothKeyboardScrolling
is enabled.

5:24 PM Changeset in webkit [279354] by Chris Dumez
  • 18 edits in trunk/Source/WebKit

NetworkProcessProxy::networkProcessDidTerminate() should copy process pools before iterating over them
https://bugs.webkit.org/show_bug.cgi?id=227468

Reviewed by Alex Christensen.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::networkProcessDidTerminate):

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

Nullptr crash in ResourceLoadStatisticsDatabaseStore::allAttributedPrivateClickMeasurement
https://bugs.webkit.org/show_bug.cgi?id=227462
rdar://50772934

Reviewed by Chris Dumez.

Return early if statement cannot be created.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationshipList):
(WebKit::ResourceLoadStatisticsDatabaseStore::allAttributedPrivateClickMeasurement):

4:56 PM Changeset in webkit [279352] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION (r279305) [Mac DEBUG] 4 SOAuthorizationRedirect Tests are Crashing with Assert: !m_sheetWindow
https://bugs.webkit.org/show_bug.cgi?id=227454
<rdar://problem/79871423>

Reviewed by Kate Cheney.

The new assertion is wrong in the case that the app is hidden. When minimized (or hidden) we need to remember
to dismiss the sheet once Cocoa restores the app to visible state. So the m_sheetWindow may still exist after
returning from 'dismissViewController'. We should assert that either m_sheetWindow is nullptr, or that both
m_sheetWindow and m_sheetWindowWillCloseObserver exist.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::becomeCompleted):

4:52 PM Changeset in webkit [279351] by Kate Cheney
  • 5 edits in trunk/Source/WebKit

I-beam pointer is vertical for vertical text
https://bugs.webkit.org/show_bug.cgi?id=227414
<rdar://problem/77564647>

Reviewed by Tim Horton.

Pass the orientation from the renderer to the WKContentView. Rename
caretHeight to caretLength now that we use it to calculate the I-beam
size for vertical text.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView pointerInteraction:styleForRegion:]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::populateCaretContext):

4:06 PM Changeset in webkit [279350] by W.D. Xiong
  • 2 edits in trunk/Tools

Add wdx to contributors.json
https://bugs.webkit.org/show_bug.cgi?id=227466

Unreviewed

  • Scripts/webkitpy/common/config/contributors.json: Add wdx as committer
2:44 PM Changeset in webkit [279349] by Wenson Hsieh
  • 6 edits
    4 adds in trunk

Live Text selections inside images is misaligned when "object-fit" is not "fill"
https://bugs.webkit.org/show_bug.cgi?id=227453

Reviewed by Tim Horton.

Source/WebCore:

We currently use the bounds of the image overlay host element when injecting transformed Live Text into image
element UA shadow roots. However, this causes text to lay out in the wrong place relative to the image when
using any "object-fit" values that are not "fill". To address this, use the replacedContentRect() of the image
renderer when injecting OCR text quads instead.

Tests: fast/images/text-recognition/image-overlay-object-fit-change.html

fast/images/text-recognition/image-overlay-object-fit.html

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithTextRecognitionResult): See description above for more details.

  • page/Page.cpp:

(WebCore::Page::updateElementsWithTextRecognitionResults):

We also refactor this code so that we don't immediately try to update text recognition results, and instead
queue an internal async task to do so. Immediately performing the update here can potentially cause a debug
assertion due to leaving us in a state where we require layout immediately after a rendering update.

(WebCore::Page::cacheTextRecognitionResult):

Additionally adjust the text recognition result caching mechanism to update image overlay content when changing
the replaced content rect, rather than the element's offset width or height. This ensures that changing CSS
"object-fit" values dynamically for images with Live Text causes Live Text bounds to stay up to date.

  • page/Page.h:

LayoutTests:

Add a couple of new tests, and do some minor cleanup in an existing test.

  • fast/images/text-recognition/image-overlay-object-fit-change-expected.txt: Added.
  • fast/images/text-recognition/image-overlay-object-fit-change.html: Added.

Add a layout test to verify that dynamically changing CSS "object-fit" values for an image with Live Text causes
the dimensions of the Live Text to update as well.

  • fast/images/text-recognition/image-overlay-object-fit-expected.txt: Added.
  • fast/images/text-recognition/image-overlay-object-fit.html: Added.

Add a layout test to verify that Live Text is injected correctly when using all 5 values of "object-fit".

  • fast/images/text-recognition/image-overlay-size-change.html:

Clean up this layout test a bit: remove an unnecessarily included script file, add a missing head tag and
don't try to inject an image overlay 10 times.

2:24 PM Changeset in webkit [279348] by Amir Mark Jr.
  • 3 edits in trunk/LayoutTests

[Catalina WK2 Debug/ iOS 14 Debug] fast/css-custom-paint/out-of-memory-while-adding-worklet-module.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=227273

Unreviewed test gardening.

Updating expectation as previous expectation caused possible flaky failure.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
12:57 PM Changeset in webkit [279347] by Jonathan Bedard
  • 10 edits
    1 copy in trunk/Tools

[webkitcorepy] Add test suite with temp directory
https://bugs.webkit.org/show_bug.cgi?id=227327
<rdar://problem/79697909>

Reviewed by Stephanie Lewis.

We had some duplicated code which set up, then cleaned up a temporary
directory associated with a test. This should really be owned by a
base class shared between multiple test suites.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/testing.py: Added.

(PathTestCase): Create a temporary directory before a test starts, delete it after.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/canonicalize_unittest.py:

(TestCanonicalize): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/checkout_unittest.py:

(TestCheckout): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/find_unittest.py:

(TestFind): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/scm_unittest.py:

(TestScm): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/setup_git_svn_unittest.py:

(TestSetupGitSvn): Adopt PathTestCase.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestLocalSvn): Adopt PathTestCase.

12:56 PM Changeset in webkit [279346] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

[Modern Media Controls] Support customizing the media controls via WebKitAdditions
https://bugs.webkit.org/show_bug.cgi?id=227433

Reviewed by Eric Carlson.

  • Support adding additional style sheets and scripts to the media controls via ADDITIONAL_MODERN_MEDIA_CONTROLS_STYLE_SHEETS and ADDITIONAL_MODERN_MEDIA_CONTROLS_SCRIPTS variables in DerivedSources.make
  • Support overriding default layout traits object class name in MediaControlsHost.
  • DerivedSources.make:
  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::layoutTraitsClassName const):

12:11 PM Changeset in webkit [279345] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitcorepy] Fix race condition in TaskPool unittests
https://bugs.webkit.org/show_bug.cgi?id=227455
<rdar://problem/79873003>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py:

(TaskPoolUnittest.test_invalid_shutdown): Increase worker load to 5 seconds.

12:07 PM Changeset in webkit [279344] by Chris Dumez
  • 85 edits
    150 copies
    19 moves
    260 adds
    43 deletes in trunk/LayoutTests

Resync fetch WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227307

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

Resync fetch WPT tests from upstream a38612f39e7752c35320.

  • web-platform-tests/fetch/*: Updated.

LayoutTests:

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wk2/TestExpectations:
  • platform/wpe/TestExpectations:
  • tests-options.json:
10:55 AM Changeset in webkit [279343] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

Add LLInt fast path for less, lesseq, greater and greatereq
https://bugs.webkit.org/show_bug.cgi?id=226266

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-28
Reviewed by Tadeu Zagallo.

The motivation is to add fast path for integers and doubles
in LLInt, so we don't need to go to slow path for those cases.

This patch implements the less, lesseq, greater, greatereq
instruction for ARMv7, MIPS and CLoop.

Microbenchmarking results:

  • x86_64: number-comparison-inline definitely 1.3520x faster
  • ARMv7: number-comparison-inline definitely 1.3520x faster

JetStream2 results:

  • x86_64 jit: 1.015 times better
  • x86_64 no-jit: 1.018 times better
  • ARMv7 no-jit: 1.004 times worse
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/arm.rb:
  • offlineasm/cloop.rb:
  • offlineasm/mips.rb:
10:41 AM Changeset in webkit [279342] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

Pass correct value of AX per app settings to the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=227441
<rdar://problem/79857797>

Reviewed by Brent Fulgham.

Pass value of type AXValueState instead of a boolean value for per app AX settings.

  • Shared/AccessibilityPreferences.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::accessibilityPreferences):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::accessibilityPreferencesDidChange):

9:48 AM Changeset in webkit [279341] by commit-queue@webkit.org
  • 9 edits in trunk/Source

Prevent sign-extended casts for 32 bits arch
https://bugs.webkit.org/show_bug.cgi?id=227170

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-28
Reviewed by Yusuke Suzuki.

In a number of places, addresses are reinterpreted as uint64, which can
lead to wrong addresses in 32 bits arch.

Source/JavaScriptCore:

  • assembler/testmasm.cpp:

(JSC::testBranchTruncateDoubleToInt32):

  • disassembler/ARM64/A64DOpcode.h:

(JSC::ARM64Disassembler::A64DOpcode::appendPCRelativeOffset):

  • runtime/JSCell.cpp:

(JSC::reportZappedCellAndCrash):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::B3IRGenerator::emitLoopTierUpCheck):

Source/WTF:

  • wtf/LoggerHelper.h:

(WTF::LoggerHelper::childLogIdentifier):

9:39 AM Changeset in webkit [279340] by commit-queue@webkit.org
  • 11 edits in trunk

RELEASE_ASSERT hit in NetworkSessionCocoa::removeWebSocketTask when using WKWebViewConfiguration._attributedBundleIdentifier
https://bugs.webkit.org/show_bug.cgi?id=227420
<rdar://79609212>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-06-28
Reviewed by Brady Eidson.

Source/WebKit:

WKWebViewConfiguration._attributedBundleIdentifier makes us use a SessionSet per WKWebView.
When the WKWebView is destroyed with an open WebSocket, there's a race condition between the
NetworkSessionCocoa::removeWebPageNetworkParameters message coming from the UI process and the
NetworkConnectionToWebProcess::didClose message coming from the closing of the web process, which
calls NetworkSessionCocoa::removeWebSocketTask which currently expects the WebSocketTask to still
be there. Instead, keep a WeakPtr<SessionSet> and don't remove it if the SessionSet's map is gone.

I wrote an API test that hits this condition sometimes when HAVE_NSURLSESSION_WEBSOCKET is true.

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::removeWebSocketTask):

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::~NetworkSocketChannel):

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:

(WebKit::SessionSet::create):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::sessionSetForPage):
(WebKit::NetworkSessionCocoa::sessionSetForPage const):
(WebKit::SessionSet::initializeEphemeralStatelessSessionIfNeeded):
(WebKit::SessionSet::isolatedSession):
(WebKit::NetworkSessionCocoa::createWebSocketTask):
(WebKit::NetworkSessionCocoa::addWebSocketTask):
(WebKit::NetworkSessionCocoa::removeWebSocketTask):
(WebKit::NetworkSessionCocoa::SessionSet::initializeEphemeralStatelessSessionIfNeeded): Deleted.
(WebKit::NetworkSessionCocoa::SessionSet::isolatedSession): Deleted.

  • NetworkProcess/cocoa/WebSocketTaskCocoa.h:

(WebKit::WebSocketTask::sessionSet):

  • NetworkProcess/cocoa/WebSocketTaskCocoa.mm:

(WebKit::WebSocketTask::WebSocketTask):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebSocket.mm:

(TestWebKitAPI::TEST):

8:34 AM Changeset in webkit [279339] by weinig@apple.com
  • 7 edits
    4 adds in trunk

Add helpers to create Spans from CFDataRef and NSData
https://bugs.webkit.org/show_bug.cgi?id=227217

Reviewed by Chris Dumez.

Source/WTF:

Add overloads of asBytes() for CFDataRef and NSData. This is going to
be a common enough pattern to warrent these helpers.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/PlatformFTW.cmake:
  • wtf/PlatformMac.cmake:
  • wtf/PlatformWin.cmake:
  • wtf/cf/SpanCF.h: Added.

(WTF::asBytes):

  • wtf/cocoa/SpanCocoa.h: Added.

(WTF::asBytes):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/cf/SpanCF.cpp: Added.
  • TestWebKitAPI/Tests/WTF/cocoa/SpanCocoa.mm: Added.

Add tests for new asBytes() overloads.

6:57 AM Changeset in webkit [279338] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitpy] Test timeouts not properly detected when running layout tests with Python 3
https://bugs.webkit.org/show_bug.cgi?id=227442

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-28
Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/port/driver.py:

(Driver._check_for_driver_timeout): out_line contains a byte string, so test it as such.

5:41 AM Changeset in webkit [279337] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[GTK] MiniBrowser: add an option to enable the web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=227343

Reviewed by Michael Catanzaro.

  • MiniBrowser/gtk/main.c:

(activate):
(main):

5:40 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
5:40 AM Changeset in webkit [279336] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32/Source/WebKit

Merge r278301 - [GTK] Try harder to find initial WebKitWebView size
https://bugs.webkit.org/show_bug.cgi?id=226320

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-06-01
Reviewed by Michael Catanzaro.

Currently we base the viewport size on the drawing area size. The
drawing area is created with an initial size based on the viewport
size, which will be (0, 0) because the drawing area is still null
by that point.

Then, later, during the widget allocation, the drawing area receives
its proper size.

There are 2 issues here. First, this approach guarantees that the
initial viewport size will always be (0, 0), and then there's no
guarantee the widget will be allocated any time soon - for example,
while GtkNotebook in GTK3 does allocate children that aren't currently
visible, GtkStack doesn't (and that means that GtkNotebook in GTK4 and
HdyTabView don't either). This leads to a situation where a page opened
in background will load with 0, 0 size and if a page depends on that,
it won't load correctly.

The first issue can be fixed by basing the viewport size on the view
allocation as well, and then if the widget isn't allocated, we instead
try to use the size of a parent as an estimation, so that the initial
size is at least not 0 even if not fully accurate.

See https://gitlab.gnome.org/GNOME/epiphany/-/issues/1532

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::viewSize):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseGetViewSize):

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
5:29 AM Changeset in webkit [279335] by Jean-Yves Avenard
  • 67 edits in trunk/Source

Not all uses of AudioToolbox framework use soft linking
https://bugs.webkit.org/show_bug.cgi?id=227250
<rdar://problem/79606090>

Reviewed by Eric Carlson.

Source/WebCore:

Unify AudioToolbox, CoreMedia, VideoToolbox and MediaToolbox's method
definitions and their use, ensuring that they are always soft-linked.
Unified builds and the inconsistent use of explicitly using the PAL namespace
caused some calls to be ambiguous leading to compilation errors; some
code would also use the softlinked methods while others called into the frameworks
directly.
To get around those we ensure that any calls to AudioToolbox or CoreMedia is always using
the fully resolved PAL name.
Remove unnecessary using namespace PAL; statements wherever applicable.
No change in observable behavior.

  • Modules/mediastream/PeerConnectionBackend.cpp:
  • Modules/plugins/QuickTimePluginReplacement.mm:
  • Modules/webaudio/MediaStreamAudioSourceCocoa.cpp:

(WebCore::MediaStreamAudioSource::consumeAudio):

  • dom/Document.cpp:
  • html/HTMLCanvasElement.cpp:
  • html/HTMLMediaElement.cpp:
  • platform/audio/AudioFileReader.h:
  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::AudioFileReader::AudioFileReader):
(WebCore::AudioFileReader::~AudioFileReader):
(WebCore::AudioFileReader::createBus):
(WebCore::createBusFromAudioFile): Deleted.

  • platform/audio/cocoa/AudioFileReaderCocoa.h:
  • platform/audio/cocoa/AudioOutputUnitAdaptor.cpp:

(WebCore::AudioOutputUnitAdaptor::~AudioOutputUnitAdaptor):
(WebCore::AudioOutputUnitAdaptor::start):
(WebCore::AudioOutputUnitAdaptor::stop):

  • platform/audio/cocoa/AudioSampleBufferList.cpp:

(WebCore::AudioSampleBufferList::copyFrom):

  • platform/audio/cocoa/AudioSampleDataSource.mm:
  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):

  • platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:

(WebCore::AudioFileReader::decodeAudioForBusCreation):
(WebCore::createBusFromAudioFile): Deleted.

  • platform/audio/ios/AudioOutputUnitAdaptorIOS.cpp:

(WebCore::AudioOutputUnitAdaptor::configure):

  • platform/audio/mac/AudioOutputUnitAdaptorMac.cpp:

(WebCore::AudioOutputUnitAdaptor::configure):

  • platform/cocoa/MediaUtilities.cpp:

(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):

  • platform/graphics/RemoteVideoSample.cpp:

(WebCore::RemoteVideoSample::create):

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::create):
(WebCore::AudioSourceProviderAVFObjC::provideInput):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::finalizeCallback):
(WebCore::AudioSourceProviderAVFObjC::prepareCallback):
(WebCore::AudioSourceProviderAVFObjC::unprepareCallback):
(WebCore::AudioSourceProviderAVFObjC::processCallback):
(WebCore::AudioSourceProviderAVFObjC::prepare):
(WebCore::AudioSourceProviderAVFObjC::process):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator):
(WebCore::MediaPlayerPrivateAVFoundationObjC::getStartDate const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTime const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMinTimeSeekable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeSeekable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeLoaded const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
(WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataGroupDidArrive):
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
(WebCore::MediaPlayerPrivateAVFoundationObjC::performTaskAtMediaTime):

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

(WebCore::EffectiveRateChangedListener::stop):
(WebCore::EffectiveRateChangedListener::EffectiveRateChangedListener):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::currentMediaTime const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::performTaskAtMediaTime):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
(WebCore::videoTransformationMatrix):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage):

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

(WTF::CFTypeTrait<CMSampleBufferRef>::typeID):
(WebCore::MediaSampleAVFObjC::createImageSample):
(WebCore::MediaSampleAVFObjC::presentationTime const):
(WebCore::MediaSampleAVFObjC::decodeTime const):
(WebCore::MediaSampleAVFObjC::duration const):
(WebCore::MediaSampleAVFObjC::sizeInBytes const):
(WebCore::MediaSampleAVFObjC::videoPixelFormat const):
(WebCore::isCMSampleBufferAttachmentRandomAccess):
(WebCore::doesCMSampleBufferHaveSyncInfo):
(WebCore::isCMSampleBufferRandomAccess):
(WebCore::isCMSampleBufferAttachmentNonDisplaying):
(WebCore::isCMSampleBufferNonDisplaying):
(WebCore::MediaSampleAVFObjC::presentationSize const):
(WebCore::MediaSampleAVFObjC::offsetTimestampsBy):
(WebCore::MediaSampleAVFObjC::setTimestamps):
(WebCore::MediaSampleAVFObjC::isDivisable const):
(WebCore::MediaSampleAVFObjC::divide):
(WebCore::MediaSampleAVFObjC::createNonDisplayingCopy const):
(WebCore::MediaSampleAVFObjC::getRGBAImageData const):
(WebCore::setSampleBufferAsDisplayImmediately):
(WebCore::MediaSampleAVFObjC::isHomogeneous const):
(WebCore::MediaSampleAVFObjC::divideIntoHomogeneousSamples):
(WebCore::MediaSampleAVFObjC::cloneSampleBufferAndSetAsDisplayImmediately):

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

(WebCore::bufferWasConsumedCallback):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::rendererWasAutomaticallyFlushed):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::canSetMinimumUpcomingPresentationTime const):
(WebCore::SourceBufferPrivateAVFObjC::setMinimumUpcomingPresentationTime):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::OnFrame):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::createSampleBuffer):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::convertToCMColorPrimaries):
(WebCore::convertToCMTransferFunction):
(WebCore::convertToCMYCbCRMatrix):
(WebCore::createFormatDescriptionFromVPCodecConfigurationRecord):

  • platform/graphics/cocoa/WebCoreDecompressionSession.mm:

(WTF::CFTypeTrait<CMSampleBufferRef>::typeID):
(WebCore::WebCoreDecompressionSession::setTimebase):
(WebCore::WebCoreDecompressionSession::enqueueSample):
(WebCore::WebCoreDecompressionSession::shouldDecodeSample):
(WebCore::WebCoreDecompressionSession::ensureDecompressionSessionForSample):
(WebCore::WebCoreDecompressionSession::decodeSample):
(WebCore::WebCoreDecompressionSession::handleDecompressionOutput):
(WebCore::WebCoreDecompressionSession::getFirstVideoFrame):
(WebCore::WebCoreDecompressionSession::automaticDequeue):
(WebCore::WebCoreDecompressionSession::enqueueDecodedSample):
(WebCore::WebCoreDecompressionSession::isReadyForMoreMediaData const):
(WebCore::WebCoreDecompressionSession::notifyWhenHasAvailableVideoFrame):
(WebCore::WebCoreDecompressionSession::imageForTime):
(WebCore::WebCoreDecompressionSession::flush):
(WebCore::WebCoreDecompressionSession::getDecodeTime):
(WebCore::WebCoreDecompressionSession::getPresentationTime):
(WebCore::WebCoreDecompressionSession::getDuration):
(WebCore::WebCoreDecompressionSession::compareBuffers):
(WebCore::WebCoreDecompressionSession::updateQosWithDecodeTimeStatistics):

  • platform/graphics/cv/ImageTransferSessionVT.mm:

(WebCore::ImageTransferSessionVT::createPixelBuffer):
(WebCore::ImageTransferSessionVT::convertCMSampleBuffer):
(WebCore::ImageTransferSessionVT::createCMSampleBuffer):

  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::seekableRangesChanged):

  • platform/mac/VideoFullscreenInterfaceMac.mm:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::completeFetchData):
(WebCore::MediaRecorderPrivateWriter::pause):
(WebCore::MediaRecorderPrivateWriter::resume):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:

(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::vtProfileLevel const):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:

(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::start):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::stop):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeeded):

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):
(WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
(WebCore::AVVideoCaptureSource::generatePresets):

  • platform/mediastream/mac/CoreAudioCaptureDevice.cpp:

(WebCore::CoreAudioCaptureDevice::deviceClock):

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::configureMicrophoneProc):
(WebCore::CoreAudioSharedUnit::configureSpeakerProc):
(WebCore::CoreAudioSharedUnit::cleanupAudioUnit):
(WebCore::CoreAudioSharedUnit::reconfigureAudioUnit):
(WebCore::CoreAudioSharedUnit::startInternal):
(WebCore::CoreAudioSharedUnit::stopInternal):
(WebCore::CoreAudioSharedUnit::defaultInputDevice):

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
  • platform/mediastream/mac/MockAudioSharedUnit.mm:

(WebCore::MockAudioSharedUnit::reconfigure):
(WebCore::MockAudioSharedUnit::emitSampleBuffers):

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:

(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):

  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

(WebCore::RealtimeOutgoingVideoSourceCocoa::videoSampleAvailable):

  • platform/mediastream/mac/WindowDisplayCapturerMac.mm:

Source/WebCore/PAL:

  • pal/cf/AudioToolboxSoftLink.cpp:
  • pal/cf/AudioToolboxSoftLink.h: Add methods whose definitions were scattered across

the code.

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h: Same as above.
  • pal/cf/AudioToolboxSoftLink.cpp:
  • pal/cf/AudioToolboxSoftLink.h: Add missing methods
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h: Add missing methods; Reshuffled definitions as many didn't

exist on Windows, yet could potentially be loaded and error.

  • pal/cf/VideoToolboxSoftLink.cpp:
  • pal/cf/VideoToolboxSoftLink.h: Add missing methods and fix some spelling in define names
  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h: Add missing methods

Source/WebKit:

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::consumeAudioComponentRegistrations):

  • Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp:

(WebKit::createWrapper):
(WebKit::wrapperStorage):
(WebKit::wrapperVTable):

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::copyProperty):

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:
  • Shared/mac/MediaFormatReader/MediaTrackReader.cpp:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

  • UIProcess/Media/cocoa/MediaUsageManagerCocoa.mm:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::consumeAudioComponentRegistrations):

5:20 AM Changeset in webkit [279334] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebKit

Merge r278198 - [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):

5:20 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
5:20 AM Changeset in webkit [279333] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/JavaScriptCore

Merge r278157 - [JSC] Fix crash on 32-bit big endian systems.
https://bugs.webkit.org/show_bug.cgi?id=226264

Patch by Daniel Kolesa <Daniel Kolesa> on 2021-05-27
Reviewed by Caio Araujo Neponoceno de Lima.

This is an instance where properly offsetting was missed since
the issue was not present in 2.30 series and therefore not fixed
by r273104.

  • llint/LowLevelInterpreter32_64.asm:
5:20 AM Changeset in webkit [279332] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebKit

Merge r278156 - Transient quarter display with a HiDPI /4k screen and a 200% scaling
https://bugs.webkit.org/show_bug.cgi?id=219202

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-05-27
Reviewed by Adrian Perez de Castro.

Set the root layer transformation before syncing animations and not after.
This way we avoid having the first frame use the wrong scale on hidpi.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):

4:53 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
4:52 AM Changeset in webkit [279331] by Adrian Perez de Castro
  • 7 edits in releases/WebKitGTK/webkit-2.32/Source/ThirdParty/ANGLE

Merge r278152 - Cherry-pick ANGLE: D3D11: Skip blits if there is no intersection of dest areas
https://bugs.webkit.org/show_bug.cgi?id=225190
<rdar://77084155>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-05-27
Reviewed by David Kilzer.

Cherry-pick ANGLE commit b574643ef28c92fcea5122dd7a72acb42a514eed
Fixes a security issue on D3D11.
Potential a correctness issue on some OpenGL drivers.
No effect on Metal, but the nodiscard part is still useful.

Upstream description:
D3D11: Skip blits if there is no intersection of dest areas

Blit11 would clip the destination rectangle with the destination size
but ignore the result. gl::ClipRectangle returns false when the
rectangles do not intersect at all, indicating the blit can be skipped.

This could lead to an out-of-bounds write to the GPU memory for the
destination texture.

Mark ClipRectangle as nodiscard to prevent future issues.

  • src/libANGLE/angletypes.h:
  • src/libANGLE/renderer/d3d/d3d11/Blit11.cpp:
  • src/libANGLE/renderer/gl/FramebufferGL.cpp:

(rx::FramebufferGL::clipSrcRegion):

  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::updateScissor):

  • src/libANGLE/renderer/vulkan/ContextVk.cpp:

(rx::ContextVk::updateScissor):

  • src/tests/gl_tests/BlitFramebufferANGLETest.cpp:

(TEST_P):

4:49 AM Changeset in webkit [279330] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r277999 - GLContextEGL::swapBuffers() shouldn't do anything for Surfaceless contexts
https://bugs.webkit.org/show_bug.cgi?id=226164

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-05-24
Reviewed by Philippe Normand.

In case of a surfaceless GLContextEGL, the swapBuffers() method should
return early, avoiding an assert expecting a non-null EGLSurface (not
viable for surfaceless context) and a call to eglSwapBuffers(), which
on some drivers could still fail even when the surfaceless context
support is present and active.

  • platform/graphics/egl/GLContextEGL.cpp:

(WebCore::GLContextEGL::swapBuffers):

4:49 AM Changeset in webkit [279329] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebKit

Merge r277998 - [CoordinatedGraphics] Handle null native surface handle for surfaceless rendering
https://bugs.webkit.org/show_bug.cgi?id=226165

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-05-24
Reviewed by Philippe Normand.

During ThreadedCompositor initialization, a null native surface handle
would represent a surfaceless rendering target. Assuming corresponding
driver support for this behavior, the GL context creation would still
succeed and composition could be performed.

To support this behavior, the GL context is now spawned first, and if
successful, the scene is set as active. But in case of a null native
surface (i.e. surfaceless rendering), the painting has to be mirrored
by default because of the OpenGL coordinate system being the immediate
coordinate system inside which we end up working.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::m_displayRefreshMonitor):
(WebKit::ThreadedCompositor::createGLContext):

3:47 AM Changeset in webkit [279328] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Possible build breakage after r279221 in some unified build configurations
https://bugs.webkit.org/show_bug.cgi?id=227440

Unreviewed build fix.

Add missing #import <wtf/MachSendRight.h> since
the code use MachSendRight. The code happens to work on default configuration
due to unified build.

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-28

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
3:03 AM Changeset in webkit [279327] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

iPhone 6S - iOS 15.0 - unable to retrieve WebGL2 context
https://bugs.webkit.org/show_bug.cgi?id=226975
rdar://78966563

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-28
Reviewed by Kenneth Russell.

Limit the OpenGL ES 3.0 contexts to iOS GPU Family 3, not
4.

The limit was most likely added to guard sample_compare
lod_options properties .lod and .gradient. However, these
are always supported on iOS.

Currently there is already ES 3.0 features implemented
in ANGLE that are guarded by iOS GPU Family 3.

Fixes WebGL 2.0 to work on iPhone6s and similar
devices (A9, A9X).

  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::getMaxSupportedESVersion const):

3:02 AM Changeset in webkit [279326] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal index buffer left mapped when building primitive restart ranges
https://bugs.webkit.org/show_bug.cgi?id=227371

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-28
Reviewed by Kenneth Russell.

  • src/libANGLE/renderer/metal/BufferMtl.mm:

(rx::calculateRestartRanges):
Add unmap.

2:24 AM Changeset in webkit [279325] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK][WPE] Add libvpx to jhbuild
https://bugs.webkit.org/show_bug.cgi?id=227437

Patch by Daniel Kolesa <Daniel Kolesa> on 2021-06-28
Reviewed by Philippe Normand.

  • jhbuild/jhbuild-minimal.modules:
12:57 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
12:56 AM Changeset in webkit [279324] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r277177 - AudioWorkletProcessor which does not extend base class crashes Safari
https://bugs.webkit.org/show_bug.cgi?id=225449
<rdar://problem/77624792>

Reviewed by Sam Weinig.

Update AudioWorkletGlobalScope::createProcessor() to validate the type of the processor
after constructing it.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::createProcessor):

Jun 27, 2021:

10:07 PM Changeset in webkit [279323] by commit-queue@webkit.org
  • 67 edits in trunk/Source

Unreviewed, reverting r279322.
https://bugs.webkit.org/show_bug.cgi?id=227434

Reverted changeset:

"Not all uses of AudioToolbox framework use soft linking"
https://bugs.webkit.org/show_bug.cgi?id=227250
https://commits.webkit.org/r279322

8:30 PM Changeset in webkit [279322] by Jean-Yves Avenard
  • 67 edits in trunk/Source

Not all uses of AudioToolbox framework use soft linking
https://bugs.webkit.org/show_bug.cgi?id=227250
<rdar://problem/79606090>

Reviewed by Eric Carlson.

Source/WebCore:

Unify AudioToolbox, CoreMedia, VideoToolbox and MediaToolbox's method
definitions and their use, ensuring that they are always soft-linked.
Unified builds and the inconsistent use of explicitly using the PAL namespace
caused some calls to be ambiguous leading to compilation errors; some
code would also use the softlinked methods while others called into the frameworks
directly.
To get around those we ensure that any calls to AudioToolbox or CoreMedia is always using
the fully resolved PAL name.
Remove unnecessary using namespace PAL; statements wherever applicable.
No change in observable behavior.

  • Modules/mediastream/PeerConnectionBackend.cpp:
  • Modules/plugins/QuickTimePluginReplacement.mm:
  • Modules/webaudio/MediaStreamAudioSourceCocoa.cpp:

(WebCore::MediaStreamAudioSource::consumeAudio):

  • dom/Document.cpp:
  • html/HTMLCanvasElement.cpp:
  • html/HTMLMediaElement.cpp:
  • platform/audio/AudioFileReader.h:
  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::AudioFileReader::AudioFileReader):
(WebCore::AudioFileReader::~AudioFileReader):
(WebCore::AudioFileReader::createBus):
(WebCore::createBusFromAudioFile): Deleted.

  • platform/audio/cocoa/AudioFileReaderCocoa.h:
  • platform/audio/cocoa/AudioOutputUnitAdaptor.cpp:

(WebCore::AudioOutputUnitAdaptor::~AudioOutputUnitAdaptor):
(WebCore::AudioOutputUnitAdaptor::start):
(WebCore::AudioOutputUnitAdaptor::stop):

  • platform/audio/cocoa/AudioSampleBufferList.cpp:

(WebCore::AudioSampleBufferList::copyFrom):

  • platform/audio/cocoa/AudioSampleDataSource.mm:
  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):

  • platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:

(WebCore::AudioFileReader::decodeAudioForBusCreation):
(WebCore::createBusFromAudioFile): Deleted.

  • platform/audio/ios/AudioOutputUnitAdaptorIOS.cpp:

(WebCore::AudioOutputUnitAdaptor::configure):

  • platform/audio/mac/AudioOutputUnitAdaptorMac.cpp:

(WebCore::AudioOutputUnitAdaptor::configure):

  • platform/cocoa/MediaUtilities.cpp:

(WebCore::createAudioFormatDescription):
(WebCore::createAudioSampleBuffer):

  • platform/graphics/RemoteVideoSample.cpp:

(WebCore::RemoteVideoSample::create):

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::create):
(WebCore::AudioSourceProviderAVFObjC::provideInput):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::finalizeCallback):
(WebCore::AudioSourceProviderAVFObjC::prepareCallback):
(WebCore::AudioSourceProviderAVFObjC::unprepareCallback):
(WebCore::AudioSourceProviderAVFObjC::processCallback):
(WebCore::AudioSourceProviderAVFObjC::prepare):
(WebCore::AudioSourceProviderAVFObjC::process):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageGenerator):
(WebCore::MediaPlayerPrivateAVFoundationObjC::getStartDate const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTime const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMinTimeSeekable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeSeekable const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeLoaded const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect):
(WebCore::MediaPlayerPrivateAVFoundationObjC::isAvailable):
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataGroupDidArrive):
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
(WebCore::MediaPlayerPrivateAVFoundationObjC::performTaskAtMediaTime):

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

(WebCore::EffectiveRateChangedListener::stop):
(WebCore::EffectiveRateChangedListener::EffectiveRateChangedListener):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isAvailable):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::currentMediaTime const):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyLayer):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::streamSession):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::performTaskAtMediaTime):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable):
(WebCore::videoTransformationMatrix):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::updateCurrentFrameImage):

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

(WTF::CFTypeTrait<CMSampleBufferRef>::typeID):
(WebCore::MediaSampleAVFObjC::createImageSample):
(WebCore::MediaSampleAVFObjC::presentationTime const):
(WebCore::MediaSampleAVFObjC::decodeTime const):
(WebCore::MediaSampleAVFObjC::duration const):
(WebCore::MediaSampleAVFObjC::sizeInBytes const):
(WebCore::MediaSampleAVFObjC::videoPixelFormat const):
(WebCore::isCMSampleBufferAttachmentRandomAccess):
(WebCore::doesCMSampleBufferHaveSyncInfo):
(WebCore::isCMSampleBufferRandomAccess):
(WebCore::isCMSampleBufferAttachmentNonDisplaying):
(WebCore::isCMSampleBufferNonDisplaying):
(WebCore::MediaSampleAVFObjC::presentationSize const):
(WebCore::MediaSampleAVFObjC::offsetTimestampsBy):
(WebCore::MediaSampleAVFObjC::setTimestamps):
(WebCore::MediaSampleAVFObjC::isDivisable const):
(WebCore::MediaSampleAVFObjC::divide):
(WebCore::MediaSampleAVFObjC::createNonDisplayingCopy const):
(WebCore::MediaSampleAVFObjC::getRGBAImageData const):
(WebCore::setSampleBufferAsDisplayImmediately):
(WebCore::MediaSampleAVFObjC::isHomogeneous const):
(WebCore::MediaSampleAVFObjC::divideIntoHomogeneousSamples):
(WebCore::MediaSampleAVFObjC::cloneSampleBufferAndSetAsDisplayImmediately):

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

(WebCore::bufferWasConsumedCallback):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::rendererWasAutomaticallyFlushed):
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):
(WebCore::SourceBufferPrivateAVFObjC::canSetMinimumUpcomingPresentationTime const):
(WebCore::SourceBufferPrivateAVFObjC::setMinimumUpcomingPresentationTime):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::OnFrame):
(WebCore::SourceBufferParserWebM::VideoTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::createSampleBuffer):

  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::convertToCMColorPrimaries):
(WebCore::convertToCMTransferFunction):
(WebCore::convertToCMYCbCRMatrix):
(WebCore::createFormatDescriptionFromVPCodecConfigurationRecord):

  • platform/graphics/cocoa/WebCoreDecompressionSession.mm:

(WTF::CFTypeTrait<CMSampleBufferRef>::typeID):
(WebCore::WebCoreDecompressionSession::setTimebase):
(WebCore::WebCoreDecompressionSession::enqueueSample):
(WebCore::WebCoreDecompressionSession::shouldDecodeSample):
(WebCore::WebCoreDecompressionSession::ensureDecompressionSessionForSample):
(WebCore::WebCoreDecompressionSession::decodeSample):
(WebCore::WebCoreDecompressionSession::handleDecompressionOutput):
(WebCore::WebCoreDecompressionSession::getFirstVideoFrame):
(WebCore::WebCoreDecompressionSession::automaticDequeue):
(WebCore::WebCoreDecompressionSession::enqueueDecodedSample):
(WebCore::WebCoreDecompressionSession::isReadyForMoreMediaData const):
(WebCore::WebCoreDecompressionSession::notifyWhenHasAvailableVideoFrame):
(WebCore::WebCoreDecompressionSession::imageForTime):
(WebCore::WebCoreDecompressionSession::flush):
(WebCore::WebCoreDecompressionSession::getDecodeTime):
(WebCore::WebCoreDecompressionSession::getPresentationTime):
(WebCore::WebCoreDecompressionSession::getDuration):
(WebCore::WebCoreDecompressionSession::compareBuffers):
(WebCore::WebCoreDecompressionSession::updateQosWithDecodeTimeStatistics):

  • platform/graphics/cv/ImageTransferSessionVT.mm:

(WebCore::ImageTransferSessionVT::createPixelBuffer):
(WebCore::ImageTransferSessionVT::convertCMSampleBuffer):
(WebCore::ImageTransferSessionVT::createCMSampleBuffer):

  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::seekableRangesChanged):

  • platform/mac/VideoFullscreenInterfaceMac.mm:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::~AudioSampleBufferCompressor):
(WebCore::AudioSampleBufferCompressor::initialize):
(WebCore::AudioSampleBufferCompressor::finish):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):
(WebCore::AudioSampleBufferCompressor::attachPrimingTrimsIfNeeded):
(WebCore::AudioSampleBufferCompressor::gradualDecoderRefreshCount):
(WebCore::AudioSampleBufferCompressor::sampleBufferWithNumPackets):
(WebCore::AudioSampleBufferCompressor::provideSourceDataNumOutputPackets):
(WebCore::AudioSampleBufferCompressor::processSampleBuffersUntilLowWaterTime):
(WebCore::AudioSampleBufferCompressor::processSampleBuffer):
(WebCore::AudioSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::AudioSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::MediaRecorderPrivateWriter):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedVideoSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::processNewCompressedAudioSampleBuffers):
(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendCompressedVideoSampleBuffer):
(WebCore::appendEndsPreviousSampleDurationMarker):
(WebCore::copySampleBufferWithCurrentTimeStamp):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::completeFetchData):
(WebCore::MediaRecorderPrivateWriter::pause):
(WebCore::MediaRecorderPrivateWriter::resume):

  • platform/mediarecorder/cocoa/VideoSampleBufferCompressor.mm:

(WebCore::VideoSampleBufferCompressor::~VideoSampleBufferCompressor):
(WebCore::VideoSampleBufferCompressor::initialize):
(WebCore::VideoSampleBufferCompressor::finish):
(WebCore::VideoSampleBufferCompressor::videoCompressionCallback):
(WebCore::VideoSampleBufferCompressor::vtProfileLevel const):
(WebCore::VideoSampleBufferCompressor::initCompressionSession):
(WebCore::VideoSampleBufferCompressor::processSampleBuffer):
(WebCore::VideoSampleBufferCompressor::getOutputSampleBuffer):
(WebCore::VideoSampleBufferCompressor::takeOutputSampleBuffer):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:

(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::start):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::stop):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeeded):

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setSessionSizeAndFrameRate):
(WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
(WebCore::AVVideoCaptureSource::generatePresets):

  • platform/mediastream/mac/CoreAudioCaptureDevice.cpp:

(WebCore::CoreAudioCaptureDevice::deviceClock):

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::configureMicrophoneProc):
(WebCore::CoreAudioSharedUnit::configureSpeakerProc):
(WebCore::CoreAudioSharedUnit::cleanupAudioUnit):
(WebCore::CoreAudioSharedUnit::reconfigureAudioUnit):
(WebCore::CoreAudioSharedUnit::startInternal):
(WebCore::CoreAudioSharedUnit::stopInternal):
(WebCore::CoreAudioSharedUnit::defaultInputDevice):

  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
  • platform/mediastream/mac/MockAudioSharedUnit.mm:

(WebCore::MockAudioSharedUnit::reconfigure):
(WebCore::MockAudioSharedUnit::emitSampleBuffers):

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:

(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):

  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:

(WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

(WebCore::RealtimeOutgoingVideoSourceCocoa::videoSampleAvailable):

  • platform/mediastream/mac/WindowDisplayCapturerMac.mm:

Source/WebCore/PAL:

  • pal/cf/AudioToolboxSoftLink.cpp:
  • pal/cf/AudioToolboxSoftLink.h: Add methods whose definitions were scattered across

the code.

  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h: Same as above.
  • pal/cf/AudioToolboxSoftLink.cpp:
  • pal/cf/AudioToolboxSoftLink.h: Add missing methods
  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h: Add missing methods; Reshuffled definitions as many didn't

exist on Windows, yet could potentially be loaded and error.

  • pal/cf/VideoToolboxSoftLink.cpp:
  • pal/cf/VideoToolboxSoftLink.h: Add missing methods and fix some spelling in define names
  • pal/cocoa/MediaToolboxSoftLink.cpp:
  • pal/cocoa/MediaToolboxSoftLink.h: Add missing methods

Source/WebKit:

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::consumeAudioComponentRegistrations):

  • Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp:

(WebKit::createWrapper):
(WebKit::wrapperStorage):
(WebKit::wrapperVTable):

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::copyProperty):

  • Shared/mac/MediaFormatReader/MediaSampleByteRange.cpp:

(WebKit::MediaSampleByteRange::MediaSampleByteRange):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:
  • Shared/mac/MediaFormatReader/MediaTrackReader.cpp:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

  • UIProcess/Media/cocoa/MediaUsageManagerCocoa.mm:
  • WebProcess/cocoa/RemoteRealtimeAudioSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSourceProxy.cpp:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::consumeAudioComponentRegistrations):

2:17 PM Changeset in webkit [279321] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Treat image data url's as not identical
https://bugs.webkit.org/show_bug.cgi?id=226924

Patch by Rob Buis <rbuis@igalia.com> on 2021-06-27
Reviewed by Said Abou-Hallawa.

Treat image data url's as not identical
in fillImagesAreIdentical.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::updateFillImages):

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::usesDataProtocol const):

  • rendering/style/StyleCachedImage.h:
  • rendering/style/StyleCursorImage.cpp:

(WebCore::StyleCursorImage::usesDataProtocol const):

  • rendering/style/StyleCursorImage.h:
  • rendering/style/StyleImage.h:

(WebCore::StyleImage::usesDataProtocol const):

12:49 PM Changeset in webkit [279320] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[iOS 15] Fix the internal build after rdar://76549109
https://bugs.webkit.org/show_bug.cgi?id=227430
rdar://79832425

Reviewed by Sam Weinig.

Fix the build by replacing the use of the UIFloatIsZero macro with its actual definition. The immediate cause
of this build failure is a UIKit change that changed the definition of UIFloatIsZero, such that we end up
redefining UIFloatIsZero in HTMLConverter.mm. However, since UIFloatIsZero is specific to iOS family and
HTMLConverter is used only in this one place on both macOS and iOS, it makes more sense to simply use the macro
definition itself.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::computedAttributesForElement):

12:17 PM Changeset in webkit [279319] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Backgrounding and returning to a FaceTime call in MobileSafari leads to a blank black sreen
https://bugs.webkit.org/show_bug.cgi?id=227406

Reviewed by Eric Carlson.

The RequireUserGestureForFullscreen restriction will be kept in a MediaElementSession
if the corresponding media element is autoplay. Therefore, the request to enter
picture-in-picture from the UI process will be ignored by the media element, and the
state machine managing video presentation mode in the UI process will be an inconsistent state.

This patch creates a UserGestureIndicator before requesting the media element
to change its presentation mode to make sure the request will be handled.

  • platform/cocoa/VideoFullscreenModelVideoElement.mm:

(WebCore::VideoFullscreenModelVideoElement::fullscreenModeChanged):

12:16 PM Changeset in webkit [279318] by Alan Bujtas
  • 3 edits
    4 adds in trunk

[LFC][TFC] Add support for shrinking over-constrained columns based on the width type priority list
https://bugs.webkit.org/show_bug.cgi?id=227426

Reviewed by Antti Koivisto.

Source/WebCore:

Let's take the priority list into use when shrinking the columns in an over-constrained context.
e.g.
<div style="width: 100px">

<table><tr><td style="width: 90%""></td><td style="width: 400px;"></td><td style="width: 100px;"></td></tr></table>

</div>

While the second and the third columns have the preferred width of 400px and 100px respectively, we can't accommodate
them as the containing block (<div>) sets a 100px horizontal constraint on the table content and the first column already takes up 90px space.

Now we start shrinking the columns using the following priority list: auto < relative < fixed < percent (ignoring the actual column order).

The preferred width of the table (assume 0px border spacing and padding) is 90px + 400px + 100px. It produces a -490px
available space. This negative space needs to be distributed among the columns staring with the fixed sized ones.
The fixed sized columns have a flex space of 500px which covers the -490px gap. Based on their 4:1 distribution ratio, they'll end
up with 8px and 2px and the percent column stays at 90px.

Tests: fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple.html

fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2.html

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedHorizontalSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedVerticalSpace):

LayoutTests:

  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple-expected.html: Added.
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple.html: Added.
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2-expected.html: Added.
  • fast/layoutformattingcontext/table-space-shinking-mixed-width-type-simple2.html: Added.
10:39 AM Changeset in webkit [279317] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

Unreviewed, fix the iOS build after rdar://76781873

Remove support for -[UIResponder _insertTextFromCamera:] in WebKit2, now that UIKit only supports the public
API version (-[UIResponder captureTextFromCamera:]).

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView _insertTextFromCameraForWebView:]): Deleted.

10:20 AM Changeset in webkit [279316] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Rename GridSpace::preferredSpace to preferredSize
https://bugs.webkit.org/show_bug.cgi?id=227425

Reviewed by Antti Koivisto.

It is a more descriptive name.

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::GridSpace::isEmpty const):
(WebCore::Layout::operator-):
(WebCore::Layout::operator+=):
(WebCore::Layout::operator/):
(WebCore::Layout::distributeAvailableSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedHorizontalSpace): preferredWidth is the same in both cases.

9:51 AM Changeset in webkit [279315] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Introduce a priority order for the grid types
https://bugs.webkit.org/show_bug.cgi?id=227417

Reviewed by Antti Koivisto.

Extra space distribution is based on a priority list with percent columns having the highest priority
and auto columns having the lowest (percent > fixed > relative > auto).

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

7:48 AM Changeset in webkit [279314] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Introduce GridSpace::type
https://bugs.webkit.org/show_bug.cgi?id=227409

Reviewed by Antti Koivisto.

This is in preparation for supporting mixed width/height types (percent/fixed/relative/auto).
Available space distribution is based on type priority (e.g. percent value takes precedence over fixed width).

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedHorizontalSpace):
(WebCore::Layout::TableFormattingContext::TableLayout::distributedVerticalSpace):
(WebCore::Layout::max): Deleted.

2:32 AM Changeset in webkit [279313] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[GStreamer] SleepDisabler not destroyed when video playback stops
https://bugs.webkit.org/show_bug.cgi?id=219353

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-27
Reviewed by Eric Carlson.

Source/WebCore:

In GStreamer ports the SleepDisabler remained active after EOS because
HTMLMediaElement::updateSleepDisabling() was not being triggered. An explicit clean-up upon
the ended event in the media element is better than any other implicit action.

Test: media/video-ended-does-not-hold-sleep-assertion.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::dispatchEvent):

LayoutTests:

  • media/video-ended-does-not-hold-sleep-assertion-expected.txt: Added.
  • media/video-ended-does-not-hold-sleep-assertion.html: Added.
1:55 AM Changeset in webkit [279312] by graouts@webkit.org
  • 11 edits
    2 adds in trunk/Source

[Model] [iOS] Add support for rendering model resources
https://bugs.webkit.org/show_bug.cgi?id=227392
<rdar://problem/79770136>

Reviewed by Tim Horton.

Source/WebCore:

Ensure the anchor point is set correctly for model content layers, otherwise the preview layer shows
its center at the corner of the parent layer's origin.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setContentsToModel):

Source/WebCore/PAL:

Declare the ASVInlinePreview class.

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

Add a new WKModelView class which manages an ASVInlinePreview and displays its layer.
The current incarnation of the ASVInlinePreview SPI requires a URL to a file to specify
the resource, so we write a file to the temporary directory added in 279267 with the data
wrapped in the Model object passed through the remote layer tree. Ultimately we will be
able to use an SPI that does not require a file and instead will allow data to be passed
directly, this is purely for a temporary experimentation.

  • Platform/Logging.h:
  • SourcesCocoa.txt:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:

(WebKit::RemoteLayerTreeHost::makeNode):

  • UIProcess/ios/WKModelView.h: Added.
  • UIProcess/ios/WKModelView.mm: Added.

(-[WKModelView preview]):
(-[WKModelView initWithFrame:]):
(-[WKModelView initWithCoder:]):
(-[WKModelView initWithModel:]):
(-[WKModelView createFileForModel:]):
(-[WKModelView layoutSubviews]):
(-[WKModelView updateBounds]):

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

Add a new compile-time flag indicating the availability of the ASVInlinePreview SPI on iOS.
We only define it when the header itself is present for now to avoid issues with older iOS
15 SDKs, but ultimately we will only use the iOS version check.

  • wtf/PlatformHave.h:

Jun 26, 2021:

10:42 PM Changeset in webkit [279311] by jh718.park@samsung.com
  • 3 edits in trunk/Source/WebCore

Unreviewed. Remove the build warnings below since r279050.
warning: redundant move in return statement [-Wredundant-move]

No new tests, no new behavioral changes.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeCounterStyleAdditiveSymbols):

  • css/parser/CSSPropertyParserWorkerSafe.cpp:

(WebCore::CSSPropertyParserHelpersWorkerSafe::consumeFontFaceSrcURI):

7:06 PM Changeset in webkit [279310] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

[iOS] Safari sometimes hangs under sync IPC in -[WKWebView _setSuppressSoftwareKeyboard:]
https://bugs.webkit.org/show_bug.cgi?id=227424
rdar://79745385

Reviewed by Tim Horton.

When activating streamlined AutoFill, Safari calls UIKit SPI (-_setSuppressSoftwareKeyboard:) on WKWebView to
ensure that the normal software keyboard doesn't briefly appear instead of the AutoFill input view; after
requesting AutoFill credentials, Safari then stops suppressing the software keyboard by setting the SPI property
back to NO. In WebKit, we override -[WKWebView _setSuppressSoftwareKeyboard:], such that WKContentView's
keyboard suppression state follows the web view's state (this is necessary, since WKContentView is the actual
-firstResponder when editing focused text inputs). However, when changing software keyboard suppression from
YES to NO, UIKit reloads input views and (in the process) calls into
-requestAutocorrectionContextWithCompletionHandler:, which then makes a sync IPC call into the web process.

To avoid this sync IPC call, we refactor the implementation of -[WKWebView _setSuppressSoftwareKeyboard:],
such that we don't immediately attempt to unsuppress the software keyboard by calling into WKContentView.
Instead, we asynchronously request an autocorrection context from the web process, and then call
-[WKContentView _setSuppressSoftwareKeyboard:NO] after the autocorrection context request completes (using
the last known autocorrection context data in the UI process rather than making a sync IPC call).

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _setSuppressSoftwareKeyboard:]):

Call into -updateSoftwareKeyboardSuppressionStateFromWebView below.

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

(-[WKContentView cleanUpInteraction]):

Invoke -unsuppressSoftwareKeyboardUsingLastAutocorrectionContextIfNeeded to ensure that we stop software
keyboard suppression if the web process terminates while we're waiting for autocorrection context data to
arrive.

(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):
(-[WKContentView _handleAutocorrectionContext:]):
(-[WKContentView updateSoftwareKeyboardSuppressionStateFromWebView]):

Add a new helper that keeps WKContentView's software keyboard suppression state in sync with the WKWebView's
software keyboard suppression state. In the case where we're supressing the software keyboard, we can simply
call into -[WKContentView _setSuppressSoftwareKeyboard:] right away, since UIKit won't try to request an
autocorrection context.

However, in the case where we're unsuppressing the software keyboard, set a new flag, don't immediately forward
the call to WKContentView. Instead, set the _unsuppressSoftwareKeyboardAfterNextAutocorrectionContextUpdate
flag to YES and call into WebPageProxy to request an updated autocorrection context. Upon receiving the response
in -[WKContentView _handleAutocorrectionContext:], we then unset the flag and unsuppress the software keyboard
(crucially, using _lastAutocorrectionContext instead of making a synchronous call back to the web content
process).

(-[WKContentView unsuppressSoftwareKeyboardUsingLastAutocorrectionContextIfNeeded]):

6:07 PM Changeset in webkit [279309] by weinig@apple.com
  • 68 edits
    4 copies in trunk

[Modern Media Controls] Modern media controls should not need to know about specific platforms in shared code
https://bugs.webkit.org/show_bug.cgi?id=227423

Reviewed by Eric Carlson.

Source/WebCore:

Rather than requiring the shared media control classes to know specifics about
the various platforms via the LayoutTraits flags, we now abstract those decisions
via a new polymorphic LayoutTraits class, which each platform subclasses and
implements.

This will gives better separation and will allow easier experimentation with new
control patterns.

  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/modern-media-controls/js-files:

Adds new files for layout traits and its subclasses.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::layoutTraitsClassName const):
(WebCore::MediaControlsHost::platform const): Deleted.

  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.idl:

Replace platform accessor with a new layoutTraitsClassName, which allows
the platform to spcecify which of the trait subclasses to use.

  • Modules/modern-media-controls/controls/layout-traits.js: Added.
  • Modules/modern-media-controls/controls/ios-layout-traits.js: Added.
  • Modules/modern-media-controls/controls/macos-layout-traits.js: Added.
  • Modules/modern-media-controls/controls/watchos-layout-traits.js: Added.

Add new layout trait files.

  • Modules/modern-media-controls/controls/fullscreen-button.js:
  • Modules/modern-media-controls/controls/icon-service.js:
  • Modules/modern-media-controls/controls/ios-inline-media-controls.js:
  • Modules/modern-media-controls/controls/layout-item.js:
  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:
  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:
  • Modules/modern-media-controls/controls/media-controls.js:
  • Modules/modern-media-controls/controls/play-pause-button.js:
  • Modules/modern-media-controls/controls/time-control.js:
  • Modules/modern-media-controls/controls/watchos-media-controls.js:
  • Modules/modern-media-controls/media/media-controller.js:
  • Modules/modern-media-controls/media/tracks-support.js:

Replace explicit checks for platform with queries to the layout traits interface.

LayoutTests:

Update tests and results to use LayoutTraits class.

  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • media/modern-media-controls/airplay-button/airplay-button.html:
  • media/modern-media-controls/airplay-placard/airplay-placard.html:
  • media/modern-media-controls/button/button-active-state.html:
  • media/modern-media-controls/button/button-click-on-edges.html:
  • media/modern-media-controls/button/button-focus-state.html:
  • media/modern-media-controls/button/button-icon-name-expected.txt:
  • media/modern-media-controls/button/button-icon-name.html:
  • media/modern-media-controls/button/button-on.html:
  • media/modern-media-controls/forward-button/forward-button.html:
  • media/modern-media-controls/fullscreen-button/fullscreen-button.html:
  • media/modern-media-controls/icon-service/icon-service-expected.txt:
  • media/modern-media-controls/icon-service/icon-service.html:
  • media/modern-media-controls/invalid-placard/invalid-placard-constrained-metrics-expected.txt:
  • media/modern-media-controls/invalid-placard/invalid-placard-constrained-metrics.html:
  • media/modern-media-controls/invalid-placard/invalid-placard.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-constructor.html:
  • media/modern-media-controls/layout-item/layout-item-expected.txt:
  • media/modern-media-controls/layout-item/layout-item.html:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-constructor-expected.txt:
  • media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-constructor.html:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-change.html:
  • media/modern-media-controls/media-controls/media-controls-appear-when-focus.html:
  • media/modern-media-controls/media-controls/media-controls-constructor-expected.txt:
  • media/modern-media-controls/media-controls/media-controls-constructor.html:
  • media/modern-media-controls/media-controls/media-controls-placard-compressed-metrics-expected.txt:
  • media/modern-media-controls/media-controls/media-controls-placard-compressed-metrics.html:
  • media/modern-media-controls/mute-button/mute-button.html:
  • media/modern-media-controls/overflow-button/overflow-button.html:
  • media/modern-media-controls/pip-button/pip-button.html:
  • media/modern-media-controls/pip-placard/pip-placard.html:
  • media/modern-media-controls/placard/placard-expected.txt:
  • media/modern-media-controls/placard/placard.html:
  • media/modern-media-controls/play-pause-button/play-pause-button.html:
  • media/modern-media-controls/rewind-button/rewind-button.html:
  • media/modern-media-controls/skip-back-button/skip-back-button.html:
  • media/modern-media-controls/skip-forward-button/skip-forward-button.html:
  • media/modern-media-controls/time-control/time-control-expected.txt:
  • media/modern-media-controls/time-control/time-control.html:
  • media/modern-media-controls/tracks-button/tracks-button.html:
  • media/modern-media-controls/watchos-media-controls/watchos-media-controls-constructor-expected.txt:
  • media/modern-media-controls/watchos-media-controls/watchos-media-controls-constructor.html:
5:48 PM Changeset in webkit [279308] by dino@apple.com
  • 4 edits in trunk/Source/WebCore

Build fix for iOS Simulator. MTLSharedTexture is not available
on that configuration.

  • Modules/webxr/WebXROpaqueFramebuffer.cpp:

(WebCore::WebXROpaqueFramebuffer::startFrame):
(WebCore::WebXROpaqueFramebuffer::endFrame):

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:

Jun 25, 2021:

10:10 PM Changeset in webkit [279307] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] Update test expectations after r279217
https://bugs.webkit.org/show_bug.cgi?id=227410

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-25

  • platform/glib/TestExpectations:
7:26 PM Changeset in webkit [279306] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC] Remove redundant struct ResolvedItem
https://bugs.webkit.org/show_bug.cgi?id=227405

Reviewed by Sam Weinig.

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

6:47 PM Changeset in webkit [279305] by Brent Fulgham
  • 9 edits in trunk/Source/WebKit

[macOS] Add logging and clean up AppSSO flows
https://bugs.webkit.org/show_bug.cgi?id=227379

Reviewed by Kate Cheney.

This patch adds detailed logging to understand the flows through the AppSSO authentication code,
and adds clean-up code in more places to ensure that the modal sheet used by AppSSO is dismissed
in cases where the authentication has completed (or failed).

  • UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm:

(WebKit::NavigationSOAuthorizationSession::shouldStartInternal): Adds new logging.
(WebKit::NavigationSOAuthorizationSession::webViewDidMoveToWindow): Ditto.
(WebKit::NavigationSOAuthorizationSession::pageActiveURLDidChangeDuringWaiting const): Ditto.

  • UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm:

(WebKit::PopUpSOAuthorizationSession::shouldStartInternal): Adds new logging.
(WebKit::PopUpSOAuthorizationSession::fallBackToWebPathInternal): Ditto.
(WebKit::PopUpSOAuthorizationSession::abortInternal): Ditto.
(WebKit::PopUpSOAuthorizationSession::completeInternal): Ditto.
(WebKit::PopUpSOAuthorizationSession::close): Ditto.
(WebKit::PopUpSOAuthorizationSession::initSecretWebView): Ditto.

  • UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.mm:

(WebKit::RedirectSOAuthorizationSession::fallBackToWebPathInternal): Adds new logging.
(WebKit::RedirectSOAuthorizationSession::abortInternal): Ditto.
(WebKit::RedirectSOAuthorizationSession::completeInternal): Ditto.
(WebKit::RedirectSOAuthorizationSession::beforeStart): Ditto.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.mm:

(WebKit::SOAuthorizationCoordinator::tryAuthorize): Adds new logging.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h:
  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::stateString const): Added.
(WebKit::SOAuthorizationSession::~SOAuthorizationSession): Add new logging, and ensure modal sheet is dismissed.
(WebKit::SOAuthorizationSession::becomeCompleted): Added new logging.
(WebKit::SOAuthorizationSession::shouldStart): Ditto.
(WebKit::SOAuthorizationSession::start): Ditto.
(WebKit::SOAuthorizationSession::continueStartAfterGetAuthorizationHints): Ditto.
(WebKit::SOAuthorizationSession::continueStartAfterDecidePolicy): Ditto.
(WebKit::SOAuthorizationSession::fallBackToWebPath): Add new logging, and ensure modal sheet is dismissed.
(WebKit::SOAuthorizationSession::abort): Ditto.
(WebKit::SOAuthorizationSession::complete): Ditto.
(WebKit::SOAuthorizationSession::presentViewController): Added new logging, and dismiss modal if an existing
view is in place.
(WebKit::SOAuthorizationSession::dismissModalSheetIfNecessary): Added.
(WebKit::SOAuthorizationSession::dismissViewController): Use new helper function.

  • UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:

(WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal): Adds new logging.
(WebKit::SubFrameSOAuthorizationSession::abortInternal): Ditto.
(WebKit::SubFrameSOAuthorizationSession::completeInternal): Ditto.
(WebKit::SubFrameSOAuthorizationSession::beforeStart): Ditto.
(WebKit::SubFrameSOAuthorizationSession::didFinishLoad): Ditto.
(WebKit::SubFrameSOAuthorizationSession::loadRequestToFrame): Ditto.

  • UIProcess/Cocoa/SOAuthorization/WKSOAuthorizationDelegate.mm:

(-[WKSOAuthorizationDelegate authorization:presentViewController:withCompletion:]): Adds new logging.
(-[WKSOAuthorizationDelegate authorizationDidNotHandle:]): Ditto.
(-[WKSOAuthorizationDelegate authorizationDidCancel:]): Ditto.
(-[WKSOAuthorizationDelegate authorizationDidComplete:]): Ditto.
(-[WKSOAuthorizationDelegate authorization:didCompleteWithHTTPAuthorizationHeaders:]): Ditto.
(-[WKSOAuthorizationDelegate authorization:didCompleteWithHTTPResponse:httpBody:]): Ditto.
(-[WKSOAuthorizationDelegate authorization:didCompleteWithError:]): Ditto.
(-[WKSOAuthorizationDelegate setSession:]): Ditto.

5:49 PM Changeset in webkit [279304] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] Web process sometimes crashes under findDataDetectionResultElementInImageOverlay
https://bugs.webkit.org/show_bug.cgi?id=227412
rdar://79588091

Reviewed by Devin Rousso.

Speculatively fix the crash by ensuring that the hit-tested text node inside an image overlay is inside the
shadow root of the element responding to click events, and that the element responding to click events contains
an image overlay.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::elementPositionInformation):

5:39 PM Changeset in webkit [279303] by mmaxfield@apple.com
  • 4 edits in trunk/Source

[macOS] WebGL content is unable to use the discrete GPU
https://bugs.webkit.org/show_bug.cgi?id=227408
<rdar://problem/79216506>

Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

There appears to be a key collision:

Source/ThirdParty/ANGLE/include/platform/PlatformMethods.h:#define EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX 0x3482
Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h:#define EGL_POWER_PREFERENCE_ANGLE 0x3482

Both these keys seem to be accepted by EGL_GetPlatformDisplayEXT().

This patch just changes the value of one of them to a value I picked out of a hat, just so they don't conflict.
We should work with upstream to either:
A) Find a better solution (maybe disambiguate these values based on which function is accepting them), or
B) Make a robust way to make sure keys don't collide in the future.

  • include/platform/PlatformMethods.h:

Source/WebCore:

Simply pass along the power preference into ANGLE. This is read in
DisplayMtl::getMetalDeviceMatchingAttribute().

No new tests. I _think_ this is untestable, because the web exposed power preference is being set correctly.
We’re correctly reporting to the web content that they have successfully asked for a high power context.
We’re just not honoring that internally. If the test is a performance test, or checks the renderer string,
that test would be hardware-dependent, and couldn’t be a regular layout test.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::InitializeEGLDisplay):

5:23 PM Changeset in webkit [279302] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION (r278746): [Mac wk 1] media/media-fullscreen-return-to-inline.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=227367.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-06-25

  • platform/mac-wk1/TestExpectations:
5:09 PM Changeset in webkit [279301] by mmaxfield@apple.com
  • 5 edits
    1 add in trunk

[macOS] -[NSString _web_widthWithFont:] returns 0
https://bugs.webkit.org/show_bug.cgi?id=227385
<rdar://problem/79430938>

Reviewed by Simon Fraser.

Source/WebCore:

Simply take the iOS codepath on macOS.

Test: WebKitLegacyStringWidth.ThaiWidthForWeb

  • platform/graphics/FontCascade.cpp:
  • platform/graphics/coretext/FontCascadeCoreText.cpp:

(WebCore::FontCascade::FontCascade):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/StringWidth.mm: Added.

(TEST):

4:17 PM Changeset in webkit [279300] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION: http/tests/preload/onload_event.html is a flaky timeout on Big Sur wk1 Release
https://bugs.webkit.org/show_bug.cgi?id=227366

Unreviewed test gardening

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-06-25

  • platform/mac-wk1/TestExpectations:
4:04 PM Changeset in webkit [279299] by guijemont@igalia.com
  • 2 edits in trunk/JSTests

Unskip stress/call-apply-exponential-bytecode-size.js on most platforms
https://bugs.webkit.org/show_bug.cgi?id=227354

Reviewed by Yusuke Suzuki.

Instead of skipping, we increase the JIT memory size for this test on
platforms that have less than 64 MB by default.

  • stress/call-apply-exponential-bytecode-size.js:
3:06 PM Changeset in webkit [279298] by dino@apple.com
  • 8 edits in trunk/Source/WebCore

Add support for MTLSharedTextures in WebXR
https://bugs.webkit.org/show_bug.cgi?id=227245
<rdar://problem/79591620>

Reviewed by Tim Horton.

Source/WebCore:

Sometimes, the IOSurface passed to WebXR come from a shared MTLTexture. In
this case we can't treat the IOSurface data as a regular single-plane
image. Instead we should use it to recreate the MTLTexture and then
bind that to WebGL's framebuffer.

  • Modules/webxr/WebXROpaqueFramebuffer.cpp: Use some new binding methods on GraphicsContextGLOpenGL

if given a shared texture.
(WebCore::WebXROpaqueFramebuffer::startFrame):
(WebCore::WebXROpaqueFramebuffer::endFrame):

  • Modules/webxr/WebXROpaqueFramebuffer.h:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: New methods to link an

IOSurface to a GL texture, going through a MTLSharedTexture.
(WebCore::GraphicsContextGLOpenGL::attachIOSurfaceToSharedTexture):
(WebCore::GraphicsContextGLOpenGL::detachIOSurfaceFromSharedTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/xr/PlatformXR.h: Add a new "isShared" member to LayerData

to differentiate between normal IOSurfaces and those that came
from a shared texture.
(PlatformXR::Device::FrameData::LayerData::encode const):
(PlatformXR::Device::FrameData::LayerData::decode):

Source/WebCore/PAL:

Define MTLSharedTextureHandle's initWithIOSurface.

  • pal/spi/cocoa/MetalSPI.h:
1:50 PM Changeset in webkit [279297] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Set ImageBitmap experimental feature flag to true
https://bugs.webkit.org/show_bug.cgi?id=227140

Patch by Kenneth Russell <kbr@chromium.org> on 2021-06-25
Reviewed by Dean Jackson.

Web developers - most recently Google's Meet team - have asked for
ImageBitmap support in WebKit. The implementation was
substantially upgraded during development of WebGL 2.0, and is
thoroughly tested on the EWS. Change the default value for
ImageBitmap's experimental flag to true; this can be removed
completely after one release cycle.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
12:51 PM Changeset in webkit [279296] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix null crash in AudioMediaStreamTrackRendererCocoa::start
https://bugs.webkit.org/show_bug.cgi?id=227386
<rdar://79045120>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-06-25
Reviewed by Youenn Fablet.

AudioMediaStreamTrackRendererInternalUnitManager::Proxy::~Proxy calls those callbacks with nullptr.
So can LocalAudioMediaStreamTrackRendererInternalUnit::retrieveFormatDescription when createAudioUnitIfNeeded
has an early return or hasn't been called yet.

When this happens, let's not crash.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:

(WebCore::AudioMediaStreamTrackRendererCocoa::start):

12:06 PM Changeset in webkit [279295] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Add missing methods to IOKit filter
https://bugs.webkit.org/show_bug.cgi?id=227398
<rdar://79487528>

Reviewed by Brent Fulgham.

Add missing methods to the IOAccelerator IOKit filter on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
11:50 AM Changeset in webkit [279294] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Sources: Scope Chain sidebar panel is stripping repeating whitespace from strings
https://bugs.webkit.org/show_bug.cgi?id=227234

Reviewed by Devin Rousso.

String and Regular Expression values in Object Trees were having white-space: nowrap; applied to them, which
was redundant because white-space: pre; was already defined for .formatted-string and .formatted-regexp,
which makes sure that the text does not wrap unless it contains a newline, and these previews have newlines
replaced with a Unicode symbol to visually represent a newline without breaking to a new line.

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree-property :matches(.formatted-string, .formatted-regexp)): Deleted.

11:46 AM Changeset in webkit [279293] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.20.2

Tag Safari-612.1.20.2.

11:45 AM Changeset in webkit [279292] by Ruben Turcios
  • 2 edits in branches/safari-612.1.20-branch/Source/WebCore/PAL

Cherry-pick r279290. rdar://problem/79788549

Unreviewed, fix the macOS Monterey build

Some internal builders are still attempting to build WebKit for macOS Monterey using an SDK without the fix for
rdar://74299451. Restore the forward staging declaration for -initWithDataProvider:contentType:previewTitle:
in the meantime.

  • pal/spi/mac/QuickLookMacSPI.h:

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

11:42 AM Changeset in webkit [279291] by Ruben Turcios
  • 8 edits in branches/safari-612.1.20-branch/Source

Versioning.

WebKit-7612.1.20.2

11:08 AM Changeset in webkit [279290] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed, fix the macOS Monterey build

Some internal builders are still attempting to build WebKit for macOS Monterey using an SDK without the fix for
rdar://74299451. Restore the forward staging declaration for -initWithDataProvider:contentType:previewTitle:
in the meantime.

  • pal/spi/mac/QuickLookMacSPI.h:
10:55 AM Changeset in webkit [279289] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

WIRELESS_PLAYBACK_TARGET guards protect unrelated code
https://bugs.webkit.org/show_bug.cgi?id=227404

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-25
Reviewed by Eric Carlson.

The dispatchEvent(), addEventListener() and removeEventListener() are now unconditionally
implemented. The WIRELESS_PLAYBACK_TARGET guards were refactored to enclose only the code
specific to this feature.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
(WebCore::HTMLMediaElement::setWirelessPlaybackTarget):
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
(WebCore::HTMLMediaElement::playbackTargetPickerWasDismissed):
(WebCore::HTMLMediaElement::remoteHasAvailabilityCallbacksChanged):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):

  • html/HTMLMediaElement.h:
10:12 AM Changeset in webkit [279288] by Ryan Haddad
  • 67 edits in trunk/Source

Unreviewed, reverting r279208.
https://bugs.webkit.org/show_bug.cgi?id=227381

Broke the Apple Windows build.

Reverted changeset:

"Not all uses of AudioToolbox framework use soft linking"
https://bugs.webkit.org/show_bug.cgi?id=227250
https://trac.webkit.org/changeset/279208

9:31 AM Changeset in webkit [279287] by Peng Liu
  • 4 edits in trunk/Source/WebKit

Explicitly invalidate WKFullScreenViewController after a video exits fullscreen
https://bugs.webkit.org/show_bug.cgi?id=227372

Reviewed by Eric Carlson.

Since WKFullScreenWindowController owns WKFullScreenViewController,
we had better let WKFullScreenWindowController manage the life cycle
of WKFullScreenViewController.

  • UIProcess/ios/fullscreen/WKFullScreenViewController.h:
  • UIProcess/ios/fullscreen/WKFullScreenViewController.mm:

(-[WKFullScreenViewController initWithWebView:]):
(-[WKFullScreenViewController invalidate]):
(-[WKFullScreenViewController dealloc]):
(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController videoControlsManagerDidChange]):
(-[WKFullScreenViewController setAnimatingViewAlpha:]):
(-[WKFullScreenViewController setPrefersStatusBarHidden:]):
(-[WKFullScreenViewController setPrefersHomeIndicatorAutoHidden:]):
(-[WKFullScreenViewController setPlaying:]):
(-[WKFullScreenViewController setPictureInPictureActive:]):
(-[WKFullScreenViewController setAnimating:]):
(-[WKFullScreenViewController _manager]):
(-[WKFullScreenViewController _effectiveFullscreenInsets]):
(-[WKFullScreenViewController _cancelAction:]):
(-[WKFullScreenViewController _togglePiPAction:]):
(-[WKFullScreenViewController _touchDetected:]):
(-[WKFullScreenViewController _statusBarFrameDidChange:]):
(-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
(-[WKFullScreenViewController _showPhishingAlert]):

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController _completedExitFullScreen]):

8:42 AM Changeset in webkit [279286] by svillar@igalia.com
  • 5 edits in trunk

[css-flexbox] Improve computation of intrinsic sizes of flex items with aspect ratio
https://bugs.webkit.org/show_bug.cgi?id=227395

Reviewed by Rob Buis.

Source/WebCore:

Before computing the intrinsic sizes of flex items we first clear the overriding sizes of the item
that might have been set before in order to get the proper intrinsic size. However there is one
situation in which having an overriding size is desirable and it's when the cross size should
be set to the flex container's definite cross size. That's one of the exceptions for definite/indefinite
sizes mentioned in the specs (see https://drafts.csswg.org/css-flexbox/#definite-sizes).

In the aforementioned case we should temporarily set that overriding size in the cross axis so that
the intrinsic size could be computed with that constrain.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeChildIntrinsicLogicalWidths const): Set the overriding size
in the cross axis to compute the intrinsic size.
(WebCore::RenderFlexibleBox::computeMainSizeFromAspectRatioUsing const):
(WebCore::RenderFlexibleBox::childCrossSizeShouldUseContainerCrossSize const): Added a missing check,
the cross size of the child must be auto, otherwise the rule does not apply.
(WebCore::RenderFlexibleBox::computeCrossSizeForChildUsingContainerCrossSize const): Refactored from
computeMainSizeFromAspectRatioUsing() as it's now used in two different places.

  • rendering/RenderFlexibleBox.h:

LayoutTests:

8:39 AM Changeset in webkit [279285] by Philippe Normand
  • 4 edits in trunk/Source/WebCore

[GStreamer] TextCombiner has unlinked internal encoders
https://bugs.webkit.org/show_bug.cgi?id=227362

Reviewed by Xabier Rodriguez-Calvar.

Each combiner pad can receive multiple caps events for the same stream, so we can't really
rely on those to modify the internal topology of the combiner. Instead we can check the
sticky events from the pad chain function, this is done at most once per pad. In case a caps
event was sticked to the pad, the combiner now reacts properly.

This issue was detected while running
media/track/in-band/track-in-band-kate-ogg-cues-added-once.html with playbin3 enabled. 6
different encoders where added to the combiner while only 2 are needed actually.

  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:

(webKitTextCombinerHandleCaps):

  • platform/graphics/gstreamer/TextCombinerGStreamer.h:
  • platform/graphics/gstreamer/TextCombinerPadGStreamer.cpp:

(webkitTextCombinerPadChain):
(webkitTextCombinerPadConstructed):

8:28 AM Changeset in webkit [279284] by svillar@igalia.com
  • 3 edits
    2 adds in trunk

Nullptr crash in StyledMarkupAccumulator::traverseNodesForSerialization
https://bugs.webkit.org/show_bug.cgi?id=226821

Reviewed by Ryosuke Niwa.

Source/WebCore:

r276394 fixed an issue in serialization when transversing the nodes. It added a new condition
to the ASSERT that was checking that its OK not to have a next pointer when there is a valid
pastEnd in the case of pastEnd being a descendant of the pointer traversing the node tree.

However that descendant check was not including the shadow DOM. This is precisely the case
detected by the test case this patch is adding.

Test: editing/selection/setSelection-shadow-dom-crash.html

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::traverseNodesForSerialization):

LayoutTests:

  • editing/selection/setSelection-shadow-dom-crash-expected.txt: Added.
  • editing/selection/setSelection-shadow-dom-crash.html: Added.
8:12 AM Changeset in webkit [279283] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Build warnings in AudioFileReader since r279123
https://bugs.webkit.org/show_bug.cgi?id=227348

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

Simplify the code handling the giostreamsrc creation, now that it is the only option possible.

  • platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:

(WebCore::AudioFileReader::decodeAudioForBusCreation):

8:06 AM Changeset in webkit [279282] by commit-queue@webkit.org
  • 8 edits in trunk/Source

Unreviewed, reverting r279266.
https://bugs.webkit.org/show_bug.cgi?id=227402

Causes crash loop

Reverted changeset:

"Remove references to order files"
https://bugs.webkit.org/show_bug.cgi?id=227377
https://trac.webkit.org/changeset/279266

7:51 AM Changeset in webkit [279281] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed, GStreamer gardening

  • platform/glib/TestExpectations: Mark a mediastream as flaky.
7:51 AM Changeset in webkit [279280] by Ziran Sun
  • 2 edits in trunk/Tools

Add myself to contributor list
https://bugs.webkit.org/show_bug.cgi?id=227400

Reviewed by Sergio Villar Senin.

  • Scripts/webkitpy/common/config/contributors.json:
7:08 AM Changeset in webkit [279279] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

[GLib] Guard Cairo inclusions in shared GLib API implementation files
https://bugs.webkit.org/show_bug.cgi?id=227370

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-06-25
Reviewed by Philippe Normand.

For cross-port GLib API implementation, different Cairo inclusions are
moved into appropriate build guards tha match the build guards where
Cairo is then used.

  • UIProcess/API/glib/WebKitFaviconDatabase.cpp:
  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

  • UIProcess/API/glib/WebKitWebView.cpp:
6:58 AM Changeset in webkit [279278] by Ziran Sun
  • 6 edits in trunk

[css-grid] Consider container's writing mode to get grid item's margin
https://bugs.webkit.org/show_bug.cgi?id=226877

Reviewed by Sergio Villar Senin.

LayoutTests/imported/w3c:

Update test results.

  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt:

Source/WebCore:

When computing the logical offset of a non-static absolute positioned grid item, we need
to pass its container's style in order to resolve the child margin correctly, especially
for the case when the item has flipped block writing mode (vertical-rl).

This change is an import of the Chromium change at
https://chromium-review.googlesource.com/c/chromium/src/+/2577365

  • rendering/RenderBox.h:

(WebCore::RenderBox::marginLogicalLeft const):
(WebCore::RenderBox::marginLogicalRight const):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):

6:49 AM Changeset in webkit [279277] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer] Minor debugging improvements in mediastream source element
https://bugs.webkit.org/show_bug.cgi?id=227396

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

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: Give representative name to

the appsrc elements embedded in the MediaStreamSource element. Also add logging calls
related with tracks observation.

5:37 AM Changeset in webkit [279276] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Unskip structure-storedPrototype-should-only-assert-on-the-mutator-thread.js on arm and mips
https://bugs.webkit.org/show_bug.cgi?id=227222

Tested with 50 iterations in both arm and mips.

Unreviewed Gardening.

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-25

  • stress/structure-storedPrototype-should-only-assert-on-the-mutator-thread.js:
5:28 AM Changeset in webkit [279275] by Paulo Matos
  • 2 edits in trunk/JSTests

Unskip materialized-regexp-has-correct-last-index-set-by-match on arm and mips
https://bugs.webkit.org/show_bug.cgi?id=227213

Unreviewed Gardening.

  • stress/materialized-regexp-has-correct-last-index-set-by-match.js:
4:22 AM Changeset in webkit [279274] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

[css-flexbox] Cleanup OverridingSizesScope RAII class
https://bugs.webkit.org/show_bug.cgi?id=227394

Reviewed by Rob Buis.

In r279268 we added a new RAII class which adds an overriding sizes free scope to perform
layout computations. That class heavily uses the different set/get/clear methods for overriding
sizes. We can use a macro with subsitutions there to reduce the amount of required code.

Also moving the computeChildIntrinsicLogicalWidths() method to the private section as it does
not require protected visibility.

No new tests as it's just a code refactoring that does not modify the functionality.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::OverridingSizesScope::OverridingSizesScope):
(WebCore::OverridingSizesScope::~OverridingSizesScope):
(WebCore::OverridingSizesScope::setOrClearOverridingSize): Deleted.

  • rendering/RenderFlexibleBox.h:
2:55 AM Changeset in webkit [279273] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Unskip materialize-regexp-cyclic-regexp.js on ARM and MIPS
https://bugs.webkit.org/show_bug.cgi?id=227223

Tested with 50 iterations in both arm and mips.

Unreviewed Gardening.

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-25

  • stress/materialize-regexp-cyclic-regexp.js:
2:03 AM Changeset in webkit [279272] by Martin Robinson
  • 2 edits in trunk/Source/WebCore

[css-scroll-snap] Simplify snap point selection helpers
https://bugs.webkit.org/show_bug.cgi?id=227062

Reviewed by Frédéric Wang.

Combine indicesOfNearestSnapOffsets and findFirstSnapStopOffsetBetweenOriginAndDestination
and have the helper return the geometric previous and next snap points. This makes the
code a bit easier to read, slightly more efficient, and prepares for looking at
the geometric previous and next snap points for certain upcoming CSS Scroll Snap features.

Previously, indicesOfNearestSnapOffsets used a binary search and findFirstSnapStopOffsetBetweenOriginAndDestination
used a linear search. This change replaces these two functions with a single linear search.
While findFirstSnapStopOffsetBetweenOriginAndDestination is only called for directional scrolling,
directional scrolling is more common than non-directional scrolling (which is typically only called
by scrollIntoView() and other JS scrolling APIs). I have tested this change with a large table of
snap points and performance does not seem to be changed. In addition, a future change should mean
that this searchForPotentialSnapPoints should be called much less.

No new tests. This should not change behavior in any way.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::searchForPotentialSnapPoints): Added this new helper which is the combination
of indicesOfNearestSnapOffsets and findFirstSnapStopOffsetBetweenOriginAndDestination.
(WebCore::closestSnapOffsetWithInfoAndAxis): Use the new helper.

1:59 AM Changeset in webkit [279271] by svillar@igalia.com
  • 4 edits in trunk

[css-flexbox] Do not clamp flex base size with {min|max}-{height|width}
https://bugs.webkit.org/show_bug.cgi?id=225590

Reviewed by Alan Bujtas.

Source/WebCore:

When computing flex base size we should not clamp it with neither min-{height|width}
nor max-{height|width}. That would be done later and will be called the hypothetical
main size.

For most of the cases we were already doing it, however there are some particular cases
in which we have to call the generic layout code which does clamp the sizes using min
and max sizes. In order to make those code paths work, we reset the min|max values to
their initial ones (so they effectively become inactive) and then we set the original
values back after computing the base size.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::ScopedUnboundedBox::ScopedUnboundedBox): New scoped class that sets min|max sizes
to their initial values on instantiation and restores the original values on destruction.
(WebCore::ScopedUnboundedBox::~ScopedUnboundedBox):
(WebCore::RenderFlexibleBox::constructFlexItems): Wrap the base size computation with a
ScopedUnboundedBox.

LayoutTests:

The patch allows us to pass 3 new tests. We're adding percentage-max-height-003.html to
the list of expected failures because these changes make it fail. This is not really a
regression however because although the size of the deepest flex item was correct (and thus
allowed us to pass the test) the other sizes were completely wrong. So it's more an issue
of the test not being complete enough and passing artificially than anything else.

1:43 AM Changeset in webkit [279270] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening, mark more WebXR tests as unsupported
https://bugs.webkit.org/show_bug.cgi?id=227358

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-25

  • platform/gtk/TestExpectations:
1:31 AM Changeset in webkit [279269] by Ziran Sun
  • 86 edits
    3 copies
    330 adds in trunk/LayoutTests

Resync web-platform-tests/css/css-grid tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=223593

Reviewed by Sergio Villar Senin and Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/absolute-positioning-grid-container-parent-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/descendant-static-position-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/descendant-static-position-004.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-safe-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-002-expected.xht: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-003-expected.xht: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-004-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/grid-positioned-item-dynamic-change-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013-expected.txt:
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015-expected.txt:
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-018-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-018.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-019-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-019.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-020-expected.xht: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-020.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-021-expected.xht: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-021.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-022-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-022.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-001-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-002-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-003-expected.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/support/colors-8x16.png: Added.
  • web-platform-tests/css/css-grid/abspos/support/w3c-import.log:
  • web-platform-tests/css/css-grid/abspos/w3c-import.log:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035.html:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036.html:
  • web-platform-tests/css/css-grid/alignment/grid-baseline-004-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-baseline-004.html:
  • web-platform-tests/css/css-grid/alignment/grid-baseline-align-cycles-001.html:
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-overflow-002-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-alignment-overflow-002.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-026-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-001-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-026.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-027-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-027.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-028-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-content-distribution-028.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-gutters-015-expected.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-gutters-015.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-gutters-016-expected.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-gutters-016.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-auto-margins-001-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-auto-margins-001.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-auto-margins-002-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/grid-item-auto-margins-002.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-expected.txt: Added.
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment.html: Added.
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html:
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009-expected.xht: Added.
  • web-platform-tests/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html: Added.
  • web-platform-tests/css/css-grid/alignment/support/25x50-green.png: Added.
  • web-platform-tests/css/css-grid/alignment/support/50x50-green.png: Added.
  • web-platform-tests/css/css-grid/alignment/support/w3c-import.log:
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/css-grid/dynamic-grid-with-auto-fill-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/dynamic-grid-with-auto-fill.html: Added.
  • web-platform-tests/css/css-grid/dynamic-grid-within-flexbox-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/dynamic-grid-within-flexbox.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-001.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-003-expected.txt: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-004-expected.txt: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-004-expected.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-004.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-005-expected.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-005.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/grid-repeat-max-width-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-definition/grid-repeat-max-width-001.html: Added.
  • web-platform-tests/css/css-grid/grid-definition/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-001.html:
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-002.html:
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-001.html: Added.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-002.html: Added.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-003-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-003.html: Added.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-004-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/aspect-ratio-004.html: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html:
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-001-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-001.html: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative.html: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative.html: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-015-expected.txt: Added.
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-015.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-001-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-001.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-002-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-002.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-007-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-007.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-010-expected.xht: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-010.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-011-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-011.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-012-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-012.html: Added.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-013-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-items/replaced-element-013.html: Added.
  • web-platform-tests/css/css-grid/grid-items/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-003-expected.html:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-003.html:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-009-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-003-expected.html.
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-009.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-003.html.
  • web-platform-tests/css/css-grid/grid-model/grid-button-001-expected.txt:
  • web-platform-tests/css/css-grid/grid-model/grid-overflow-padding-001.html:
  • web-platform-tests/css/css-grid/grid-model/grid-overflow-padding-002.html:
  • web-platform-tests/css/css-grid/grid-model/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-within-flexbox-definite-change-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html.
  • web-platform-tests/css/css-grid/grid-within-flexbox-definite-change.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html:
  • web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html:
  • web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html:
  • web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html:
  • web-platform-tests/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html:
  • web-platform-tests/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001-expected.txt:
  • web-platform-tests/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html:
  • web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height-expected.xht: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002-expected.txt:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001-expected.txt:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002-expected.txt:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items-expected.txt:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html:
  • web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-003-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-003.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-004-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-content-004.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-multi-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-multi-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-stretch-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-stretch-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-stretch-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-align-tracks-stretch-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-003-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-003.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-004-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-004.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-005-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-005.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-006-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-fragmentation-006.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-gap-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-gap-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-content-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-content-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-002a-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-002a.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-002b-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-item-self-baseline-002b.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-placement-named-lines-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-placement-named-lines-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-placement-named-lines-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-placement-named-lines-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent-expected.txt: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-003-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-003.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-004-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-004.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-005-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-005.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-006-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-intrinsic-sizing-006.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-003-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-003.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-004-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-004.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-005-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-005.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-006-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-006.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-007-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-item-placement-007.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-003-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-003.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-004-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-content-004.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-multi-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-multi-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-stretch-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-stretch-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-stretch-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-justify-tracks-stretch-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-order-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-order-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-order-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-order-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-parsing-expected.txt: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-parsing.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-subgrid-001-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-subgrid-001.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-subgrid-002-expected.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/masonry-subgrid-002.html: Added.
  • web-platform-tests/css/css-grid/masonry/tentative/w3c-import.log: Added.
  • web-platform-tests/css/css-grid/subgrid/abs-pos-004-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/abs-pos-004.html: Added.
  • web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004-expected.html: Added.
  • web-platform-tests/css/css-grid/subgrid/subgrid-mbp-overflow-004.html: Added.
  • web-platform-tests/css/css-grid/subgrid/w3c-import.log:
  • web-platform-tests/css/css-grid/support/grid-child-utils.js:
  • web-platform-tests/css/css-grid/table-grid-item-005-expected.txt: Added.
  • web-platform-tests/css/css-grid/table-grid-item-005.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-002-expected.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-002.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-003-expected.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-003.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-004-expected.html: Added.
  • web-platform-tests/css/css-grid/table-grid-item-dynamic-004.html: Added.
  • web-platform-tests/css/css-grid/w3c-import.log:

LayoutTests:

1:09 AM Changeset in webkit [279268] by svillar@igalia.com
  • 5 edits in trunk/Source/WebCore

[css-flexbox] Move flex item preferred width computation specifics to RenderFlexibleBox class
https://bugs.webkit.org/show_bug.cgi?id=226822

Reviewed by Alan Bujtas.

RenderBlock had some specific code for flex items that cleared the overriding sizes before
computing the {min|max}PreferredWidths and then restored them afterwards. That is done to
properly compute flex items intrinsic sizes. That code is flexbox specific so we better move
it to RenderFlexibleBox. In order to do that a new virtual method was added to RenderBlock which
just calls minPreferredLogicalWidth() and maxPreferredLogicalWidth() for every block except
flexbox containers.

In the case of flexbox containers, it wraps those calls with a RAII class that properly
clears the overriding sizes on instantiation and clears them on destruction. Now that the RAII
class is available we use it also for another existing code path that requires to
temporarily set an overriding size in a given scope.

No need for new tests as there is no change in behaviour.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::computeChildIntrinsicLogicalWidths const): New virtual method.
(WebCore::RenderBlock::computeChildPreferredLogicalWidths const): Call computeChildIntrinsicLogicalWidths().

  • rendering/RenderBlock.h:
  • rendering/RenderFlexibleBox.cpp:

(WebCore::OverridingSizesScope::OverridingSizesScope): New RAII class to set/clear overriding sizes in a scope.
(WebCore::OverridingSizesScope::~OverridingSizesScope):
(WebCore::OverridingSizesScope::setOrClearOverridingSize):
(WebCore::RenderFlexibleBox::computeChildIntrinsicLogicalWidths const): Redefinition for flexbox containers.
(WebCore::RenderFlexibleBox::childIntrinsicLogicalHeight const): Removed constness from attribute.
(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth): Ditto.
(WebCore::RenderFlexibleBox::crossAxisIntrinsicExtentForChild): Ditto.

  • rendering/RenderFlexibleBox.h:
12:13 AM Changeset in webkit [279267] by graouts@webkit.org
  • 13 edits in trunk/Source

[Model] Create a sandbox extension for a temporary directory to store model resources
https://bugs.webkit.org/show_bug.cgi?id=227359

Reviewed by Tim Horton.

The SPIs we will use to render <model> resources expect a file URL to load and render the model.
Before we adopt these SPIs, we extend the sandbox to allow writing to a temporary directory where
we will store these resources.

Source/WebCore:

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::sharedModelElementCacheDirectory):
(WebCore::HTMLModelElement::setModelElementCacheDirectory):
(WebCore::HTMLModelElement::modelElementCacheDirectory):

  • Modules/model-element/HTMLModelElement.h:

Source/WebKit:

  • Shared/WebProcessDataStoreParameters.h:

(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::webProcessDataStoreParameters):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::defaultModelElementCacheDirectory):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedModelElementCacheDirectory const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::modelElementCacheDirectory const):
(WebKit::WebsiteDataStoreConfiguration::setModelElementCacheDirectory):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setWebsiteDataStoreParameters):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformSetWebsiteDataStoreParameters):

Jun 24, 2021:

8:30 PM Changeset in webkit [279266] by sihui_liu@apple.com
  • 8 edits in trunk/Source

Remove references to order files
https://bugs.webkit.org/show_bug.cgi?id=227377
rdar://76070556

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • Configurations/JavaScriptCore.xcconfig:

Source/WebCore:

We don't need to refer to order files on iOS now.

  • Configurations/WebCore.xcconfig:

Source/WebKit:

  • Configurations/WebKit.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/WebKitLegacy.xcconfig:
7:23 PM Changeset in webkit [279265] by commit-queue@webkit.org
  • 18 edits
    1 add in trunk

[WASM-Function-References] Add support for (ref null? $t) type constructor
https://bugs.webkit.org/show_bug.cgi?id=226296

JSTests:

Adds additional tests for uses of (ref $t) and (ref null $t)
types, including with non-null extern/funcrefs.

Patch by Asumu Takikawa <asumu@igalia.com> on 2021-06-24
Reviewed by Yusuke Suzuki.

  • wasm/function-references/ref_types.js: Added.

(module):
(async testRefTypeLocal):
(async testNonNullRefTypeLocal):
(async testRefTypeInSignature):
(async testRefTypeParamCheck):
(async testRefGlobalCheck):
(async testExternFuncrefNonNullCheck):
(async testExternrefCompatibility):
(async testNonNullExternrefIncompatible):
(async testFuncrefCompatibility):
(async testNonNullFuncrefIncompatible):

  • wasm/wasm.json:

Source/JavaScriptCore:

Patch by Asumu Takikawa <asumu@igalia.com> on 2021-06-24
Reviewed by Yusuke Suzuki.

Adds the ref type constructor from the typed function references proposal:

https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md

It's also required for the type imports and GC proposals as well. Ref types represent
references to any heap type (including existing funcref and externref) with a specified
nullability.

This requires a new isNullable flag in the type representation. This flag also enables
non-null externref and funcrefs, and hence this commit also adds the necessary checks
at Wasm/JS boundaries.

Non-null reference types also generally cannot be used as function locals.

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::gTypeIdx):
(JSC::Wasm::AirIRGenerator::tmpForType):
(JSC::Wasm::AirIRGenerator::emitCCall):
(JSC::Wasm::AirIRGenerator::moveOpForValueType):
(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::addLocal):
(JSC::Wasm::AirIRGenerator::addConstant):
(JSC::Wasm::AirIRGenerator::addRefFunc):

  • wasm/WasmCallingConvention.h:

(JSC::Wasm::WasmCallingConvention::marshallLocation const):
(JSC::Wasm::JSCallingConvention::marshallLocation const):

  • wasm/WasmFormat.h:

(JSC::Wasm::isSubtype):
(JSC::Wasm::isValidHeapTypeKind):
(JSC::Wasm::isDefaultableType):

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parse):
(JSC::Wasm::FunctionParser<Context>::parseAnnotatedSelectImmediates):
(JSC::Wasm::FunctionParser<Context>::checkBranchTarget):
(JSC::Wasm::FunctionParser<Context>::parseExpression):

  • wasm/WasmGlobal.cpp:

(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::callInformationForCallee):
(JSC::Wasm::LLIntGenerator::addArguments):

  • wasm/WasmParser.h:

(JSC::Wasm::Parser<SuccessType>::parseBlockSignature):
(JSC::Wasm::Parser<SuccessType>::parseValueType):
(JSC::Wasm::Parser<SuccessType>::parseRefType):

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseType):
(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseElementSegmentVectorOfExpressions):
(JSC::Wasm::SectionParser::parseGlobalType):

  • wasm/WasmSignature.cpp:

(JSC::Wasm::computeHash):

  • wasm/generateWasmOpsHeader.py:
  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

  • wasm/js/WebAssemblyFunctionBase.h:

(JSC::WebAssemblyFunctionBase::offsetOfSignatureIndex):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::linkImpl):

  • wasm/wasm.json:
6:27 PM Changeset in webkit [279264] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.21

6:26 PM Changeset in webkit [279263] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.22

6:22 PM Changeset in webkit [279262] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.20.1

Tag Safari-612.1.20.1.

6:18 PM Changeset in webkit [279261] by Ruben Turcios
  • 8 edits in branches/safari-612.1.20-branch/Source

Versioning.

WebKit-7612.1.20.1

5:52 PM Changeset in webkit [279260] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.15.4.5

Tag Safari-612.1.15.4.5.

5:50 PM Changeset in webkit [279259] by Kocsen Chung
  • 2 edits in branches/safari-612.1.15.4-branch/Source/WebCore

Cherry-pick r278838. rdar://problem/79228536

[AppleWin] Fix build failure
https://bugs.webkit.org/show_bug.cgi?id=226966
<rdar://79228536>

Reviewed by Eric Carlson.

Disable warning causing the build failure.

  • platform/cf/MediaAccessibilitySoftLink.h:

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

5:46 PM Changeset in webkit [279258] by Kocsen Chung
  • 8 edits in branches/safari-612.1.15.4-branch/Source

Versioning.

WebKit-7612.1.15.4.5

5:33 PM Changeset in webkit [279257] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION: (r279244) [ Mac ] http/tests/workers/service/postmessage-after-terminate.https.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=227380
<rdar://problem/79748648>

Unreviewed, drop protector added in r279244 inside establishServiceWorkerContext() as it is what caused this test
to time out. I am not sure why this is happening yet but I am doing this partial revert to get us back in a good
state.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::establishServiceWorkerContext):

5:06 PM Changeset in webkit [279256] by mark.lam@apple.com
  • 17 edits
    1 add in trunk/Source/JavaScriptCore

Use ldp and stp more for saving / restoring registers on ARM64.
https://bugs.webkit.org/show_bug.cgi?id=227039
rdar://79354736

Reviewed by Saam Barati.

This patch introduces a spooler abstraction in AssemblyHelpers. The spooler
basically batches up load / store operations and emit them as pair instructions
if appropriate.

There are 4 spooler classes:

  1. Spooler
    • template base class for LoadRegSpooler and StoreRegSpooler.
    • encapsulates the batching strategy for load / store pairs.
  1. LoadRegSpooler - specializes Spooler to handle load pairs.
  2. StoreRegSpooler - specializes Spooler to handle store pairs.
  1. CopySpooler
    • handles matching loads with stores.
    • tries to emit loads as load pairs if possible.
    • tries to emot stores as store pairs if possible.
    • ensures that pre-requisite loads are emitted before stores are emitted.
    • other than loads, also support constants and registers as sources of values to be stored. This is useful in OSR exit ramps where we may materialize a stack value to store from constants or registers in addition to values we load from the old stack frame or from a scratch buffer.

In this patch, we also do the following:

  1. Use spoolers in many places so that we can emit load / store pairs instead of single load / stores. This helps shrink JIT code side, and also potentially improves performance.
  1. In DFG::OSRExit::compileExit(), we used to recover constants into a scratch buffer, and then later, load from that scratch buffer to store into the new stack frame(s).

This patch changes it so that we defer constant recovery until the final
loop where we store the recovered value directly into the new stack frame(s).
This saves us the work (and JIT code space) for storing into a scratch buffer
and then reloading from the scratch buffer.

There is one exception: tmp values used by active checkpoints. We need to call
operationMaterializeOSRExitSideState() to materialize the active checkpoint
side state before the final loop where we now recover constants. Hence, we
need these tmp values recovered before hand.

So, we check upfront if we have active checkpoint side state to materialize.
If so, we'll eagerly recover the constants for initializing those tmps.

We also use the CopySpooler in the final loop to emit load / store pairs for
filling in the new stack frame(s).

One more thing: it turns out that the vast majority of constants to be recovered
is simply the undefined value. So, as an optimization, the final loop keeps
the undefined value in a register, and has the spooler store directly from
that register when appropriate. This saves on JIT code to repeatedly materialize
the undefined JSValue constant.

  1. In reifyInlinedCallFrames(), replace the use of GPRInfo::nonArgGPR0 with GPRInfo::regT4. nonArgGPRs are sometimes map to certain regTXs on certain ports. Replacing with regT4 makes it easier to ensure that we're not trashing the register when we use more temp registers.

reifyInlinedCallFrames() will be using emitSaveOrCopyLLIntBaselineCalleeSavesFor()
later where we need more temp registers.

  1. Move the following functions to AssemblyHelpers.cpp. They don't need to be inline functions. Speedometer2 and JetStream2 shows that making these non inline does not hurt performance:

AssemblyHelpers::emitSave(const RegisterAtOffsetList&);
AssemblyHelpers::emitRestore(const RegisterAtOffsetList&);
AssemblyHelpers::emitSaveCalleeSavesFor(const RegisterAtOffsetList*);
AssemblyHelpers::emitSaveOrCopyCalleeSavesFor(...);
AssemblyHelpers::emitRestoreCalleeSavesFor(const RegisterAtOffsetList*);
AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer(...);

Also renamed emitSaveOrCopyCalleeSavesFor() to emitSaveOrCopyLLIntBaselineCalleeSavesFor()
because it is only used with baseline codeBlocks.

Results:
Cummulative LinkBuffer profile sizes shrunk by ~2M in aggregate:

base new

===

BaselineJIT: 83827048 (79.943703 MB) => 83718736 (79.840408 MB)

DFG: 56594836 (53.973042 MB) => 56603508 (53.981312 MB)

InlineCache: 33923900 (32.352352 MB) => 33183156 (31.645924 MB)

FTL: 6770956 (6.457287 MB) => 6568964 (6.264652 MB)

DFGOSRExit: 5212096 (4.970642 MB) => 3728088 (3.555382 MB)

CSSJIT: 748428 (730.886719 KB) => 748428 (730.886719 KB)

FTLOSRExit: 692276 (676.050781 KB) => 656884 (641.488281 KB)

YarrJIT: 445280 (434.843750 KB) => 512988 (500.964844 KB)

FTLThunk: 22908 (22.371094 KB) => 22556 (22.027344 KB)

BoundFunctionThunk: 8400 (8.203125 KB) => 10088 (9.851562 KB)

ExtraCTIThunk: 6952 (6.789062 KB) => 6824 (6.664062 KB)

SpecializedThunk: 4508 (4.402344 KB) => 4508 (4.402344 KB)

Thunk: 3912 (3.820312 KB) => 3784 (3.695312 KB)

LLIntThunk: 2908 (2.839844 KB) => 2908 (2.839844 KB)

VirtualThunk: 1248 (1.218750 KB) => 1248 (1.218750 KB)

DFGThunk: 1084 (1.058594 KB) => 444

DFGOSREntry: 216 => 184

JumpIsland: 0

WasmThunk: 0

Wasm: 0

Uncategorized: 0

Total: 188266956 (179.545361 MB) => 185773296 (177.167221 MB)

Speedometer2 and JetStream2 results shows that performance is neutral for this
patch (as measured on an M1 Mac):

Speedometer2:


| subtest | ms | ms | b / a | pValue (significance using False Discovery Rate) |


| Elm-TodoMVC |129.037500 |127.212500 |0.985857 | 0.012706 |
| VueJS-TodoMVC |28.312500 |27.525000 |0.972185 | 0.240315 |
| EmberJS-TodoMVC |132.550000 |132.025000 |0.996039 | 0.538034 |
| Flight-TodoMVC |80.762500 |80.875000 |1.001393 | 0.914749 |
| BackboneJS-TodoMVC |51.637500 |51.175000 |0.991043 | 0.285427 |
| Preact-TodoMVC |21.025000 |22.075000 |1.049941 | 0.206140 |
| AngularJS-TodoMVC |142.900000 |142.887500 |0.999913 | 0.990681 |
| Inferno-TodoMVC |69.300000 |69.775000 |1.006854 | 0.505201 |
| Vanilla-ES2015-TodoMVC |71.500000 |71.225000 |0.996154 | 0.608650 |
| Angular2-TypeScript-TodoMVC |43.287500 |43.275000 |0.999711 | 0.987926 |
| VanillaJS-TodoMVC |57.212500 |57.812500 |1.010487 | 0.333357 |
| jQuery-TodoMVC |276.150000 |276.775000 |1.002263 | 0.614404 |
| EmberJS-Debug-TodoMVC |353.612500 |352.762500 |0.997596 | 0.518836 |
| React-TodoMVC |93.637500 |92.637500 |0.989321 | 0.036277 |
| React-Redux-TodoMVC |158.237500 |156.587500 |0.989573 | 0.042154 |
| Vanilla-ES2015-Babel-Webpack-TodoMVC |68.050000 |68.087500 |1.000551 | 0.897149 |


a mean = 236.26950
b mean = 236.57964
pValue = 0.7830785938
(Bigger means are better.)
1.001 times better
Results ARE NOT significant

JetStream2:


| subtest | pts | pts | b / a | pValue (significance using False Discovery Rate) |


| gaussian-blur |542.570057 |542.671885 |1.000188 | 0.982573 |
| HashSet-wasm |57.710498 |64.406371 |1.116025 | 0.401424 |
| gcc-loops-wasm |44.516009 |44.453535 |0.998597 | 0.973651 |
| json-parse-inspector |241.275085 |240.720491 |0.997701 | 0.704732 |
| prepack-wtb |62.640114 |63.754878 |1.017796 | 0.205840 |
| date-format-xparb-SP |416.976817 |448.921409 |1.076610 | 0.052977 |
| WSL |1.555257 |1.570233 |1.009629 | 0.427924 |
| OfflineAssembler |177.052352 |179.746511 |1.015217 | 0.112114 |
| cdjs |192.517586 |194.598906 |1.010811 | 0.025807 |
| UniPoker |514.023694 |526.111500 |1.023516 | 0.269892 |
| json-stringify-inspector |227.584725 |223.619390 |0.982576 | 0.102714 |
| crypto-sha1-SP |980.728788 |984.192104 |1.003531 | 0.838618 |
| Basic |685.148483 |711.590247 |1.038593 | 0.142952 |
| chai-wtb |106.256376 |106.590318 |1.003143 | 0.865894 |
| crypto-aes-SP |722.308829 |728.702310 |1.008851 | 0.486766 |
| Babylon |655.857561 |654.204901 |0.997480 | 0.931520 |
| string-unpack-code-SP |407.837271 |405.710752 |0.994786 | 0.729122 |
| stanford-crypto-aes |456.906021 |449.993856 |0.984872 | 0.272994 |
| raytrace |883.911335 |902.887238 |1.021468 | 0.189785 |
| multi-inspector-code-load |409.997347 |405.643639 |0.989381 | 0.644447 |
| hash-map |593.590160 |601.576332 |1.013454 | 0.249414 |
| stanford-crypto-pbkdf2 |722.178638 |728.283532 |1.008453 | 0.661195 |
| coffeescript-wtb |42.393544 |41.869545 |0.987640 | 0.197441 |
| Box2D |452.034685 |454.104868 |1.004580 | 0.535342 |
| richards-wasm |140.873688 |148.394050 |1.053384 | 0.303651 |
| lebab-wtb |61.671318 |62.119403 |1.007266 | 0.620998 |
| tsf-wasm |108.592794 |119.498398 |1.100427 | 0.504710 |
| base64-SP |629.744643 |603.425565 |0.958207 | 0.049997 |
| navier-stokes |740.588523 |739.951662 |0.999140 | 0.871445 |
| jshint-wtb |51.938359 |52.651104 |1.013723 | 0.217137 |
| regex-dna-SP |459.251148 |463.492489 |1.009235 | 0.371891 |
| async-fs |235.853820 |236.031189 |1.000752 | 0.938459 |
| first-inspector-code-load |275.298325 |274.172125 |0.995909 | 0.623403 |
| segmentation |44.002842 |43.445960 |0.987344 | 0.207134 |
| typescript |26.360161 |26.458820 |1.003743 | 0.609942 |
| octane-code-load |1126.749036 |1087.132024 |0.964840 | 0.524171 |
| float-mm.c |16.691935 |16.721354 |1.001762 | 0.194425 |
| quicksort-wasm |461.630091 |450.161127 |0.975156 | 0.371394 |
| Air |392.442375 |412.201810 |1.050350 | 0.046887 |
| splay |510.111886 |475.131657 |0.931426 | 0.024732 |
| ai-astar |607.966974 |626.573181 |1.030604 | 0.468711 |
| acorn-wtb |67.510766 |68.143956 |1.009379 | 0.481663 |
| gbemu |144.133842 |145.620304 |1.010313 | 0.802154 |
| richards |963.475078 |946.658879 |0.982546 | 0.231189 |
| 3d-cube-SP |549.426784 |550.479154 |1.001915 | 0.831307 |
| espree-wtb |68.707483 |73.762202 |1.073569 | 0.033603 |
| bomb-workers |96.882596 |96.116121 |0.992089 | 0.687952 |
| tagcloud-SP |309.888767 |303.538511 |0.979508 | 0.187768 |
| mandreel |133.667031 |135.009929 |1.010047 | 0.075232 |
| 3d-raytrace-SP |491.967649 |492.528992 |1.001141 | 0.957842 |
| delta-blue |1066.718312 |1080.230772 |1.012667 | 0.549382 |
| ML |139.617293 |140.088630 |1.003376 | 0.661651 |
| regexp |351.773956 |351.075935 |0.998016 | 0.769250 |
| crypto |1510.474663 |1519.218842 |1.005789 | 0.638420 |
| crypto-md5-SP |795.447899 |774.082493 |0.973140 | 0.079728 |
| earley-boyer |812.574545 |870.678372 |1.071506 | 0.044081 |
| octane-zlib |25.162470 |25.660261 |1.019783 | 0.554591 |
| date-format-tofte-SP |395.296135 |398.008992 |1.006863 | 0.650475 |
| n-body-SP |1165.386611 |1150.525110 |0.987248 | 0.227908 |
| pdfjs |189.060252 |191.015628 |1.010343 | 0.633777 |
| FlightPlanner |908.426192 |903.636642 |0.994728 | 0.838821 |
| uglify-js-wtb |34.029399 |34.164342 |1.003965 | 0.655652 |
| babylon-wtb |81.329869 |80.855680 |0.994170 | 0.854393 |
| stanford-crypto-sha256 |826.850533 |838.494164 |1.014082 | 0.579636 |


a mean = 237.91084
b mean = 239.92670
pValue = 0.0657710897
(Bigger means are better.)
1.008 times better
Results ARE NOT significant

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::pushToSaveByteOffset):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::pushToSaveByteOffset):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitGenerationThunkGenerator):

  • ftl/FTLSaveRestore.cpp:

(JSC::FTL::saveAllRegisters):
(JSC::FTL::restoreAllRegisters):

  • ftl/FTLSaveRestore.h:
  • ftl/FTLThunks.cpp:

(JSC::FTL::genericGenerationThunkGenerator):
(JSC::FTL::slowPathCallThunkGenerator):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::restoreCalleeSavesFromEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::copyCalleeSavesToEntryFrameCalleeSavesBufferImpl):
(JSC::AssemblyHelpers::emitSave):
(JSC::AssemblyHelpers::emitRestore):
(JSC::AssemblyHelpers::emitSaveCalleeSavesFor):
(JSC::AssemblyHelpers::emitRestoreCalleeSavesFor):
(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::emitSaveOrCopyLLIntBaselineCalleeSavesFor):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyLLIntBaselineCalleeSavesFromFrameOrRegisterToEntryFrameCalleeSavesBuffer):
(JSC::AssemblyHelpers::emitSave): Deleted.
(JSC::AssemblyHelpers::emitRestore): Deleted.
(JSC::AssemblyHelpers::emitSaveOrCopyCalleeSavesFor): Deleted.

  • jit/AssemblyHelpersSpoolers.h: Added.

(JSC::AssemblyHelpers::Spooler::Spooler):
(JSC::AssemblyHelpers::Spooler::handleGPR):
(JSC::AssemblyHelpers::Spooler::finalizeGPR):
(JSC::AssemblyHelpers::Spooler::handleFPR):
(JSC::AssemblyHelpers::Spooler::finalizeFPR):
(JSC::AssemblyHelpers::Spooler::op):
(JSC::AssemblyHelpers::LoadRegSpooler::LoadRegSpooler):
(JSC::AssemblyHelpers::LoadRegSpooler::loadGPR):
(JSC::AssemblyHelpers::LoadRegSpooler::finalizeGPR):
(JSC::AssemblyHelpers::LoadRegSpooler::loadFPR):
(JSC::AssemblyHelpers::LoadRegSpooler::finalizeFPR):
(JSC::AssemblyHelpers::LoadRegSpooler::handlePair):
(JSC::AssemblyHelpers::LoadRegSpooler::handleSingle):
(JSC::AssemblyHelpers::StoreRegSpooler::StoreRegSpooler):
(JSC::AssemblyHelpers::StoreRegSpooler::storeGPR):
(JSC::AssemblyHelpers::StoreRegSpooler::finalizeGPR):
(JSC::AssemblyHelpers::StoreRegSpooler::storeFPR):
(JSC::AssemblyHelpers::StoreRegSpooler::finalizeFPR):
(JSC::AssemblyHelpers::StoreRegSpooler::handlePair):
(JSC::AssemblyHelpers::StoreRegSpooler::handleSingle):
(JSC::RegDispatch<GPRReg>::get):
(JSC::RegDispatch<GPRReg>::temp1):
(JSC::RegDispatch<GPRReg>::temp2):
(JSC::RegDispatch<GPRReg>::regToStore):
(JSC::RegDispatch<GPRReg>::invalid):
(JSC::RegDispatch<GPRReg>::regSize):
(JSC::RegDispatch<GPRReg>::isValidLoadPairImm):
(JSC::RegDispatch<GPRReg>::isValidStorePairImm):
(JSC::RegDispatch<FPRReg>::get):
(JSC::RegDispatch<FPRReg>::temp1):
(JSC::RegDispatch<FPRReg>::temp2):
(JSC::RegDispatch<FPRReg>::regToStore):
(JSC::RegDispatch<FPRReg>::invalid):
(JSC::RegDispatch<FPRReg>::regSize):
(JSC::RegDispatch<FPRReg>::isValidLoadPairImm):
(JSC::RegDispatch<FPRReg>::isValidStorePairImm):
(JSC::AssemblyHelpers::CopySpooler::Source::getReg):
(JSC::AssemblyHelpers::CopySpooler::CopySpooler):
(JSC::AssemblyHelpers::CopySpooler::temp1 const):
(JSC::AssemblyHelpers::CopySpooler::temp2 const):
(JSC::AssemblyHelpers::CopySpooler::regToStore):
(JSC::AssemblyHelpers::CopySpooler::invalid):
(JSC::AssemblyHelpers::CopySpooler::regSize):
(JSC::AssemblyHelpers::CopySpooler::isValidLoadPairImm):
(JSC::AssemblyHelpers::CopySpooler::isValidStorePairImm):
(JSC::AssemblyHelpers::CopySpooler::load):
(JSC::AssemblyHelpers::CopySpooler::move):
(JSC::AssemblyHelpers::CopySpooler::copy):
(JSC::AssemblyHelpers::CopySpooler::store):
(JSC::AssemblyHelpers::CopySpooler::flush):
(JSC::AssemblyHelpers::CopySpooler::loadGPR):
(JSC::AssemblyHelpers::CopySpooler::copyGPR):
(JSC::AssemblyHelpers::CopySpooler::moveConstant):
(JSC::AssemblyHelpers::CopySpooler::storeGPR):
(JSC::AssemblyHelpers::CopySpooler::finalizeGPR):
(JSC::AssemblyHelpers::CopySpooler::loadFPR):
(JSC::AssemblyHelpers::CopySpooler::copyFPR):
(JSC::AssemblyHelpers::CopySpooler::storeFPR):
(JSC::AssemblyHelpers::CopySpooler::finalizeFPR):
(JSC::AssemblyHelpers::CopySpooler::loadPair):
(JSC::AssemblyHelpers::CopySpooler::storePair):

  • jit/ScratchRegisterAllocator.cpp:

(JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
(JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):
(JSC::ScratchRegisterAllocator::preserveRegistersToStackForCall):
(JSC::ScratchRegisterAllocator::restoreRegistersFromStackForCall):

  • jit/ScratchRegisterAllocator.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::addReturn):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addReturn):

5:06 PM Changeset in webkit [279255] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Source/WebCore:
Crash in IDBTransaction::dispatchEvent when m_openDBRequest is null.
https://bugs.webkit.org/show_bug.cgi?id=226885

Patch by Venky Dass <yaranamavenkataramana@apple.com> on 2021-06-24
Reviewed by Sihui Liu.

Added a test to create null openDBRequest so that it can crash.

Test: storage/indexeddb/request-with-null-open-db-request.html

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::dispatchEvent):

LayoutTests:
Crash in IDBTransaction::dispatchEvent when m_openDBRequest is null.
https://bugs.webkit.org/show_bug.cgi?id=226885

Patch by Venky Dass <yaranamavenkataramana@apple.com> on 2021-06-24
Reviewed by Sihui Liu.

  • storage/indexeddb/request-with-null-open-db-request-expected.txt: Added.
  • storage/indexeddb/request-with-null-open-db-request.html: Added.
4:55 PM Changeset in webkit [279254] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Crash in WebFrameLoaderClient::dispatchDidStartProvisionalLoad after provisionalLoader is gone.
https://bugs.webkit.org/show_bug.cgi?id=226979

Patch by Venky Dass <yaranamavenkataramana@apple.com> on 2021-06-24
Reviewed by Ryosuke Niwa.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):

4:47 PM Changeset in webkit [279253] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for ARM64
https://bugs.webkit.org/show_bug.cgi?id=227201

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::cageWithoutUntagging):
(JSC::AssemblyHelpers::cageConditionallyAndUntag):

4:12 PM Changeset in webkit [279252] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebKit

[GPU Process] RELEASE_ASSERT in RemoteResourceCacheProxy::didFinalizeRenderingUpdate() may fire if GPUP is relaunched
https://bugs.webkit.org/show_bug.cgi?id=227229
<rdar://79147947>

Reviewed by Myles C. Maxfield.

When the GPUP is relaunched remoteResourceCacheWasDestroyed() clears
m_fontIdentifierToLastRenderingUpdateVersionMap but it does not reset
m_numberOfFontsUsedInCurrentRenderingUpdate. This will make it always
greater than m_fontIdentifierToLastRenderingUpdateVersionMap.size().
And this is why the assertion fires.

  • WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:

(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):

4:11 PM Changeset in webkit [279251] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[ANGLE Metal] - Set barriers on transform feedback buffers only up to the in use buffer count
https://bugs.webkit.org/show_bug.cgi?id=227272
<rdar://79587861>

Patch by John Cunningham <johncunningham@apple.com> on 2021-06-24
Reviewed by Dean Jackson.

  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::onEndTransformFeedback):

4:07 PM Changeset in webkit [279250] by jer.noble@apple.com
  • 4 edits
    5 adds in trunk

[Cocoa] Last few seconds of 'audio/webm; codecs=vorbis' appended to a SampleBuffer are not played
https://bugs.webkit.org/show_bug.cgi?id=226069
<rdar://78004793>

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac-bigsur/media/media-source/media-vorbis-partial.html

When parsing samples from a WebM file, the samples emitted by the parser can be very short in
duration, which is ineffecient both in storage costs in our SampleMap, as well as in decoding
CPU costs, as each sample must be fed into the decoder separately. So the parser will group
together these small samples into a larger "meta sample" with a duration no shorter than 2s.

However, at the end of a file, no more sample data will be appended, up to 2s of audio data
will not be emitted from the parser.

At the end of an append, always flush audio track data to ensure that all parsed samples are
emitted, regardless of their collective duration.

Drive-by Fixes:

  • createSampleBuffer() would completely empty m_packetData, which would corrupt the parser state in the case where there was partial frame data read (because that partial data would be cleared) Instead, remove only the data from the m_packetData that actually went into the CMSampleBuffer
  • createSampleBuffer() would use the entire m_packetData to create a CMSampleBuffer, even if partial data was read but not yet complete. Only use the fully parsed data to create the CMSampleBuffer.
  • consumeFrameData() would only increase the size of m_packetData when m_currentPacketSize was unset, which would leave the buffer zeroed when partial sample data was present. Always grow m_packetData to be large enough to receive the read data.
  • The Read() method would not return the correct number of bytes read (0) when a null destination buffer was passed in.
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::AudioTrackData::consumeFrameData):
(WebCore::SourceBufferParserWebM::AudioTrackData::createSampleBuffer):

LayoutTests:

  • platform/mac/TestExpectations:
  • platform/mac/media/media-source/content/test-vorbis-manifest.json: Added.
  • platform/mac/media/media-source/content/test-vorbis.webm: Added.
  • platform/mac/media/media-source/media-vorbis-partial-expected.txt: Added.
  • platform/mac/media/media-source/media-vorbis-partial.html: Added.
3:50 PM Changeset in webkit [279249] by commit-queue@webkit.org
  • 7 edits in trunk/Source/JavaScriptCore

Add a new pattern to instruction selector to utilize BFI supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=227201

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

Bitfield insert(BFI), leaving other bits unchanged. The instruction selector
can utilize this to lowering certain patterns in B3 IR before further Air
optimization. Given the operation:

bfi d, n, lsb, width

The equivalent pattern would be:

Pattern 1:

mask1 = ((1 << width) - 1) << lsb
mask2 = ~mask1
d = ((n << lsb) & mask1) | (d & mask2);

Pattern 2:

mask1 = (1 << width) - 1
mask2 = ~(mask1 << lsb)
d = ((n & mask1) << lsb) | (d & mask2)

Current optimizer already has the strength reduction rule:

Turn This: (n << lsb) & mask1)
Into This: (n & mask1) << lsb)

Then, d = ((n & mask1) << lsb) | (d & mask2) is the canonical form.

With constraints:

  1. 0 <= lsb < datasize
  2. 0 < width < datasize
  3. lsb + width <= dataszie

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = ArgumentReg(%x1)
Int @2 = lsb
Int @3 = mask
Int @4 = BitAnd(@1, @3)
Int @5 = Shl(@4, @2)
Int @6 = BitOr(@0, @5)
Int @7 = Return(@6, Terminal)

Before Adding BFI:
Old optimized AIR
And mask, %x1, %x1, @4
Lshift %x1, lsb, %x1, @5
Or %x1, %x0, %x0, @6
Ret %x0, @7

After Adding BFI:
New optimized AIR
BitFieldInsert %x1, lsb, width, %x0, @6
Ret %x0, @7

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::bitFieldInsert32):
(JSC::MacroAssemblerARM64::bitFieldInsert64):

  • assembler/testmasm.cpp:

(JSC::testUbfx32):
(JSC::testUbfx64):
(JSC::testUbfiz32):
(JSC::testUbfiz64):
(JSC::testBitFieldInsert32):
(JSC::testBitFieldInsert64):

  • b3/B3LowerToAir.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(testBitFieldInsert32):
(testBitFieldInsert64):
(addBitTests):

3:45 PM Changeset in webkit [279248] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix WKDownloadDelegate header doc
https://bugs.webkit.org/show_bug.cgi?id=227378

Reviewed by Brady Eidson.

This removes the following sentence:
"If this is a download of a blob URL, response will be null."
This was correct in an earlier iteration of the implementation of this API, but is now incorrect
and verified by the WKDownload.BlobResponse API test.

  • UIProcess/API/Cocoa/WKDownloadDelegate.h:
3:12 PM Changeset in webkit [279247] by Kate Cheney
  • 5 edits in trunk

WKWebView loadSimulatedRequest does not set attribution value for url requests within html content
https://bugs.webkit.org/show_bug.cgi?id=227266
<rdar://problem/79316911>

Reviewed by Brent Fulgham.

Source/WebKit:

We currently pass the attribution value from the main NSURLRequest
passed into WebPageProxy::loadRequest by setting a value on the WebPage
document loader that gets passed to all requests initiated by that main
navigation. This patch adds the same functionality for
WebPageProxy::loadSimulatedRequest, which could initiate URL requests
from HTML content.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadSimulatedRequest):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadSimulatedRequestAndResponse):

Tools:

API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
3:10 PM Changeset in webkit [279246] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.20

Tag Safari-612.1.20.

2:41 PM Changeset in webkit [279245] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

[watchOS] Automatically apply system minimum layout margins as scroll view content insets
https://bugs.webkit.org/show_bug.cgi?id=227178
rdar://76784095

Reviewed by Tim Horton.

Respect -[UIViewController systemMinimumLayoutMargins] on watchOS by treating them in a similar way as safe
area insets, such that we avoid laying out parts of the web page within these margins unless the page's meta
viewport specifies viewport-fit=cover. On watch, avoiding these layout margins is crucial.

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _computedObscuredInsetForSafeBrowsingWarning]):
(-[WKWebView _contentInsetsFromSystemMinimumLayoutMargins]):

Add a helper method to compute the amount of additional content inset we need to apply to the scroll view in
order for content to fit within WKWebView's view controller's -systemMinimumLayoutMargins. Note that this
accounts for cases where the web view's frame is already inset relative to the view controller's content view.

(-[WKWebView _computedObscuredInset]):
(-[WKWebView _computedContentInset]):

Unconditionalize a few codepaths that apply obscured and content insets by consulting
-_scrollViewSystemContentInset.

(-[WKWebView _computedUnobscuredSafeAreaInset]):

On watchOS, we augment safe area insets, such that they include _contentInsetsFromSystemMinimumLayoutMargins
as well.

(-[WKWebView activeViewLayoutSize:]):
(-[WKWebView _updateScrollViewContentInsetsIfNecessary]):

Add a helper method that (on watchOS only) updates WKScrollView's content scroll insets such that the web page
fits inside -systemMinimumLayoutMargins. See WKScrollView changes below for more details.

(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _setAvoidsUnsafeArea:]):

Update scroll view content insets on watchOS if the viewport-fit state changes. Additionally make sure that we
also update the active layout size if the insets actually change (without this tweak, when dynamically adding
viewport-fit=cover, we'll end up in a state where the content size is still narrow to account for the old
content scroll insets, but the new content scroll insets are set, so the web page apears misaligned relative to
the scroll view).

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

(-[WKScrollView _setContentScrollInset:]):
(-[WKScrollView _setContentScrollInsetInternal:]):

Add an internal method for setting -[UIScrollView _contentScrollInset] that defers to the embedding client.
This means WKWebView clients that use webView.scrollView.contentScrollInset = myInset; will override the above
behavior in -_updateScrollViewContentInsetsIfNecessary, but otherwise, the content scroll insets will be
automatically computed and set in order to avoid minimum layout margins if needed.

Note that this also returns a BOOL indicating whether the inset was updated.

(-[WKScrollView _updateContentScrollInset]):

2:38 PM Changeset in webkit [279244] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Improve release logging in WebProcessProxy
https://bugs.webkit.org/show_bug.cgi?id=227374

Reviewed by Geoffrey Garen.

Improve release logging in WebProcessProxy:

  • Add more logging
  • Use more consistent logging format to faciliate grep'ing
  • Always include pointer and PID in the logging
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::enableProcessTermination):
(WebKit::WebProcessPool::disableProcessTermination):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::setIsInProcessCache):
(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::addProvisionalPageProxy):
(WebKit::WebProcessProxy::removeProvisionalPageProxy):
(WebKit::WebProcessProxy::processWillShutDown):
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::markIsNoLongerInPrewarmedPool):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::checkURLReceivedFromWebProcess):
(WebKit::WebProcessProxy::gpuProcessExited):
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
(WebKit::WebProcessProxy::didBecomeUnresponsive):
(WebKit::WebProcessProxy::didBecomeResponsive):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
(WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
(WebKit::WebProcessProxy::fetchWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::sendPrepareToSuspend):
(WebKit::WebProcessProxy::sendProcessDidResume):
(WebKit::WebProcessProxy::didSetAssertionType):
(WebKit::WebProcessProxy::updateAudibleMediaAssertions):
(WebKit::WebProcessProxy::setIsHoldingLockedFiles):
(WebKit::WebProcessProxy::processTerminated):
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedCPULimit):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
(WebKit::WebProcessProxy::incrementSuspendedPageCount):
(WebKit::WebProcessProxy::decrementSuspendedPageCount):
(WebKit::WebProcessProxy::processPoolIfExists const):
(WebKit::WebProcessProxy::startBackgroundActivityForFullscreenInput):
(WebKit::WebProcessProxy::endBackgroundActivityForFullscreenInput):
(WebKit::WebProcessProxy::establishServiceWorkerContext):
(WebKit::WebProcessProxy::updateServiceWorkerProcessAssertion):
(WebKit::WebProcessProxy::registerServiceWorkerClientProcess):
(WebKit::WebProcessProxy::unregisterServiceWorkerClientProcess):
(WebKit::WebProcessProxy::disableServiceWorkers):
(WebKit::WebProcessProxy::enableServiceWorkers):

12:33 PM Changeset in webkit [279243] by guijemont@igalia.com
  • 2 edits
    1 delete in trunk/JSTests

Improve our checking of NaN values in DataView tests
https://bugs.webkit.org/show_bug.cgi?id=227347

Reviewed by Yusuke Suzuki.

This allows the merging of dataview-jit-set-nan.js and
dataview-jit-set.js.

  • stress/dataview-jit-set-nan.js: Removed.
  • stress/dataview-jit-set.js:

(test5):
(test6):

12:14 PM Changeset in webkit [279242] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Unreviewed, reverting r275633.
https://bugs.webkit.org/show_bug.cgi?id=227373

Revert to see if this was the cause for some crashes seen
lately

Reverted changeset:

"Reduce Vector<> wasted capacity in some RuleSet code"
https://bugs.webkit.org/show_bug.cgi?id=224160
https://trac.webkit.org/changeset/275633

12:07 PM Changeset in webkit [279241] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Add release logging in the WebPage constructor / destructor
https://bugs.webkit.org/show_bug.cgi?id=227361

Reviewed by Geoffrey Garen.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::~WebPage):

11:49 AM Changeset in webkit [279240] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use <cmath> instead of <math.h>
https://bugs.webkit.org/show_bug.cgi?id=225856

This is needed to avoid ambiguity between abs and std::abs observed on
vanilla clang 7.1.0.

Patch by Dmitry Kalinkin <dmitry.kalinkin+webkit@gmail.com> on 2021-06-24
Reviewed by Fujii Hironori.

  • platform/graphics/ColorComponents.h:
11:27 AM Changeset in webkit [279239] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer] Unreviewed Test gardening, webrtc/peer-connection-remote-audio-mute* are no longer failing
https://bugs.webkit.org/show_bug.cgi?id=221504

These tests pass as of r277175.
Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-24

  • platform/glib/TestExpectations:
11:24 AM Changeset in webkit [279238] by Darin Adler
  • 6 edits in trunk

CSS parser does not handle unpaired surrogates correctly
https://bugs.webkit.org/show_bug.cgi?id=227357

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-syntax/input-preprocessing-expected.txt:

Expect tests to pass instead of fail.

Source/WebCore:

Tests: imported/w3c/web-platform-tests/css/css-syntax/input-preprocessing.html

  • bindings/js/JSDOMConvertStrings.cpp:

(WebCore::stringToUSVString): Made non-inline to be used outside this file.

  • bindings/js/JSDOMConvertStrings.h: Added stringToUSVString.
  • css/parser/CSSTokenizer.cpp:

(WebCore::preprocessString): Call stringToUSVString to convert unpaired
surrogates to replacement characters.

10:49 AM Changeset in webkit [279237] by sihui_liu@apple.com
  • 5 edits in trunk

IndexedDB prints error log about blob files when there is no error
https://bugs.webkit.org/show_bug.cgi?id=227092

Reviewed by Chris Dumez.

Source/WebCore:

We should try opening database if file exists, and try getting blob files only if database is opened.

API test: IndexedDB.StoreBlobThenDeleteDatabase

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/StoreBlobThenDelete.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/StoreBlobToBeDeleted.html:
10:38 AM Changeset in webkit [279236] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Fix incorrect version check in the WebContent process' sandbox
https://bugs.webkit.org/show_bug.cgi?id=227346
<rdar://79589961>

Reviewed by Alexey Proskuryakov.

  • WebProcess/com.apple.WebProcess.sb.in:
10:29 AM Changeset in webkit [279235] by achristensen@apple.com
  • 5 edits in trunk/LayoutTests/imported/w3c

Fix URL test expectations after r279234
https://bugs.webkit.org/show_bug.cgi?id=227321

That revision was a mistake. I took the expected from the bots instead of the actual.
This should actually update the expectations.

  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:
10:19 AM Changeset in webkit [279234] by achristensen@apple.com
  • 5 edits in trunk/LayoutTests/imported/w3c

Fix URL test expectations after r279211
https://bugs.webkit.org/show_bug.cgi?id=227321

The process of moving and committing did something strange to the invalid UTF-16 sequences.
This should fix the bots.

  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:
10:10 AM Changeset in webkit [279233] by Chris Dumez
  • 5 edits
    7 adds
    2 deletes in trunk/LayoutTests/imported/w3c

Resync eventsource WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227324

Reviewed by Alex Christensen.

Resync eventsource WPT tests from upstream a38612f39e7752c353.

  • web-platform-tests/eventsource/*: Updated.
9:44 AM Changeset in webkit [279232] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[WPE] Uninstalled Cog now requires a COG_MODULEDIR environment variable
https://bugs.webkit.org/show_bug.cgi?id=227351

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-24
Reviewed by Adrian Perez de Castro.

Renamed the cog_path() method to cog_path_to() which requires a file_or_directory argument.
This is useful when setting the COG_MODULEDIR environment variable.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.cog_path_to):
(WPEPort.browser_name):
(WPEPort.browser_env):
(WPEPort.run_minibrowser):
(WPEPort.cog_path): Deleted.

9:29 AM Changeset in webkit [279231] by Chris Dumez
  • 5 edits in trunk/LayoutTests/imported/w3c

(r279211) introduced 4 failing web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=227355
<rdar://problem/79728204>

Unreviewed, rebaseline a few WPT url tests after resync in r279211.

  • web-platform-tests/url/url-constructor.any-expected.txt:
  • web-platform-tests/url/url-constructor.any.worker-expected.txt:
  • web-platform-tests/url/url-origin.any-expected.txt:
  • web-platform-tests/url/url-origin.any.worker-expected.txt:
9:28 AM Changeset in webkit [279230] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[iOS] Allow network-outbound logging for internal builds
https://bugs.webkit.org/show_bug.cgi?id=227332
<rdar://problem/79669627>

Reviewed by Per Arne Vollan.

We allow network-outbound for /private/var/run/syslog in the WebContent process for debugging
purposes on internal OS images. We should do the same for our other processes to avoid noisy logging.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
8:49 AM Changeset in webkit [279229] by Ruben Turcios
  • 2 edits in branches/safari-612.1.20-branch/Source/WebKit

Cherry-pick r279210. rdar://problem/79726355

REGRESSION(r278970): A CATransaction commitHandler should not execute a client callback
https://bugs.webkit.org/show_bug.cgi?id=227318
<rdar://79625962>

Reviewed by Tim Horton.

In takeSnapshotWithConfiguration() we call callSnapshotRect() inside the
callback of [CATransaction addCommitHandler].

callSnapshotRect() calls the client callback which may call directly or
indirectly addCommitHandler. But it is prohibited by CA to add a commit
handler while processing a registered commit handler.

The fix is to postpone calling callSnapshotRect() till CATransaction
processes all its commit handler callbacks.

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

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

8:37 AM Changeset in webkit [279228] by Chris Dumez
  • 222 edits
    65 copies
    9 moves
    74 adds
    55 deletes in trunk/LayoutTests

Resync websockets WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227317

Reviewed by Alex Christensen.

Resync websockets WPT tests from upstream a38612f39e7752c3532080c.

  • web-platform-tests/websockets/*: Updated.
8:33 AM Changeset in webkit [279227] by Chris Dumez
  • 13 edits
    16 adds in trunk/LayoutTests/imported/w3c

Resync custom-elements WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227330

Reviewed by Alex Christensen.

Resync custom-elements WPT tests from upstream a38612f39e7752c353.

  • web-platform-tests/custom-elements/*: Updated.
8:31 AM Changeset in webkit [279226] by Chris Dumez
  • 5 edits
    3 adds in trunk/LayoutTests/imported/w3c

Resync WebIDL WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227322

Reviewed by Alex Christensen.

Resync WebIDL WPT tests from upstream a38612f39e7752c353.

  • web-platform-tests/WebIDL/*: Updated.
8:23 AM Changeset in webkit [279225] by Chris Dumez
  • 75 edits
    3 adds
    6 deletes in trunk/LayoutTests

Resync shadow-dom WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227331

Reviewed by Alex Christensen.

Resync shadow-dom WPT tests from upstream a38612f39e7752c353.

  • web-platform-tests/shadow-dom/*: Updated.
8:19 AM Changeset in webkit [279224] by Chris Dumez
  • 5 edits
    4 moves
    8 adds
    25 deletes in trunk/LayoutTests

Resync beacon WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227323

Reviewed by Alex Christensen.

Resync beacon WPT tests from upstream a38612f39e7752c353.

  • web-platform-tests/beacon/*: Updated.
8:04 AM Changeset in webkit [279223] by emilio
  • 6 edits
    4 adds in trunk/LayoutTests/imported/w3c

Update some html pseudo-class tests.
https://bugs.webkit.org/show_bug.cgi?id=225851

Reviewed by Manuel Rego Casasnovas.

Generated by ./Tools/Scripts/import-w3c-tests web-platform-tests/html/semantics/selectors -t, plus the relevant expectation update.

  • resources/import-expectations.json:
  • web-platform-tests/html/semantics/selectors/META.yml:
  • web-platform-tests/html/semantics/selectors/pseudo-classes/autofill-expected.txt: Added.
  • web-platform-tests/html/semantics/selectors/pseudo-classes/autofill.html: Added.
  • web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone-expected.txt: Added.
  • web-platform-tests/html/semantics/selectors/pseudo-classes/invalid-after-clone.html: Added.
  • web-platform-tests/html/semantics/selectors/pseudo-classes/link-expected.txt:
  • web-platform-tests/html/semantics/selectors/pseudo-classes/link.html:
  • web-platform-tests/html/semantics/selectors/pseudo-classes/w3c-import.log:
7:59 AM Changeset in webkit [279222] by commit-queue@webkit.org
  • 2 edits in trunk

REGRESSION(r236846): WPE shouldn't depend on OpenGL ES 3
https://bugs.webkit.org/show_bug.cgi?id=227289

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

  • Source/cmake/OptionsWPE.cmake: Drop the OpenGLES2 package search.

None of the possible versions are meaningful because libepoxy is used
as the underlying GL relay.

7:38 AM Changeset in webkit [279221] by commit-queue@webkit.org
  • 41 edits
    3 copies
    1 add in trunk/Source

Using a video as a source for a WebGL texture is slow and hangs on iOS 15
https://bugs.webkit.org/show_bug.cgi?id=227081

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-24
Reviewed by Eric Carlson.

Source/WebCore:

Video frame transfer from GPU process to Web process would fail when
WebGL tried to copy the video frame to a texture. The failure was
artificial, due to use of WebCore::IOSurface as a unneeeded helper
to convert CVPixelBufferRef to cross-process object.

This would cause performance regression when WebGL would
fall back to software conversion fallback. This callback did work
as it obtains the image through "get last frame as native image"
API.

  • platform/cocoa/CoreVideoSoftLink.cpp:
  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm:

Remove CVPixelBufferRef -> WebCore::IOSurface conversion function.
Remove WebCore::IOSurface -> CVPixelBufferRef conversion function.
These were used in WebKit IPC serialization for CVPixelBufferRef.
However, this is incorrect behavior as CVPixelBufferRef
is not always compatible with WebCore::IOSurface. IOSurfaceRef
has always a destination color space. This would be missing from
CVPixelBufferRef. The code is moved to the IPC serialization
functions.

Source/WebKit:

In current form, media is decoded in GPU process and WebGL is processed
in Web process.

Video frame transfer from GPU process to Web process would fail when
WebGL tried to copy the video frame to a texture. The failure was
artificial, due to use of WebCore::IOSurface as a unneeeded helper
to convert CVPixelBufferRef to a cross-process object.

The failure would occur when AVPlayerItemVideoOutput
would generate a CVPixelBufferRef without color space information. Creating
WebCore::IOSurface out of this would fail. WebCore::IOSurface
has always a color space. The failure is not significant, as WebCore::IOSurface
was only used as a convenience.

This would cause performance regression when WebGL would
fall back to software conversion fallback. This callback did work
as it obtains the image through "get last frame as native image"
API.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:

Use the correct type of object in the IPC messages:
Function PixelBufferForCurrentTime returns CVPixelBufferRef
so use that type instead of MachPort. It is an implementation
detail of CVPixelBufferRef encode/decode how the object
transfer is implemented.

The type of transfer must be RetainPtr<CVPixelBufferRef> as that
is how the IPC system operates wrt input, output and "storage"
types. This is the same as with IPC support for RefPtr<> types.

No tests as Sources/WebKit is not unit-testable ATM.

  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::pixelBufferForCurrentTime):
Change the receive side according to the message type change.

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):
(class_template_headers):
Add support for RetainPtr in the IPC message language.

  • Scripts/webkit/messages_unittest.py:
  • Scripts/webkit/tests/Makefile:
  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:

(IPC::jsValueForArguments):
(IPC::messageArgumentDescriptions):

  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:
  • Scripts/webkit/tests/TestWithCVPixelBuffer.messages.in: Added.
  • Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp: Added.

(WebKit::TestWithCVPixelBuffer::didReceiveMessage):
(WebKit::TestWithCVPixelBuffer::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithCVPixelBufferMessages.h: Copied from Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessagesReplies.h.

(Messages::TestWithCVPixelBuffer::messageReceiverName):
(Messages::TestWithCVPixelBuffer::SendCVPixelBuffer::name):
(Messages::TestWithCVPixelBuffer::SendCVPixelBuffer::SendCVPixelBuffer):
(Messages::TestWithCVPixelBuffer::SendCVPixelBuffer::arguments const):
(Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::name):
(Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::arguments const):

  • Scripts/webkit/tests/TestWithCVPixelBufferMessagesReplies.h: Copied from Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessagesReplies.h.
  • Scripts/webkit/tests/TestWithSuperclassMessagesReplies.h:

Add code generation examples for IPC implemetation regarding transferring
RetainPtr<CVPixelBufferRef>.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<RetainPtr<CVPixelBufferRef>>::encode):
(IPC::ArgumentCoder<RetainPtr<CVPixelBufferRef>>::decode):

  • Shared/WebCoreArgumentCoders.h:

Move the CVPixelBufferRef transfer code from IOSurface
to the IPC layer.
The encode function must be of type RetainPtr<CVPixelBufferRef> instead of
CVPixelBufferRef, in contrast to existing RetainPtr<CF*> types.
The existing RetainPtr<CF*> types are not used as IPC message inputs,
only as subobjects. The IPC message language does not have concept of
encode type differing from decode type.

  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::pixelBufferForCurrentTime):
Change the send side according to the message type change.

6:49 AM Changeset in webkit [279220] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[IFC][Integration] Text selection flashing to end of paragraph
https://bugs.webkit.org/show_bug.cgi?id=227158
<rdar://79138828>

Reviewed by Antti Koivisto.

Source/WebCore:

The "find the line for this position" code in RenderText::positionForPoint() expects adjoining lines boxes (i.e. no gaps between the lines). This function is called by hittesting as part of the text selection process.
This patch implements the legacy behavior by

  1. expanding the "selection top" all the way to the (selection)bottom of the previous line.
  2. ensures that the first line's computed offset is ignored when the containing block has no border/padding.

Test: fast/events/touch/ios/hidpi-selection-when-content-is-on-subpixel.html

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::selectionTop const):
(WebCore::LayoutIntegration::LineIteratorModernPath::selectionTopForHitTesting const):

LayoutTests:

  • fast/events/touch/ios/drag-to-autoscroll-in-single-line-editable.html:
  • fast/events/touch/ios/hidpi-selection-when-content-is-on-subpixel-expected.txt: Added.
  • fast/events/touch/ios/hidpi-selection-when-content-is-on-subpixel.html: Added.
4:43 AM Changeset in webkit [279219] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Unskip arguments-properties-order.js on MIPS
https://bugs.webkit.org/show_bug.cgi?id=227254

No failures after 50 iterations. Also tested on Loongson 3A4000 (in 32-bits mode).

Unreviewed Gardening.

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-24

  • stress/arguments-properties-order.js:
3:49 AM Changeset in webkit [279218] by Martin Robinson
  • 67 edits in trunk

[css-scroll-snap] Remove ENABLE_SCROLL_SNAP compile-time option
https://bugs.webkit.org/show_bug.cgi?id=227067

Reviewed by Simon Fraser.

Remove compile-time ENABLE_SCROLL_SNAP configuration option.

.:

  • Source/cmake/WebKitFeatures.cmake: Remove the flag from the CMake configuration.

Source/WebCore:

No new tests. This should not change behavior in any way.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSPrimitiveValueMappings.h:
  • css/CSSProperties.json:
  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseSingleValue):

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleWheelEventInAppropriateEnclosingBox):

  • page/FrameView.cpp:

(WebCore::FrameView::updateScrollingCoordinatorScrollSnapProperties const):
(WebCore::FrameView::performPostLayoutTasks):

  • page/FrameView.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::processWheelEventForScrollSnap):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::setStateScrollingNodeSnapOffsetsAsFloat):
(WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry):
(WebCore::AsyncScrollingCoordinator::updateScrollSnapPropertiesWithFrameView):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:
  • page/scrolling/ScrollSnapOffsetsInfo.h:
  • page/scrolling/ScrollingMomentumCalculator.cpp:
  • page/scrolling/ScrollingMomentumCalculator.h:
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::applicableProperties const):
(WebCore::ScrollingStateScrollingNode::setCurrentVerticalSnapPointIndex):
(WebCore::ScrollingStateScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeScrollingNode::dumpProperties const):
(WebCore::ScrollingTreeScrollingNode::setCurrentVerticalSnapPointIndex):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeDelegateMac::viewportSize const):

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp:

(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::handleWheelEvent):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator):
(WebCore::ScrollAnimator::~ScrollAnimator):
(WebCore::ScrollAnimator::scroll):
(WebCore::ScrollAnimator::resnapAfterLayout):
(WebCore::ScrollAnimator::handleWheelEvent):
(WebCore::ScrollAnimator::updateActiveScrollSnapIndexForOffset):
(WebCore::ScrollAnimator::notifyPositionChanged):
(WebCore::ScrollAnimator::pageScaleFactor const):
(WebCore::ScrollAnimator::scrollControllerAnimationTimerFired):
(WebCore::ScrollAnimator::adjustScrollOffsetForSnappingIfNeeded):

  • platform/ScrollAnimator.h:
  • platform/ScrollController.cpp:

(WebCore::ScrollController::usesScrollSnap const):
(WebCore::ScrollController::resnapAfterLayout):

  • platform/ScrollController.h:
  • platform/ScrollSnapAnimatorState.cpp:
  • platform/ScrollSnapAnimatorState.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::doPostThumbMoveSnapping):

  • platform/ScrollableArea.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::isScrollSnapInProgress const):
(WebCore::ScrollAnimatorMac::didBeginScrollGesture const):
(WebCore::ScrollAnimatorMac::didEndScrollGesture const):
(WebCore::gestureShouldBeginSnap):
(WebCore::ScrollAnimatorMac::allowsVerticalStretching const):
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching const):

  • platform/mac/ScrollController.mm:

(WebCore::ScrollController::stopAllTimers):
(WebCore::ScrollController::handleWheelEvent):
(WebCore::ScrollController::isScrollSnapInProgress const):
(WebCore::ScrollController::updateScrollSnapAnimatingState):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::willBeDestroyed):
(WebCore::RenderBox::styleWillChange):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateScrollSnapPropertiesWithFrameView const):

  • rendering/RenderLayerCompositor.h:
  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleDidChange):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::updateScrollInfoAfterLayout):
(WebCore::RenderLayerScrollableArea::isScrollSnapInProgress const):

  • rendering/RenderLayerScrollableArea.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::unregisterBoxWithScrollSnapPositions):

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

(WebCore::RenderStyle::changeRequiresLayout const):
(WebCore::RenderStyle::setScrollPaddingRight):
(WebCore::RenderStyle::hasSnapPosition const):

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

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/StyleScrollSnapPoints.h:
  • style/StyleBuilderConverter.h:
  • testing/Internals.cpp:

(WebCore::Internals::isScrollSnapInProgress):

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

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateScrollingNode>::encode):
(ArgumentCoder<ScrollingStateScrollingNode>::decode):
(WebKit::dump):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView scrollViewWillBeginDragging:]):
(-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
(-[WKWebView _updateVisibleContentRects]):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::resetStateAfterProcessExited):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h:

Source/WTF:

  • wtf/PlatformEnable.h: Remove the global feature definition.

Tools:

  • Scripts/webkitperl/FeatureList.pm: Remove the option from the list of features.
2:31 AM Changeset in webkit [279217] by eocanha@igalia.com
  • 9 edits
    1 add in trunk

[GTK] media/muted-video-is-playing-audio.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=208321

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Added setPageMediaVolume() API to set the Page mediaVolume. This was 0
by default and a way to set it to a non-zero value was needed in order
to prevent a zero effectiveVolume in HTMLMediaElement.

  • testing/Internals.cpp:

(WebCore::Internals::setPageMediaVolume): Set the Page mediaVolume.

  • testing/Internals.h: Added setPageMediaVolume().
  • testing/Internals.idl: Ditto.

Tools:

Set the WebKitTestRunnerWPE application name on user-agent to ease the
detection of the WPE port from the layout tests using the isWPE()
function in platform-helper.js.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformConfigureViewForTest): Set WebKitTestRunnerWPE application name on user-agent.

LayoutTests:

Changed the test to set a non-zero mediaVolume, because a zero one
(default value set by TestController::resetStateToConsistentValues())
would multiply any other volume in HTMLMediaElement::effectiveVolume(),
cause a zero effectiveVolume (being considered in practice as "no audio" by
HTMLMediaElement::mediaState()) and prevent the IsPlayingAudio MediaState
being set.

Also, adapted the test to still expect IsPlayingAudio after mute on the
glib ports (GTK & WPE), since on those ports a muted video is expected to
report IsPlayingAudio, as per the HTMLMediaElement::mediaState() source
code comments.

  • media/muted-video-is-playing-audio.html: Test changed as described above.
  • platform/glib/media/muted-video-is-playing-audio-expected.txt: Added expectation for glib port.
  • resources/platform-helper.js:

(isGtk): Clarified where the GTK user-agent string comes from.
(isWPE): New function to check if a WPE port is being used.

1:31 AM Changeset in webkit [279216] by commit-queue@webkit.org
  • 16 edits in trunk

[JSC] Implement returnEarlyFromInfiniteLoopsForFuzzing for 32bits
https://bugs.webkit.org/show_bug.cgi?id=227290

JSTests:

Patch by Xan Lopez <Xan Lopez> on 2021-06-24
Reviewed by Mark Lam.

Now that we can return early from infinite (actual or just
extremely long running) loops on 32bits, we can pass these tests.

  • stress/construct-return-early-from-infinite-loop-for-fuzzer.js: unskip for 32bits.
  • stress/early-return-from-builtin2.js: ditto.
  • stress/validate-does-gc-with-return-early-from-infinite-loop-2.js: ditto.
  • stress/validate-does-gc-with-return-early-from-infinite-loop.js: ditto.

Source/JavaScriptCore:

Patch by Xan López <Xan Lopez> on 2021-06-24
Reviewed by Mark Lam.

Mostly a matter of changing the counter type to uintptr_t and
making the baseline/dfg/ftl code generation work on both 32 and
64bits, most of it can be shared with minor tweaks.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileLoopHint):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_loop_hint):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter32_64.asm:
  • runtime/VM.cpp:

(JSC::VM::addLoopHintExecutionCounter):
(JSC::VM::getLoopHintExecutionCounter):

  • runtime/VM.h:
1:13 AM Changeset in webkit [279215] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION(r272882): [WPE][GTK] xdg-dbus-proxy may not be mounted in sandbox
https://bugs.webkit.org/show_bug.cgi?id=227294

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-24
Reviewed by Adrian Perez de Castro.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bubblewrapSpawn):

Note: See TracTimeline for information about the timeline view.