Timeline



Jun 29, 2021:

10:37 PM Changeset in webkit [279401] by ntim@apple.com
  • 23 edits
    1 add in trunk

Implement form[method=dialog]
https://bugs.webkit.org/show_bug.cgi?id=226172

Reviewed by Chris Dumez.

Marked relevant WPT as pass & unskipped relevant test.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/reflection-forms-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:

Source/WebCore:

  • html/HTMLFormControlElement.h:

(WebCore::HTMLFormControlElement::resultForDialogSubmit const):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit):
(WebCore::HTMLFormElement::submitDialog):

  • html/HTMLFormElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::resultForDialogSubmit const):

  • html/HTMLInputElement.h:
  • html/ImageInputType.cpp:

(WebCore::ImageInputType::resultForDialogSubmit const):

  • html/ImageInputType.h:
  • html/InputType.cpp:

(WebCore::InputType::resultForDialogSubmit const):

  • html/InputType.h:
  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::Attributes::parseMethodType):
(WebCore::FormSubmission::FormSubmission):
(WebCore::FormSubmission::create):
(WebCore::FormSubmission::populateFrameLoadRequest):
(WebCore::FormSubmission::requestURL const):

  • loader/FormSubmission.h:

(WebCore::FormSubmission::Attributes::methodString):
(WebCore::FormSubmission::data const):
(WebCore::FormSubmission::returnValue const):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • TestExpectations:
7:13 PM Changeset in webkit [279400] by Chris Dumez
  • 15 edits
    10 adds
    4 deletes in trunk/LayoutTests

Resync speech-api WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227503

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync speech-api WPT tests from upstream a38612f39e7752c353208.

  • web-platform-tests/speech-api/*: Updated.

LayoutTests:

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
7:12 PM Changeset in webkit [279399] by commit-queue@webkit.org
  • 1 edit
    2 deletes in trunk/LayoutTests

[GLIB] Unreviewed test gardening, update baselines after r279169
https://bugs.webkit.org/show_bug.cgi?id=227407

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

  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-none-block-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt: Removed.
6:09 PM Changeset in webkit [279398] by Chris Dumez
  • 16 edits
    1 copy
    13 adds in trunk/LayoutTests

Resync css/cssom WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227506

Reviewed by Sam Weinig.

Resync css/cssom WPT tests from upstream a38612f39e7752c353208.

  • resources/resource-files.json:
  • web-platform-tests/css/cssom/*: Updated.
5:14 PM Changeset in webkit [279397] by Devin Rousso
  • 2 edits in trunk/LayoutTests

5 media/modern-media-controls/* tests are failing constantly on Catalina
https://bugs.webkit.org/show_bug.cgi?id=227319
<rdar://problem/79693462>

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

Skip these tests on Catalina while the underlying issue is investigated.

5:09 PM Changeset in webkit [279396] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ BigSur ] webrtc/multi-audio.html is now flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=223043.

Unreviewed test gardnening.

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

  • platform/mac/TestExpectations:
4:51 PM Changeset in webkit [279395] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur WK1] imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v* is consistently failing.
https://bugs.webkit.org/show_bug.cgi?id=221300.

Unreviewed test gardening.

Updating prior test expectations.

  • platform/mac-wk1/TestExpectations:
4:49 PM Changeset in webkit [279394] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

Add new argument of device os version for reporting JavaScriptCore test result
https://bugs.webkit.org/show_bug.cgi?id=227363

Reviewed by Dewei Zhu.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload):

4:48 PM Changeset in webkit [279393] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove "function declared ‘static’ but never defined" build warnings since r278971.
https://bugs.webkit.org/show_bug.cgi?id=227436

This patch removes the build warnings below.
warning: ‘bool JSC::cannotBeIdentPartOrEscapeStart(LChar)’ declared ‘static’ but never defined [-Wunused-function]

Reviewed by Michael Catanzaro.

  • runtime/LiteralParser.cpp: Add definitions for cannotBeIdentPartOrEscapeStart.

(JSC::cannotBeIdentPartOrEscapeStart):

3:50 PM Changeset in webkit [279392] by graouts@webkit.org
  • 4 edits in trunk/Source

WebKit_iosmac build failure: SystemPreviewSPI.h:29:9: fatal error: 'AssetViewer/ARQuickLookWebKitItem.h' file not found
https://bugs.webkit.org/show_bug.cgi?id=227507
<rdar://problem/79902043>

Reviewed by Dean Jackson.

When we added new SPIs in Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h as part of r279312 we also included this file
from a new file that is compiled on Catalyst. This revealed an issue where existing SPIs included in that file weren't
actually available on Catalyst. We now make sure we compile those out on Catalyst.

Source/WebCore/PAL:

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:
3:25 PM Changeset in webkit [279391] by commit-queue@webkit.org
  • 4 edits in trunk

Encoding specified in the 'charset' attribute should have precedence over 'content' attribute
https://bugs.webkit.org/show_bug.cgi?id=227464

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-06-29
LayoutTests/imported/w3c:

Reviewed by Geoffrey Garen.

  • web-platform-tests/html/syntax/parsing/meta-inhead-insertion-mode-expected.txt:

Source/WebCore:

Reviewed by Geoffrey Garen.

Puts precedence on 'charset' attribute by breaking out of the parsing process.

This test passes Firefox and Chrome. Tested using
http://wpt.live/html/syntax/parsing/meta-inhead-insertion-mode.html

  • html/parser/HTMLMetaCharsetParser.cpp:

(WebCore::HTMLMetaCharsetParser::encodingFromMetaAttributes):

3:17 PM Changeset in webkit [279390] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Updating test expectations for webanimations/css-transition-retargeting-during-ready-promise.html
https://bugs.webkit.org/show_bug.cgi?id=215335

Unreviewed test gardening

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

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
3:04 PM Changeset in webkit [279389] by Chris Dumez
  • 104 edits
    2 copies
    3 moves
    55 adds
    8 deletes in trunk/LayoutTests

Resync service-worker WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227490

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync service-worker WPT tests from upstream a38612f39e7752c353208.

  • web-platform-tests/service-workers/*: Updated.

LayoutTests:

2:51 PM Changeset in webkit [279388] by Cameron McCormack
  • 2 edits in trunk/Source/WebKit

Don't null check destination in the RemoteRenderingBackend::nextDestinationImageBufferAfterApply main loop
https://bugs.webkit.org/show_bug.cgi?id=227475

Reviewed by Wenson Hsieh.

We already null check it and return early as part of the
MESSAGE_CHECK_WITH_RETURN_VALUE call just above.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

2:50 PM Changeset in webkit [279387] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: accessibility/table-title.html is a flaky timeout on BigSur wk2 Debug
https://bugs.webkit.org/show_bug.cgi?id=227504

Unreviewed test gardening

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

  • platform/mac-wk2/TestExpectations:
2:17 PM Changeset in webkit [279386] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur Release wk2 arm64] fast/css/sticky/sticky-left.html is a flaky image failure

https://bugs.webkit.org/show_bug.cgi?id=227467

Unreviewed test gardnening

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

  • platform/mac-wk2/TestExpectations:
2:03 PM Changeset in webkit [279385] by Chris Dumez
  • 80 edits
    4 moves
    77 adds
    6 deletes in trunk/LayoutTests

Resync IDL interfaces from upstream web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=227485

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync IDL interfaces from upstream web-platform-tests a38612f39e7752c353208.

  • web-platform-tests/content-security-policy/securitypolicyviolation/idlharness.window-expected.txt:
  • web-platform-tests/css/css-images/idlharness.html:
  • web-platform-tests/css/cssom/idlharness-expected.txt:
  • web-platform-tests/css/cssom/idlharness.html:
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.html: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.worker.html: Removed.
  • web-platform-tests/fetch/cors-rfc1918/w3c-import.log: Removed.
  • web-platform-tests/geolocation-API/idlharness.https.window-expected.txt:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • web-platform-tests/mediacapture-streams/idlharness.https.window-expected.txt:
  • web-platform-tests/mediacapture-streams/idlharness.https.window.js:

(async idl_array):

  • web-platform-tests/payment-request/idlharness.https.window-expected.txt:
  • web-platform-tests/pointerevents/idlharness.window-expected.txt:
  • web-platform-tests/uievents/idlharness.window-expected.txt:
  • web-platform-tests/wasm/jsapi/idlharness.any-expected.txt:
  • web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt:

Update / rebaseline a few tests due to IDL interface changes.

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

LayoutTests:

Rebaseline a few tests.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
2:01 PM Changeset in webkit [279384] by Chris Dumez
  • 2 edits
    2 adds in trunk/LayoutTests/imported/w3c

Resync intersection-observer WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227500

Reviewed by Sam Weinig.

Resync intersection-observer WPT tests from upstream a38612f39e7752c353208.

  • web-platform-tests/intersection-observer/target-is-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/target-is-root.html: Added.
  • web-platform-tests/intersection-observer/w3c-import.log:
1:36 PM Changeset in webkit [279383] by Darin Adler
  • 4 edits in trunk

CSS style sheets loaded by HTMLLinkElement do not fall back correctly when charset is an invalid encoding name
https://bugs.webkit.org/show_bug.cgi?id=227498

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-syntax/charset/page-windows-1251-charset-attribute-bogus-expected.txt:

Expect a pass instead of a fail.

Source/WebCore:

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process): Check for invalid text encoding names rather than
just empty string.

1:21 PM Changeset in webkit [279382] by commit-queue@webkit.org
  • 4 edits
    3 deletes in trunk

Unreviewed, reverting r279250.
https://bugs.webkit.org/show_bug.cgi?id=227499

Sometimes causes YouTube audio to cut out

Reverted changeset:

"[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
https://commits.webkit.org/r279250

12:27 PM Changeset in webkit [279381] by Jonathan Bedard
  • 3 edits
    2 adds in trunk/Tools

[webkitcorepy] Add NestedFuzzyDict
https://bugs.webkit.org/show_bug.cgi?id=227150
<rdar://problem/79475464>

Reviewed by Dewei Zhu.

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

(NestedFuzzyDict):
(NestedFuzzyDict.assert_valid_key): Ensure that the provided key is fuzz-able.
(NestedFuzzyDict.init): Construct the object the same way a dictionary is constructed.
(NestedFuzzyDict.getitem): Split provided keyname and fuzzy match the second part.
(NestedFuzzyDict.get): Ditto.
(NestedFuzzyDict.getitem): Return the complete keyname and value.
(NestedFuzzyDict.setitem): Add value to dictionary.
(NestedFuzzyDict.update): Given a dictionary, insert it's contents into this object.
(NestedFuzzyDict.keys): Iterate through all keys in the object.
(NestedFuzzyDict.values): Iterate through all values in the object.
(NestedFuzzyDict.items): Iterate through all key/value pairs in the object.
(NestedFuzzyDict.dict): Return a standard dictionary with the contents of this object.
(NestedFuzzyDict.repr):
(NestedFuzzyDict.str):

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/nested_fuzzy_dict_unittest.py: Added.

(TestNestedFuzzyDict):
(TestNestedFuzzyDict.test_constructor):
(TestNestedFuzzyDict.test_index):
(TestNestedFuzzyDict.test_get):
(TestNestedFuzzyDict.test_getitem):
(TestNestedFuzzyDict.test_set):
(TestNestedFuzzyDict.test_dict):

12:07 PM Changeset in webkit [279380] by commit-queue@webkit.org
  • 9 edits
    1 move in trunk

xhr.send(URLSearchParams) should align default Content-Type header field with Chrome and Firefox
https://bugs.webkit.org/show_bug.cgi?id=227477

Patch by Alex Christensen <achristensen@webkit.org> on 2021-06-29
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/setrequestheader-content-type-expected.txt:

Source/WebCore:

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):

  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:

LayoutTests:

  • platform/ios-wk2/TestExpectations:
  • platform/ios/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Added.
  • platform/mac/TestExpectations:
11:55 AM Changeset in webkit [279379] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix more -Wreturn-type warnings
https://bugs.webkit.org/show_bug.cgi?id=227497

Unreviewed. This is getting stupid.

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-29

  • page/EventHandler.cpp:

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

  • page/KeyboardScroll.cpp:

(WebCore::unitVectorForScrollDirection):

11:41 AM Changeset in webkit [279378] by commit-queue@webkit.org
  • 9 edits in trunk/Source/JavaScriptCore

Add a new pattern to instruction selector to use SBX and SBFIZ supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=227203

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

This patch includes two modifications:

  1. Introduce a strength reduction rule for sign extending bitfield.
  2. Add Signed Bitfield Extract (SBFX) and Signed Bitfield Insert in Zero (SBFIZ) to Air opcode to serve instruction selector.

### Part A Sign extending from a variable bit-width ###


According to Bit Twiddling Hacks, there are two ways to sign extend bitfield.
(https://graphics.stanford.edu/~seander/bithacks.html#VariableSignExtend)

int bf; sign extend this width-bit number to bfsx
int width;
number of bits representing the number in bf
int bfsx; resulting sign-extended number

Approach 1
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1)
bf = bf & mask1 zero bits in bf above position width
bfsx = (bf mask2) - mask2

Approach 2
amount = CHAR_BIT * sizeof(bf) - width
bfsx = (bf << amount) >> amount

Then, a new strength reduction rule is introduced:

Turn this: ((bf & mask1) mask2) - mask2
Into this: (bf << amount) >> amount


### Part B SBFX ###


Given instruction:
sbfx Rd, Rn, lsb, width

Signed Bitfield Extract (SBFX) extracts width number of adjacent bits at lsb position
from a register Rn, sign-extends them to the size of the register, and writes the
result to the destination register Rd.

The equivalent patterns of this instruction are:

Pattern 1:

bf = src >> lsb
dst = ((bf & mask1) mask2) - mask2
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1) (mask2 << 1) - 1 = mask1

Pattern 2:

bf = src >> lsb
amount = CHAR_BIT * sizeof(bf) - width
dst = (bf << amount) >> amount

Then, (bf << amount) >> amount is selected as the canonical form with the strength reduction
rule introduced above.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = lsb
Int @2 = amount
Int @3 = ZShr(@0, @1)
Int @4 = Shl(@3, @2)
Int @5 = SShr(@4, @2)
Void@6 = Return(@5, Terminal)

Before Adding BIC:
Old optimized AIR
Urshift %x0, lsb, %x0, @3
Lshift %x0, amount, %x0, @4
Rshift %x0, amount, %x0, @5
Ret %x0, @6

After Adding BIC:
New optimized AIR
ExtractSignedBitfield %x0, lsb, width, %x0, @5
Ret %x0, @6


### Part B SBFIZ ###


Given instruction:
sbfiz Rd, Rn, lsb, width

Signed Bitfield Insert in Zero (SBFIZ) zeroes the destination register Rd and copies
width number of contiguous bits from a source register Rn into lsb position in the
destination register, sign-extending the most significant bit of the transferred value.

The equivalent patterns of this instruction are:

Pattern 1:

bfsx = ((src & mask1) mask2) - mask2
dst = bfsx << lsb
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1) (mask2 << 1) - 1 = mask1

Pattern 2:

amount = CHAR_BIT * sizeof(bf) - width
bfsx = (src << amount) >> amount
dst = bfsx << lsb

Then, ((src << amount) >> amount) << lsb is selected as the canonical form with the
strength reduction rule introduced above.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = lsb
Int @2 = amount
Int @3 = Shl(@0, @2)
Int @4 = SShr(@3, @2)
Int @5 = Shl(@4, @1)
Void@6 = Return(@5, Terminal)

Before Adding BIC:
Old optimized AIR
Lshift %x0, amount, %x0, @3
Rshift %x0, amount, %x0, @4
Lshift %x0, lsb, %x0, @5
Ret %x0, @6

After Adding BIC:
New optimized AIR
InsertSignedBitfieldInZero %x0, lsb, width, %x0, @5
Ret %x0, @6

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::insertSignedBitfieldInZero32):
(JSC::MacroAssemblerARM64::insertSignedBitfieldInZero64):
(JSC::MacroAssemblerARM64::extractSignedBitfield32):
(JSC::MacroAssemblerARM64::extractSignedBitfield64):

  • assembler/testmasm.cpp:

(JSC::testInsertSignedBitfieldInZero32):
(JSC::testInsertSignedBitfieldInZero64):
(JSC::testExtractSignedBitfield32):
(JSC::testExtractSignedBitfield64):

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

(addBitTests):

  • b3/testb3_3.cpp:

(testInsertSignedBitfieldInZero32):
(testInsertSignedBitfieldInZero64):
(testExtractSignedBitfield32):
(testExtractSignedBitfield64):

11:07 AM Changeset in webkit [279377] by Jonathan Bedard
  • 3 edits
    2 copies in trunk/Tools

[webkitcorepy] Add MeasureTime python tool
https://bugs.webkit.org/show_bug.cgi?id=227313
<rdar://problem/79689588>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Export MeasureTime object.
  • Scripts/libraries/webkitcorepy/webkitcorepy/measure_time.py: Added.

(MeasureTime): Provide class which logs time elapsed in context.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/measure_time_unittest.py: Added.

(MeasureTimeTests):

11:00 AM Changeset in webkit [279376] by Alan Coon
  • 13 edits
    2 adds in branches/safari-612.1.21-branch

Cherry-pick r279361. rdar://problem/79923766

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.

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

10:11 AM Changeset in webkit [279375] by jer.noble@apple.com
  • 12 edits
    3 adds in trunk

Loading WebM hangs if server sends only small amount of data
https://bugs.webkit.org/show_bug.cgi?id=226217
<rdar://problem/78709010>

Source/WebCore/PAL:

Reviewed by Eric Carlson.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/spi/cf/CoreMediaSPI.h:

Source/WebKit:

Reviewed by Eric Carlson.

Test: http/tests/media/video-webm-stall.html

Adopt FigThread{Un,}RegisterAbortAction() when blocking against track parsing.

CoreMedia will attempt to abort reads during AVPlayer teardown, but because the parsing
thread is blocked on a Condition variable in WebKit code, the abort request has no effect.
Adopt methods from CoreMedia to run code during an abort request, and wrap these calls in a
stack-based object. The new AbortAction object takes a Condition variable to notify during
an abort, and its aborted() state can be queried by the Condition's predicate.

Drive-by Fix: enable running an unsigned MTFormatReaderPlugin in the GPU process for
engineering builds.

  • Configurations/BaseTarget.xcconfig:
  • GPUProcess/mac/GPUProcessMac.mm:

(WebKit::GPUProcess::initializeProcess):

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::AbortAction::AbortAction):
(WebKit::AbortAction::~AbortAction):
(WebKit::AbortAction::aborted const):
(WebKit::AbortAction::action):
(WebKit::MediaFormatReader::copyProperty):
(WebKit::MediaFormatReader::copyTrackArray):

LayoutTests:

Reviewed by NOBODY Eric Carlson.

  • http/tests/media/resources/.htaccess: Added.
  • http/tests/media/video-webm-stall-expected.txt: Added.
  • http/tests/media/video-webm-stall.html: Added.
8:19 AM Changeset in webkit [279374] by yoshiaki.jitsukawa@sony.com
  • 5 edits in trunk/LayoutTests

P-384 EC public JWK key in layout tests is wrong
https://bugs.webkit.org/show_bug.cgi?id=227432

Reviewed by Chris Dumez.

Fix the y value of the JWK keys. The y value was derived from the x value with openssl,
using EC_POINT_set_compressed_coordinates_GFp() and EC_POINT_get_affine_coordinates_GFp(),
and was verified with EC_KEY_check_key().

  • crypto/subtle/ec-import-key-malformed-parameters.html:
  • crypto/subtle/ecdh-import-jwk-public-key-p384.html:
  • crypto/subtle/ecdsa-import-jwk-public-key-alg-384.html:
  • crypto/workers/subtle/resources/ec-import-jwk-key-public.js:
6:53 AM Changeset in webkit [279373] by commit-queue@webkit.org
  • 3 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal primitive restart range computation could index with size_t
https://bugs.webkit.org/show_bug.cgi?id=227449

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

Make the calculateRestartRanges() a bit simpler in order
for it to be easier to understand.

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

(rx::IndexRange::IndexRange):
Add documentation what the mtl::IndexRange is.
Add constructor so that std::vector::emplace_back() works.

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

(rx::calculateRestartRanges):
Index with size_t to make it simpler to understand if the index
overflows or not.
Use reinterpret_cast in order to not accidentally cast away
const from mtl::BufferRef::mapReadOnly().
Skip the non-marker elements with continue to avoid deep nesting.
Give a name to the restart range marker value.
Remove intermediate variable value = bufferData[i] as it is never
used more than once. This simplifies the code as the do-while loop
does not need to check the if condition as the loop ending condition
already checks.
Make the array a returned result instead of out variable.

(rx::BufferMtl::getRestartIndices):

6:52 AM Changeset in webkit [279372] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal primitive restart range computation should not be done unless primitive restart is enabled
https://bugs.webkit.org/show_bug.cgi?id=227452

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

Primitive restart needs to scan the whole index buffer for values.
This should not be done unless needed.

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

(rx::VertexArrayMtl::getDrawIndices):
First check for primitive restart enabledness.
Compute the primitive restart values after this.
The algoritm should succeed when the count of primitive
restart ranges is zero, and it does not do much of work.
Use the restart range vector as reference, so that no copy
would be done.
Add spaces the if statements, comments and references.
Move the else arm of the if statement with return statement
to body of the function to reduce nesting.

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

Nullptr crash in HTMLStackItem::create via DocumentFragment::parseHTML
https://bugs.webkit.org/show_bug.cgi?id=227390

Patch by Rob Buis <rbuis@igalia.com> on 2021-06-29
Reviewed by Ryosuke Niwa.

Source/WebCore:

DOM manipulation can mean document.body() can return null, causing the
crash/ASSERT in DocumentFragment::parseHTML in the test case. Since the
only use of it was to force InBody insertion mode, instead use a fake body element.

Test: editing/pasteboard/paste-create-fragment-crash.html

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::createFragment):

LayoutTests:

Add test for this.

  • editing/pasteboard/paste-create-fragment-crash-expected.txt: Added.
  • editing/pasteboard/paste-create-fragment-crash.html: Added.
2:38 AM Changeset in webkit [279370] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in SharedBuffer::data
https://bugs.webkit.org/show_bug.cgi?id=227173

Patch by Rob Buis <rbuis@igalia.com> on 2021-06-29
Reviewed by Ryosuke Niwa.

Source/WebCore:

Null check data in openFunc.

Test: fast/xsl/xslt-transformToDocument-crash.html

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::openFunc):

LayoutTests:

  • fast/xsl/xslt-transformToDocument-crash-expected.txt: Added.
  • fast/xsl/xslt-transformToDocument-crash.html: Added.
2:12 AM Changeset in webkit [279369] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Check GApplication has a valid ID before trying to create the flatpack info
https://bugs.webkit.org/show_bug.cgi?id=227344

Reviewed by Michael Catanzaro.

Show a warning if GApplication is used but app ID is nullptr.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::createFlatpakInfo):

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

OES_texture_float should implicitly enable EXT_float_blend
https://bugs.webkit.org/show_bug.cgi?id=227456
<rdar://79804439>

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

Tested by webgl/1.0.x/conformance/extensions/oes-texture-float.html

  • html/canvas/OESTextureFloat.cpp:

(WebCore::OESTextureFloat::OESTextureFloat):
Request EXT_float_blend when user requests OES_texture_float.
WEBGL_color_buffer_float and EXT_color_buffer_float already have
the code.

12:59 AM Changeset in webkit [279367] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Bubblewrap: allow to set DBus proxy logging per proxy
https://bugs.webkit.org/show_bug.cgi?id=227447

Reviewed by Michael Catanzaro.

It's currently global using env var WEBKIT_ENABLE_DBUS_PROXY_LOGGING. Add WEBKIT_ENABLE_A11Y_DBUS_PROXY_LOGGING
to enable logging only on a11y bus.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::XDGDBusProxyLauncher::launch):
(WebKit::bindA11y):
(WebKit::bubblewrapSpawn):

12:25 AM Changeset in webkit [279366] by youenn@apple.com
  • 15 edits
    9 deletes in trunk/Source

Remove RemoteAudioMediaStreamTrackRenderer and RemoteAudioMediaStreamTrackRendererManager
https://bugs.webkit.org/show_bug.cgi?id=227438

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:

(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::start):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::stop):
Add some logging.

Source/WebKit:

Remove code no longer enabled.
This code was obsoleted by RemoteAudioMediaStreamTrackRendererInternalUnitManager and friends.
Update GPUProcess to not exit if RemoteAudioMediaStreamTrackRendererInternalUnitManager has some units,
like was done by RemoteAudioMediaStreamTrackRendererManager.

  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::~GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::allowsExitUnderMemoryPressure const):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::audioMediaStreamTrackRendererQueue): Deleted.

  • GPUProcess/GPUProcess.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.h: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.messages.in: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:

(WebKit::renderCallback):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::Unit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.h:

(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::hasUnits):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.cpp: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.h: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.messages.in: Removed.
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp: Removed.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h: Removed.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererIdentifier.h: Removed.
12:19 AM Changeset in webkit [279365] by Antti Koivisto
  • 9 edits
    1 add in trunk/Source

Enable Probabilistic Guard Malloc for RuleData and RuleFeature vectors
https://bugs.webkit.org/show_bug.cgi?id=227446

Reviewed by Geoffrey Garen.

Source/WebCore:

Help for catching a crash.

  • style/RuleFeature.cpp:

(WebCore::Style::RuleFeatureSet::collectFeatures):
(WebCore::Style::RuleFeatureSet::add):

  • style/RuleFeature.h:
  • style/RuleSet.h:
  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::makeRuleSet):
(WebCore::Style::ensureInvalidationRuleSets):

Source/WTF:

Add SystemMalloc type that can be used with containers like Vector and
ProbabilisticGuardMalloc alias for it on Mac/iOS platforms.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SystemMalloc.h: Added.

(WTF::SystemMalloc::malloc):
(WTF::SystemMalloc::tryMalloc):
(WTF::SystemMalloc::zeroedMalloc):
(WTF::SystemMalloc::tryZeroedMalloc):
(WTF::SystemMalloc::realloc):
(WTF::SystemMalloc::tryRealloc):
(WTF::SystemMalloc::free):

  • wtf/Vector.h:

(WTF::Malloc>::appendVector):

Include all template parameters for the appendVector argument.

12:14 AM Changeset in webkit [279364] by commit-queue@webkit.org
  • 8 edits in trunk

CSS scroll snap should allow scrolling to the middle of snap areas that overflow the snapport
https://bugs.webkit.org/show_bug.cgi?id=223021
<rdar://problem/75518606>

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-06-29
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt: Update test

expectations to reflect newly passing tests.

Source/WebCore:

No new tests. This is covered by existing tests and, in particular, a WPT test:

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas.html
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::searchForPotentialSnapPoints): Record when the target snap offset happens to
fall in the interior of a snap area that overflows the snap port.
(WebCore::closestSnapOffsetWithInfoAndAxis): When this happens and we are in a spec-compliant
sitaution, just snap to the original target offset.

LayoutTests:

Update some existing tests that were relying on non-spec compliant behavior. These tests
used snap areas that were larger than the snapport and didn't expect that the parent
scroller could scroll into them.

  • css3/scroll-snap/scroll-snap-click-scrollbar-gutter.html: This test used snap areas that

overflow the snapport, thus meant that it relied on non-spec compliant behavior. Rework it so
that the snap areas do not overflow, maintaining the existing behavior.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-then-horizontal.html: Ditto.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow.html: Ditto.

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):

Note: See TracTimeline for information about the timeline view.