Timeline



Jul 18, 2021:

3:59 PM Changeset in webkit [280021] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

Ignore weak external symbols in clang coverage builds using check-for-weak-vtables-and-externals
<https://webkit.org/b/228063>
<rdar://problem/80477138>

Reviewed by Alexey Proskuryakov.

  • Scripts/check-for-weak-vtables-and-externals:
  • Ignore weak symbols from llvm when building with coverage enabled. This fixes the build.
  • coverage/coverage.xcconfig:

(UNEXPORTED_SYMBOL_LDFLAGS_FOR_COVERAGE): Remove.

  • Can't use -unexported_symbol and -exported_symbol together, so remove this.
12:18 PM Changeset in webkit [280020] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Fix canvas overflow checking to use CheckedArithmatic rather than adhoc floating point mechanism
https://bugs.webkit.org/show_bug.cgi?id=228058

Reviewed by Dean Jackson.

We have CheckedArithmatic just for this case. Use it.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::shouldAccelerate const):
(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/HTMLCanvasElement.h:
8:41 AM Changeset in webkit [280019] by Wenson Hsieh
  • 12 edits in trunk/Source

[iOS] [AX] Keyboard text candidates don't update when changing selection using Switch Control
https://bugs.webkit.org/show_bug.cgi?id=228051
rdar://79944295

Reviewed by Tim Horton.

Source/WebCore:

See WebKit ChangeLog for more details.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::setSelectedTextRange):
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange const):

Call the new EditorClient methods added below. Additionally, drive-by fix setSelectedVisiblePositionRange so
that it also performs a user-triggered selection change in the case where the range is not collapsed; this
matches the behavior of setSelectedTextRange as well.

  • page/EditorClient.h:

(WebCore::EditorClient::willChangeSelectionForAccessibility):
(WebCore::EditorClient::didChangeSelectionForAccessibility):

Add new EditorClient hooks, (will|did)ChangeSelectionForAccessibility, that accessibility code can call before
and after it triggers a selection change; we use these two codepaths above when using the "Previous/Next
Character", "Previous/Next Word", and "Previous/Next Line" Switch Control menu actions.

Source/WebKit:

Add support for updating text candidates by calling into UIKeyboardImpl when changing the selection via
accessibility UI (e.g. when using Switch Control). To achieve this, we add a new EditorState flag that indicates
whether or not the EditorState change was triggered by accessibility; in WKContentView, we then consult this
flag and call -beginSelectionChange/-endSelectionChange in the case where the updated editor state change was
triggered by accessibility and we're also not already in the scope of another selection change or gesture-based
selection change.

Note that the latter part of the check is critical in order to avoid deadlocks in UIKeyboardTaskQueue; see
r246013, r246425 and r246665, which introduced and later reverted a similar mechanism for updating
UIKeyboardImpl, but after every selection change.

  • Shared/EditorState.cpp:

(WebKit::EditorState::encode const):
(WebKit::EditorState::decode):
(WebKit::operator<<):

  • Shared/EditorState.h:

Add the new boolean flag, triggeredByAccessibilitySelectionChange.

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

(-[WKContentView beginSelectionChange]):
(-[WKContentView endSelectionChange]):

Add a new unsigned flag, _selectionChangeNestingLevel, that lets us know if we're expecting an eventual call
to -endSelectionChange. See -_selectionChanged below for more details. Note that we don't need to reset
_selectionChangeNestingLevel to 0 when cleaning up the interaction after web process termination, because
the completion handlers that contain all the balanced calls to -endSelectionChange should be invoked after
such an event anyways.

(-[WKContentView _selectionChanged]):

If the triggeredByAccessibilitySelectionChange bit is set on the incoming (post layout data) EditorState and:
(1) UIKit isn't in the middle of handling a gesture that modifies the selection, and...
(2) We aren't expecting a call to -endSelectionChange.

...then we force UIKeyboardImpl to reload its UI (text suggestions, B/I/U state, etc.) using the incoming
EditorState. This allows accessibility-driven selection changes using Switch Control to behave like gesture-
based selection changes.

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::willChangeSelectionForAccessibility):
(WebKit::WebEditorClient::didChangeSelectionForAccessibility):

Implement a couple of client hooks in WebKit2 so that we set a boolean flag on WebPage,
m_isChangingSelectionForAccessibility, to true over the scope of an AX-driven selection change. See related
AX changes in WebCore for more details.

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasPendingEditorStateUpdate const):

Add a helper method so that we can conveniently check whether we have a pending editor state update to flush,
since the previous boolean flag is now a tri-state enum (m_pendingEditorStateUpdateStatus).

(WebKit::WebPage::editorState const):
(WebKit::WebPage::willCommitLayerTree):
(WebKit::WebPage::sendEditorStateUpdate):
(WebKit::WebPage::scheduleFullEditorStateUpdate):

If we're in the scope of an accessibility selection change, transition m_pendingEditorStateUpdateStatus to
ScheduledDuringAccessibilitySelectionChange; otherwise, just use Scheduled.

(WebKit::WebPage::flushPendingEditorStateUpdate):

Refactor m_hasPendingEditorStateUpdate so that it now captures three states:
(1) We haven't scheduled an editor state update yet.
(2) We've scheduled an editor state update that was not triggered by accessibility.
(3) We've scheduled an editor state update that was triggered by accessibility.

The distinction between (2) and (3) allows us to populate EditorState's new
triggeredByAccessibilitySelectionChange flag.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::willChangeSelectionForAccessibility):
(WebKit::WebPage::didChangeSelectionForAccessibility):

Jul 17, 2021:

10:27 AM Changeset in webkit [280018] by Alan Bujtas
  • 8 edits
    1 add in trunk/Source/WebCore

[LFC][IFC] Move InlineLevelBox class to its own file
https://bugs.webkit.org/show_bug.cgi?id=228045

Reviewed by Sam Weinig.

LineBox class has grown a lot since the subclass of InlineLevelBox has been introduced.
It is also in preparation for merging LineBox and LineBoxGeometry classes.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/formattingContexts/inline/InlineFormattingGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::setVerticalGeometryForInlineBox const):
(WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):
(WebCore::Layout::LineBoxBuilder::SimplifiedVerticalAlignment::SimplifiedVerticalAlignment):
(WebCore::Layout::LineBoxBuilder::SimplifiedVerticalAlignment::canUseSimplifiedAlignment):
(WebCore::Layout::LineBoxBuilder::SimplifiedVerticalAlignment::align):
(WebCore::Layout::LineBoxBuilder::SimplifiedVerticalAlignment::adjust):
(WebCore::Layout::InlineFormattingGeometry::inlineLevelBoxAffectsLineBox const):

  • layout/formattingContexts/inline/InlineFormattingGeometry.h:
  • layout/formattingContexts/inline/InlineFormattingQuirks.cpp:

(WebCore::Layout::InlineFormattingQuirks::inlineLevelBoxAffectsLineBox const):

  • layout/formattingContexts/inline/InlineFormattingQuirks.h:
  • layout/formattingContexts/inline/InlineLevelBox.h: Added.

(WebCore::Layout::InlineLevelBox::baseline const):
(WebCore::Layout::InlineLevelBox::descent const):
(WebCore::Layout::InlineLevelBox::LayoutBounds::height const):
(WebCore::Layout::InlineLevelBox::LayoutBounds::operator== const):
(WebCore::Layout::InlineLevelBox::layoutBounds const):
(WebCore::Layout::InlineLevelBox::hasContent const):
(WebCore::Layout::InlineLevelBox::verticalAlign const):
(WebCore::Layout::InlineLevelBox::layoutBox const):
(WebCore::Layout::InlineLevelBox::style const):
(WebCore::Layout::InlineLevelBox::isInlineBox const):
(WebCore::Layout::InlineLevelBox::isRootInlineBox const):
(WebCore::Layout::InlineLevelBox::isAtomicInlineLevelBox const):
(WebCore::Layout::InlineLevelBox::isLineBreakBox const):
(WebCore::Layout::InlineLevelBox::type const):
(WebCore::Layout::InlineLevelBox::logicalRect const):
(WebCore::Layout::InlineLevelBox::logicalTop const):
(WebCore::Layout::InlineLevelBox::logicalBottom const):
(WebCore::Layout::InlineLevelBox::logicalLeft const):
(WebCore::Layout::InlineLevelBox::logicalWidth const):
(WebCore::Layout::InlineLevelBox::logicalHeight const):
(WebCore::Layout::InlineLevelBox::setLogicalWidth):
(WebCore::Layout::InlineLevelBox::setLogicalHeight):
(WebCore::Layout::InlineLevelBox::setLogicalTop):
(WebCore::Layout::InlineLevelBox::setBaseline):
(WebCore::Layout::InlineLevelBox::setDescent):
(WebCore::Layout::InlineLevelBox::setLayoutBounds):
(WebCore::Layout::InlineLevelBox::InlineLevelBox):
(WebCore::Layout::m_type):
(WebCore::Layout::InlineLevelBox::setHasContent):
(WebCore::Layout::InlineLevelBox::hasLineBoxRelativeAlignment const):
(WebCore::Layout::InlineLevelBox::createAtomicInlineLevelBox):
(WebCore::Layout::InlineLevelBox::createInlineBox):
(WebCore::Layout::InlineLevelBox::createLineBreakBox):
(WebCore::Layout::InlineLevelBox::createGenericInlineLevelBox):

  • layout/formattingContexts/inline/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::InlineLevelBox): Deleted.
(WebCore::Layout::m_type): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setBaseline): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setDescent): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setLayoutBounds): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setLogicalTop): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setLogicalHeight): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setHasContent): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::hasLineBoxRelativeAlignment const): Deleted.

  • layout/formattingContexts/inline/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::baseline const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::descent const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::LayoutBounds::height const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::LayoutBounds::operator== const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::layoutBounds const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::hasContent const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::verticalAlign const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::layoutBox const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::style const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::isInlineBox const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::isRootInlineBox const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::isAtomicInlineLevelBox const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::isLineBreakBox const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::type const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalRect const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalTop const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalBottom const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalLeft const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalWidth const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::logicalHeight const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setLogicalWidth): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::createAtomicInlineLevelBox): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::createInlineBox): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::createLineBreakBox): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::createGenericInlineLevelBox): Deleted.

Jul 16, 2021:

10:42 PM Changeset in webkit [280017] by Simon Fraser
  • 26 edits in trunk

getBoundingClientRect() returns the incorrect rectangle on elements whose parent element is set -webkit-column-count
https://bugs.webkit.org/show_bug.cgi?id=99959
rdar://80106111

Reviewed by Alan Bujtas.
Source/WebCore:

getBoundingClientRect() and getClientRects() for elements inside multicol had a quick
and dirty implementation that just mapped the element center point into a column. This
resulted in odd, negative top/left in some cases.

Fix by correctly generating multiple rects for elements that span columns, following
the repaint code path that already knew how to do this correctly.

The entry point is RenderFragmentContainer::absoluteQuadsForBox() which now has a
real implementation. For each fragment that the box covers, it calls fragmentRectsForFlowContentRect()
which generates one or more rects; RenderMultiColumnSet overrides this to
compute rects for multicol.

We have to take care not to eliminate empty rects, since the API does return these.

Tested by existing tests.

  • dom/Element.cpp:

(WebCore::Element::absoluteEventBounds):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::absoluteQuadsIgnoringContinuation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::absoluteQuads const):

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::fragmentedFlowContentRectangle):
(WebCore::RenderFragmentContainer::fragmentRectsForFlowContentRect):

  • rendering/RenderFragmentContainer.h:

(WebCore::RenderFragmentContainer::absoluteQuadsForBoxInFragment): Deleted.

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::absoluteQuadsForBox const):

  • rendering/RenderFragmentedFlow.h:
  • rendering/RenderMultiColumnFlow.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::firstAndLastColumnsFromOffsets const):
(WebCore::RenderMultiColumnSet::repaintFragmentedFlowContent):
(WebCore::RenderMultiColumnSet::fragmentRectsForFlowContentRect):
(WebCore::RenderMultiColumnSet::collectLayerFragments):

  • rendering/RenderMultiColumnSet.h:

LayoutTests:

These tests have all progressed.

  • fast/multicol/client-rects-spanners-complex.html:
  • fast/multicol/client-rects-spanners.html:
  • fast/multicol/client-rects.html:
  • fast/multicol/newmulticol/client-rects.html:
  • imported/blink/fast/multicol/client-rects-rtl-expected.html:
  • imported/blink/fast/multicol/client-rects-rtl.html: This test appeared to be hand-coded to the incorrect old behavior.
  • platform/ios/fast/multicol/client-rects-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/ios/fast/multicol/client-rects-spanners-expected.txt:
  • platform/ios/fast/multicol/newmulticol/client-rects-expected.txt:
  • platform/mac/fast/multicol/client-rects-expected.txt:
  • platform/mac/fast/multicol/client-rects-spanners-complex-expected.txt:
  • platform/mac/fast/multicol/client-rects-spanners-expected.txt:
  • platform/mac/fast/multicol/newmulticol/client-rects-expected.txt:
8:24 PM Changeset in webkit [280016] by Kate Cheney
  • 8 edits in trunk

WKWebView javascript injection doesn't work if app includes WKAppBoundDomains
https://bugs.webkit.org/show_bug.cgi?id=227589
<rdar://problem/80327452>

Reviewed by Brent Fulgham.

Source/WebCore:

Update service worker code to always allow workers on localhost to be
registered. Also add logic so localhost registrations aren't added
to the total count of 3 registrations.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::addRegistration):
We only want to increment the count if this registration is not
already in the mapping, otherwise it gets double counted.

(WebCore::SWServer::removeRegistration):
Ditto for removing a registration, we should only decrement the count
if we find a matching key.

(WebCore::SWServer::validateRegistrationDomain):
(WebCore::SWServer::removeFromScopeToRegistrationMap):
Ditto.

  • workers/service/server/SWServer.h:

Source/WebKit:

Apps should not have to specify localhost in their Info.plist in order
to load local content in app-bound mode. This patch adds a check for
localhost or a loopback IP address and forces an app into app-bound
mode in this case.

Since all layout tests use localhost and 127.0.0.1 as test domains,
this patch also adds a check for enableInAppBrowserPrivacyForTesting()
which determines if we are running layout tests and does not trigger
this check in that case so we can test other behavior.

  • UIProcess/WebPageProxy.cpp:

(WebKit::shouldTreatURLProtocolAsAppBound):
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

Tools:

Added new tests. Removed localhost and 127.0.0.1 from the Info.plist
to avoid false positive tests. Replace them with other domains so we
still test the max count.

  • TestWebKitAPI/Info.plist:
  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(TEST):

6:02 PM Changeset in webkit [280015] by achristensen@apple.com
  • 14 edits
    1 add in trunk

Prevent HSTS tracking mitigation for top level navigation requests
https://bugs.webkit.org/show_bug.cgi?id=227936

Reviewed by Brady Eidson.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Use NSURLRequest.URL as the first party for cookies for HSTS purposes during redirects instead of NSURLRequest.mainDocumentURL,
which hasn't been updated because CFNetwork doesn't know that this is the main document request and when redirected, the main document URL also changes.

Covered by API tests, which will start covering this case once rdar://80550123 is integrated.

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration allowsHSTSWithUntrustedRootCertificate]):
(-[_WKWebsiteDataStoreConfiguration setAllowsHSTSWithUntrustedRootCertificate:]):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::allowsHSTSWithUntrustedRootCertificate const):
(WebKit::WebsiteDataStoreConfiguration::setAllowsHSTSWithUntrustedRootCertificate):

Tools:

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/HSTS.mm: Added.

(TestWebKitAPI::hasRadar80550123):
(TestWebKitAPI::hstsWebViewAndDelegate):
(TestWebKitAPI::hstsServer):
(TestWebKitAPI::TEST):

6:00 PM Changeset in webkit [280014] by achristensen@apple.com
  • 9 edits
    1 add in trunk

Network access prevention SPI should prevent preconnecting, and it should first allow injected bundle to change request
https://bugs.webkit.org/show_bug.cgi?id=228044
<rdar://72995136>

Reviewed by Tim Horton.

Source/WebCore:

WKWebViewConfiguration._loadsFromNetwork and its successor _allowedNetworkHosts have two issues:

  1. They allow link rel=preconnect to still preconnect to a host. While this doesn't reveal much information, it does reveal some.
  2. It blocks loads before giving the injected bundle a chance to change the scheme of the request. This SPI is relatively new and intended to replace the injected bundle, but the user from this radar needs to have an injected bundle make changes first.

Both problems are fixed and covered by API tests.

  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

  • page/Page.h:

Source/WebKit:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/Preconnect.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/SchemeChangingPlugIn.mm: Added.

(-[SchemeChangingPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[SchemeChangingPlugIn webProcessPlugInBrowserContextController:frame:willSendRequest:redirectResponse:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
5:53 PM Changeset in webkit [280013] by Yijia Huang
  • 7 edits in trunk/Source/JavaScriptCore

Add ExtendType to Air::Arg Index to fully utilize address computation in memory instruction for ARM64
https://bugs.webkit.org/show_bug.cgi?id=227970

Reviewed by Saam Barati.

The pattern recognition of address computation in the instructions, e.g., Load
Resistor (LDR), Store Register (STR), etc., can benefit the instruction selector.
Then, the Air operand BaseIndex containing base, index, and scale is introduced
to Air opcode. However, the <extend> option of index address is not fully leveraged
in the previous implementation.

To fill that gap, this patch adds a new member, MacroAssembler::Extend, to the current
design of BaseIndex to trigger zero/sign extension on the Index address. And this is
enabled for Store/Load with valid index address and shift amount.

Maybe, the ideal approach is to introduce a decorator (Index@EXT) to the Air operand
to provide an extension opportunity for the specific form of the Air opcode.

Load Register (LDR) calculates an address from a base register value and an
offset register value, loads a word from memory, and writes it to a register.
The offset register value can optionally be shifted and extended.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = Z/SExt32(Trunc(ArgumentReg(%x1)))
Int @2 = scale
Int @3 = Shl(@1, @2)
Int @4 = Add(@0, @3)
Int @5 = Load(@4, ControlDependent|Reads:Top)
Void@6 = Return(@5, Terminal)

Old optimized AIR
Move %x1, %x1, @1
Move (%x0,%x1,2scale), %x0, @5
Ret %x0, @6

New optimized AIR
Move (%x0,%x1,2scale), %x0, @5
Ret %x0, @6

Store Register (STR) calculates an address from a base register value and an
offset register value, and stores a 32-bit word or a 64-bit doubleword to the
calculated address, from a register.

Given B3 IR:
Int @0 = value
Int @1 = ArgumentReg(%x0)
Int @2 = Z/SExt32(Trunc(ArgumentReg(%x1))
Int @3 = scale
Int @4 = Shl(@2, @3)
Int @5 = Add(@1, @4)
Void@6 = Store(@0, @5, ControlDependent|Writes:Top)
Void@7 = Return(@0, Terminal)

Old optimized AIR
Move32 %x1, %x1, @2
Store32 %xzr, (%x0,%x1,2scale), @6
Move $0, %x0, @7
Ret32 %x0, @7

New optimized AIR
Store32 %xzr, (%x0,%x1,2scale), @6
Move $0, %x0, @7
Ret32 %x0, @7

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::BaseIndex::BaseIndex):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::indexExtendType):
(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::load32):
(JSC::MacroAssemblerARM64::load16):
(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::store32):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::loadDouble):
(JSC::MacroAssemblerARM64::loadFloat):
(JSC::MacroAssemblerARM64::storeDouble):
(JSC::MacroAssemblerARM64::storeFloat):

  • b3/B3LowerToAir.cpp:
  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::index):
(JSC::B3::Air::Arg::asBaseIndex const):

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

(testLoadZeroExtendIndexAddress):
(testLoadSignExtendIndexAddress):
(testStoreZeroExtendIndexAddress):
(testStoreSignExtendIndexAddress):
(addBitTests):

5:47 PM Changeset in webkit [280012] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[MacOS Release wk1] media/modern-media-controls/volume-support/volume-support-drag-to-mute.html is a flaky fail and timeout.
https://bugs.webkit.org/show_bug.cgi?id=228042.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac-wk1/TestExpectations:
5:15 PM Changeset in webkit [280011] by ysuzuki@apple.com
  • 3 edits in trunk/JSTests

[JSC] Simplify sampling-profiler-regexp.js test
https://bugs.webkit.org/show_bug.cgi?id=228040

Reviewed by Saam Barati.

In this new test case, only thing we care is regexp appears on sampling-profiler regardless of whether the other functions are inlined / tail-called or not.
We change the sampling-profiler/samplingProfiler.js runTest to add a mode which searches specific signature in the call tree.

  • stress/sampling-profiler-regexp.js:

(platformSupportsSamplingProfiler):

  • stress/sampling-profiler/samplingProfiler.js:

(doesTreeHaveStackTrace):
(runTest):

4:59 PM Changeset in webkit [280010] by Kyle Piddington
  • 5 edits
    2 adds in trunk/Source/ThirdParty/ANGLE

Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333

<rdar://79923371>

This patch compiles and creates a Metal library at build time, storing
the library as a compiled binary file. This library is baked into the dylib,
and is loaded at context creation time.

Unlike the previous version of this patch, this patch does not save or store the .metallib on disk, but rather
bakes it into a binary.

Fixed internal build breaks by skipping Metallib bake script.

Reviewed by Kenneth Russell.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeShaderLibrary):

  • src/libANGLE/renderer/metal/mtl_utils.h:
4:53 PM Changeset in webkit [280009] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

PCM: Add early return when unlinkable token is used and add more happy path Web Inspector logging
https://bugs.webkit.org/show_bug.cgi?id=228039
<rdar://problem/80705989>

Reviewed by Kate Cheney.

There's a missing return after an accepted unlinkable token transaction. The
attribution object is therefore moved and stored twice.

This patch also adds more Web Inspector logging to the happy path for better
developer feedback.

No new tests.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):

Add the missing return.

(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):

Add Web Inspector logging.

(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):

Add Web Inspector logging.

(WebKit::PrivateClickMeasurementManager::handleAttribution):

Add Web Inspector logging.

4:40 PM Changeset in webkit [280008] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Grab the lock in FTL::Thunks::keyForSlowPathCallThunk
https://bugs.webkit.org/show_bug.cgi?id=227988
<rdar://problem/80627901>

Reviewed by Mark Lam.

JSTests:

  • stress/thunks-hash-map-should-grab-lock.js: Added.

Source/JavaScriptCore:

Both FTL::Thunks::keyForSlowPathCallThunk and FTL::Thunks::getSlowPathCallThunk
both touch the thunks hash map. In r278030, when I added the lock, I grabbed it
in getSlowPathCallThunk, but forgot to also grab it in keyForSlowPathCallThunk.

  • ftl/FTLThunks.h:

(JSC::FTL::Thunks::keyForSlowPathCallThunk):

4:23 PM Changeset in webkit [280007] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Apple internal build

Unreviewed.

No new tests because there is no behavior change.

  • platform/mac/PlatformSpeechSynthesizerMac.mm:

(WebCore::speechSynthesisGetDefaultVoiceIdentifierForLocale):

4:22 PM Changeset in webkit [280006] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

REGRESSION (r277820): Can't scroll up and down using trackpad in Mail message viewer when in Slide Over
https://bugs.webkit.org/show_bug.cgi?id=228033
rdar://80663917

Reviewed by Tim Horton.

This started happening after the changes in r277820, since UIHoverGestureRecognizer contained several internal
facilities in UIKit for avoiding failure dependencies to other (non-hover) gestures. After removing the
subclass, various UIKit gestures now attempt to add failure requirements to WKMouseGestureRecognizer, thereby
linking WKMouseGestureRecognizer to other gestures in the gesture dependency graph.

This means that all gestures connected to the same subgraph as WKMouseGestureRecognizer are unable to be reset
until WKMouseGestureRecognizer transitions to either Ended or Failed state; however, since this only happens
once the trackpad goes into idle state, these subgraph-connected gestures can effectively only recognize once
per trackpad interaction (resetting only after the trackpad goes idle). Since scroll view pan gesture
recognizers are indirectly connected to WKMouseGestureRecognizer in Slide Over mode, this manifests in scrolling
being unresponsive after an initial scroll gesture has ended.

To address this, we subclass UIHoverGestureRecognizer once again, and (unfortunately) also restore the IPI
override for -_shouldReceiveTouch:forEvent:recognizerView:, to ensure that we're still able to detect and
dispatch mousedown and mousemove events.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
(-[WKContentView gestureRecognizer:shouldReceivePress:]):

Remove a couple of delegate overridees here, which are now unnecessary since WKMouseGestureRecognizer is a
UIHoverGestureRecognizer once again.

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

(-[WKMouseGestureRecognizer _shouldReceiveTouch:forEvent:recognizerView:]):

3:59 PM Changeset in webkit [280005] by beidson@apple.com
  • 5 edits in trunk/Source/WebCore

FetchBodySource/FetchBodyOwner cleanup
<rdar://80318044> and https://bugs.webkit.org/show_bug.cgi?id=228035

Reviewed by Geoffrey Garen.

FetchBodyOwner should have a WeakPtr factory, and FetchBodySource should use it.

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchBodySource.cpp:

(WebCore::FetchBodySource::FetchBodySource):
(WebCore::FetchBodySource::doCancel):
(WebCore::FetchBodySource::close):

  • Modules/fetch/FetchBodySource.h:
  • Modules/fetch/FetchResponse.h:
3:18 PM Changeset in webkit [280004] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, reverting r279916.
https://bugs.webkit.org/show_bug.cgi?id=228037

some of tests are timing out

Reverted changeset:

"Convert small JIT pool tests into executable fuzzing"
https://bugs.webkit.org/show_bug.cgi?id=226279
https://commits.webkit.org/r279916

3:07 PM Changeset in webkit [280003] by Truitt Savell
  • 2 edits in trunk/LayoutTests

accessibility/loading-iframe-sends-notification.html is a flaky timeout
rdar://80331434

Unreviewed test gardening.

2:42 PM Changeset in webkit [280002] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Multiple Canvas tests flaky crash, flaky fail.
https://bugs.webkit.org/show_bug.cgi?id=227881.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:26 PM Changeset in webkit [280001] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

macOS Safari network sessions not being marked as being from a browser
https://bugs.webkit.org/show_bug.cgi?id=228028
<rdar://problem/80648664>

Reviewed by Brent Fulgham.

Move WebKitAdditions to open source to communicate full web browser
status to the networking stack. In the macOS case, we don't have
a full browser entitlement, so we should check for Safari.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::SessionWrapper::initialize):
The name com.apple.WebKit.InAppBrowser is not the most accurate name,
but changing it would require syncing with other parts of the network
stack. We should do this in a separate bug.

2:22 PM Changeset in webkit [280000] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.24

Tag Safari-612.1.24.

2:11 PM Changeset in webkit [279999] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[MacOS wk2] inspector/canvas/recording-bitmaprenderer-frameCount.html is flaky failing and timing out.
https://bugs.webkit.org/show_bug.cgi?id=228034

Unreviewed test gardeing.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:01 PM Changeset in webkit [279998] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[MacOS wk2] inspector/canvas/setShaderProgramHighlighted.html is flaky failing and timing out.
https://bugs.webkit.org/show_bug.cgi?id=228030

Unreviewed test gardeing.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-16

  • platform/mac-wk2/TestExpectations:
2:01 PM Changeset in webkit [279997] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] RegExp::dumpToStream must not ref Strings since it is called concurrently
https://bugs.webkit.org/show_bug.cgi?id=228031
rdar://80686425

Reviewed by Mark Lam.

JSTests:

  • stress/regexp-dump-concurrently.js: Added.

(let.code):

Source/JavaScriptCore:

RegExp::dumpToStream's escapedPattern can return m_pattern. In that case, it is refed in the concurrent thread.
This is wrong since StringImpl must not be ref-ed concurrently. This patch just revert this function to the old behavior.

  • runtime/RegExp.cpp:

(JSC::RegExp::dumpToStream):

1:34 PM Changeset in webkit [279996] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[RenderTreeBuilder] Update the fragmented status of the renderer when it becomes in-flow
https://bugs.webkit.org/show_bug.cgi?id=228025
<rdar://80458138>

Reviewed by Antti Koivisto.

This patch ensures that we update fragmented status of the renderer when it becomes in-flow and not just when the containing block's childrenInline status needs updating.
(e.g. the block renderer goes from out-of-flow to in-flow, and the containing block already has block level children, we don't call childFlowStateChangesAndAffectsParentBlock)

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange): Move the update logic out from childFlowStateChangesAndAffectsParentBlock to here and run it unconditionally.
(WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock):

1:25 PM Changeset in webkit [279995] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Modify expectations for media/modern-media-controls/overflow-support/chapters.html
https://bugs.webkit.org/show_bug.cgi?id=227055

Unreviewed test gardening.

1:22 PM Changeset in webkit [279994] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Modify expectations for media/modern-media-controls/overflow-support/chapters.html
https://bugs.webkit.org/show_bug.cgi?id=227055

Unreviewed test gardening.

1:19 PM Changeset in webkit [279993] by Fujii Hironori
  • 5 edits in trunk/Source/WebCore

[curl] Use curl_multi_poll and curl_multi_wakeup instead of select
https://bugs.webkit.org/show_bug.cgi?id=227966

Reviewed by Don Olmstead.

libcurl 7.68.0 added curl_multi_poll and curl_multi_wakeup.

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlMultiHandle::poll): Added.
(WebCore::CurlMultiHandle::wakeUp): Added.

  • platform/network/curl/CurlContext.h:
  • platform/network/curl/CurlRequestScheduler.cpp:

(WebCore::CurlRequestScheduler::add):
(WebCore::CurlRequestScheduler::callOnWorkerThread):
(WebCore::CurlRequestScheduler::startOrWakeUpThread):
(WebCore::CurlRequestScheduler::wakeUpThreadIfPossible): Added.
(WebCore::CurlRequestScheduler::stopThread):
(WebCore::CurlRequestScheduler::workerThread):
(WebCore::CurlRequestScheduler::startThreadIfNeeded): Deleted.

  • platform/network/curl/CurlRequestScheduler.h:
11:24 AM Changeset in webkit [279992] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit

Adopt BifurcatedGraphicsContext for backing store + display list RemoteLayerBackingStore
https://bugs.webkit.org/show_bug.cgi?id=226425
<rdar://77929299>

Reviewed by Sam Weinig.

Instead of "display list backed RemoteLayerBackingStore" being its own
backing store type, we make "includes a display list" a separate bit.
This way, we can paint both a bitmap (IOSurface or CG bitmap, all
exactly as it normally is), and also carry a sidecar display list.

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

(WebKit::RemoteLayerBackingStore::ensureBackingStore):
(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::decode):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::supportsPartialRepaint):
We can't partially repaint the display list, and require its rendering
to match the painted backing store, so disable partial repaint entirely
if display lists are being used.

(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::drawInContext):
Adopt BifurcatedGraphicsContext in order to paint into the aforementioned
bitmap and display list simultaneously.
A future patch may abstract this into a new ImageBuffer type
instead of polluting RemoteLayerBackingStore with it.

Leave a temporary workaround for a CoreAnimation bug, which can be
disabled via defaults write, but is enabled by default.

(WebKit::layerContentsForBufferHandle):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
(WebKit::RemoteLayerBackingStore::Buffer::discard):

  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h:
  • UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm:

(-[WKCompositingLayer _setWKContents:withDisplayList:]):
(-[WKCompositingLayer _setWKContentsDisplayList:]): Deleted.
(-[WKCompositingLayer _wkContentsDisplayList]): Deleted.
Pass the display list data to CoreAnimation alongside the bitmap.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::updateBackingStore):

11:18 AM Changeset in webkit [279991] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitscmpy] Provide API to access SVN cache
https://bugs.webkit.org/show_bug.cgi?id=228000
<rdar://problem/80646471>

Reviewed by Dewei Zhu.

Create a Svn cache with the same API as the Git cache. This allows
git and svn to share logic when inserting identifiers in log and blame.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.Cache.path): Path to cahce file.
(Svn.Cache.populate): Fill cache from svn log operation.
(Svn.Cache.to_hash): Svn is unaware of hashes, and can never map them.
(Svn.Cache.to_revision): Map identifiers to revisions.
(Svn.Cache.to_identifier): Map revisions to identifiers.
(Svn.init): Use cache object instead of _metadata_cache.
(Svn._commit_count): Access cache object.
(Svn._branch_for): Ditto.
(Svn.commit): Ditto.
(Svn._cache_path): Deleted.
(Svn._cache_revisions): Deleted.

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

(TestLocalSvn.test_revision_cache):

11:02 AM Changeset in webkit [279990] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Make the lack of an ANGLE dylib unconditionally log
https://bugs.webkit.org/show_bug.cgi?id=228010

Reviewed by Dean Jackson.

WebCore should complain louder when all of WebGL is disabled because of a packaging misconfiguration.

No new tests because there is no behavior change.

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::create):

10:59 AM Changeset in webkit [279989] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Updated test expectations for inspector/canvas/css-canvas-clients.html is a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=174272.

Unreviewed test gardeing.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-16

  • platform/mac/TestExpectations:
10:17 AM Changeset in webkit [279988] by Megan Gardner
  • 38 edits in trunk/Source

Pipe App Highlight scrolling through UI Process in preparation for Note Overlay avoidance.
https://bugs.webkit.org/show_bug.cgi?id=227914

Reviewed by Tim Horton.

Source/WebCore:

In order to correctly avoid the note overlay that can potentially obscure the web view,
we need to pipe the scrolling through the UI process. This patch does that work
and will be followed up shortly by one that does the actual work of overlay avoidance.
For iOS, this just uses the main frame UI Scrolling that we already use, but for
mac, we need to do the last scroll in the web process after adjusting it with the overlay
information.

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):

  • dom/Element.cpp:

(WebCore::Element::scrollIntoView):

  • editing/Editor.cpp:

(WebCore::TemporarySelectionChange::setSelection):

  • editing/Editor.h:
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::moveWithoutValidationTo):
(WebCore::FrameSelection::setSelection):
(WebCore::FrameSelection::updateAndRevealSelection):
(WebCore::FrameSelection::revealSelection):

  • editing/FrameSelection.h:
  • loader/EmptyClients.h:
  • page/Chrome.cpp:

(WebCore::Chrome::scrollMainFrameToRevealRect const):
(WebCore::Chrome::scrollRectIntoView const): Deleted.

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::scrollMainFrameToRevealRect const):
(WebCore::ChromeClient::scrollRectIntoView const): Deleted.

  • page/ScrollBehavior.cpp:

(WebCore::useSmoothScrolling):

  • page/ScrollBehavior.h:
  • platform/ScrollTypes.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

  • rendering/RenderLayer.h:

Source/WebKit:

In order to correctly avoid the note overlay that can potentially obscure the web view,
we need to pipe the scrolling through the UI process. This patch does that work
and will be followed up shortly by one that does the actual work of overlay avoidance.
For iOS, this just uses the main frame UI Scrolling that we already use, but for
mac, we need to do the last scroll in the web process after adjusting it with the overlay
information.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScrollToRect):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::requestScrollToRect):
(WebKit::WebPageProxy::scrollToRect):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::scrollToRect):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::requestScrollToRect):

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::requestScrollToRect):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scrollMainFrameToRevealRect const):
(WebKit::WebChromeClient::scrollRectIntoView const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::scrollToRect):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::scrollMainFrameToRevealRect const):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:
9:39 AM Changeset in webkit [279987] by commit-queue@webkit.org
  • 18 edits
    1 delete in trunk

[GTK][WPE] Support color-schemes CSS property
https://bugs.webkit.org/show_bug.cgi?id=208204

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-16
Reviewed by Adrian Perez de Castro.

.:

  • Source/cmake/OptionsGTK.cmake:

Enable HAVE_OS_DARK_MODE_SUPPORT.

  • Source/cmake/OptionsWPE.cmake:

Enable ENABLE_DARK_MODE_CSS and HAVE_OS_DARK_MODE_SUPPORT.

Source/WebCore:

Last time we tried enabling dark mode, we broke many webpages since we couldn't have diferent
controls, and more importantly, different system colors and defaults for pages that do and
don't support dark mode.

Now that we don't use GTK for this, we can try again. This time, use hardcoded system colors
and return different colors depending on StyleColor::Options::UseDarkAppearance.

To avoid dark-on-dark text on entries, we also need to enable HAVE_OS_DARK_MODE_SUPPORT for GTK
and make sure it's passed to use agent CSS. And since Adwaita controls are also used in WPE, we
need to enable it for WPE as well, and since WPE didn't have ENABLE_DARK_MODE_CSS, flip that as
well, all in lockstep.

No new tests, reenabled the existing css-dark-mode tests.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:

Pass HAVE_OS_DARK_MODE_SUPPORT to user agent CSS.

  • css/CSSValueKeywords.in:

Expose -webkit-control-background for anything with HAVE_OS_DARK_MODE_SUPPORT.

  • css/themeAdwaita.css:

(input[type="search"]::-webkit-search-results-button,):
(input[type="search"]::-webkit-search-cancel-button):
(body[dir="rtl"] input[type="search"]::-webkit-search-cancel-button):
(input[type="search"]::-webkit-search-results-button:hover,):
(input[type="search"]::-webkit-search-cancel-button:hover): Deleted.
Use mask images instead of content so we can recolor them. Change
color on hover as opacity and inherit entry's color otherwise to
make sure it's legible with dark appearance.

  • page/FrameView.cpp:

(WebCore::FrameView::updateBackgroundRecursively):
Use CSSValueWindow for background instead of CSSValueAppleSystemControlBackground
when the latter is not available.

  • platform/adwaita/ThemeAdwaita.cpp:

(WebCore::ThemeAdwaita::focusColor):
(WebCore::ThemeAdwaita::paintFocus):
(WebCore::ThemeAdwaita::paintArrow):
(WebCore::ThemeAdwaita::paint):
(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):
(WebCore::ThemeAdwaita::paintButton):
(WebCore::ThemeAdwaita::paintSpinButton):

  • platform/adwaita/ThemeAdwaita.h:
  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::platformFocusRingColor const):
(WebCore::RenderThemeAdwaita::systemColor const):
(WebCore::RenderThemeAdwaita::paintTextField):
(WebCore::RenderThemeAdwaita::adjustTextFieldStyle const):
(WebCore::RenderThemeAdwaita::adjustTextAreaStyle const):
(WebCore::RenderThemeAdwaita::adjustSearchFieldStyle const):
Add a border radius to the default style, so the background doesn't bleed through
the corners.
(WebCore::RenderThemeAdwaita::paintMenuList):
(WebCore::RenderThemeAdwaita::paintProgressBar):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::paintSliderThumb):

  • rendering/RenderThemeAdwaita.h:

Source/WTF:

  • wtf/PlatformHave.h:

Enable HAVE_OS_DARK_MODE_SUPPORT for GTK and WPE.

LayoutTests:

Reenable css-dark-mode tests for GTK as they pass now. Enable the same tests in WPE.
Keep css-dark-mode/older-syntax/supported-color-schemes-css.html as [ Pass Crash ] for now,
according to https://bugs.webkit.org/show_bug.cgi?id=202229#c2

  • platform/gtk/TestExpectations:
  • platform/gtk/css-dark-mode/color-scheme-css-expected.txt: Removed.
  • platform/gtk/css-dark-mode/color-scheme-meta-expected.txt: Removed.
  • platform/gtk/css-dark-mode/color-scheme-priority-expected.txt: Removed.
  • platform/gtk/css-dark-mode/default-colors-expected.txt: Removed.
  • platform/gtk/css-dark-mode/older-syntax/supported-color-schemes-css-expected.txt: Removed.
  • platform/gtk/css-dark-mode/older-syntax/supported-color-schemes-meta-expected.txt: Removed.
  • platform/wpe/TestExpectations:
9:13 AM Changeset in webkit [279986] by Truitt Savell
  • 5 edits
    2 deletes in trunk/Source/ThirdParty/ANGLE

Unreviewed, reverting r279980.

Broke Internal Builds

Reverted changeset:

"Build Default Metal library offline"
https://bugs.webkit.org/show_bug.cgi?id=227333
https://commits.webkit.org/r279980

8:32 AM Changeset in webkit [279985] by commit-queue@webkit.org
  • 4 edits
    3 moves in trunk

[GStreamer] RealtimeMediaSourceCenter and VideoEncoder are not libwebrtc-specific
https://bugs.webkit.org/show_bug.cgi?id=228020

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

Source/WebCore:

Those two are actually not using libwebrtc-related code, so a better place for them is
platform/mediastream/gstreamer.

  • platform/GStreamer.cmake:
  • platform/mediastream/gstreamer/GStreamerVideoEncoder.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.cpp.

(Encoders::singleton):
(Encoders::registerEncoder):
(Encoders::definition):
(webrtcVideoEncoderGetProperty):
(webrtcVideoEncoderSetBitrate):
(webrtcVideoEncoderSetEncoder):
(webrtcVideoEncoderSetFormat):
(webrtcVideoEncoderSetProperty):
(setBitrateKbitPerSec):
(setBitrateBitPerSec):
(webrtcVideoEncoderConstructed):
(webkit_webrtc_video_encoder_class_init):

  • platform/mediastream/gstreamer/GStreamerVideoEncoder.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.h.
  • platform/mediastream/gstreamer/RealtimeMediaSourceCenterGStreamer.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp.

(WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):

Tools:

  • Scripts/webkitpy/style/checker.py:
7:25 AM Changeset in webkit [279984] by Angelos Oikonomopoulos
  • 4 edits
    5 adds in trunk/Tools

Bundle libraries for remote execution in run-jsc-benchmarks
https://bugs.webkit.org/show_bug.cgi?id=227579

Reviewed by Carlos Alberto Lopez Perez.

Similarly to run-jsc-stress-tests, introduce a bundling step that
ships all library dependencies to the remote system when using
run-jsc-benchmarks --remote.

This patch factors out the code to

  • lookup the ELF interpreter/libraries and to
  • strip the rpath and create a wrapper script

from generate-bundle and places it webkitpy/binary_bundling.

It also introduces a simpler script that only bundles a single
binary (bundle-binary) and switches run-jsc-benchmarks and
run-jsc-stress-tests to use it.

It also updates run-jsc-benchmark to propagate any environment
variables intended for consumption by the JSC binary.

  • Scripts/generate-bundle: Factor out reusable bundling code.
  • Scripts/run-jsc-benchmarks: Do bundling and variable propagation.
  • Scripts/run-jsc-stress-tests: Switch to bundle-binary.
  • Scripts/webkitpy/binary_bundling/init.py: Added.
  • Scripts/webkitpy/binary_bundling/bundle.py: Added.

(BinaryBundler):
(BinaryBundler.init):
(BinaryBundler.destination_dir):
(BinaryBundler.copy_and_remove_rpath):
(BinaryBundler.generate_wrapper_script):

  • Scripts/webkitpy/binary_bundling/ldd.py: Added.

(SharedObjectResolver):
(SharedObjectResolver.init):
(SharedObjectResolver._run_cmd_and_get_output):
(SharedObjectResolver._get_interpreter_objname):
(SharedObjectResolver._get_libs_and_interpreter):
(SharedObjectResolver._ldd_recursive_get_libs_and_interpreter):
(SharedObjectResolver.get_libs_and_interpreter):

  • Scripts/bundle-binary: Added.
  • Scripts/generate-bundle:
  • Scripts/run-jsc-benchmarks:
  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitpy/binary_bundling/init.py: Added.
  • Scripts/webkitpy/binary_bundling/bundle.py: Added.

(BinaryBundler):
(BinaryBundler.init):
(BinaryBundler.destination_dir):
(BinaryBundler.copy_and_remove_rpath):
(BinaryBundler.generate_wrapper_script):

  • Scripts/webkitpy/binary_bundling/ldd.py: Added.

(SharedObjectResolver):
(SharedObjectResolver.init):
(SharedObjectResolver._run_cmd_and_get_output):
(SharedObjectResolver._get_interpreter_objname):
(SharedObjectResolver._get_libs_and_interpreter):
(SharedObjectResolver._ldd_recursive_get_libs_and_interpreter):
(SharedObjectResolver.get_libs_and_interpreter):

5:04 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
4:16 AM Changeset in webkit [279983] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit

[GTK][WPE] PSON: accessibility doesn't work after a cross site navigation
https://bugs.webkit.org/show_bug.cgi?id=228021

Reviewed by Adrian Perez de Castro.

The provisional page is not handling the BindAccessibilityTree message and we never embed the new web process
plug into the UI process socket.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::bindAccessibilityTree): Save the a11y plug ID.
(WebKit::ProvisionalPageProxy::didReceiveMessage): Handle BindAccessibilityTree message.

  • UIProcess/ProvisionalPageProxy.h:

(WebKit::ProvisionalPageProxy::accessibilityPlugID): Returns the a11y plug ID.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::swapToProvisionalPage): If the provisional page has a plug ID, bind the a11y tree.

4:12 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
1:43 AM Changeset in webkit [279982] by commit-queue@webkit.org
  • 4 edits
    21 moves
    1 add in trunk

[GStreamer] LibWebRTC files should be in libwebrtc/gstreamer
https://bugs.webkit.org/show_bug.cgi?id=227991

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

Source/WebCore:

For consistency purposes, the GStreamer backend modules used by LibWebRTC are now in
platform/mediastream/libwebrtc/gstreamer. platform/mediastream/ contains the pure GStreamer
modules related with media capture.

  • platform/GStreamer.cmake:
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoCommon.cpp.

(WebCore::createH264Format):
(WebCore::supportedH264Formats):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoCommon.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoCommon.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp.

(WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
(WebCore::GStreamerVideoDecoder::decodebinPadAddedCb):
(WebCore::GStreamerVideoDecoder::pipeline):
(WebCore::GStreamerVideoDecoder::makeElement):
(WebCore::GStreamerVideoDecoder::handleError):
(WebCore::GStreamerVideoDecoder::CreateFilter):
(WebCore::GStreamerVideoDecoder::pullSample):
(WebCore::GStreamerVideoDecoder::GetCapsForFrame):
(WebCore::GStreamerVideoDecoder::AddDecoderIfSupported):
(WebCore::GStreamerVideoDecoder::ConfigureSupportedDecoder):
(WebCore::GStreamerVideoDecoder::GstDecoderFactory):
(WebCore::GStreamerVideoDecoder::HasGstDecoder):
(WebCore::H264Decoder::H264Decoder):
(WebCore::VP8Decoder::VP8Decoder):
(WebCore::VP8Decoder::Create):
(WebCore::VP9Decoder::VP9Decoder):
(WebCore::VP9Decoder::Create):
(WebCore::GStreamerVideoDecoderFactory::CreateVideoDecoder):
(WebCore::GStreamerVideoDecoderFactory::GStreamerVideoDecoderFactory):
(WebCore::GStreamerVideoDecoderFactory::GetSupportedFormats const):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp.

(Encoders::singleton):
(Encoders::registerEncoder):
(Encoders::definition):
(webrtcVideoEncoderGetProperty):
(webrtcVideoEncoderSetBitrate):
(webrtcVideoEncoderSetEncoder):
(webrtcVideoEncoderSetFormat):
(webrtcVideoEncoderSetProperty):
(setBitrateKbitPerSec):
(setBitrateBitPerSec):
(webrtcVideoEncoderConstructed):
(webkit_webrtc_video_encoder_class_init):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoder.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoder.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp.

(WebCore::GStreamerEncodedImageBuffer::create):
(WebCore::GStreamerEncodedImageBuffer::getBuffer const):
(WebCore::GStreamerEncodedImageBuffer::getVideoResolution const):
(WebCore::GStreamerEncodedImageBuffer::GStreamerEncodedImageBuffer):
(WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
(WebCore::GStreamerVideoEncoder::pipeline):
(WebCore::GStreamerVideoEncoder::makeElement):
(WebCore::GStreamerVideoEncoder::returnFromFlowReturn):
(WebCore::GStreamerVideoEncoder::createEncoder):
(WebCore::GStreamerVideoEncoder::AddCodecIfSupported):
(WebCore::GStreamerVideoEncoder::Caps):
(WebCore::GStreamerVideoEncoder::ConfigureSupportedCodec):
(WebCore::GStreamerVideoEncoder::SetRestrictionCaps):
(WebCore::GStreamerH264Encoder::GStreamerH264Encoder):
(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
(WebCore::GStreamerVideoEncoderFactory::GStreamerVideoEncoderFactory):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.h.
  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.cpp.

(WebCore::GStreamerSampleFromLibWebRTCVideoFrame):
(WebCore::GStreamerVideoFrameLibWebRTC::create):
(WebCore::LibWebRTCVideoFrameFromGStreamerSample):
(WebCore::GStreamerVideoFrameLibWebRTC::ToI420):

  • platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoFrameLibWebRTC.h.

(WebCore::GStreamerVideoFrameLibWebRTC::GStreamerVideoFrameLibWebRTC):
(WebCore::GStreamerVideoFrameLibWebRTC::takeSample):

  • platform/mediastream/libwebrtc/gstreamer/LibWebRTCProviderGStreamer.cpp: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.cpp.

(WebCore::LibWebRTCProvider::create):
(WebCore::LibWebRTCProvider::webRTCAvailable):
(WebCore::LibWebRTCProviderGStreamer::createDecoderFactory):
(WebCore::LibWebRTCProviderGStreamer::createEncoderFactory):

  • platform/mediastream/libwebrtc/gstreamer/LibWebRTCProviderGStreamer.h: Renamed from Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProviderGStreamer.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.cpp.

(WebCore::RealtimeIncomingAudioSource::create):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::create):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::RealtimeIncomingAudioSourceLibWebRTC):
(WebCore::RealtimeIncomingAudioSourceLibWebRTC::OnData):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp.

(WebCore::RealtimeIncomingVideoSource::create):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::create):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::RealtimeIncomingVideoSourceLibWebRTC):
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::OnFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp.

(WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureFactory):
(WebCore::RealtimeMediaSourceCenter::defaultDisplayCaptureFactory):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp.

(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::RealtimeOutgoingAudioSourceLibWebRTC):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::~RealtimeOutgoingAudioSourceLibWebRTC):
(WebCore::RealtimeOutgoingAudioSource::create):
(WebCore::libwebrtcAudioFormat):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::isReachingBufferedAudioDataHighLimit):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::isReachingBufferedAudioDataLowLimit):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::hasBufferedEnoughData):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.h.
  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.cpp.

(WebCore::RealtimeOutgoingVideoSource::create):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::create):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::RealtimeOutgoingVideoSourceLibWebRTC):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::videoSampleAvailable):
(WebCore::RealtimeOutgoingVideoSourceLibWebRTC::createBlackFrame):

  • platform/mediastream/libwebrtc/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceLibWebRTC.h.

Tools:

  • Scripts/webkitpy/style/checker.py:
1:32 AM Changeset in webkit [279981] by Manuel Rego Casasnovas
  • 1 edit
    13 deletes in trunk/PerformanceTests

Remove CSS Regions perf tests
https://bugs.webkit.org/show_bug.cgi?id=228016

Reviewed by Ryosuke Niwa.

The feature has been removed long time ago, so let's do the same with the associated perf tests.

  • Layout/RegionsAuto.html: Removed.
  • Layout/RegionsAutoMaxHeight.html: Removed.
  • Layout/RegionsExtendingSelectionMixedContent.html: Removed.
  • Layout/RegionsFixed.html: Removed.
  • Layout/RegionsFixedShort.html: Removed.
  • Layout/RegionsSelectAllMixedContent.html: Removed.
  • Layout/RegionsSelection.html: Removed.
  • Layout/RegionsShapes.html: Removed.
  • Layout/Shapes/RegionsShapesNoShapes.html: Removed.
  • Layout/Shapes/resources/RegionsShapesContent.html: Removed.
  • Layout/Shapes/resources/RegionsShapesContentNoShapes.html: Removed.
  • Layout/resources/regions.css: Removed.
  • Layout/resources/regions.js: Removed.
12:19 AM Changeset in webkit [279980] by Kyle Piddington
  • 5 edits
    2 adds in trunk/Source/ThirdParty/ANGLE

Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333

<rdar://79923371>

This patch compiles and creates a Metal library at build time, storing
the library as a compiled binary file. This library is baked into the dylib,
and is loaded at context creation time.

Unlike the previous version of this patch, this patch does not save or store the .metallib on disk, but rather
bakes it into a binary.

Reviewed by Kenneth Russell.

  • ANGLE.xcodeproj/project.pbxproj:
  • Configurations/ANGLE-dynamic.xcconfig:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeShaderLibrary):

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

Jul 15, 2021:

11:52 PM Changeset in webkit [279979] by Chris Dumez
  • 17 edits
    3 adds in trunk

Implement 'SubmitEvent' interface
https://bugs.webkit.org/show_bug.cgi?id=202978

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/html/semantics/forms/form-submission-0/SubmitEvent.window-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/implicit-submission.optional-expected.txt:

Source/WebCore:

Implement 'SubmitEvent' interface as per:

Both Chrome and Firefox already ship this.

No new tests, rebaselined existing tests.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.in:
  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submitIfPossible):

  • html/SubmitEvent.cpp: Added.

(WebCore::SubmitEvent::create):
(WebCore::SubmitEvent::SubmitEvent):
(WebCore::SubmitEvent::eventInterface const):

  • html/SubmitEvent.h: Added.

(WebCore::SubmitEvent::submitter const):

  • html/SubmitEvent.idl: Added.
  • html/SubmitInputType.cpp:

(WebCore::SubmitInputType::handleDOMActivateEvent):
Make sure SubmitInputType::handleDOMActivateEvent() passes its element as submitter
when submitting the form. One of the subtests in html/semantics/forms/form-submission-0/implicit-submission.optional.html
covers this.

LayoutTests:

Rebaseline WPT test now that more checks are passing.

  • 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:
11:15 PM Changeset in webkit [279978] by Chris Dumez
  • 8 edits in trunk

Add support for MediaError.message
https://bugs.webkit.org/show_bug.cgi?id=228008

Reviewed by Alex Christensen.

Source/WebCore:

Add support for MediaError.message:

Both Chrome and Firefox already support this.

No new tests, rebaselined existing test.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::noneSupported):
(WebCore::HTMLMediaElement::mediaLoadingFailedFatally):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::userCancelledLoad):

  • html/MediaError.h:

(WebCore::MediaError::create):
(WebCore::MediaError::message const):
(WebCore::MediaError::MediaError):

  • html/MediaError.idl:

LayoutTests:

Rebaseline WPT test now that more checks are passing.

  • 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:
10:02 PM Changeset in webkit [279977] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Alias JSC graph dumping options
https://bugs.webkit.org/show_bug.cgi?id=228015

Reviewed by Yusuke Suzuki.

My brain seems to associate the phases with the tier we are compiling in
rather than the type of graph we are processing. At this point it's
probably easier to just add an alias rather than convince me otherwise.

  • runtime/OptionsList.h:
9:10 PM Changeset in webkit [279976] by ysuzuki@apple.com
  • 14 edits
    2 adds in trunk

[JSC] SamplingProfiler should recognize RegExp execution
https://bugs.webkit.org/show_bug.cgi?id=201702

Reviewed by Saam Barati.

JSTests:

  • stress/sampling-profiler-regexp.js: Added.

(platformSupportsSamplingProfiler.getText):
(platformSupportsSamplingProfiler.test):
(platformSupportsSamplingProfiler.baz):
(platformSupportsSamplingProfiler):

  • stress/sampling-profiler/samplingProfiler.js: Extend samplingProfiler to show better error information when VERBOSE = true.

(doesTreeHaveStackTrace):

Source/JavaScriptCore:

This patch extends SamplingProfiler to recognize RegExp execution. We record
executing RegExp in VM via MatchingContextHolder so that SamplingProfiler can detect it.
We use MatchingContextHolder even if the RegExp is interpreter mode so that we can still
catch non-JIT RegExp in SamplingProfiler.

The example output is the following.

Sampling rate: 1000.000000 microseconds. Total samples: 1830
Top functions as <numSamples 'functionName#hash:sourceID'>

466 'Exec#<nil>:4'
225 '/(|[
])\"
\/Qngr\((-?[0-9]+)\)
\/\"/g#<nil>:-1'
173 'runBlock1#<nil>:4'

88 '/NQ_VQ/g#<nil>:-1'
83 '/d2/g#<nil>:-1'
78 '/d1/g#<nil>:-1'
70 '/\s?;\s?/#<nil>:-1'
68 'replace#<nil>:3'
50 '/(((\w+):\/\/)([\/:]*)(:(\d+))?)?([#?]*)(\?([#]*))?(#(.*))?/#<nil>:-1'
49 'runBlock0#<nil>:4'
46 '#<nil>:-1'
24 '/
\s*|\s*$/g#<nil>:-1'

Sampling rate: 1000.000000 microseconds. Total samples: 1830

Tier breakdown:
-----------------------------------
LLInt: 13 (0.710383%)
Baseline: 54 (2.950820%)
DFG: 187 (10.218579%)
FTL: 612 (33.442623%)
js builtin: 73 (3.989071%)
Wasm: 0 (0.000000%)
Host: 0 (0.000000%)
RegExp: 907 (49.562842%)
C/C++: 0 (0.000000%)
Unknown Executable: 57 (3.114754%)

Hottest bytecodes as <numSamples 'functionName#hash:JITType:bytecodeIndex'>

378 'Exec#<nil>:FTL:bc#27'
225 '/(|[
])\"
\/Qngr\((-?[0-9]+)\)
\/\"/g#<nil>:RegExp:<nil>'

88 '/NQ_VQ/g#<nil>:RegExp:<nil>'
83 '/d2/g#<nil>:RegExp:<nil>'
78 '/d1/g#<nil>:RegExp:<nil>'
70 '/\s?;\s?/#<nil>:RegExp:<nil>'
62 'replace#<nil>:FTL:bc#63'
53 'Exec#<nil>:DFG:bc#27'
50 '/(((\w+):\/\/)([\/:]*)(:(\d+))?)?([#?]*)(\?([#]*))?(#(.*))?/#<nil>:RegExp:<nil>'
46 '#<nil>:None:<nil>'
42 'runBlock1#<nil>:FTL:bc#1795'
29 'runBlock1#<nil>:FTL:bc#1849'
29 'runBlock1#<nil>:FTL:bc#1741'
24 '/
\s*|\s*$/g#<nil>:RegExp:<nil>'
17 'runBlock1#<nil>:DFG:bc#1741'
17 'runBlock1#<nil>:DFG:bc#1795'
16 '/\b\w+\b/g#<nil>:RegExp:<nil>'
14 '/TNQP=([;]*)/i#<nil>:RegExp:<nil>'
13 '/%\w?$/#<nil>:RegExp:<nil>'
12 '/
ba/#<nil>:RegExp:<nil>'
11 '/\s*(\S*(\s+\S+)*)\s*$/#<nil>:RegExp:<nil>'
10 'runBlock0#<nil>:FTL:bc#400'
10 'runBlock1#<nil>:DFG:bc#1849'
10 'Exec#<nil>:DFG:bc#16'

9 '/(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))/#<nil>:RegExp:<nil>'
8 '/##yv18##/gi#<nil>:RegExp:<nil>'
8 '/([a-zA-Z]|\s)+/#<nil>:RegExp:<nil>'
7 '/JroXvg\/(\S+)/#<nil>:RegExp:<nil>'
7 'runBlock0#<nil>:FTL:bc#2671'
7 '/(#.?)((?:[\w\u0128-\uffff*_-]|
.)*)/#<nil>:RegExp:<nil>'
6 '/##oe##/gi#<nil>:RegExp:<nil>'
6 'runBlock1#<nil>:FTL:bc#124'
6 '/[+, ]/#<nil>:RegExp:<nil>'
6 'runBlock1#<nil>:FTL:bc#1903'
6 'replace#<nil>:DFG:bc#63'
5 'runBlock0#<nil>:FTL:bc#3378'
5 '/'/g#<nil>:RegExp:<nil>'
5 '/##yv20##/gi#<nil>:RegExp:<nil>'
4 '/\?[\w\W]*(sevraqvq|punaaryvq|tebhcvq)=([
\&\?#]*)/i#<nil>:RegExp:<nil>'
4 'load#<nil>:None:<nil>'

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/RegExp.cpp:

(JSC::RegExp::matchCompareWithInterpreter):
(JSC::RegExp::dumpToStream):
(JSC::appendLineTerminatorEscape<LChar>):
(JSC::appendLineTerminatorEscape<UChar>):
(JSC::escapePattern):
(JSC::RegExp::escapedPattern const): Moved from RegExpPrototype.cpp to implement RegExp::toSourceString and RegExp::escapedPattern.
(JSC::RegExp::toSourceString const):
(JSC::regexpToSourceString): Deleted.

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):

  • runtime/RegExpPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::appendLineTerminatorEscape<LChar>): Deleted.
(JSC::appendLineTerminatorEscape<UChar>): Deleted.
(JSC::regExpProtoGetterSourceInternal): Deleted.

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::StackFrame::nameFromCallee):
(JSC::SamplingProfiler::StackFrame::displayName):
(JSC::SamplingProfiler::StackFrame::displayNameForJSONTests):
(JSC::SamplingProfiler::StackFrame::functionStartLine):
(JSC::SamplingProfiler::StackFrame::functionStartColumn):
(JSC::SamplingProfiler::StackFrame::sourceID):
(JSC::SamplingProfiler::StackFrame::url):
(JSC::SamplingProfiler::reportTopBytecodes):
(WTF::printInternal):

  • runtime/SamplingProfiler.h:
  • runtime/VM.h:
  • yarr/YarrJIT.cpp:

(JSC::Yarr::MatchingContextHolder::MatchingContextHolder): Deleted.
(JSC::Yarr::MatchingContextHolder::~MatchingContextHolder): Deleted.

  • yarr/YarrJIT.h:

(JSC::Yarr::MatchingContextHolder::offsetOfStackLimit): Deleted.
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBuffer): Deleted.
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBufferSize): Deleted.

  • yarr/YarrMatchingContextHolder.h: Added.

(JSC::Yarr::MatchingContextHolder::offsetOfStackLimit):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBuffer):
(JSC::Yarr::MatchingContextHolder::offsetOfPatternContextBufferSize):
(JSC::Yarr::MatchingContextHolder::MatchingContextHolder):
(JSC::Yarr::MatchingContextHolder::~MatchingContextHolder):

9:01 PM Changeset in webkit [279975] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

[iOS] WKMouseGestureRecognizer should not have failure requirements on WKDeferringGestureRecognizer
https://bugs.webkit.org/show_bug.cgi?id=228013
rdar://80342462

Reviewed by Tim Horton.

Avoid adding a gesture failure requirement between any WKDeferringGestureRecognizers and
WKMouseGestureRecognizer; It doesn't make sense to claim that WKMouseGestureRecognizer should only recognize
once active touch events have been handled by the web page. Under normal circumstances, this gesture failure
requirement is actually completely benign, since touch events should never be received by
WKMouseGestureRecognizer in the first place, and when using a trackpad, deferring gesture recognizers are not
triggered.

However, if an app were to (hypothetically) swizzle out -gestureRecognizer:shouldReceiveTouch: to force
WKMouseGestureRecognizer to receive normal (non-trackpad) touch events, this could cause nearly all gesture
recognizers in the window to become unresponsive, since WKMouseGestureRecognizer would be stuck in Changed state
long after other gestures in the same subgraph have transitioned to Ended or Failed state, thereby preventing
all of these gestures from being reset to Possible state.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):

7:09 PM Changeset in webkit [279974] by Jean-Yves Avenard
  • 11 edits in trunk/Source

[Wk1] media/media-source/media-webm-opus-partial.html is a consistent failure (Enable VP8/VP9/Vorbis/Opus in WebKitLegacy)
https://bugs.webkit.org/show_bug.cgi?id=228005
rdar://80346720

Reviewed by Jer Noble.

Source/WebCore:

There are already tests running under Wk1 that will exercise this code (and will no longer fail)

  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::setVorbisDecoderEnabled):
Carry settings to PlatformMediaSessionManager
(WebCore::RuntimeEnabledFeatures::setOpusDecoderEnabled):
Carry settings to PlatformMediaSessionManager

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h: Don't make webm parser conditional on VP9

being enabled; it's used with other codecs too and is codec-agnostic to start with.

Source/WebKitLegacy/mac:

  • WebView/WebPreferencesDefaultValues.h: Add relevant settings getter methods.
  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultWebMParserEnabled):
(WebKit::defaultVP8DecoderEnabled):
(WebKit::defaultVP9DecoderEnabled):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Enable VP8/VP9/Vorbis/Opus

codecs for WebKitLegacy, no reasons they weren't already enabled.

7:07 PM Changeset in webkit [279973] by Jean-Yves Avenard
  • 8 edits
    2 adds in trunk

[MSE] sequence mode is broken if GPU Process is enabled
https://bugs.webkit.org/show_bug.cgi?id=227864
<rdar://problem/80445041>

Reviewed by Jer Noble.

Source/WebCore:

When the source buffer's mode is set to sequence, the timestampOffset attribute
should be updated after each appendBuffer operation. However, when the GPU process
is enabled, the timestampOffset calculations are all done in the GPU process and
its result wasn't communicated back to the WebContent process leading its value
to always be 0 on read.
Fly-by fix: the timestamp offset calculation was incorrect, per spec
https://w3c.github.io/media-source/#sourcebuffer-coded-frame-processing
step 3.5.8.3.1 we read:
Set timestampOffset equal to group start timestamp - presentation timestamp.
but the code did otherwise.

Test: media/media-source/media-mp4-h264-sequence-mode.html

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::didReceiveSample): Offset m_timestampOffset by
the sample's presentation timestamp

Source/WebKit:

When the source buffer's mode is set to sequence, the timestampOffset attribute

should be updated after each appendBuffer operation. However, when the GPU process
is enabled, the timestampOffset calculations are all done in the GPU process and
its result wasn't communicated back to the WebContent process leading its value
to always be 0 on read.

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendComplete): Add value of
the potentially updated timestamp offset back to the content process.

  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateAppendComplete):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in: Add extra timestampOffset

parameter.

LayoutTests:

Note: we had tests checking on the correctness of the operation; however it's
using a mock SourceBuffer which doesn't run in the GPU process. Doing bug 225367
should be a priority so we get better code coverage and such bugs don't skip
under the radar.
To get around this issue, we write a new test that uses a mp4 and a h264 video track.

  • media/media-source/media-mp4-h264-sequence-mode-expected.txt: Added.
  • media/media-source/media-mp4-h264-sequence-mode.html: Added.
6:25 PM Changeset in webkit [279972] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WTF

Unreviewed. Fix the build warning below since r279895.
warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]

  • wtf/URL.cpp:

(WTF::URL::setPath):

5:36 PM Changeset in webkit [279971] by Chris Dumez
  • 81 edits
    1 copy
    22 adds
    2 deletes in trunk

Add initial support for BroadcastChannel behind a runtime flag
https://bugs.webkit.org/show_bug.cgi?id=227924

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more tests are running and we are passing more checks.

  • web-platform-tests/FileAPI/url/url-in-tags-revoke.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-BarProp.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/window-open-noreferrer-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/report-only-require-corp.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/require-corp.https-expected.txt:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • web-platform-tests/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.https-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-base-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-button-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-form-target-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-target/rel-input-target-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener-expected.txt:
  • web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base-expected.txt:
  • web-platform-tests/wasm/serialization/module/broadcastchannel-success-and-failure-expected.txt:
  • web-platform-tests/wasm/serialization/module/broadcastchannel-success-expected.txt:
  • web-platform-tests/webmessaging/MessageEvent-trusted.any-expected.txt:
  • web-platform-tests/webmessaging/MessageEvent-trusted.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/basics-expected.txt: Removed.
  • web-platform-tests/webmessaging/broadcastchannel/basics.any-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/basics.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/blobs-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/interface-expected.txt: Removed.
  • web-platform-tests/webmessaging/broadcastchannel/interface.any-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/interface.any.worker-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/sandbox-expected.txt:
  • web-platform-tests/webmessaging/broadcastchannel/workers-expected.txt: Added.
  • web-platform-tests/webmessaging/multi-globals/broadcastchannel-current.sub-expected.txt:
  • web-platform-tests/webstorage/storage_session_window_noopener.window-expected.txt:
  • web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt:

Source/WebCore:

Add initial support for BroadcastChannel behind a runtime flag, off by default:

Both Firefox and Blink have been supporting BroadcastChannel for a long time.

The implementation is complete and spec-compliant. It works both in Window and Worker environments,
in WebKit1 and WebKit2. However, the feature is off-by-default because of privacy concerns that have
not been addresssed yet:

We should be able to add partioning to address the privacy concerns and ship this later on. In the mean
time though, having a working BroadcastChannel implementation in the context of layout tests is already
very useful because a lot of Web-Platform-Tests are relying on it to test other Web features. This means
better test coverage for WebKit.

Tests:

  • fast/html/broadcast-channel-between-different-sessions.html
  • Rebaselined WPT tests
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/BroadcastChannel.cpp: Added.

(WebCore::channelToContextIdentifier):
(WebCore::BroadcastChannel::BroadcastChannel):
(WebCore::BroadcastChannel::~BroadcastChannel):
(WebCore::BroadcastChannel::postMessage):
(WebCore::BroadcastChannel::close):
(WebCore::BroadcastChannel::dispatchMessageTo):
(WebCore::BroadcastChannel::dispatchMessage):
(WebCore::BroadcastChannel::ensureOnMainThread):
(WebCore::BroadcastChannel::activeDOMObjectName const):
(WebCore::BroadcastChannel::eventListenersDidChange):
(WebCore::BroadcastChannel::virtualHasPendingActivity const):

  • dom/BroadcastChannel.h: Added.

(WebCore::BroadcastChannel::create):
(WebCore::BroadcastChannel::identifier const):
(WebCore::BroadcastChannel::name const):

  • dom/BroadcastChannel.idl: Added.
  • dom/BroadcastChannelIdentifier.h: Added.
  • dom/BroadcastChannelRegistry.h: Added.

(WebCore::BroadcastChannelRegistry::~BroadcastChannelRegistry):

  • dom/DeviceOrientationAndMotionAccessController.h:
  • dom/DeviceOrientationEvent.cpp:
  • dom/DeviceOrientationEvent.h:
  • dom/EventTargetFactory.in:
  • loader/EmptyClients.cpp:

(WebCore::pageConfigurationWithEmptyClients):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::setBroadcastChannelRegistry):

  • page/Page.h:

(WebCore::Page::broadcastChannelRegistry):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration):

  • page/PageConfiguration.h:

Source/WebKit:

Add initial support for BroadcastChannel behind a runtime flag, off by default:

Both Firefox and Blink have been supporting BroadcastChannel for a long time.

The implementation is complete and spec-compliant. It works both in Window and Worker environments,
in WebKit1 and WebKit2. However, the feature is off-by-default because of privacy concerns that have
not been addresssed yet:

We should be able to add partioning to address the privacy concerns and ship this later on. In the mean
time though, having a working BroadcastChannel implementation in the context of layout tests is already
very useful because a lot of Web-Platform-Tests are relying on it to test other Web features. This means
better test coverage for WebKit.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • NetworkProcess/Downloads/DownloadManager.cpp:
  • NetworkProcess/NetworkBroadcastChannelRegistry.cpp: Added.

(WebKit::NetworkBroadcastChannelRegistry::registerChannel):
(WebKit::NetworkBroadcastChannelRegistry::unregisterChannel):
(WebKit::NetworkBroadcastChannelRegistry::postMessage):
(WebKit::NetworkBroadcastChannelRegistry::removeConnection):

  • NetworkProcess/NetworkBroadcastChannelRegistry.h: Added.

(WebKit::NetworkBroadcastChannelRegistry::GlobalBroadcastChannelIdentifier::operator== const):

  • NetworkProcess/NetworkBroadcastChannelRegistry.messages.in: Added.
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didClose):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::broadcastChannelRegistry):

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.cpp: Added.

(WebKit::networkProcessConnection):
(WebKit::WebBroadcastChannelRegistry::registerChannel):
(WebKit::WebBroadcastChannelRegistry::unregisterChannel):
(WebKit::WebBroadcastChannelRegistry::postMessage):
(WebKit::WebBroadcastChannelRegistry::postMessageToRemote):

  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.h: Added.
  • WebProcess/WebCoreSupport/WebBroadcastChannelRegistry.messages.in: Added.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_appHighlightsVisible):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::broadcastChannelRegistry):

Source/WebKitLegacy:

Add BroadcastChannelRegistry implementation for WebKitLegacy.

  • Sources.txt:
  • WebCoreSupport/WebBroadcastChannelRegistry.cpp: Added.

(WebBroadcastChannelRegistry::getOrCreate):
(WebBroadcastChannelRegistry::registerChannel):
(WebBroadcastChannelRegistry::unregisterChannel):
(WebBroadcastChannelRegistry::postMessage):

  • WebCoreSupport/WebBroadcastChannelRegistry.h: Added.
  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::initWithFrame):
(WebView::notifyPreferencesChanged):

Source/WTF:

Add experimental feature flag for BroadcastChannel, off by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • TestExpectations:
  • fast/html/broadcast-channel-between-different-sessions-expected.txt: Added.
  • fast/html/broadcast-channel-between-different-sessions.html: Added.
  • fast/html/resources/broadcast-channel-between-different-sessions-window.html: Added.

Add layout test coverage to make sure that windows belonging to different session are unable to communicate
via BroadcastChannel.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-sizing.window-expected.txt.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/the-window-object/noopener-noreferrer-BarProp.window-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt: Added.
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/win/TestExpectations:
  • platform/wk2/TestExpectations:

Update test expectations now that we support BroadcastChannel.

5:35 PM Changeset in webkit [279970] by Robert Jenner
  • 2 edits in trunk/LayoutTests

inspector/canvas/setRecordingAutoCaptureFrameCount.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=228011.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-15

  • platform/mac/TestExpectations:
4:24 PM Changeset in webkit [279969] by Chris Dumez
  • 7 edits in trunk

FetchResponse.formData() should reject promise with a TypeError if the body is null
https://bugs.webkit.org/show_bug.cgi?id=228007

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/fetch/api/request/request-consume-empty.any-expected.txt:
  • web-platform-tests/fetch/api/request/request-consume-empty.any.worker-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.any-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.any.worker-expected.txt:

Source/WebCore:

FetchResponse.formData() should reject promise with a TypeError if the body is null, to match
the behavior of Chrome and Firefox.

No new tests, rebaselined existing tests.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::formData):

3:56 PM Changeset in webkit [279968] by Kyle Piddington
  • 3 edits
    2 adds in trunk

WebGL2 demo doesn't work due to failing compilation to metal backend
https://bugs.webkit.org/show_bug.cgi?id=226865
Source/ThirdParty/ANGLE:

Fix translation of struct-arrays to contain the array type as well.
Reviewed by Dean Jackson.

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:

LayoutTests:

Fix translation of struct-arrays to contain the array type as well.
Reviewed by Dean Jackson.

  • fast/canvas/webgl/shader-with-struct-array.html: Added.
  • fast/canvas/webgl/shader-with-struct-array-expected.txt: Added.
3:52 PM Changeset in webkit [279967] by Chris Dumez
  • 6 edits in trunk

Sync XHR 'load' event is always has total/loaded=0
https://bugs.webkit.org/show_bug.cgi?id=228004

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT test that is now passing.

  • web-platform-tests/xhr/send-sync-response-event-order-expected.txt:

Source/WebCore:

XMLHttpRequest::didReceiveData() was not calling XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent()
for sync XHRs because we don't want to fire 'progress' events for sync XHR. However, dispatchThrottledProgressEvent()
also updates XMLHttpRequestProgressEventThrottle's m_loaded / m_total members and we do want those to get updated for
sync XHRs, since they get used later on for the 'load' event.

No new tests, rebaselined existing test.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::didReceiveData):

  • xml/XMLHttpRequestProgressEventThrottle.cpp:

(WebCore::XMLHttpRequestProgressEventThrottle::updateProgress):
(WebCore::XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent): Deleted.

  • xml/XMLHttpRequestProgressEventThrottle.h:
3:45 PM Changeset in webkit [279966] by sihui_liu@apple.com
  • 13 edits in trunk/Source

Do not abort ongoing IDB transaction synchronously on non-imminent PrepareToSuspend message
https://bugs.webkit.org/show_bug.cgi?id=227778
<rdar://problem/80602557>

Reviewed by Chris Dumez.

Source/WebCore:

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::hasDatabaseActivitiesOnMainThread const):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::hasActiveTransactions const):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

Source/WebKit:

Currently we abort IDB transactions and suspend IDB thread synchronously in NetworkProcess::prepareToSuspend.
As UI process does not know the file locking state in network process now (because network process tracks
the state and takes the assertion by itself), UI process may send non-imminent PrepareToSuspend more often,
and we may abort transaction too aggressively (e.g. UI process may send the message as soon as app is in
background). To fix the possible regression of data loss, we will schedule a task with 5s delay to abort
transactions after prepareToSuspend. In this case, transactions finished in 5s can have a chance to finish.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:
  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::suspendIDBServers):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
(WebKit::NetworkProcess::createWebIDBServer):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::setIsHoldingLockedFiles):

  • UIProcess/ProcessAssertion.h:

(WebKit::ProcessAssertion::setPrepareForInvalidationHandler):

  • UIProcess/ios/ProcessAssertionIOS.mm:

(-[WKRBSAssertionDelegate dealloc]):
(-[WKRBSAssertionDelegate assertionWillInvalidate:]):
(WebKit::ProcessAssertion::ProcessAssertion):
(WebKit::ProcessAssertion::~ProcessAssertion):
(WebKit::ProcessAssertion::processAssertionWillBeInvalidated):

3:26 PM Changeset in webkit [279965] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur wk1 Debug] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-duration-loop.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228006

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/mac-wk1/TestExpectations:
2:24 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
2:17 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
2:08 PM Changeset in webkit [279964] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Reddit PiP video pauses when scrolling
https://bugs.webkit.org/show_bug.cgi?id=227999

Reviewed by Jer Noble.

Enable the requiresUserGestureToPauseInPictureInPicture quirk for reddit.com.

  • page/Quirks.cpp:

(WebCore::Quirks::requiresUserGestureToPauseInPictureInPicture const):

2:04 PM Changeset in webkit [279963] by Megan Gardner
  • 13 edits in trunk/Source

Rename scrollRectIntoView to scrollContainingScrollViewsToRevealRect for clarity.
https://bugs.webkit.org/show_bug.cgi?id=227995

Reviewed by Tim Horton.

Source/WebCore:

No behavior change.

  • loader/EmptyClients.h:
  • page/Chrome.cpp:

(WebCore::Chrome::scrollContainingScrollViewsToRevealRect const):
(WebCore::Chrome::scrollRectIntoView const): Deleted.

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebCore::ChromeClient::scrollRectIntoView const): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebKit::WebChromeClient::scrollRectIntoView const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::scrollContainingScrollViewsToRevealRect const):
(WebChromeClient::scrollRectIntoView const): Deleted.

1:44 PM Changeset in webkit [279962] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] Harden defaultTimeZone retrieval
https://bugs.webkit.org/show_bug.cgi?id=227996
JSTests:

Reviewed by Mark Lam.

  • complex.yaml:
  • complex/intl-timezone-check.js: Added.

(shouldBe):

Source/JavaScriptCore:

rdar://80540300

Reviewed by Mark Lam.

We received the report that "UTC" can appear in Intl.DateTimeFormat's default timezone.
While we cannot reproduce it, this patch attempts to avoid using TimeZone from UCalendar
so that the code gets the same to the old defaultTimeZone implementation.

  • runtime/JSDateMath.cpp:

(JSC::DateCache::defaultTimeZone):
(JSC::DateCache::timeZoneCacheSlow):

1:42 PM Changeset in webkit [279961] by mark.lam@apple.com
  • 5 edits
    1 add in trunk

JITWorklist::waitUntilAllPlansForVMAreReady() should also be notified when plans are cancelled.
https://bugs.webkit.org/show_bug.cgi?id=228003
rdar://78314543

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/waitUntilAllPlansForVMAreReady-should-be-notified-of-cancelled-plans-too.js: Added.

Source/JavaScriptCore:

Previously, it only gets notified when plans are done compiling. As a result, if
JITWorklist::waitUntilAllPlansForVMAreReady() found non-ready plans and started
waiting, and those plans were canceled, then JITWorklist::waitUntilAllPlansForVMAreReady()
can hang indefinitely.

This patch renames JITWorklist::::m_planCompiled to m_planCompiledOrCancelled,
and notifies it also when plans are cancelled.

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::waitUntilAllPlansForVMAreReady):
(JSC::JITWorklist::removeMatchingPlansForVM):

  • jit/JITWorklist.h:
  • jit/JITWorklistThread.cpp:

(JSC::JITWorklistThread::work):

1:40 PM Changeset in webkit [279960] by beidson@apple.com
  • 4 edits in trunk/Source/WebCore

Use WeakPtr with UniqueIDBDatabaseConnection
<rdar://79447808> and https://bugs.webkit.org/show_bug.cgi?id=227969

Reviewed by Geoff Garen.

No new tests possible.

Noticed this raw ptr which was raw to break a ref cycle.
WeakPtr works better.

  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::databaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abortWithoutCallback):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::commit):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::createIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::objectStoreIdentifiers):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::didActivateInBackingStore):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::databaseConnection): Deleted.

1:39 PM Changeset in webkit [279959] by Truitt Savell
  • 3 edits in trunk/LayoutTests

[Mac OS & iOS] imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-network-error.sub.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=227998

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
1:30 PM Changeset in webkit [279958] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Improve multicol logging in render tree dumps, and cleanup
https://bugs.webkit.org/show_bug.cgi?id=227994

Reviewed by Alan Bujtas.

For a RenderFragmentedFlow dump the list of fragment containers, and clean up the existing
dumping of containers for a renderer inside a fragmented flow. Also dump column information
for RenderMultiColumnSet.

Use initializers for member variables in various fragmentation-related renderers.

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::RenderFragmentContainer):

  • rendering/RenderFragmentContainer.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::RenderMultiColumnFlow):

  • rendering/RenderMultiColumnFlow.h:
  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::RenderMultiColumnSet):

  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderObject.cpp:

(WebCore::enclosingFragmentedFlowFromRenderer):
(WebCore::RenderObject::outputRegionsInformation const):
(WebCore::RenderObject::outputRenderObject const):

1:15 PM Changeset in webkit [279957] by Robert Jenner
  • 2 edits in trunk/LayoutTests

transitions/transition-end-event-nested.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=228002.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-15

  • platform/mac/TestExpectations:
1:12 PM Changeset in webkit [279956] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

MemoryIDBBackingStore cleanup.
<rdar://79497380> and https://bugs.webkit.org/show_bug.cgi?id=227993

Reviewed by Geoffrey Garen.

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::registerObjectStore):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
11:29 AM Changeset in webkit [279955] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Add samplingProfilerIgnoreExternalSourceID option
https://bugs.webkit.org/show_bug.cgi?id=227985

Reviewed by Mark Lam.

We can ignore sourceID when aggregating samples. By doing so, we can open Speedometer2 style iframes
and still aggregate all the functions even though each script in iframe has different source ID.

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

(JSC::SamplingProfiler::StackFrame::sourceID):
(JSC::SamplingProfiler::reportTopFunctions):

  • runtime/SamplingProfiler.h:
10:45 AM Changeset in webkit [279954] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed, update my status in contributors.json to reviewer.

  • Scripts/webkitpy/common/config/contributors.json:
10:17 AM Changeset in webkit [279953] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add unit-tests for InstallBuiltProduct step
https://bugs.webkit.org/show_bug.cgi?id=227990

Reviewed by Philippe Normand.

  • CISupport/build-webkit-org/steps_unittest.py:
  • CISupport/ews-build/steps_unittest.py:
9:50 AM Changeset in webkit [279952] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur wk1 arm64] http/tests/security/frameNavigation/xss-DENIED-plugin-navigation.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=227973

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-15

  • platform/mac-wk1/TestExpectations:
9:43 AM Changeset in webkit [279951] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Expand GPU sandbox to support multi-target AirPlay
https://bugs.webkit.org/show_bug.cgi?id=227972
<rdar://problem/76029596>

Reviewed by Eric Carlson.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
9:16 AM Changeset in webkit [279950] by ntim@apple.com
  • 5 edits in trunk

<dialog> element: do not perform close() method steps when removing open attribute.
https://bugs.webkit.org/show_bug.cgi?id=227872

Reviewed by Chris Dumez.

Test: web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open.html

The close function now follows the steps at: https://html.spec.whatwg.org/multipage/interactive-elements.html#close-the-dialog

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open-expected.txt:

Source/WebCore:

  • html/HTMLDialogElement.cpp:

(WebCore::HTMLDialogElement::show):
(WebCore::HTMLDialogElement::showModal):
(WebCore::HTMLDialogElement::close):
(WebCore::HTMLDialogElement::dispatchPendingEvent):
(WebCore::HTMLDialogElement::isOpen const): Deleted.
(WebCore::HTMLDialogElement::returnValue): Deleted.
(WebCore::HTMLDialogElement::setReturnValue): Deleted.
(WebCore::HTMLDialogElement::parseAttribute): Deleted.
(WebCore::HTMLDialogElement::isModal const): Deleted.

  • html/HTMLDialogElement.h:
9:15 AM Changeset in webkit [279949] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore
REGRESSION (r279119?): [iOS] ASSERTION FAILED: !m_impl
!m_shouldEnableAssertions m_impl->wasConstructedOnMainThread() == isMainThread() seen with 3 WebKitLegacy media API tests

https://bugs.webkit.org/show_bug.cgi?id=227930
<rdar://problem/80545962>

Reviewed by Eric Carlson.

Dispatch to the WebThread if necessary.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):

9:09 AM Changeset in webkit [279948] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.25

8:53 AM Changeset in webkit [279947] by Ruben Turcios
  • 1 copy in branches/safari-612.1.24-branch

New branch.

7:59 AM Changeset in webkit [279946] by Razvan Caliman
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression (r278607) Jump to CSS variable declaration from Computed panel not working
https://bugs.webkit.org/show_bug.cgi?id=227811
<rdar://problem/80339360>

Reviewed by Devin Rousso.

When attempting to highlight a hidden unused CSS variable, use the same method to identify a corresponding WI.CSSProperty
as used with other CSS property types. The method checks the canonical property name instead of strict object equality.

When a CSS variable is shown in the Computed panel, its corresponding WI.CSSProperty instance has slightly different
properties than the WI.CSSProperty used in the Styles panel. The instances are generated by different calls to
WI.DOMNodeStyles._parseStylePropertyPayload(), one for the payload of matching styles and another for computed styles.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty.propertiesMatch):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty.hasMatchingLonghandProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):

7:26 AM Changeset in webkit [279945] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[iOS]TestWebKitAPI.InAppBrowserPrivacy.AppBoundDomainAllowsServiceWorkers is failing
https://bugs.webkit.org/show_bug.cgi?id=227918
<rdar://problem/80535625>

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm: Disabled the test for now to speed up EWS.
6:48 AM Changeset in webkit [279944] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Can't click links with touchscreen
https://bugs.webkit.org/show_bug.cgi?id=226679

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2021-07-15
Reviewed by Michael Catanzaro.

Currently, when we emulate mouse events for touch, we send events with touch
pointer type, however the way we do it doesn't really match how touch type
events are supposed to behave: for example, we won't send a press event until
a finger release, and will then send both together. And touch pointer type
events are also supposed to support multitouch (or at least they do in iOS),
while with this scheme they really can't.

Not only all of this produces weird results for pointer events, but the actual
mouse emulation doesn't really work as intended. For example, when tapping
empty space on the page, and then a link, the latter won't do anything.
Meanwhile, it's possible to accidentally open a link while pinch zooming.

Switch back to emulating mouse pointer type events for now, as it was before
the rewrite to avoid this. Touch pointer type events don't work properly
anyway.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):

6:44 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
6:09 AM Changeset in webkit [279943] by ntim@apple.com
  • 7 edits in trunk/LayoutTests

Re-import html/semantics/interactive-elements/the-dialog-element WPT
https://bugs.webkit.org/show_bug.cgi?id=227986

Unreviewed.

Upstream commit: https://github.com/web-platform-tests/wpt/commit/10a8411ba8ed0012da5ecefc6eba9956a13b2c21

LayoutTests/imported/w3c:

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

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:
5:54 AM Changeset in webkit [279942] by Philippe Normand
  • 2 edits in trunk

Unreviewed, CMake fix-up after r279940

  • Source/cmake/FindLIBPORTAL.cmake: Fix libportal detection.
5:40 AM Changeset in webkit [279941] by Adrian Perez de Castro
  • 14 edits in trunk/Source

Non-unified build fixes, mid-July 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=227981

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • ftl/FTLState.cpp: Add missing B3ValueInlines.h header.
  • runtime/TemporalNow.cpp: Add missing JSCJSValueInlines.h and JSObjectInlines.h headers.
  • runtime/TemporalObject.cpp: Ditto.

Source/WebCore:

  • accessibility/AXObjectCache.cpp: Add missing AXImage.h and RenderImage.h headers.
  • bindings/js/JSIntersectionObserverCustom.cpp:

(WebCore::JSIntersectionObserverOwner::isReachableFromOpaqueRoots): Add missing namespace to
usage of JSC::jsCast<T>() template.

  • bindings/js/JSResizeObserverCustom.cpp: Add missing Element.h and JSNodeCustom.h headers.

(WebCore::JSResizeObserverOwner::isReachableFromOpaqueRoots): Add missing namespace to usage
of JSC::jsCast<T>() template.

  • css/CSSCrossfadeValue.h: Add missing forward declaration of Style::BuilderState.
  • css/parser/CSSPropertyParserWorkerSafe.cpp: Add missing ParsingUtilities.h header.
  • platform/graphics/cairo/GradientCairo.cpp: Replace GraphicsContext.h header with

GraphicsContextCairo.h to avoid errors about undefined types.

  • rendering/style/RenderStyleConstants.cpp: Add missing CSSPrimitiveValueMappings.h header.

Source/WebKit:

  • UIProcess/ProcessAssertion.cpp: Add missing wtf/RunLoop.h header.
4:48 AM Changeset in webkit [279940] by Philippe Normand
  • 28 edits
    1 add in trunk

[GStreamer][Pipewire] Implement getDisplayMedia() backend
https://bugs.webkit.org/show_bug.cgi?id=210926

Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/FindLIBPORTAL.cmake: Added.
  • Source/cmake/GStreamerChecks.cmake: Enable Pipewire support if libportal was found.

Source/WebCore:

Display capture is now supported by GStreamer ports. When requested, the capture device
manager queries the host through the libportal API. The user is presented with a prompt
allowing to select either a monitor or an application window. Once selected, the manager
creates the associated CaptureDevice, passing the pipewire file descriptor along. The
existing GStreamer video capture source infrastructure is reused, leveraging the GStreamer
pipewiresrc element to generate a live video stream of the display device.

As display capture devices need to respect the aspect-ratio of the video frame, taking into
account max-{widther,height}, some code was reused from the Cocoa display capture code and
placed in RealtimeVideoCaptureSource as ensureIntrinsicSizeMaintainsAspectRatio().

Unfortunately this aspect-ratio enforcing feature is currently used only for mock capture
sources. The GStreamer pipewiresrc doesn't support caps renegotiation well yet, so we can't
comply with the aspect-ratio enforcing, for the time being.

This patch is covered by newly unskipped layout tests and API tests.

  • platform/GStreamer.cmake:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::setIntrinsicSize):
(WebCore::RealtimeMediaSource::hashedId const):

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::ensureIntrinsicSizeMaintainsAspectRatio):

  • platform/mediastream/RealtimeVideoCaptureSource.h:
  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::sourceSettingsChanged):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:

(WebCore::GStreamerDisplayCaptureDeviceManager::GStreamerDisplayCaptureDeviceManager):
(WebCore::GStreamerDisplayCaptureDeviceManager::~GStreamerDisplayCaptureDeviceManager):
(WebCore::GStreamerDisplayCaptureDeviceManager::computeCaptureDevices):
(WebCore::GStreamerDisplayCaptureDeviceManager::setSession):
(WebCore::GStreamerDisplayCaptureDeviceManager::sessionStarted):
(WebCore::GStreamerDisplayCaptureDeviceManager::notifyClient):
(WebCore::GStreamerDisplayCaptureDeviceManager::sessionWasClosed):

  • platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::GStreamerCapturer):
(WebCore::GStreamerCapturer::Observer::~Observer):
(WebCore::GStreamerCapturer::addObserver):
(WebCore::GStreamerCapturer::removeObserver):
(WebCore::GStreamerCapturer::forEachObserver):
(WebCore::GStreamerCapturer::createSource):

  • platform/mediastream/gstreamer/GStreamerCapturer.h:

(WebCore::GStreamerCapturer::Observer::sourceCapsChanged):
(WebCore::GStreamerCapturer::deviceType const):

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:

(WebCore::GStreamerVideoCaptureSource::create):
(WebCore::GStreamerVideoCaptureSource::createPipewireSource):
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource):
(WebCore::m_deviceType):
(WebCore::GStreamerVideoCaptureSource::~GStreamerVideoCaptureSource):
(WebCore::GStreamerVideoCaptureSource::sourceCapsChanged):
(WebCore::GStreamerVideoCaptureSource::startProducingData):
(WebCore::GStreamerVideoCaptureSource::stopProducingData):
(WebCore::m_capturer): Deleted.

  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::GStreamerVideoCapturer::GStreamerVideoCapturer):
(WebCore::GStreamerVideoCapturer::createSource):
(WebCore::GStreamerVideoCapturer::setPipewireFD):
(WebCore::GStreamerVideoCapturer::setSize):
(WebCore::GStreamerVideoCapturer::setFrameRate):

  • platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockRealtimeVideoSource::create):
(WebCore::MockRealtimeVideoSourceGStreamer::createMockDisplayCaptureSource):

  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::capabilities):
(WebCore::MockRealtimeVideoSource::generateFrame):

  • platform/mock/MockRealtimeVideoSource.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml: Enable screen-capture if libportal

was found.

LayoutTests:

  • platform/glib/TestExpectations: Unskip now-passing getDisplayMedia tests.
1:42 AM Changeset in webkit [279939] by Ziran Sun
  • 19 edits
    7 copies
    7 moves
    2 adds
    5 deletes in trunk/LayoutTests

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

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003-expected.html:
  • web-platform-tests/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7-expected.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-10-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6-expected.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html:
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-8.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9-expected.html: Removed.
  • web-platform-tests/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-9.html: Removed.
  • web-platform-tests/css/css-grid/alignment/w3c-import.log:
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-001-expected.html: Removed.
  • web-platform-tests/css/css-grid/grid-item-percentage-quirk-002-expected.html: Removed.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative.html.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-003.tentative.html.
  • web-platform-tests/css/css-grid/grid-items/grid-items-contribution-negative-margins-expected.xht: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/grid-items/grid-items-contribution-negative-margins.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-004.html:
  • web-platform-tests/css/css-grid/grid-model/grid-areas-overflowing-grid-container-005.html:
  • web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm-expected.xht: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-items/grid-item-inline-contribution-002.tentative-expected.xht.
  • web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html: Added.
  • web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:
  • web-platform-tests/css/css-grid/w3c-import.log:

LayoutTests:

1:08 AM Changeset in webkit [279938] by magomez@igalia.com
  • 10 edits in trunk/Source/WebCore

[GStreamer][GL] A420 compositing support
https://bugs.webkit.org/show_bug.cgi?id=227953

Reviewed by Xabier Rodriguez-Calvar.

A420 is YUV+alpha in a separate component. vp9dec outputs this format for assets encoded
with alpha support. Our GL sink now supports this format and lets the TextureMapper handle the
final conversion to RGBA.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
  • platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp:

(WebCore::GstVideoFrameHolder::platformLayerBuffer):

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:

(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::drawTexturePlanarYUV):

  • platform/graphics/texmap/TextureMapperGL.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:

(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):

  • platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:
  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

Jul 14, 2021:

8:11 PM Changeset in webkit [279937] by Devin Rousso
  • 10 edits
    8 adds in trunk

Implement Array.prototype.findLast and Array.prototype.findLastIndex
https://bugs.webkit.org/show_bug.cgi?id=227939

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/typedarray-findLast.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

  • stress/typedarray-findLastIndex.js: Added.

(keepEven):
(keepEvenAndChange):
(isBigEnoughAndException):

Source/JavaScriptCore:

  • builtins/ArrayPrototype.js:

(findLast): Added.
(findLastIndex): Added.
(JSC::ArrayPrototype::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:
  • builtins/TypedArrayPrototype.js:

(findLast): Added.
(findLastIndex): Added.

  • runtime/ArrayPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/OptionsList.h:

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

LayoutTests:

  • js/array-findLast.html: Added.
  • js/array-findLast-expected.txt: Added.
  • js/script-tests/array-findLast.js: Added.

(passUndefined):
(passZero):
(passNull):
(passFalse):
(passEmptyString):
(passEven):
(passAfter5):
(toObject):
(findItemAddedDuringSearch):
(numberOfCallbacksInFindInArrayWithHoles):
(throwError):

  • js/array-findLastIndex.html: Added.
  • js/array-findLastIndex-expected.txt: Added.
  • js/script-tests/array-findLastIndex.js: Added.

(passUndefined):
(passZero):
(passNull):
(passFalse):
(passEmptyString):
(passEven):
(passAfter5):
(toObject):
(findItemAddedDuringSearch):
(numberOfCallbacksInFindIndexInArrayWithHoles):
(throwError):

6:20 PM Changeset in webkit [279936] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Update expectations for webanimations/multiple-transform-properties-and-multiple-transform-properties-animation-with-delay-on-forced-layer.html.
https://bugs.webkit.org/show_bug.cgi?id=227976.

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-14

  • platform/mac-wk2/TestExpectations:
5:53 PM Changeset in webkit [279935] by Brent Fulgham
  • 2 edits in trunk/Tools

[iOS & Mac Big Sur Release] Two SOAuthorizationSubFrame API tests are failing
https://bugs.webkit.org/show_bug.cgi?id=227925
<rdar://problem/80543830>

Reviewed by Kate Cheney.

In Bug 227729 I added a number of extra tests that an Extensible SSO delegate method
was called. I did a search/paste and added them to all SSO flows without much detailed
analysis. Testing shows that on Simulator, these delegate are not always called, perhaps
because the test case involves loads to live websites that might take longer than the
hard-coded timeout used to move to the next step of the test.

Because these failures are slowing down our EWS, I'm removing these two checks. We
can consider adding them back if we need such checks in the future.

  • TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:

(TestWebKitAPI::TEST):

5:09 PM Changeset in webkit [279934] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r279851.

Overrode previously set test expectations.

Reverted changeset:

"[Mac wk1 Debug] webaudio/audioworket-out-of-memory.html is a
flaky timeout."
https://bugs.webkit.org/show_bug.cgi?id=227845
https://commits.webkit.org/r279851

5:07 PM Changeset in webkit [279933] by Alan Coon
  • 1 copy in tags/Safari-612.1.23.0.1

Tag Safari-612.1.23.0.1.

4:38 PM Changeset in webkit [279932] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION (r279806): [ iOS/macOS ] fast/canvas/canvas-overloads-strokeText.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=227881

Unreviewed test gardening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-07-14

  • platform/mac-wk2/TestExpectations:
4:27 PM Changeset in webkit [279931] by Alan Coon
  • 8 edits in branches/safari-612.1.23.0-branch/Source

Versioning.

WebKit-7612.1.23.0.1

4:02 PM Changeset in webkit [279930] by Alan Coon
  • 1 copy in branches/safari-612.1.23.0-branch

New branch.

3:56 PM Changeset in webkit [279929] by jer.noble@apple.com
  • 8 edits in trunk/Source

Source/WebCore/PAL:
Unreviewed build fix after r279912 (239661@main); Adopt HAVE(SYSTEM_STATUS) macro.

  • pal/ios/SystemStatusSoftLink.h:
  • pal/ios/SystemStatusSoftLink.mm:

Source/WebKit:
Unreviewed build fix after r279912 (239661@main); Adopt HAVE(SYSTEM_STATUS) macro.

  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:

(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString):

  • Platform/spi/ios/SystemStatusSPI.h:

Source/WTF:
Unreviewed build fix after r279912 (239661@main); Add a HAVE(SYSTEM_STATUS) macro.

  • wtf/PlatformHave.h:
3:55 PM Changeset in webkit [279928] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Tools] linkify first line of commit message in tooltip
https://bugs.webkit.org/show_bug.cgi?id=227968
<rdar://problem/80596878>

Patch by Kevin Neal <kevin_neal@apple.com> on 2021-07-14
Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(xAxisFromScale):

3:37 PM Changeset in webkit [279927] by msaboff@apple.com
  • 5 edits in trunk/Source

[macOS] Add new entitlement to limit process to a single JIT region
https://bugs.webkit.org/show_bug.cgi?id=227956

Reviewed by Mark Lam.

This macOS entitlement limits a process to a single JIT region.
This matches the behavior on iOS.

  • Scripts/process-entitlements.sh:

Source/JavaScriptCore:

  • entitlements.plist:
3:12 PM Changeset in webkit [279926] by Wenson Hsieh
  • 9 edits
    2 adds in trunk/Source/WebKit

[GPU Process] Dump basic RemoteRenderingBackend state when taking system diagnostics
https://bugs.webkit.org/show_bug.cgi?id=227917

Reviewed by Tim Horton.

Make it possible to diagnose issues where the GPU Process is stuck (e.g. failing to acknowledge context flushes
from the web process) by dumping information about the states of all RemoteRenderingBackends in the GPU process.
See comments below for more detail.

  • GPUProcess/GPUConnectionToWebProcess.h:

(WebKit::GPUConnectionToWebProcess::remoteRenderingBackendMap const):

Expose this const getter, so that GPUProcess can iterate over remote rendering backends when collecting
diagnostic information in additionalStateForDiagnosticReport().

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/cocoa/GPUProcessCocoa.mm: Added.

(WebKit::GPUProcess::additionalStateForDiagnosticReport const):

Override this method and return a dictionary containing information about each RemoteRenderingBackend for all
GPUConnectionToWebProcesses. This is an example of a state dictionary:

`
{

"RemoteRenderingBackend states" = {

<WP ID> = {

<RRB ID> = FinishedReplayingDisplayList;

};

};

}
`

Importantly, this reveals RemoteRenderingBackends that are stuck waiting for newly created display list item
buffers, missing cached resources, or destination image buffers (essentially a special case of "missing cached
resources"), and also cases where display list playback infinitely loops or otherwise hangs.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):
(WebKit::RemoteRenderingBackend::lastKnownState const):
(WebKit::RemoteRenderingBackend::updateLastKnownState):

Add a state flag to RemoteRenderingBackend, so that it can remember its last known state. This state is updated
when entering or exiting the main display list processing loop (wakeUpAndApplyDisplayList); if we're about to
go to sleep with pending wakeup arguments, then we'll set the last known state to one of the WaitingFor_______
states.

This state is wrapped in an Atomic, since it's only updated from the rendering backend's background queue, but
it's only read from within the OS state handler block on the main queue.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackendState.h: Added.

Add a new 8-bit enum representing the state of a RemoteRenderingBackend. See above for more details.

(WebKit::name):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout):

Add fault logging in the case where we've reached the maximum number of timeouts while waiting for a display
list context flush. Importantly, we include the remote rendering backend's identifier here to make it easier to
correlate with information from GPU Process state dumping above.

3:12 PM Changeset in webkit [279925] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Link against Catalyst ANGLE-shared.dylib when linking Catalyst WebCore.framework
https://bugs.webkit.org/show_bug.cgi?id=227965
<rdar://76284889>

Reviewed by Tim Horton.

r274742 put the dylib into the correct location, but when linking WebCore we are still looking in the
location of the non-Catalyst dylib, which happens to have all the symbols we are looking for so linking succeeds.
At runtime, though, we realize we are opening the wrong dylib and bad things happen.

The solution is to look in the Catalyst WebCore framework directory when WK_USE_ALTERNATE_FRAMEWORKS_DIR is YES,
which is only in the Catalyst build.

  • Configurations/WebCore.xcconfig:
3:10 PM Changeset in webkit [279924] by mark.lam@apple.com
  • 5 edits in trunk/Source

Speculative fix for failed scope.releaseAssertNoException() after calls to JSMap::create().
https://bugs.webkit.org/show_bug.cgi?id=227964
rdar://78013960

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

There have been reports of flaky failures on the scope.releaseAssertNoException()
after the call to JSMap::create() in JSModuleLoader::finishCreation().

The scope.releaseAssertNoException() says that we don't expect the JSMap::create()
to ever throw an exception. If the assertion is true, the only way that we can
see an exception there is if we're throwing an asynchronous TerminationException.

Since JSModuleLoader::finishCreation() does not have any long running loops, we can
just DeferTerminationForAWhile and let the next exception check site throw the
asynchronous TerminationException. We don't want to just use DeferTermination
because it will throw the TerminationException right at the end of
JSModuleLoader::finishCreation(), and the caller of JSModuleLoader::finishCreation()
may be similarly not expecting an exception to be thrown there.

Also apply the same treatment to AbstractModuleRecord::finishCreation(), and
getBackingMap() in WebCore for the same reason. Other than those, other sites that
call JSMap::create() already check for exceptions. So, those sites do not need to
DeferTerminationForAWhile.

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::finishCreation):

Source/WebCore:

  • bindings/js/JSDOMMapLike.cpp:

(WebCore::getBackingMap):

3:04 PM Changeset in webkit [279923] by keith_miller@apple.com
  • 3 edits in trunk/JSTests

Unreviewed, test gardening.

  • stress/bit-op-with-object-returning-int32.js:
  • stress/bitwise-not-fixup-rules.js:

(jscOptions):

2:18 PM Changeset in webkit [279922] by msaboff@apple.com
  • 3 edits in trunk/Source/bmalloc

[BMalloc] Lazily allocate physical pages
https://bugs.webkit.org/show_bug.cgi?id=227957

Reviewed by Mark Lam.

For the Darwin platform we don't need to call madvise(..., MADV_FREE_REUSE) to commit physical
memory to back a range of allocated virtual memory. Instead the kernel will commit pages
as they are touched. This can reduce the footprint of a process when there is sparse access
of allocated memory.

Also fixed a minor bug where we allocate memory, but don't update the amount of physical memory
associated with it.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::tryAllocateLargeChunk):

  • bmalloc/VMAllocate.h:

(bmalloc::vmAllocatePhysicalPages):

2:07 PM Changeset in webkit [279921] by Alan Coon
  • 1 copy in tags/Safari-611.3.10.1.5

Tag Safari-611.3.10.1.5.

1:48 PM Changeset in webkit [279920] by Alan Coon
  • 8 edits in branches/safari-611.3.10.1-branch/Source

Versioning.

WebKit-7611.3.10.1.5

1:44 PM Changeset in webkit [279919] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[Cocoa] Null-pointer deref in MediaKeySystemAccess::createMediaKeys()
https://bugs.webkit.org/show_bug.cgi?id=227911
<rdar://80325855>

Reviewed by Chris Dumez.

In r278481, we moved from a (timer-based) GenericTaskQueue to the document's event loop, but in so
doing, allowed the passed-in lambda to be called after the underlying object had been destroyed.
Make MediaKeySystemAccess a CanMakeWeakPtr and pass in a WeakPtr to the lambda. To ensure that the
lambda itself keeps MediaKeySystemAccess during the execution of the lambda, also add a Ref to
the object after null-checking weakThis.

  • Modules/encryptedmedia/MediaKeySystemAccess.cpp:

(WebCore::MediaKeySystemAccess::createMediaKeys):

  • Modules/encryptedmedia/MediaKeySystemAccess.h:
1:40 PM Changeset in webkit [279918] by commit-queue@webkit.org
  • 40 edits in trunk/Source

Rename hasOverflowClip() to prepare for the real overflow:clip
https://bugs.webkit.org/show_bug.cgi?id=227899

Patch by Rob Buis <rbuis@igalia.com> on 2021-07-14
Reviewed by Simon Fraser.

Rename hasOverflowClip() to prepare for the real overflow:clip.

Source/WebCore:

No new tests since no change in behavior.

  • dom/Document.cpp:

(WebCore::Document::isBodyPotentiallyScrollable):
(WebCore::computeIntersectionState):

  • dom/Element.cpp:

(WebCore::Element::scrollTo):
(WebCore::Element::scrollByUnits):

  • editing/TextIterator.cpp:

(WebCore::fullyClipsContents):

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::lineOverflowWidth):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::collectOverflow):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::nodeRespondingToScrollWheelEvents):

  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::layoutLineBoxes):
(WebCore::LegacyLineLayout::addOverflowFromInlineChildren):

  • rendering/RenderBlock.cpp:

(WebCore::OverflowEventDispatcher::OverflowEventDispatcher):
(WebCore::RenderBlock::endAndCommitUpdateScrollInfoAfterLayoutTransaction):
(WebCore::RenderBlock::updateScrollInfoAfterLayout):
(WebCore::RenderBlock::computeOverflow):
(WebCore::RenderBlock::paint):
(WebCore::RenderBlock::isSelectionRoot const):
(WebCore::RenderBlock::nodeAtPoint):
(WebCore::RenderBlock::addFocusRingRects):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlock):
(WebCore::RenderBlockFlow::adjustForBorderFit const):

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::endPaddingWidthForCaret const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleWillChange):
(WebCore::RenderBox::styleDidChange):
(WebCore::RenderBox::updateFromStyle):
(WebCore::RenderBox::scrollWidth const):
(WebCore::RenderBox::scrollHeight const):
(WebCore::RenderBox::scrollLeft const):
(WebCore::RenderBox::scrollTop const):
(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):
(WebCore::RenderBox::setScrollPosition):
(WebCore::RenderBox::includeVerticalScrollbarSize const):
(WebCore::RenderBox::includeHorizontalScrollbarSize const):
(WebCore::RenderBox::intrinsicScrollbarLogicalWidth const):
(WebCore::RenderBox::requiresLayerWithScrollableArea const):
(WebCore::RenderBox::canBeProgramaticallyScrolled const):
(WebCore::RenderBox::usesCompositedScrolling const):
(WebCore::RenderBox::hasAutoScrollbar const):
(WebCore::RenderBox::hasAlwaysPresentScrollbar const):
(WebCore::RenderBox::scrollPosition const):
(WebCore::RenderBox::cachedSizeForOverflowClip const):
(WebCore::RenderBox::backgroundHasOpaqueTopLayer const):
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::popContentsClip):
(WebCore::RenderBox::computeVisibleRectInContainer const):
(WebCore::RenderBox::createsNewFormattingContext const):
(WebCore::RenderBox::addOverflowFromChild):
(WebCore::RenderBox::addLayoutOverflow):
(WebCore::RenderBox::layoutOverflowRectForPropagation const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::scrollsOverflowX const):
(WebCore::RenderBox::scrollsOverflowY const):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):
(WebCore::RenderElement::mayCauseRepaintInsideViewport const):

  • rendering/RenderElement.h:

(WebCore::RenderElement::hasClipOrNonVisibleOverflow const):
(WebCore::RenderElement::hasClipOrOverflowClip const): Deleted.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::hitTestChildren):

  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::shouldClipFragmentedFlowContent const):
(WebCore::RenderFragmentContainer::layoutOverflowRectForBoxForPropagation):

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::addFragmentsOverflowFromChild):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clippedOverflowRect const):
(WebCore::RenderInline::computeVisibleRectInContainer const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::shouldBeNormalFlowOnly const):
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):
(WebCore::RenderLayer::enclosingOverflowClipLayer const):
(WebCore::RenderLayer::updateLayerPosition):
(WebCore::RenderLayer::allowsCurrentScroll const):
(WebCore::RenderLayer::canResize const):
(WebCore::RenderLayer::clipToRect):
(WebCore::RenderLayer::setupFontSubpixelQuantization):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::calculateClipRects const):
(WebCore::outputPaintOrderTreeRecursive):

  • rendering/RenderLayerBacking.cpp:

(WebCore::clippingLayerBox):
(WebCore::RenderLayerBacking::updateCompositedBounds):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::enclosingNonStackingClippingLayer const):
(WebCore::RenderLayerCompositor::computeAncestorClippingStack const):
(WebCore::RenderLayerCompositor::clipsCompositingDescendants):

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::paintOverflowControls):
(WebCore::RenderLayerScrollableArea::updateScrollCornerStyle):
(WebCore::RenderLayerScrollableArea::updateResizerStyle):
(WebCore::RenderLayerScrollableArea::scrollByRecursively):

  • rendering/RenderLayoutState.cpp:

(WebCore::RenderLayoutState::RenderLayoutState):
(WebCore::RenderLayoutState::computeOffsets):
(WebCore::RenderLayoutState::computeClipRect):

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::paint):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::addOverflowFromListMarker):

  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::addOverflowFromChildren):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::enclosingScrollableContainerForSnapping const):
(WebCore::objectIsRelayoutBoundary):
(WebCore::RenderObject::computeVisibleRectInContainer const):
(WebCore::RenderObject::outputRenderObject const):

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasNonVisibleOverflow const):
(WebCore::RenderObject::setHasNonVisibleOverflow):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::hasOverflowClip const): Deleted.
(WebCore::RenderObject::setHasOverflowClip): Deleted.

  • rendering/RenderScrollbarPart.cpp:

(WebCore::RenderScrollbarPart::styleDidChange):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::nodeAtPoint):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::nodeAtPoint):

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::canScroll const):

  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::styleDidChange):

  • rendering/RenderTreeAsText.cpp:
  • rendering/svg/RenderSVGBlock.cpp:

(WebCore::RenderSVGBlock::updateFromStyle):

Source/WebKitLegacy/mac:

  • DOM/DOMHTML.mm:

(-[DOMHTMLElement scrollXOffset]):
(-[DOMHTMLElement scrollYOffset]):
(-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):

1:39 PM Changeset in webkit [279917] by Chris Dumez
  • 35 edits
    5 adds in trunk

Fix type of exceptions thrown in the WebAudio API
https://bugs.webkit.org/show_bug.cgi?id=227959

Reviewed by Yusuke Suzuki.

LayoutTests/imported/w3c:

Resync WebAudio WPT tests from upstream 04ab41dced1f354873cab0 to gain test coverage and
rebaseline those tests.

  • web-platform-tests/webaudio/resources/audit.js:

(Should.prototype.throw):

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/ctor-analyser-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/different-contexts-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/different-contexts.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audionode-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-dynamic.https-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-dynamic.https.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/dynamic-register-processor.js: Added.

(ProcessorA.prototype.process):
(ProcessorA):
(ProcessorB):
(ProcessorB.prototype.process):

  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/w3c-import.log:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/ctor-biquadfilter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelsplitternode-interface/ctor-channelsplitter.html:
  • web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/ctor-delay-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/ctor-gain-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-offlineaudiocontext-interface/ctor-offlineaudiocontext-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper-expected.txt:

Source/WebCore:

The upstream webaudio web-platform-tests were updated to validate the types of
exceptions thrown by various WebAudio APIs. It became obvious that our implementation
was not always throwing the right exception type and didn't match other browsers.

This patch updates our WebAudio implementation to keep the WebAudio WPT tests passing
now that they properly validate exception types.

No new tests, re-sync'd and rebaselined existing WPT webaudio tests.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::create):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::connect):
(WebCore::AudioNode::setChannelCount):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::createScriptProcessor):

  • Modules/webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::getFrequencyResponse):

  • Modules/webaudio/ChannelSplitterNode.cpp:

(WebCore::ChannelSplitterNode::setChannelCount):

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::create):

  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::setChannelCount):

LayoutTests:

Resync audit.js from upstream WPT and rebaseline webaudio tests.

  • webaudio/OfflineAudioContext/offlineaudiocontext-constructor-expected.txt:
  • webaudio/dom-exceptions-expected.txt:
  • webaudio/resources/audit.js:

(Should.prototype.throw):

12:58 PM Changeset in webkit [279916] by keith_miller@apple.com
  • 6 edits in trunk

Convert small JIT pool tests into executable fuzzing
https://bugs.webkit.org/show_bug.cgi?id=226279

Source/JavaScriptCore:

Right now, we try to test our engine on a small JIT pool. This isn't a known configuration for any
actual ports and causes issues if we run out of JIT memory when we need to compile an OSR exit.
Instead of testing such a small pool we should just fuzz each executable allocation that says it
can fail.

The current fuzzing doesn't do a good job tracking the number of DFG/FTL compiles when allocations
fail, so when enabled those tests will just exit early. Also, right now we use a random seed picked
by the engine for these tests, which makes it hard to reproduce crashes on the bots. If we see
flakiness on the bots we can have the harness pass in a number so it gets logged in the repro command.

Reviewed by Michael Saboff.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::numberOfDFGCompiles):

  • jit/ExecutableAllocationFuzz.cpp:

(JSC::doExecutableAllocationFuzzing):

  • jsc.cpp:

(runJSC):

Tools:

Reviewed by Michael Saboff.

Right now, we try to test our engine on a small JIT pool. This isn't a known configuration for any
actual ports and causes issues if we run out of JIT memory when we need to compile an OSR exit.
Instead of testing such a small pool we should just fuzz each executable allocation that says it
can fail.

The current fuzzing doesn't do a good job tracking the number of DFG/FTL compiles when allocations
fail, so when enabled those tests will just exit early. Also, right now we use a random seed picked
by the engine for these tests, which makes it hard to reproduce crashes on the bots. If we see
flakiness on the bots we can have the harness pass in a number so it gets logged in the repro command.

  • Scripts/jsc-stress-test-helpers/js-executable-allocation-fuzz:
  • Scripts/run-jsc-stress-tests:
12:15 PM Changeset in webkit [279915] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Check for out of memory in JSC::globalFuncEscape() and JSC::globalFuncUnescape().
https://bugs.webkit.org/show_bug.cgi?id=227962
rdar://78392251

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/out-of-memory-in-globalFuncUnescape.js: Added.

Source/JavaScriptCore:

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

11:39 AM Changeset in webkit [279914] by Devin Rousso
  • 12 edits in trunk/Source

[iOS] REGRESSION(r279720): changing Subtitles to Off doesn't hide them or do anything
https://bugs.webkit.org/show_bug.cgi?id=227937
<rdar://problem/79069662>

Reviewed by Eric Carlson.

r279720 made it so that CaptionUserPreferencesMediaAF::setCaptionDisplayMode no longer
directly modifies kMACaptionAppearanceDomainUser in the WebProcess, using a cached value
as a way of preventing the WebProcess from trying to read back that value after it's set,
instead having the UIProcess send Messages::WebProcess::SetMediaAccessibilityPreferences
whenever this changes to update that cached value. Unfortunately, because the WebProcess
needs to read this value immediately after changing it, this IPC round trip causes the
WebProcess to read the old value, which results in no observable changes. In order to fix
this, notify CaptionUserPreferences that captionPreferencesChanged when the above IPC
message is received (which will also handle cases when the value changes outside WebKit).

Source/WebCore:

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::sortedTrackListForMenu):
(WebCore::MediaControlsHost::displayNameForTrack):
(WebCore::MediaControlsHost::captionDisplayMode const):
(WebCore::MediaControlsHost::showMediaControlsContextMenu):

  • dom/Document.cpp:

(WebCore::Document::registerForCaptionPreferencesChangedCallbacks):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::addTextTrack):
(WebCore::HTMLMediaElement::configureTextTrackGroup):
(WebCore::HTMLMediaElement::setSelectedTextTrack):
(WebCore::HTMLMediaElement::captionPreferencesChanged):
(WebCore::HTMLMediaElement::captionDisplayMode):
(WebCore::HTMLMediaElement::mediaPlayerPreferredAudioCharacteristics const):

  • html/shadow/MediaControlTextTrackContainerElement.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateActiveCuesFontSize):
(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):

  • page/PageGroup.h:

(WebCore::PageGroup::captionPreferences const): Added.

  • page/PageGroup.cpp:

(WebCore::PageGroup::ensureCaptionPreferences): Added.
(WebCore::PageGroup::captionPreferences): Deleted.

  • platform/cocoa/PlaybackSessionModelMediaElement.mm:

(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
(WebCore::PlaybackSessionModelMediaElement::audioMediaSelectionOptions const):
(WebCore::PlaybackSessionModelMediaElement::legibleMediaSelectionOptions const):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setShouldDisplayTrackKind):
(WebCore::InternalSettings::shouldDisplayTrackKind):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::Internals):
(WebCore::Internals::userPreferredAudioCharacteristics const):
(WebCore::Internals::setUserPreferredAudioCharacteristic):
(WebCore::Internals::captionsStyleSheetOverride):
(WebCore::Internals::setCaptionsStyleSheetOverride):
(WebCore::Internals::setPrimaryAudioTrackLanguageOverride):
(WebCore::Internals::setCaptionDisplayMode):
Rename PageGroup::captionPreferences to PageGroup::ensureCaptionPreferences so that it's
possible to get the CaptionUserPreferences without always creating it.

Source/WebKit:

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::setMediaAccessibilityPreferences):
Make sure to also update every CaptionUserPreferences once the cached preference values
are saved so that any active media can update accordingly.

11:31 AM Changeset in webkit [279913] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

libpas executable-allocator should reserve more than 256KB for non-fail region at least
https://bugs.webkit.org/show_bug.cgi?id=227927

Reviewed by Keith Miller.

libpas jit_heap has mediam allocator which allocates 128KB pages at once. However, our JSC stress tests are setting 100KB
for small executable memory tests. As a result, under this configuration, we fail immediately after using medium allocator.

But this test's "total size of executable memory is 100KB" is unrealistic: it is possible that only 100KB memory remains,
but it is impossible that we reserve only 25KB for non-fail reservation. In production, we are always reserving 128MB. So
this configuration is not realistic actually.

So, this patch changes,

  1. If non-fail region is less than 256KB, then we add 256KB and keep this 256KB as non-fail executable allocation. If not,

use 0.25 ratio as we are doing. This means that Options::jitMemoryReservationSize configures failable region of
executable memory.

  1. We also revive bytesReserved and bytesAllocated to make memoryPressureMultiplier and early-fail allocation (when there is

not enough memory and allocation can fail, then we should fail).

  • jit/ExecutableAllocator.cpp:

(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::underMemoryPressure):
(JSC::ExecutableAllocator::memoryPressureMultiplier):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableMemoryHandle::createImpl):
(JSC::ExecutableMemoryHandle::~ExecutableMemoryHandle):
(JSC::ExecutableMemoryHandle::shrink):
(JSC::ExecutableMemoryHandle::sizeInBytes const): Deleted.

  • jit/ExecutableMemoryHandle.h:

(JSC::ExecutableMemoryHandle::sizeInBytes const):
(JSC::ExecutableMemoryHandle::ExecutableMemoryHandle):

11:06 AM Changeset in webkit [279912] by eric.carlson@apple.com
  • 19 edits
    5 adds in trunk/Source

[iOS] Dynamically set capture attribution
https://bugs.webkit.org/show_bug.cgi?id=227871
rdar://70241665

Reviewed by Jer Noble.

Source/WebCore:

No new tests, tested manually.

  • en.lproj/Localizable.strings:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/ios/SystemStatusSoftLink.h: Added.
  • pal/ios/SystemStatusSoftLink.mm: Added.

Source/WebKit:

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess): Initialize m_captureOrigin.
(WebKit::GPUConnectionToWebProcess::updateCaptureOrigin): Update.
(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString const): Non-Cocoa stub.

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

(WebKit::GPUProcess::updateCaptureOrigin): Call same method in WebProcessConnection,
if it exists.

  • GPUProcess/GPUProcess.h:
  • GPUProcess/GPUProcess.messages.in:
  • GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm: Added.

(WebKit::GPUConnectionToWebProcess::setCaptureAttributionString): Set the attribution
string to "[domain] in [application]".

  • Platform/spi/ios/SystemStatusSPI.h: Added.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Allow "com.apple.systemstatus.activityattribution"

to be looked up.

  • Scripts/process-entitlements.sh: Add the entitlements required to use the

SystemStatus SPI.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::startProducingData): Fail capture
if setCaptureAttributionString returns false.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:

(WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::setCaptureAttributionString):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::updateCaptureOrigin): Call gpuProcess.updateCaptureOrigin
so the capture origin is correct when capture begins.

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChangeMainDocument): Update the capture origin.
(WebKit::WebPageProxy::willStartCapture): Ditto.
(WebKit::WebPageProxy::gpuProcessExited): Drive-by - update local variable names
to make their purpose clearer.

  • WebKit.xcodeproj/project.pbxproj:
10:54 AM Changeset in webkit [279911] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Update test expectations for storage/indexeddb/detached-iframe.html.
https://bugs.webkit.org/show_bug.cgi?id=207844

Unreviewed test gardening.

Patch by Eric Hutchison <Eric Hutchison> on 2021-07-14

  • platform/ios-wk2/TestExpectations:
10:25 AM Changeset in webkit [279910] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Placate exception checker validation in operationObjectAssignUntyped.
https://bugs.webkit.org/show_bug.cgi?id=227955
rdar://80503746

Reviewed by Michael Saboff.

JSTests:

  • stress/exception-check-in-operationObjectAssignUntyped.js: Added.

Source/JavaScriptCore:

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

8:00 AM Changeset in webkit [279909] by keith_miller@apple.com
  • 3 edits in trunk/JSTests

Fix more tests around fuzzing executable allocations
https://bugs.webkit.org/show_bug.cgi?id=226663

Reviewed by Mark Lam.

  • stress/bit-op-with-object-returning-int32.js:

(numberOfDFGCompiles): Deleted.

  • stress/bitwise-not-fixup-rules.js:

(jscOptions):
(numberOfDFGCompiles): Deleted.

4:55 AM Changeset in webkit [279908] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Add step name and description to InstallBuiltProduct build step
https://bugs.webkit.org/show_bug.cgi?id=227935

Reviewed by Carlos Alberto Lopez Perez.

  • CISupport/build-webkit-org/steps.py:

(InstallBuiltProduct):

  • CISupport/ews-build/steps.py:

(InstallBuiltProduct):

3:53 AM Changeset in webkit [279907] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GStreamer] mark media/media-source/media-webm-vorbis-partial.html and media/media-source/media-webm-opus-partial.html as failing
https://bugs.webkit.org/show_bug.cgi?id=227934

Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-07-14

  • platform/glib/TestExpectations:
12:13 AM Changeset in webkit [279906] by Said Abou-Hallawa
  • 5 edits in trunk/Source/WebCore

RenderElement::updateFillImages must fix the clients of the CSS image whose URL is invalid
https://bugs.webkit.org/show_bug.cgi?id=227926
<rdar://80457956>

Reviewed by Simon Fraser.

Per CSS2 specs, if the value of the url() is the empty string, then it
must be resolved to the URL of the style sheet which is an invalid URI
for an image. The issue https://github.com/w3c/csswg-drafts/issues/2211
was filed to change this behavior.

In RenderElement::updateFillImages() we fix the old and new fill images
only if they are different. But we consider them equal if their URIs are
equal and they are not data URIs. If the two URIs are empty strings, the
fill images will be considered equal although their CachedImages might
be different.

We need to fix the clients of the fill images always if their CachedImages
have errorOccured() true or have hasImage() false.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::updateFillImages):

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::hasImage const):

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

(WebCore::StyleImage::hasImage const):

Note: See TracTimeline for information about the timeline view.