Timeline



Apr 6, 2021:

11:48 PM Changeset in webkit [275588] by ysuzuki@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

[JSC] Use FixedVector more in JSC
https://bugs.webkit.org/show_bug.cgi?id=224255

Reviewed by Mark Lam.

Use FixedVector more aggressively. This reduces sizeof(Holder) since sizeof(FixedVector) is 8
while sizeof(Vector) is 16. And since this allocates just-fit size, this does not waste memory.

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::computeFullLiveness):

  • bytecode/BytecodeLivenessAnalysis.h:
  • bytecode/FullBytecodeLiveness.h:

(JSC::FullBytecodeLiveness::FullBytecodeLiveness):

  • bytecode/UnlinkedEvalCodeBlock.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::livenessFor):

  • ftl/FTLForOSREntryJITCode.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):

  • ftl/FTLOSRExit.cpp:

(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):

  • ftl/FTLOSRExit.h:
  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileRecovery):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweepPreciseAllocations):

  • jit/RegisterAtOffsetList.cpp:

(JSC::RegisterAtOffsetList::RegisterAtOffsetList):

  • jit/RegisterAtOffsetList.h:

(JSC::RegisterAtOffsetList::begin const):
(JSC::RegisterAtOffsetList::end const):
(JSC::RegisterAtOffsetList::clear): Deleted.

  • runtime/JSGlobalObject.h:
  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):

  • runtime/JSModuleNamespaceObject.h:
  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::resetForReparsing):

10:56 PM Changeset in webkit [275587] by mmaxfield@apple.com
  • 7 edits in trunk

[GPU Process] Simplify DisplayList::Iterator part 5: Tweak the return type of DisplayList::Iterator::operator*()
https://bugs.webkit.org/show_bug.cgi?id=224148

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch migrates from

struct Value {

Optional<ItemHandle> item;
Optional<FloatRect> extent;
size_t itemSizeInBuffer { 0 };

};
Value operator*() const;

to

struct Value {

ItemHandle item;
Optional<FloatRect> extent;
size_t itemSizeInBuffer { 0 };

};
Optional<Value> operator*() const

There are two reasons for this:

  1. Philosophically, if the item is nullopt, then all the stuff in the Value is also meaningless
  2. Part of the iterator's API contract is that if the item is nullopt, you're not allowed to keep

iterating - doing this will lead to an infinite loop. Promoting the optional makes it more
likely that this API contract is followed in the future.

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::asText const):
(WebCore::DisplayList::DisplayList::dump const):

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::iterator::operator* const):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

9:44 PM Changeset in webkit [275586] by Ruben Turcios
  • 2 edits in branches/safari-612.1.10-branch/Source/WebKit

Cherry-pick r275539. rdar://problem/76289146

[macOS] Allow access to 'com.apple.system.logger' in the Base System
https://bugs.webkit.org/show_bug.cgi?id=224241
<rdar://problem/75960194>

Reviewed by Alex Christensen.

Deeper testing has revealed that some test configurations used internally require access to 'com.apple.system.logger' in the base
system to support certain diagnostic operations outside the normal user release logging paths.

This patch restores access to the 'com.apple.system.logger' endpoint when running in the Base System.

  • WebProcess/com.apple.WebProcess.sb.in:

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

7:53 PM Changeset in webkit [275585] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingState::shrinkToFit should shrink InlineItems too
https://bugs.webkit.org/show_bug.cgi?id=224258

Reviewed by Simon Fraser.

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::shrinkToFit):

  • layout/integration/LayoutIntegrationCoverage.cpp:
6:32 PM Changeset in webkit [275584] by Jean-Yves Avenard
  • 2 edits in trunk/Source/WebCore

Fix logic error in MediaMetadataInit
https://bugs.webkit.org/show_bug.cgi?id=224252
<rdar://problem/76291386>

Reviewed by Eric Carlson.

Fix inverted logic error in decode that would have caused it to return early.

  • Modules/mediasession/MediaMetadataInit.h:

(WebCore::MediaMetadataInit::decode):

6:28 PM Changeset in webkit [275583] by sihui_liu@apple.com
  • 10 edits in trunk

[ Catalina WK2 Release ] http/tests/IndexedDB/storage-limit-1.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=213292
<rdar://problem/64447734>

Reviewed by Geoffrey Garen.

Test http/tests/IndexedDB/collect-IDB-objects.https.html, which runs right before
http/tests/IndexedDB/storage-limit-1.https.html, will delete databases after test completetion. During deletion,
we create a new database if it does not exist, extract database version from it, and then delete database files.
This creation can happen during storage-limit-1.https.html run and interrupt testing for quota. To fix the
flakiness and make the deletion more efficient, let's not create a new database during deletion if database
does not exist.

Source/WebCore:

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::databaseVersion):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::databaseVersion):

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

(WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):

LayoutTests:

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

[ macOS wk2 ] webrtc/libwebrtc/release-while-creating-offer.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=224256

Unreviewed test gardneing.

  • platform/mac-wk2/TestExpectations: Updated test expectations to Pass Failure while test is reviewed.
6:01 PM Changeset in webkit [275581] by Jean-Yves Avenard
  • 2 edits in trunk/Tools

add jya as committer

5:56 PM Changeset in webkit [275580] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ macOS ] media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=215397

Unreviewed test gardening.

  • platform/mac/TestExpectations: Removed prior test expectations from mac-wk1, and added them just to mac since test is flakey across mac, and not just in wk1.
5:45 PM Changeset in webkit [275579] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.2.1

5:45 PM Changeset in webkit [275578] by Russell Epstein
  • 10 edits in branches/safari-611-branch

Merge remote-tracking branch 'safari-611.1.21.3-branch' into safari-611-branch

5:45 PM Changeset in webkit [275577] by Russell Epstein
  • 14 edits in branches/safari-611-branch

Merge remote-tracking branch 'safari-611.1.21.2-branch' into safari-611-branch

5:44 PM Changeset in webkit [275576] by Russell Epstein
  • 51 edits
    4 adds in branches/safari-611-branch

Merge remote-tracking branch 'safari-611.1.21.161-branch' into safari-611-branch

5:44 PM Changeset in webkit [275575] by Russell Epstein
  • 148 edits
    2 copies
    2 moves
    10 adds
    2 deletes in branches/safari-611-branch

Merge remote-tracking branch 'safari-611.1.21.0-branch' into safari-611-branch

5:32 PM Changeset in webkit [275574] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r275538): [ macOS ] TestWebKitAPI.WebKitLegacy.MediaPlaybackSleepAssertion and TestWebKitAPI.SleepDisabler.Pause consistently failing
https://bugs.webkit.org/show_bug.cgi?id=224249
<rdar://problem/76286539>

Reviewed by Jer Noble.

No new tests, this fixes two API tests.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Use m_requestedRate
when choosing the pitch correction algorithm.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPlayerRate): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPreservesPitch): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPitchCorrectionAlgorithm): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::playerItemStatusDidChange): Ditto.

5:02 PM Changeset in webkit [275573] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Unreviewed build fix after 275571: add declaration for new method (and make the constness match).

  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::currentPositionApproximatelyEqualTo const):
(WebCore::MediaSessionCoordinator::currentPositionApproximatelyEqualTo): Deleted.

  • Modules/mediasession/MediaSessionCoordinator.h:
4:54 PM Changeset in webkit [275572] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Address some post-landing comments after r275491
https://bugs.webkit.org/show_bug.cgi?id=224126

Reviewed by Darin Adler.

Address some minor feedback; no change in behavior.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::createMenuActionItem):

Remove an unnecessary local variable.

(WebKit::WebContextMenuProxyMac::getContextMenuFromItems):

Use WTF::URL instead of NSURL, and remove a header import that is now unnecessary.

(WebKit::WebContextMenuProxyMac::getContextMenuItem):

Remove some more unnecessary local variables.

4:51 PM Changeset in webkit [275571] by jer.noble@apple.com
  • 10 edits in trunk/Source

[MediaSession] Add optional mediaTime and hostTime arguments to the playSession() command.
https://bugs.webkit.org/show_bug.cgi?id=224173

Reviewed by Eric Carlson.

Source/WebCore:

When receiving a playSession() method that has an optional mediaTime argument, perform a
seekAction before the matching playAction if the current media time is not already approximately
equal to the mediaTime argument.

  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::playSession):
(WebCore::MediaSessionCoordinator::currentPositionApproximatelyEqualTo):

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasession/MediaSessionCoordinatorPrivate.h:

Source/WebKit:

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::playSession):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:

(WebKit::RemoteMediaSessionCoordinator::playSession):

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in:
4:36 PM Changeset in webkit [275570] by Said Abou-Hallawa
  • 3 edits in trunk/Source/WebCore

Replace the Optional metadata of ImageSource by a single OptionSet and the underlying metadata
https://bugs.webkit.org/show_bug.cgi?id=224202

Reviewed by Simon Fraser.

Encapsulating the metadata in a Optionals adds extra memory cost. Replace
these Optionals by the underlying metadata and an OptionSet to tell which
ones are cached.

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::frameAtIndexCacheIfNeeded):
Instead of assertion index < m_frames.size(), we can return defaultFrame().
This will used in many callers which checks the size before calling it.

(WebCore::ImageSource::clearMetadata):

(WebCore::ImageSource::metadataCacheIfNeeded):
(WebCore::ImageSource::firstFrameMetadataCacheIfNeeded):
These two template functions will be used to return and cache, if needed,
the image metadata. The first function uses the ImageDecoder while the
second one uses the first ImageFrame of the image.

(WebCore::ImageSource::encodedDataStatus):
(WebCore::ImageSource::frameCount):
(WebCore::ImageSource::repetitionCount):
(WebCore::ImageSource::uti):
(WebCore::ImageSource::filenameExtension):
(WebCore::ImageSource::accessibilityDescription):
(WebCore::ImageSource::hotSpot):
(WebCore::ImageSource::orientation):
(WebCore::ImageSource::densityCorrectedSize):
(WebCore::ImageSource::sourceSize):
(WebCore::ImageSource::singlePixelSolidColor):
(WebCore::ImageSource::maximumSubsamplingLevel):
(WebCore::ImageSource::frameDecodingStatusAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
(WebCore::ImageSource::frameHasFullSizeNativeImageAtIndex):
(WebCore::ImageSource::frameHasDecodedNativeImageCompatibleWithOptionsAtIndex):
(WebCore::ImageSource::frameSubsamplingLevelAtIndex):
(WebCore::ImageSource::frameSizeAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameOrientationAtIndex):
(WebCore::ImageSource::frameImageAtIndex):
(WebCore::ImageSource::frameImageAtIndexCacheIfNeeded):
(WebCore::ImageSource::metadata): Deleted.
(WebCore::ImageSource::frameMetadataAtIndex): Deleted.
(WebCore::ImageSource::frameMetadataAtIndexCacheIfNeeded): Deleted.

  • platform/graphics/ImageSource.h:

(WebCore::ImageSource::frameAtIndex):

4:28 PM Changeset in webkit [275569] by Alexey Shvayka
  • 6 edits
    2 adds in trunk

Symbol and BigInt wrapper objects should perform OrdinaryToPrimitive
https://bugs.webkit.org/show_bug.cgi?id=224208

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/bigint-object-ordinary-toprimitive.js: Added.
  • stress/symbol-object-ordinary-toprimitive.js: Added.

Source/JavaScriptCore:

ES6 introduced Symbol.toPrimitive as the only way to override ToPrimitive;
if it's nullish, OrdinaryToPrimitive [1] is performed unconditionally.

This patch removes two redundant defaultValue() overrides, fixing JSC to call
(possibly userland) toString() / valueOf() methods of a) Symbol objects whose
Symbol.toPrimitive was removed, and b) BigInt wrapper objects.

Aligns JSC with V8 and SpiderMonkey. Coercion of primitives is unaffected.
Also, removes dummy BigIntObject::internalValue() override.

[1]: https://tc39.es/ecma262/#sec-toprimitive (step 2.d)

  • runtime/BigIntObject.cpp:

(JSC::BigIntObject::defaultValue): Deleted.

  • runtime/BigIntObject.h:
  • runtime/SymbolObject.cpp:

(JSC::SymbolObject::defaultValue): Deleted.

  • runtime/SymbolObject.h:
4:20 PM Changeset in webkit [275568] by Alan Coon
  • 1 copy in tags/Safari-612.1.9.2

Tag Safari-612.1.9.2.

4:16 PM Changeset in webkit [275567] by Alan Coon
  • 8 edits in branches/safari-612.1.9-branch/Source

Versioning.

WebKit-7612.1.9.2

4:03 PM Changeset in webkit [275566] by Alan Coon
  • 1 copy in tags/Safari-612.1.9.1

Tag Safari-612.1.9.1.

3:53 PM Changeset in webkit [275565] by mmaxfield@apple.com
  • 6 edits
    1 add in trunk/Source/WebCore

[GPU Process] Simplify DisplayList::Iterator part 3: Reorder #include dependencies to allow for ItemBuffer{Writing,Reading}Client to know about DisplayList item types
https://bugs.webkit.org/show_bug.cgi?id=224145

Reviewed by Wenson Hsieh.

ItemBuffer{Writing,Reading}Client exists within DisplayListItemBuffer.h. The DisplayList item types exist within DisplayListItems.h.

Previously, the #include path was:
DisplayListItems.h -> DisplayList.h -> DisplayListItemBuffer.h

However, this means that DisplayListItemBuffer.h can't see what's inside DisplayListItems.h.

After this patch, the #include path is:
DisplayList.h -> DisplayListItemBuffer.h -> DisplayListItems.h

This is important because ItemBuffer{Writing,Reading}Client have encodeItem() and decodeItem() functions, which will need to know
about DisplayList item types if we want to migrate away from ItemHandle.

No new tests because there is no behavior change.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:
  • platform/graphics/displaylists/DisplayListItemBuffer.h:
  • platform/graphics/displaylists/DisplayListItemBufferIdentifier.h: Added.
  • platform/graphics/displaylists/DisplayListItems.h:
3:38 PM Changeset in webkit [275564] by Alan Coon
  • 8 edits in branches/safari-612.1.9-branch/Source

Versioning.

WebKit-7612.1.9.1

3:37 PM Changeset in webkit [275563] by Brent Fulgham
  • 12 edits in trunk/Source

Add additional page load diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=224194
<rdar://problem/76227175>

Reviewed by Alex Christensen.

This patch adds new logging to help us diagnose and investigate page load failures.

Source/WebCore:

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::init): Add logging for some unusual conditions:

(1) A loader cannot be created because the document loader is nullptr.
(2) A load is cancelled because it violates security policy.
(3) A load was cancelled during 'willSendRequest' processing.
(4) A load was cancelled because the request was null.

(WebCore::ResourceLoader::loadDataURL): Log when a data load was cancelled.
(WebCore::ResourceLoader::willSendRequestInternal): Log when a cross-origin redirect is triggered, and when a redirect is
to a dataURL and will be handled locally.
(WebCore::ResourceLoader::didFinishLoadingOnePart): Log when a load is cancelled after it finished.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal): Log when an ongoing load has unexpectedly reached terminal state. Remove a
spammy log message that indicates when a redirect response is null (which just means its a normal load).
(WebCore::SubresourceLoader::didFinishLoading): Log when a finished load unexpectedly did not reach terminal state.
(WebCore::SubresourceLoader::notifyDone): Log when a load could not finish because the document loader was nullptr.

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didClose): Log when the connection from a WebProcess requesting a load
is closed.
(WebKit::NetworkConnectionToWebProcess::removeLoadIdentifier): Log when the WebProcess requests a load
identifier be removed (and cancelled).

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::restartNetworkLoad): Log when an in-process load is cancelled so that the load
can be restarted.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didClose): Log when the network process crashes.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didClose): Add logging when the WebProcess crashes.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad): Remove an erroneous log message that made it appear that no URL handler
had been called. The log message was generated when a normal network load handler was executed, leading to
confusing troubleshooting logs.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::registerURLSchemeHandler): Log when a web page registers a custom URL handler, and for which scheme.

  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

(WebKit::pageIDFromWebFrame): Added helper.
(WebKit::frameIDFromWebFrame): Ditto.
(WebKit::WebURLSchemeTaskProxy::startLoading): Add logging to track progress of custom URL handlers.
(WebKit::WebURLSchemeTaskProxy::stopLoading): Ditto.
(WebKit::WebURLSchemeTaskProxy::didPerformRedirection): Ditto.
(WebKit::WebURLSchemeTaskProxy::didReceiveResponse): Ditto.
(WebKit::WebURLSchemeTaskProxy::didReceiveData): Ditto.
(WebKit::WebURLSchemeTaskProxy::didComplete): Ditto.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::networkProcessConnectionClosed): Add logging that the network process crashed.

3:29 PM Changeset in webkit [275562] by Devin Rousso
  • 8 edits in trunk/Source/WebKit

[iOS] contextmenu hints can be clipped by the WKWebView
https://bugs.webkit.org/show_bug.cgi?id=224204
<rdar://problem/75504620>

Reviewed by Wenson Hsieh.

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

(-[WKContentView cleanUpInteraction]):
(-[WKContentView cleanUpRelatedViews]): Added.
(-[WKContentView _didScroll]):
(-[WKContentView textEffectsWindow]):
(-[WKContentView _createPreviewContainerWithLayerName:]):
(-[WKContentView containerForDropPreviews]):
(-[WKContentView containerForDragPreviews]):
(-[WKContentView containerForContextMenuHintPreviews]):
(-[WKContentView _hideTargetedPreviewContainerViews]):
(-[WKContentView _updateTargetedPreviewViewsContainerViewFrameIfNeeded]): Added.
(-[WKContentView _removeTargetedPreviewViewsContainerViewIfPossible]): Added.
(-[WKContentView _updateTargetedPreviewScrollViewUsingContainerScrollingNodeID:]): Added.
(-[WKContentView cleanUpDragSourceSessionState]):
(-[WKContentView _createTargetedContextMenuHintPreviewForFocusedElement]):
(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):
(-[WKContentView _removeContextMenuViewIfPossible]):
(-[WKContentView dropInteraction:concludeDrop:]):
(-[WKContentView overridePositionTrackingViewForTargetedPreviewIfNecessary:containerScrollingNodeID:]): Deleted.
Instead of attaching the contextmenu hint container (_contextMenuHintContainerView) to
the WKWebView (via the _interactionViewsContainerView), attach it to a new container
(_targetedPreviewViewsContainerView) under the UITextEffectsWindow so that if the
contextmenu target is near the edge of the WKWebView then the shadow of the contextmenu
hint will not be clipped by the WKWebView. Whenever any view is scrolled, adjust the
frame of the _targetedPreviewViewsContainerView so that the contextmenu hint moves.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView didMoveToWindow]):
Call -cleanUpRelatedViews if no longer attached to a window so that the
_targetedPreviewViewsContainerView is not left behind if the WKWebView is moved.

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::scrollViewForScrollingNodeID const):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollView const): Added.
ScrollingTreeFrameScrollingNodeRemoteIOS also has a corresponding UIScrollView.

  • Platform/spi/ios/UIKitSPI.h:

Remove no longer needed SPI now that WebKit manages the position of the contextmenu hint.

3:20 PM Changeset in webkit [275561] by Chris Gambrell
  • 10 edits
    3 adds
    3 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/misc convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=221981
<rdar://problem/74399686>

Reviewed by Jonathan Bedard.

  • http/tests/misc/prefetch-purpose-expected.txt:
  • http/tests/misc/prefetch-purpose.html:
  • http/tests/misc/resources/check-query-param.php: Removed.
  • http/tests/misc/resources/check-query-param.py: Added.
  • http/tests/misc/resources/prefetch-purpose.php: Removed.
  • http/tests/misc/resources/prefetch-purpose.py: Added.
  • http/tests/misc/resources/redirect-to-http-url.php: Removed.
  • http/tests/misc/resources/redirect-to-http-url.py: Added.
  • http/tests/misc/submit-get-in-utf16be.html:
  • http/tests/misc/submit-get-in-utf16le.html:
  • http/tests/misc/submit-post-in-utf16be.html:
  • http/tests/misc/submit-post-in-utf16le.html:
  • http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt:
  • http/tests/misc/will-send-request-returns-null-on-redirect.html:
  • platform/wk2/http/tests/misc/will-send-request-returns-null-on-redirect-expected.txt:
3:13 PM Changeset in webkit [275560] by Patrick Angle
  • 4 edits in trunk/Source

Web Inspector: Grid overlay label style cleanup
https://bugs.webkit.org/show_bug.cgi?id=224240

Reviewed by BJ Burg.

Source/WebCore:

Clean up grid overlay label styling by:

  • Make all labels use a translucent background. This patch chooses a middle ground between the existing

translucent labels that matched the color of the rulers, and the solid white background used by line
numbers/names for maximum legibility.

  • Bumping the label padding by 1px to improve legibility.
  • Bumping the label arrow size by 2px to make it easier to understand where a label is pointing, particularly

for labels where the edge position is not Middle.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::drawGridOverlay):
(WebCore::InspectorOverlay::buildGridOverlay):

Source/WebKit:

Mirror changes to constants from WebCore::InspectorOverlay.

  • UIProcess/Inspector/ios/WKInspectorHighlightView.mm:

(createLayoutLabelLayer):
(-[WKInspectorHighlightView _createGridOverlayLayer:scale:]):

3:12 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
3:09 PM Changeset in webkit [275559] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Grid overlay track size labels should show implicit auto value and no computed size
https://bugs.webkit.org/show_bug.cgi?id=224199

Reviewed by BJ Burg.

Previously, implicit auto track sizes were only shown if there were some number of explicit track sizes for
that track direction (rows/columns). To resolve this, authoredGridTrackSizes now only returns explicit
authored track sizes, and buildGridOverlay then infers auto for all remaining tracks. This will also help
resolve bug 224200 by providing a way to distinguish explicit and implicit tracks.

After discussion, this patch also removes the computed size of tracks from labels, as that information is
available in the box model diagram for children elements and having that information in these labels further
cramped often limited space for overlay labels.

  • inspector/InspectorOverlay.cpp:

(WebCore::authoredGridTrackSizes):
(WebCore::InspectorOverlay::buildGridOverlay):

3:09 PM Changeset in webkit [275558] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Grid overlay line numbers should not include implicit tracks in negative line number calculations.
https://bugs.webkit.org/show_bug.cgi?id=224200

Reviewed by BJ Burg.

Use the authoredTrackColumnSizes/authoredTrackRowSizes to determine if the line is an explicit grid line or
implicit grid line (starting with the patch for bug 224199 those vectors will only contain the explicit lines).
Only explicit lines should have a negative number for addressing the line, and those numbers should start with
the last explicit line. Because each track is bounded by two lines, there will always be one more explicit line
than there is explicit track, including the case where there are no explicit tracks, which will still have a
single explicit line numbered -1.

Additionally, line numbers are now separated by an em-space to improve legibility, where previously the bullet
looked like a multiplication symbol between two numbers.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::buildGridOverlay):

2:45 PM Changeset in webkit [275557] by commit-queue@webkit.org
  • 30 edits in trunk/Source

Build fails when video is disabled
https://bugs.webkit.org/show_bug.cgi?id=224198

Patch by Mike Gorse <mgorse@suse.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

Add #if ENABLE(VIDEO) where needed.

Source/WebCore:

  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent):

  • page/Page.cpp:
  • page/Page.h:
  • platform/graphics/GraphicsContext.cpp:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:
  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):

  • platform/graphics/displaylists/DisplayListItemType.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:
  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:
  • platform/graphics/win/GraphicsContextImplDirect2D.h:
  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

Source/WebKit:

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::decodeItem):

  • UIProcess/gtk/ClipboardGtk3.cpp:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::committedLoad):

2:42 PM Changeset in webkit [275556] by Russell Epstein
  • 8 edits in branches/safari-612.1.10-branch/Source

Versioning.

WebKit-7612.1.10

2:31 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
2:28 PM Changeset in webkit [275555] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2] media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224135

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: updated test expectations to Pass Timeout while test is reviewed.
2:28 PM Changeset in webkit [275554] by commit-queue@webkit.org
  • 4 edits in trunk

Add U+0581 and U+0585 to list of Armenian characters that look like Latin characters
https://bugs.webkit.org/show_bug.cgi?id=224219
Source/WTF:

<rdar://75896365>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-06
Reviewed by Brent Fulgham.

These code points are allowed in the context of other Armenian code points and punctuation, but not other script code points.
This was already implemented for the others, but I consolidated the list to one location to avoid having two locations for the list.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isArmenianLookalikeCharacter):
(WTF::URLHelpers::isArmenianLookalikeSequence):
(WTF::URLHelpers::isLookalikeCharacter):

Tools:

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-06
Reviewed by Brent Fulgham.

  • TestWebKitAPI/Tests/WTF/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

2:27 PM Changeset in webkit [275553] by Fujii Hironori
  • 14 edits
    1 move in trunk/Source/WebKit

Add IPC::Semaphore stub for Unix ports
https://bugs.webkit.org/show_bug.cgi?id=224223

Reviewed by Don Olmstead.

PlayStation, GTK and WPE ports don't use it yet. Just add stubs
instead of scattering #if everywhere using Semaphore.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):
(WebKit::RemoteRenderingBackend::populateGetImageDataSharedMemory):

  • Platform/IPC/StreamClientConnection.cpp:

(IPC::StreamClientConnection::setWakeUpSemaphore):
(IPC::StreamClientConnection::wakeUpServer):

  • Platform/IPC/StreamClientConnection.h:

(IPC::StreamClientConnection::tryAcquire):
(IPC::StreamClientConnection::tryAcquireAll):

  • Platform/IPC/StreamConnectionWorkQueue.cpp:

(IPC::StreamConnectionWorkQueue::StreamConnectionWorkQueue):
(IPC::StreamConnectionWorkQueue::removeStreamConnection):
(IPC::StreamConnectionWorkQueue::stop):
(IPC::StreamConnectionWorkQueue::wakeUp):
(IPC::StreamConnectionWorkQueue::wakeUpProcessingThread):

  • Platform/IPC/StreamConnectionWorkQueue.h:
  • Platform/IPC/StreamServerConnection.cpp:

(IPC::StreamServerConnectionBase::release):
(IPC::StreamServerConnectionBase::releaseAll):

  • Platform/IPC/unix/IPCSemaphoreUnix.cpp: Added.

(IPC::Semaphore::Semaphore):
(IPC::Semaphore::signal):
(IPC::Semaphore::wait):
(IPC::Semaphore::waitFor):
(IPC::Semaphore::encode const):
(IPC::Semaphore::decode):
(IPC::Semaphore::destroy):

  • PlatformPlayStation.cmake:
  • Sources.txt:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::waitForGetImageDataToComplete):
(WebKit::RemoteRenderingBackendProxy::didAppendData):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::startRenderingThread):
(WebKit::RemoteAudioDestinationProxy::stopRenderingThread):

2:14 PM Changeset in webkit [275552] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk1] transforms/2d* and transforms/hittest-translated-content-off-to-infinity-and-back.html are flaky image failures
https://bugs.webkit.org/show_bug.cgi?id=223904

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:08 PM Changeset in webkit [275551] by commit-queue@webkit.org
  • 13 edits
    2 deletes in trunk

REGRESSION(r275275): Broke some build configs lacking openh264
https://bugs.webkit.org/show_bug.cgi?id=224244

Unreviewed, manual revert of r275275 and r275409.

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06

.:

  • Source/CMakeLists.txt:
  • Source/cmake/GStreamerChecks.cmake:

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt:
  • LibWebRTCWebKitMacros.h.in: Removed.
  • Source/webrtc/modules/video_coding/codecs/h264/h264.cc:
  • Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc:
  • Source/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.h:
  • cmake/FindOpenh264.cmake: Removed.

Source/WebCore:

  • platform/mediastream/libwebrtc/GStreamerVideoCommon.cpp:

(WebCore::gstreamerSupportedH264Codecs):
(WebCore::supportedH264Formats): Deleted.

  • platform/mediastream/libwebrtc/GStreamerVideoCommon.h:
  • platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerVideoEncoderFactory::CreateVideoEncoder):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):

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

[ macOS ARM64 ] compositing/background-color/no-composited-background-color-when-perspective.html is a flakey Image failure (4 pixels)
https://bugs.webkit.org/show_bug.cgi?id=224212

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass ImageOnlyFailure while test is reviewed.
1:57 PM Changeset in webkit [275549] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebKit

Delay the end of printing while PrintContext is in use.
https://bugs.webkit.org/show_bug.cgi?id=224229

Reviewed by Antti Koivisto.

Added a new RAII object, PrintContextAccessScope, to delay the call to endPrinting
and deployed in various IPC messages used during printing.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::beginPrinting): Deployed PrintContextAccessScope.
(WebKit::WebPage::endPrinting): Exit early without ending printing if there is an active
PrintContextAccessScope in the stack.
(WebKit::WebPage::endPrintingImmediately): Extracted from endPrintingImmediately.
(WebKit::WebPage::computePagesForPrinting): Deployed PrintContextAccessScope.
(WebKit::WebPage::computePagesForPrintingImpl): Ditto.
(WebKit::WebPage::drawRectToImage): Ditto.
(WebKit::WebPage::drawPagesToPDF): Ditto.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::PrintContextAccessScope): Added.
(WebKit::WebPage::PrintContextAccessScope::PrintContextAccessScope): Added.
(WebKit::WebPage::PrintContextAccessScope::~PrintContextAccessScope): Added.

1:52 PM Changeset in webkit [275548] by rniwa@webkit.org
  • 8 edits in trunk/LayoutTests

[ wk2 ] 4 storage/websql/test-authorizer.html and constantly timing out
https://bugs.webkit.org/show_bug.cgi?id=224245
<rdar://problem/76281408>

Unreviewed. Updated the test expectations to not unskip some tests in various ports that only run tests in WK2.

  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wincairo/TestExpectations:
  • platform/wk2/TestExpectations:
1:43 PM Changeset in webkit [275547] by Simon Fraser
  • 14 edits in trunk/Source/WebCore

Shrink some IndexedDB-related classes
https://bugs.webkit.org/show_bug.cgi?id=224221

Reviewed by Geoffrey Garen.

Shrink some enum classes, and re-order data members to optimize packing in
IDBRequest and IDBKeyRangeData.

A couple of data members of IDBRequest were made private with protected setters.

This shrinks IDBRequest from 496 bytes to 448 bytes, and IDBKeyRangeData from 96
to 72 bytes on x86_64.

  • Modules/indexeddb/IDBKeyData.h:
  • Modules/indexeddb/IDBKeyRangeData.cpp:

(WebCore::IDBKeyRangeData::IDBKeyRangeData):

  • Modules/indexeddb/IDBKeyRangeData.h:

(WebCore::IDBKeyRangeData::IDBKeyRangeData):

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBOpenDBRequest.cpp:

(WebCore::IDBOpenDBRequest::IDBOpenDBRequest):
(WebCore::IDBOpenDBRequest::versionChangeTransactionDidFinish):
(WebCore::IDBOpenDBRequest::onSuccess):
(WebCore::IDBOpenDBRequest::onUpgradeNeeded):
(WebCore::IDBOpenDBRequest::onDeleteDatabaseSuccess):

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::IDBRequest):

  • Modules/indexeddb/IDBRequest.h:

(WebCore::IDBRequest::setReadyState):
(WebCore::IDBRequest::setShouldExposeTransactionToDOM):

  • Modules/indexeddb/IndexedDB.h:
  • Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
  • Modules/indexeddb/server/MemoryIndex.h:
  • Modules/indexeddb/server/MemoryObjectStore.h:
  • Modules/indexeddb/shared/IDBCursorInfo.h:
  • Modules/indexeddb/shared/IDBGetAllRecordsData.h:
1:39 PM Changeset in webkit [275546] by Wenson Hsieh
  • 15 edits
    2 adds in trunk

REGRESSION (r274610): Unable to drag images when image extraction is enabled
https://bugs.webkit.org/show_bug.cgi?id=224211
<rdar://problem/76229563>

Reviewed by Tim Horton.

Source/WebKit:

r274610 introduced a new deferring gesture recognizer intended to prevent several text interaction gestures from
recognizing during pending image extraction. However, this also causes dragging on iOS to fail, since the
gesture used to initiate dragging is excluded by the new deferring gesture recognizer. To fix this, allow the
new deferring gesture to recognize simultaneously alongside all gestures with the exception of only the gestures
it is intended to defer (i.e. text interaction gestures).

Test: fast/events/ios/dragstart-on-image-by-long-pressing.html

  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _isAnimatingDragCancel]):

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

(-[UIGestureRecognizer _wk_isTapAndAHalf]):

Add a WebKit category method that returns whether or not a gesture recognizer is a tap-and-a-half gesture.

(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):

Allow the image extraction deferring gesture to recognize alongside all other gestures, with the exception of
the text interaction gestures determined by -shouldDeferGestureDueToImageExtraction:. This limits the impact
of this new deferring gesture, such that it only affects the text interaction gestures it is intended to defer.

(-[WKContentView shouldDeferGestureDueToImageExtraction:]):

Add a helper method to determine whether or not a gesture recognizer should be deferred, due to pending image
extraction. We pull this logic behind a helper method because it's now consulted from two call sites.

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
(-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]):
(-[WKContentView isAnimatingDragCancel]):

Add a testing hook to return whether or not the drag cancel animation is running. See Tools/ChangeLog and the
new layout test for more detail.

(tapAndAHalfRecognizerClass): Deleted.

Tools:

Add support for some new testing infrastructure; see below for more details.

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

(WTR::UIScriptController::isAnimatingDragCancel const):

Add a new testing hook to return whether or not the web view's drag interaction is currently animating a drag
cancel (i.e., the drag preview is animating back to its original frame).

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::dragInteractionPolicy const):

Add a test option that allows tests to override the drag interaction policy to "always-allow",
"always-disallow", and the default value. This option allows us to force drag and drop to be enabled when
testing on iPhone simulator.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::dragInteractionPolicy):
(WTR::TestController::platformResetStateToConsistentValues):

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

(WTR::UIScriptControllerIOS::isAnimatingDragCancel const):

LayoutTests:

Add a new layout test that initiates dragging on an image using a synthesized event stream, and verifies that
"dragstart" and "dragend" events are dispatched on the image.

  • fast/events/ios/dragstart-on-image-by-long-pressing-expected.txt: Added.
  • fast/events/ios/dragstart-on-image-by-long-pressing.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.isAnimatingDragCancel):

Add a UIHelper method that returns whether or not the dragging animation is being cancelled. The new test uses
this hook to wait for the drag cancel animation to end before proceeding to the next test.

1:26 PM Changeset in webkit [275545] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: remove duplicate Box Model section from Layout panel in Elements Tab
https://bugs.webkit.org/show_bug.cgi?id=224206
<rdar://problem/76235731>

Reviewed by Devin Rousso.

For now, remove it from Layout panel. It may go back there
when it is able to show used values. It currently only shows computed.

  • UserInterface/Views/LayoutDetailsSidebarPanel.js:

(WI.LayoutDetailsSidebarPanel.prototype.initialLayout):
(WI.LayoutDetailsSidebarPanel.prototype.layout):
(WI.LayoutDetailsSidebarPanel.prototype.get minimumWidth): Deleted.

1:20 PM Changeset in webkit [275544] by Alexey Shvayka
  • 5 edits
    1 add in trunk

Array's toString() is incorrect if join() is non-callable
https://bugs.webkit.org/show_bug.cgi?id=224215

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/array-toString-non-callable-join.js: Added.

Source/JavaScriptCore:

This patch exposes objectPrototypeToString() to be used by Array.prototype.toString
if "join" lookup doesn't return a callable value [1].

Fixes Array's toString() to return the correct tag instead of internal className,
perform Symbol.toStringTag lookup, and throw for revoked Proxy objects.
Aligns JSC with V8 and SpiderMonkey.

Also, a few objectPrototypeToString() tweaks: a bit nicer undefined / null
checks and simpler toObject() exception handling.

[1]: https://tc39.es/ecma262/#sec-array.prototype.tostring (step 3)

  • runtime/ArrayPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/ObjectPrototype.cpp:

(JSC::objectPrototypeToString):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/ObjectPrototype.h:
12:51 PM Changeset in webkit [275543] by rniwa@webkit.org
  • 6 edits
    6 adds in trunk

Assert failure in isCloneInShadowTreeOfSVGUseElement
https://bugs.webkit.org/show_bug.cgi?id=224174

Reviewed by Darin Adler and Antti Koivisto.

Source/WebCore:

The bug was caused by two related but distinct issues:

  1. An element can have an instance that had been removed from a use element's shadow tree but not yet deleted. Because SVGElement clears its correspondingElement in its destructor, when addEventListener is called on such an element, it can try to add an event listener on this instance which is in the process of getting disposed.
  2. DOM mutation events can be fired on the corresponding element of an instance inside a use element’s shadow tree with EventQueueScope in the stack when the event is schedueld via Node::dispatchScopedEvent, e.g. because use element's shadow tree was updated during a style update at the beginning of document.execComand. Because SVGUseElement::cloneTarget constructs the shadow tree by cloning the original tree while it's disconnected from the document, Node::dispatchSubtreeModifiedEvent sees isInShadowTree() to be false and happily tries to dispach DOMSubtreeModified event using Node::dispatchScopedEvent. This works fine when the event is dispatched synchronously since these elements had never been exposed to any scripts yet and they are still disconnected so no scripts have had an opportunity to attach an event listener. But when EventQueueScope in the stack, Node::dispatchScopedEvent will queue up the event and fire it later when those instance elements had been inserted into use element's shadow tree.

This patch addresses (1) by severing correspondingElement relationship as soon as an instance
is removed from its use element's shadow tree, and (2) by not dispatching a scheduled mutation
event if the target is inside a shadow tree. Note that this patch also addresses (2) for
a regular shadow tree attached by author scripts.

Tests: fast/shadow-dom/mutation-event-in-shadow-tree.html

svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand.html
svg/dom/update-svg-use-shadow-tree-with-execCommand.html

  • dom/ScopedEventQueue.cpp:

(WebCore::ScopedEventQueue::dispatchEvent const):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::~SVGElement):
(WebCore::SVGElement::removedFromAncestor):
(WebCore::SVGElement::addEventListener):
(WebCore::SVGElement::removeEventListener):

LayoutTests:

Added tests for mutating nodes which is later inserted into a shadow tree during execCommand
as well as forcing a SVG use element to update its shadow tree by mutating the corresponding
element tree during execCommand.

  • fast/shadow-dom/mutation-event-in-shadow-tree-expected.txt: Added.
  • fast/shadow-dom/mutation-event-in-shadow-tree.html: Added.
  • svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand-expected.txt: Added.
  • svg/dom/mutate-symbol-subtree-referenced-by-use-during-execCommand.html: Added.
  • svg/dom/update-svg-use-shadow-tree-with-execCommand-expected.txt: Added.
  • svg/dom/update-svg-use-shadow-tree-with-execCommand.html: Added.
12:47 PM Changeset in webkit [275542] by ysuzuki@apple.com
  • 33 edits
    2 adds in trunk

[WTF] Introduce FixedVector and use it for FixedOperands
https://bugs.webkit.org/show_bug.cgi?id=224171

Reviewed by Mark Lam.

Source/JavaScriptCore:

Define FixedOperands<T> which uses FixedVector for its storage. We use FixedOperands in FTL::OSRExitDescriptor.
We also replace RefCountedArray<T> with FixedVector<T> if they are not requiring RefCountedArray<T>'s ref-counting
semantics.

  • bytecode/BytecodeGeneratorification.cpp:

(JSC::BytecodeGeneratorification::run):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::setNumParameters):
(JSC::CodeBlock::setRareCaseProfiles):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/CodeBlock.h:
  • bytecode/Operands.h:

(JSC::Operands::Operands):

  • bytecode/OperandsInlines.h:

(JSC::U>::dumpInContext const):
(JSC::U>::dump const):
(JSC::Operands<T>::dumpInContext const): Deleted.
(JSC::Operands<T>::dump const): Deleted.

  • bytecode/PolyProtoAccessChain.h:
  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:
  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo):
(JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::expressionInfo):
(JSC::UnlinkedCodeBlock::identifiers const):
(JSC::UnlinkedCodeBlock::constantRegisters):
(JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation):
(JSC::UnlinkedCodeBlock::constantIdentifierSets):
(JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets const):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::prepareJumpTableForSwitch):

  • dfg/DFGJITCode.h:
  • dfg/DFGPlan.h:

(JSC::DFG::Plan::tierUpInLoopHierarchy):

  • ftl/FTLOSRExit.h:
  • jit/GCAwareJITStubRoutine.h:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileSlowCases):

  • jit/PolymorphicCallStubRoutine.h:
  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LowLevelInterpreter.asm:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseClassFieldInitializerSourceElements):

  • parser/Parser.h:

(JSC::Parser<LexerType>::parse):
(JSC::parse):

  • runtime/CachedTypes.cpp:

(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):

  • wasm/js/JSWebAssemblyInstance.h:

Source/WTF:

This FixedVector<T> is a wrapper around RefCountedArray<T>, but this offers Vector-like copy / move semantics,
so that we can use this FixedVector<T> as a drop-in-replacement for fixed-sized Vector fields. The purpose
of that is saving memory by removing unnecessary storage (FixedVector is fixed-sized allocated) and putting size
into the allocated memory.

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

(WTF::FastBitVector::FastBitVector):

  • wtf/FixedVector.h: Added.

(WTF::FixedVector::FixedVector):
(WTF::FixedVector::operator=):
(WTF::FixedVector::size const):
(WTF::FixedVector::isEmpty const):
(WTF::FixedVector::byteSize const):
(WTF::FixedVector::data):
(WTF::FixedVector::begin):
(WTF::FixedVector::end):
(WTF::FixedVector::data const):
(WTF::FixedVector::begin const):
(WTF::FixedVector::end const):
(WTF::FixedVector::rbegin):
(WTF::FixedVector::rend):
(WTF::FixedVector::rbegin const):
(WTF::FixedVector::rend const):
(WTF::FixedVector::at):
(WTF::FixedVector::at const):
(WTF::FixedVector::operator[]):
(WTF::FixedVector::operator[] const):
(WTF::FixedVector::first):
(WTF::FixedVector::first const):
(WTF::FixedVector::last):
(WTF::FixedVector::last const):
(WTF::FixedVector::fill):
(WTF::FixedVector::operator== const):
(WTF::FixedVector::swap):
(WTF::swap):

  • wtf/RefCountedArray.h:

(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::fill):
(WTF::RefCountedArray::swap):

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/FixedVector.cpp: Added.

(TestWebKitAPI::TEST):
(TestWebKitAPI::DestructorObserver::DestructorObserver):
(TestWebKitAPI::DestructorObserver::~DestructorObserver):
(TestWebKitAPI::DestructorObserver::operator=):

12:42 PM Changeset in webkit [275541] by mark.lam@apple.com
  • 2 edits in trunk

Speculative build fix for Windows port.
https://bugs.webkit.org/show_bug.cgi?id=224243
rdar://75883248

Reviewed by Saam Barati.

Source/cmake/tools/scripts/auto-version.pl was limiting our minor and micro
version to only 2 decimal digits only. In practice, we can use up to 3 digits.

  • Source/cmake/tools/scripts/auto-version.pl:

(packTwoValues):

12:42 PM Changeset in webkit [275540] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit

Hold strong reference to xpc_connection_t in XPCServiceEventHandler
https://bugs.webkit.org/show_bug.cgi?id=224242
<rdar://74308418>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-06
Reviewed by David Kilzer.

There is a reasonable chance that by the time we get to the block of xpc_connection_set_event_handler
and back through WorkQueue::main().dispatchSync the xpc_connection_t has been freed.

Also, the adoption in each entry points was incorrect, causing a late overrelease when tearing down the process.
It was incorrect because we did not just create the connection or get it from any NS_RETURNS_RETAINED-like function.
It was causing rare crashes once everything else had released their hold on the connection.

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUServiceEntryPoint.mm:

(GPU_SERVICE_INITIALIZER):

  • NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm:

(NETWORK_SERVICE_INITIALIZER):

  • PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm:

(PLUGIN_SERVICE_INITIALIZER):

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:

(WebKit::XPCServiceEventHandler):

  • WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnServiceEntryPoint.mm:

(WEBAUTHN_SERVICE_INITIALIZER):

  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentServiceEntryPoint.mm:

(WEBCONTENT_SERVICE_INITIALIZER):

12:41 PM Changeset in webkit [275539] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Allow access to 'com.apple.system.logger' in the Base System
https://bugs.webkit.org/show_bug.cgi?id=224241
<rdar://problem/75960194>

Reviewed by Alex Christensen.

Deeper testing has revealed that some test configurations used internally require access to 'com.apple.system.logger' in the base
system to support certain diagnostic operations outside the normal user release logging paths.

This patch restores access to the 'com.apple.system.logger' endpoint when running in the Base System.

  • WebProcess/com.apple.WebProcess.sb.in:
12:38 PM Changeset in webkit [275538] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] audio played at 2x speed video is not pitch corrected
https://bugs.webkit.org/show_bug.cgi?id=224238
rdar://75868284

Reviewed by Jer Noble.

We need to use the _intended_ playback rate when deciding which pitch correction
algorithm to use. MediaPlayerPrivateAVFoundationObjC::m_cachedRate is used for this,
but r274592 stopped setting m_cachedRate in MediaPlayerPrivateAVFoundationObjC::setPlayerRate
because it is also set when AVPlayer KVOs that the rate changed.

Tested manually.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::setPlayerRate): Set m_cachedRate.

12:06 PM Changeset in webkit [275537] by eric.carlson@apple.com
  • 16 edits
    1 add in trunk

[macOS] Add MediaSessionCoordinator API test
https://bugs.webkit.org/show_bug.cgi?id=224140
<rdar://problem/76171173>

Reviewed by Jer Noble.

Source/WebKit:

  • Sources.txt: Include RemoteMediaSessionCoordinatorProxy.cpp and RemoteMediaSessionCoordinator.cpp

so they don't have to be included in the Xcode project.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h: Declare enums, struct, and protocols

necessary to implement and use an object derived from MediaSessionCoordinatorProxyPrivate.

  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _createMediaSessionCoordinatorForTesting:completionHandler:]): New private
method to create a MediaSessionCoordinatorProxyPrivate.
(-[WKMediaSessionCoordinatorHelper initWithCoordinator:]):
(-[WKMediaSessionCoordinatorHelper seekSessionToTime:withCompletion:]):
(-[WKMediaSessionCoordinatorHelper playSessionWithCompletion:]):
(-[WKMediaSessionCoordinatorHelper pauseSessionWithCompletion:]):
(-[WKMediaSessionCoordinatorHelper setSessionTrack:withCompletion:]):

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::mediaSessionCoordinatorForTesting): MediaSessionCoordinatorProxyPrivate
getter.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::setMediaSessionCoordinatorForTesting): Setter for
MediaSessionCoordinatorProxyPrivate drived object.

  • UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h: Add typedef for the completion

handler used by many coordinator proxy methods.

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
Set the private coordinator client so calls to the session can be forwarded.
(WebKit::RemoteMediaSessionCoordinatorProxy::join): Use MediaSessionCommandCompletionHandler.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSeekTo): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePlay): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePause): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSetTrack): Ditto.
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged): Ditto.

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createMediaSessionCoordinator): Change completion handler
parameter to return a bool instead of a RemoteMediaSessionCoordinatorProxy as the
client interface provides all of the session access needed.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj: Remove RemoteMediaSessionCoordinatorProxy.cpp

and RemoteMediaSessionCoordinator.cpp

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:

(WebKit::RemoteMediaSessionCoordinator::join): Use ExceptionData's toException()
method instead of creating an Exception directly. Remove the destination ID parameter
to sendWithAsyncReply so messageSenderDestinationID() will be used.
(WebKit::RemoteMediaSessionCoordinator::leave): Ditto.
(WebKit::RemoteMediaSessionCoordinator::seekTo) Ditto.:
(WebKit::RemoteMediaSessionCoordinator::play): Ditto.
(WebKit::RemoteMediaSessionCoordinator::pause): Ditto.
(WebKit::RemoteMediaSessionCoordinator::setTrack): Ditto.
(WebKit::RemoteMediaSessionCoordinator::positionStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::readyStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::playbackStateChanged): Ditto.
(WebKit::RemoteMediaSessionCoordinator::coordinatorStateChanged): Ditto.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm: Added.

(-[_WKMockMediaSessionCoordinator lastStateChange]):
(-[_WKMockMediaSessionCoordinator lastMethodCalled]):
(-[_WKMockMediaSessionCoordinator identifier]):
(-[_WKMockMediaSessionCoordinator joinWithCompletion:]):
(-[_WKMockMediaSessionCoordinator leave]):
(-[_WKMockMediaSessionCoordinator seekTo:withCompletion:]):
(-[_WKMockMediaSessionCoordinator playWithCompletion:]):
(-[_WKMockMediaSessionCoordinator pauseWithCompletion:]):
(-[_WKMockMediaSessionCoordinator setTrack:withCompletion:]):
(-[_WKMockMediaSessionCoordinator positionStateChanged:]):
(-[_WKMockMediaSessionCoordinator readyStateChanged:]):
(-[_WKMockMediaSessionCoordinator playbackStateChanged:]):
(-[_WKMockMediaSessionCoordinator coordinatorStateChanged:]):
(-[_WKMockMediaSessionCoordinator seekSessionToTime:]):
(-[_WKMockMediaSessionCoordinator playSession]):
(-[_WKMockMediaSessionCoordinator pauseSession]):
(-[_WKMockMediaSessionCoordinator setSessionTrack:]):
(TestWebKitAPI::MediaSessionCoordinatorTest::createCoordinator):
(TestWebKitAPI::MediaSessionCoordinatorTest::webView const):
(TestWebKitAPI::MediaSessionCoordinatorTest::coordinator const):
(TestWebKitAPI::MediaSessionCoordinatorTest::loadPageAndBecomeReady):
(TestWebKitAPI::MediaSessionCoordinatorTest::runScriptWithUserGesture):
(TestWebKitAPI::MediaSessionCoordinatorTest::play):
(TestWebKitAPI::MediaSessionCoordinatorTest::pause):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForEventMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::eventListenerWasCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearEventListenerState):
(TestWebKitAPI::MediaSessionCoordinatorTest::executeUntil):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForEventListenerToBeCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForMessagesPosted):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearMessagesPosted):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForSessionHandlerMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::sessionHandlerWasCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForSessionHandlerToBeCalled):
(TestWebKitAPI::MediaSessionCoordinatorTest::listenForPromiseMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::clearPromiseMessages):
(TestWebKitAPI::MediaSessionCoordinatorTest::promiseWasResolved):
(TestWebKitAPI::MediaSessionCoordinatorTest::promiseWasRejected):
(TestWebKitAPI::MediaSessionCoordinatorTest::waitForPromise):
(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/media-remote.html:
11:15 AM Changeset in webkit [275536] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

UBSan: RenderView.cpp:831:9: runtime error: load of value nnn, which is not a valid value for type 'bool'
<https://webkit.org/b/224157>

Reviewed by Darin Adler.

Tests: editing/inserting/insert-list-user-select-none-crash.html

fast/dom/clientWidthAfterDocumentIsRemoved.html
fast/scrolling/iframe-scrollable-after-back.html
fast/text/crash-font-family-parsed.html
html5lib/generated/run-template-write.html
imported/blink/plugins/renderless-plugin-creation-doesnt-crash-without-frame.html
imported/w3c/web-platform-tests/css/cssom-view/scrolling-no-browsing-context.html
imported/w3c/web-platform-tests/dom/ranges/Range-mutations-appendChild.html
imported/w3c/web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window.html
imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/clicking-interactive-content.html
imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_template.html
imported/w3c/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
imported/w3c/web-platform-tests/selection/addRange-12.html
imported/w3c/web-platform-tests/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-001.html
media/track/track-remove-crash.html
svg/custom/animate-reference-crash.html

  • rendering/RenderView.h:

(WebCore::RenderView::m_wasAccumulatingRepaintRegion):

  • Add default initialization.
11:10 AM Changeset in webkit [275535] by jiewen_tan@apple.com
  • 3 edits
    2 adds in trunk

WebCrypto in Safari will not AES-GCM encrypt 0 bytes
https://bugs.webkit.org/show_bug.cgi?id=224083
<rdar://75093377>

Reviewed by Youenn Fablet.

Source/WebCore:

CommonCrypto will bail out both the encryption and decryption process if the dataOut is a null pointer.
To workaround the issue, this patch forces the dataOut to be a non-null pointer.

Test: crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text.html

  • crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:

(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):

LayoutTests:

  • crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text-expected.txt: Added.
  • crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-null-plain-text.html: Added.
11:02 AM Changeset in webkit [275534] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

set-webkit-configuration should print current settings
<https://webkit.org/b/224190>

Reviewed by Mark Lam.

  • Scripts/set-webkit-configuration:
  • Reorder switches to put sanitizers together.
  • Declare subroutines.
  • Call printCurrentSettings() or printUsage() as needed.

(printCurrentSettings): Add.
(printUsage): Add.

  • Scripts/webkitdirs.pm:
  • Reorder switch variables to match other code.

(coverageIsEnabled): Add for set-webkit-configuration.

11:00 AM Changeset in webkit [275533] by Chris Gambrell
  • 3 edits
    1 add
    1 delete in trunk/LayoutTests

[LayoutTests] Convert http/tests/loading convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222198
<rdar://problem/74536576>

Reviewed by Jonathan Bedard.

  • http/tests/loading/redirect-methods-expected.txt:
  • http/tests/loading/resources/redirect-methods-form.html:
  • http/tests/loading/resources/redirect-methods-result.php: Removed.
  • http/tests/loading/resources/redirect-methods-result.py: Added.
10:54 AM Changeset in webkit [275532] by Aditya Keerthi
  • 3 edits in trunk/Source/WebKit

[iOS] Prevent background blur when presenting date/time pickers
https://bugs.webkit.org/show_bug.cgi?id=224189
<rdar://problem/76220352>

Reviewed by Wenson Hsieh.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker _contextMenuInteraction:styleForMenuWithConfiguration:]):

Presenting a UIContextMenuInteraction results in the application of a
blur effect to the background view. However, the peripheral presented
when interacting with a UIDatePicker across the rest of the system
does not blur the background.

To align our behavior with the rest of the system, remove the blur
effect by specifying an empty UIVisualEffect for the
_UIContextMenuStyle's preferredBackgroundEffects. The empty effect
must be explicitly specified, since setting an empty array will result
in the default effect being applied.

10:28 AM Changeset in webkit [275531] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Revert part of crash fix to keep test infrastructure
https://bugs.webkit.org/show_bug.cgi?id=224196

These two tests change the bundle identifier to test what it's like to not be in a test:

http/tests/in-app-browser-privacy/app-bound-domain-gets-app-bound-session.html
http/tests/in-app-browser-privacy/non-app-bound-iframe-under-app-bound-domain-is-app-bound.html

This partial revert of r275486 allows the test to dynamically change whether it's in testing mode.

  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::doesParentProcessHaveITPEnabled):
(WebKit::isParentProcessAFullWebBrowser):

10:24 AM Changeset in webkit [275530] by Peng Liu
  • 3 edits in trunk/Source/WebKit

[GPUP] Clean up two messages.in files
https://bugs.webkit.org/show_bug.cgi?id=224153

Reviewed by Eric Carlson.

No new tests, no functional change.

  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
10:18 AM Changeset in webkit [275529] by Patrick Angle
  • 2 edits in trunk/Source/WebCore

Web Inspector: Grid overlay areas appear offset from their actual areas when the grid container has a border set
https://bugs.webkit.org/show_bug.cgi?id=224201

Reviewed by BJ Burg.

As of r274096, it is no longer correct to subtract the first track's position for either axis from the edge
lines of areas. This change resolves that, bringing this math in line with how other grid lines are laid out.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::buildGridOverlay):

10:10 AM Changeset in webkit [275528] by aboya@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] At EOS, change position to match duration, not the other way around.
https://bugs.webkit.org/show_bug.cgi?id=224237

Reviewed by Philippe Normand.

The criteria used to check if playback has finished is currentTime >=
duration. Currently MediaPlayerPrivateGStreamer::didEnd() ensures this
in an awkward way: by changing the duration so that it matches
currentTime, rather than the other way around.

This meant a duration change at the end of playback most of the time,
with a slightly different duration each time, since currentTime is
cached periodically.

This patch reworks that function to work more naturally and less racy:

First, only if the stream doesn't have a set duration (e.g. live
stream), we set a duration to currentTime, as defined in the spec.

Second, at EOS we update currentTime to match duration, rather than
the other way around.

This patch doesn't introduce changes in test results.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::didEnd):

9:51 AM Changeset in webkit [275527] by commit-queue@webkit.org
  • 18 edits
    1 copy in trunk/Source

Non-unified build fixes, early April 2021
https://bugs.webkit.org/show_bug.cgi?id=224091

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-06
Reviewed by Simon Fraser.
Source/WebCore:

The SelectionRestorationMode enum has been moved out of Document.h so
the entirety of Document.h doesn't need to be included just for that
enum.

  • Headers.cmake:

Add SelectionRestorationMode.h.

  • WebCore.xcodeproj/project.pbxproj:

Add SelectionRestorationMode.h.

  • dom/Document.h:

Move SelectionRestorationMode enum to its own file.

  • dom/Element.h:

Add forward declaration for enum class SelectionRestorationMode. Rearrange
existing enum class forward declarations alphabetically.

  • dom/SelectionRestorationMode.h: Added.
  • dom/FocusOptions.h:
  • history/CachedPage.cpp:
  • html/HTMLFormControlElement.cpp:
  • html/HTMLInputElement.h:
  • html/HTMLLabelElement.cpp:
  • html/HTMLLegendElement.cpp:
  • html/HTMLTextAreaElement.h:
  • html/InputType.cpp:
  • page/EventHandler.cpp:
  • page/FocusController.cpp:

Add #include "SelectionRestorationMode.h".

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

Add #include "ServiceWorkerGlobalScope.h" to fix:
ServiceWorkerThreadProxy.cpp:287:53: error: invalid use of incomplete type
'WTF::match_constness_t<WebCore::ScriptExecutionContext, WebCore::ServiceWorkerGlobalScope>'
{aka 'class WebCore::ServiceWorkerGlobalScope'}

Source/WebKit:

The SelectionRestorationMode enum has been moved out of Document.h so
the entirety of Document.h doesn't need to be included just for that
enum.

  • WebProcess/WebPage/WebPage.cpp:

Add #include "SelectionRestorationMode.h".

9:37 AM Changeset in webkit [275526] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ macOS Wk2 ] media/media-fragments/TC0051.html is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=222277

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Skip this test directory to

suppress this crash on EWS & trunk bots.

9:36 AM Changeset in webkit [275525] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Release WebRTC remote encoder/decoder callback lock right after having changed the encoder/decoder callback
https://bugs.webkit.org/show_bug.cgi?id=224228
<rdar://74560516>

Reviewed by Eric Carlson.

We were locking the callback lock, changing the callback and hopping to codec map thread to free the encoder/decoder.
Then we were unlocking the callback lock.
There was a chance that the encoder/decoder gets freed in the codec map thread before we unlock its callback lock.
Given that we nullify the callback in decoder/encoder Release before going to destructor, we can just remove the lock/nullify code.
Covered by existing test sets.

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::releaseDecoder):
(WebKit::LibWebRTCCodecs::releaseEncoder):

9:17 AM Changeset in webkit [275524] by Ruben Turcios
  • 2 edits in branches/safari-612.1.10-branch/Source/WebKit

Revert r2754691. rdar://problem/76244988

This reverts commit ac33c312b0f737f0fd04f484d5351fe7b62d6c9d.

9:09 AM Changeset in webkit [275523] by Aditya Keerthi
  • 263 edits in trunk

[iOS][FCR] Use opaque system colors for control backgrounds
https://bugs.webkit.org/show_bug.cgi?id=224131
<rdar://problem/75975709>

Reviewed by Tim Horton.

Source/WebCore:

r274600 introduced the use of system colors for control backgrounds.
However, the system fill colors are not opaque, leading to poor
visibility on certain page/element backgrounds.

To fix, use an opaque variant of the system fill colors, as if they
were drawn on top of a white background. Note that UIKit does not
expose these opaque variants, leaving us to make the adjustments
ourselves.

  • css/CSSValueKeywords.in:

Replace the system fill color keywords with opaque variants. The old
colors are fine to remove, since they were only introduced in r274600,
and have no external clients.

  • css/html.css:

Replace all system fill colors with their opaque variants.

  • rendering/RenderThemeIOS.mm:

(WebCore::cssValueSystemColorInformationList):

Renamed CSSValueIDAndSelector to CSSValueSystemColorInformation to
account for the addition of new fields to support opaque fill colors.

Storing the blendOverWhite and opacity fields in the list allows us
to resolve the color once and store it in a cache, rather than
applying the adjustments each time.

(WebCore::systemColorFromCSSValueSystemColorInformation):

Use the blendOverWhite and opacity information from the
CSSValueSystemColorInformation to determine the final color.

(WebCore::systemColorFromCSSValueID):

Call into systemColorFromCSSValueSystemColorInformation to avoid
duplicating logic.

(WebCore::RenderThemeIOS::cssValueToSystemColorMap):
(WebCore::RenderThemeIOS::systemColor):
(WebCore::RenderThemeIOS::checkboxRadioBackgroundColor):
(WebCore::RenderThemeIOS::paintProgressBarWithFormControlRefresh):
(WebCore::RenderThemeIOS::paintMeter):
(WebCore::RenderThemeIOS::paintSliderTrackWithFormControlRefresh):

LayoutTests:

Rebaselined tests to account for changes in color.

  • fast/forms/date/date-input-rendering-basic-expected.txt:
  • fast/forms/date/date-pseudo-elements-expected.txt:
  • fast/forms/time/time-input-rendering-basic-expected.txt:
  • platform/ios-simulator/fast/forms/auto-fill-button/hide-auto-fill-strong-password-viewable-treatment-when-form-is-reset-expected.txt:
  • platform/ios-simulator/fast/forms/auto-fill-button/input-credit-card-auto-fill-button-expected.txt:
  • platform/ios-simulator/fast/forms/auto-fill-button/input-strong-password-viewable-expected.txt:
  • platform/ios-simulator/fast/forms/datalist/datalist-searchinput-appearance-expected.txt:
  • platform/ios-simulator/fast/forms/datalist/datalist-textinput-appearance-expected.txt:
  • platform/ios-wk2/editing/input/caret-at-the-edge-of-input-expected.txt:
  • platform/ios-wk2/editing/input/reveal-caret-of-multiline-input-expected.txt:
  • platform/ios-wk2/editing/inserting/4960120-1-expected.txt:
  • platform/ios-wk2/editing/inserting/before-after-input-element-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4641033-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4944770-1-expected.txt:
  • platform/ios-wk2/editing/pasteboard/4944770-2-expected.txt:
  • platform/ios-wk2/editing/pasteboard/input-field-1-expected.txt:
  • platform/ios-wk2/editing/pasteboard/pasting-tabs-expected.txt:
  • platform/ios-wk2/editing/selection/4895428-3-expected.txt:
  • platform/ios-wk2/editing/selection/caret-before-select-expected.txt:
  • platform/ios-wk2/editing/selection/drag-select-1-expected.txt:
  • platform/ios-wk2/editing/selection/select-from-textfield-outwards-expected.txt:
  • platform/ios-wk2/fast/block/float/overhanging-tall-block-expected.txt:
  • platform/ios-wk2/fast/block/margin-collapse/103-expected.txt:
  • platform/ios-wk2/fast/dynamic/008-expected.txt:
  • platform/ios-wk2/fast/forms/basic-buttons-expected.txt:
  • platform/ios-wk2/fast/forms/basic-textareas-quirks-expected.txt:
  • platform/ios-wk2/fast/forms/input-appearance-preventDefault-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-click-outside-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-double-click-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-drag-down-expected.txt:
  • platform/ios-wk2/fast/forms/input-text-option-delete-expected.txt:
  • platform/ios-wk2/fast/forms/textAreaLineHeight-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-align-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-placeholder-visibility-1-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-placeholder-visibility-2-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-scroll-height-expected.txt:
  • platform/ios-wk2/fast/forms/textarea-setinnerhtml-expected.txt:
  • platform/ios-wk2/fast/hidpi/resize-corner-hidpi-expected.txt:
  • platform/ios-wk2/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
  • platform/ios-wk2/fast/overflow/scrollRevealButton-expected.txt:
  • platform/ios-wk2/fast/parser/document-write-option-expected.txt:
  • platform/ios-wk2/fast/parser/entity-comment-in-textarea-expected.txt:
  • platform/ios-wk2/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/ios-wk2/fast/spatial-navigation/snav-multiple-select-focusring-expected.txt:
  • platform/ios-wk2/fast/text/international/rtl-white-space-pre-wrap-expected.txt:
  • platform/ios-wk2/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
  • platform/ios-wk2/fast/transforms/transformed-focused-text-input-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative-expected.txt:
  • platform/ios/css3/flexbox/button-expected.txt:
  • platform/ios/editing/pasteboard/4806874-expected.txt:
  • platform/ios/editing/selection/3690703-2-expected.txt:
  • platform/ios/editing/selection/3690703-expected.txt:
  • platform/ios/editing/selection/3690719-expected.txt:
  • platform/ios/editing/selection/4397952-expected.txt:
  • platform/ios/editing/selection/4975120-expected.txt:
  • platform/ios/editing/selection/5240265-expected.txt:
  • platform/ios/editing/selection/replaced-boundaries-3-expected.txt:
  • platform/ios/editing/selection/select-box-expected.txt:
  • platform/ios/editing/selection/select-element-paragraph-boundary-expected.txt:
  • platform/ios/editing/selection/selection-button-text-expected.txt:
  • platform/ios/fast/block/float/032-expected.txt:
  • platform/ios/fast/block/float/float-avoidance-expected.txt:
  • platform/ios/fast/block/positioning/inline-block-relposition-expected.txt:
  • platform/ios/fast/css/continuationCrash-expected.txt:
  • platform/ios/fast/css/focus-ring-exists-for-search-field-expected.txt:
  • platform/ios/fast/css/input-search-padding-expected.txt:
  • platform/ios/fast/css/line-height-expected.txt:
  • platform/ios/fast/css/rtl-ordering-expected.txt:
  • platform/ios/fast/css/text-overflow-input-expected.txt:
  • platform/ios/fast/css/text-transform-select-expected.txt:
  • platform/ios/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
  • platform/ios/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
  • platform/ios/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
  • platform/ios/fast/events/context-no-deselect-expected.txt:
  • platform/ios/fast/forms/001-expected.txt:
  • platform/ios/fast/forms/003-expected.txt:
  • platform/ios/fast/forms/004-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/basic-inputs-expected.txt:
  • platform/ios/fast/forms/basic-selects-expected.txt:
  • platform/ios/fast/forms/basic-textareas-expected.txt:
  • platform/ios/fast/forms/blankbuttons-expected.txt:
  • platform/ios/fast/forms/box-shadow-override-expected.txt:
  • platform/ios/fast/forms/button-align-expected.txt:
  • platform/ios/fast/forms/button-cannot-be-nested-expected.txt:
  • platform/ios/fast/forms/button-generated-content-expected.txt:
  • platform/ios/fast/forms/button-positioned-expected.txt:
  • platform/ios/fast/forms/button-sizes-expected.txt:
  • platform/ios/fast/forms/button-style-color-expected.txt:
  • platform/ios/fast/forms/button-table-styles-expected.txt:
  • platform/ios/fast/forms/button-text-transform-expected.txt:
  • platform/ios/fast/forms/button-white-space-expected.txt:
  • platform/ios/fast/forms/control-clip-expected.txt:
  • platform/ios/fast/forms/control-clip-overflow-expected.txt:
  • platform/ios/fast/forms/control-restrict-line-height-expected.txt:
  • platform/ios/fast/forms/disabled-select-change-index-expected.txt:
  • platform/ios/fast/forms/encoding-test-expected.txt:
  • platform/ios/fast/forms/fieldset-align-expected.txt:
  • platform/ios/fast/forms/file/file-input-direction-expected.txt:
  • platform/ios/fast/forms/file/file-input-disabled-expected.txt:
  • platform/ios/fast/forms/floating-textfield-relayout-expected.txt:
  • platform/ios/fast/forms/form-element-geometry-expected.txt:
  • platform/ios/fast/forms/hidden-listbox-expected.txt:
  • platform/ios/fast/forms/input-align-expected.txt:
  • platform/ios/fast/forms/input-appearance-bkcolor-expected.txt:
  • platform/ios/fast/forms/input-appearance-default-bkcolor-expected.txt:
  • platform/ios/fast/forms/input-appearance-disabled-expected.txt:
  • platform/ios/fast/forms/input-appearance-focus-expected.txt:
  • platform/ios/fast/forms/input-appearance-height-expected.txt:
  • platform/ios/fast/forms/input-appearance-selection-expected.txt:
  • platform/ios/fast/forms/input-appearance-visibility-expected.txt:
  • platform/ios/fast/forms/input-appearance-width-expected.txt:
  • platform/ios/fast/forms/input-button-sizes-expected.txt:
  • platform/ios/fast/forms/input-disabled-color-expected.txt:
  • platform/ios/fast/forms/input-double-click-selection-gap-bug-expected.txt:
  • platform/ios/fast/forms/input-field-text-truncated-expected.txt:
  • platform/ios/fast/forms/input-placeholder-visibility-1-expected.txt:
  • platform/ios/fast/forms/input-placeholder-visibility-3-expected.txt:
  • platform/ios/fast/forms/input-spaces-expected.txt:
  • platform/ios/fast/forms/input-table-expected.txt:
  • platform/ios/fast/forms/input-text-click-inside-expected.txt:
  • platform/ios/fast/forms/input-text-scroll-left-on-blur-expected.txt:
  • platform/ios/fast/forms/input-text-self-emptying-click-expected.txt:
  • platform/ios/fast/forms/input-type-text-min-width-expected.txt:
  • platform/ios/fast/forms/input-value-expected.txt:
  • platform/ios/fast/forms/input-width-expected.txt:
  • platform/ios/fast/forms/listbox-bidi-align-expected.txt:
  • platform/ios/fast/forms/listbox-hit-test-zoomed-expected.txt:
  • platform/ios/fast/forms/listbox-scrollbar-incremental-load-expected.txt:
  • platform/ios/fast/forms/listbox-width-change-expected.txt:
  • platform/ios/fast/forms/menulist-clip-expected.txt:
  • platform/ios/fast/forms/menulist-deselect-update-expected.txt:
  • platform/ios/fast/forms/menulist-narrow-width-expected.txt:
  • platform/ios/fast/forms/menulist-no-overflow-expected.txt:
  • platform/ios/fast/forms/menulist-option-wrap-expected.txt:
  • platform/ios/fast/forms/menulist-separator-painting-expected.txt:
  • platform/ios/fast/forms/menulist-style-color-expected.txt:
  • platform/ios/fast/forms/menulist-width-change-expected.txt:
  • platform/ios/fast/forms/minWidthPercent-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-rtl-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.txt:
  • platform/ios/fast/forms/number/number-appearance-spinbutton-layer-expected.txt:
  • platform/ios/fast/forms/option-script-expected.txt:
  • platform/ios/fast/forms/option-strip-whitespace-expected.txt:
  • platform/ios/fast/forms/option-text-clip-expected.txt:
  • platform/ios/fast/forms/placeholder-pseudo-style-expected.txt:
  • platform/ios/fast/forms/plaintext-mode-2-expected.txt:
  • platform/ios/fast/forms/search-cancel-button-style-sharing-expected.txt:
  • platform/ios/fast/forms/search-display-none-cancel-button-expected.txt:
  • platform/ios/fast/forms/search-input-rtl-expected.txt:
  • platform/ios/fast/forms/select-align-expected.txt:
  • platform/ios/fast/forms/select-baseline-expected.txt:
  • platform/ios/fast/forms/select-block-background-expected.txt:
  • platform/ios/fast/forms/select-change-listbox-size-expected.txt:
  • platform/ios/fast/forms/select-change-listbox-to-popup-expected.txt:
  • platform/ios/fast/forms/select-change-popup-to-listbox-expected.txt:
  • platform/ios/fast/forms/select-dirty-parent-pref-widths-expected.txt:
  • platform/ios/fast/forms/select-disabled-appearance-expected.txt:
  • platform/ios/fast/forms/select-element-focus-ring-expected.txt:
  • platform/ios/fast/forms/select-empty-option-height-expected.txt:
  • platform/ios/fast/forms/select-initial-position-expected.txt:
  • platform/ios/fast/forms/select-item-background-clip-expected.txt:
  • platform/ios/fast/forms/select-list-box-with-height-expected.txt:
  • platform/ios/fast/forms/select-non-native-rendering-direction-expected.txt:
  • platform/ios/fast/forms/select-selected-expected.txt:
  • platform/ios/fast/forms/select-style-expected.txt:
  • platform/ios/fast/forms/select-visual-hebrew-expected.txt:
  • platform/ios/fast/forms/select-writing-direction-natural-expected.txt:
  • platform/ios/fast/forms/select/optgroup-rendering-expected.txt:
  • platform/ios/fast/forms/selectlist-minsize-expected.txt:
  • platform/ios/fast/forms/stuff-on-my-optgroup-expected.txt:
  • platform/ios/fast/forms/tabbing-input-iframe-expected.txt:
  • platform/ios/fast/forms/textarea-placeholder-pseudo-style-expected.txt:
  • platform/ios/fast/forms/textarea-scrollbar-expected.txt:
  • platform/ios/fast/forms/textarea-scrolled-type-expected.txt:
  • platform/ios/fast/forms/textarea-width-expected.txt:
  • platform/ios/fast/forms/textfield-focus-ring-expected.txt:
  • platform/ios/fast/forms/textfield-overflow-expected.txt:
  • platform/ios/fast/frames/take-focus-from-iframe-expected.txt:
  • platform/ios/fast/html/details-no-summary4-expected.txt:
  • platform/ios/fast/html/details-open-javascript-expected.txt:
  • platform/ios/fast/html/details-open2-expected.txt:
  • platform/ios/fast/html/details-open4-expected.txt:
  • platform/ios/fast/html/details-replace-summary-child-expected.txt:
  • platform/ios/fast/html/details-replace-text-expected.txt:
  • platform/ios/fast/html/keygen-expected.txt:
  • platform/ios/fast/invalid/014-expected.txt:
  • platform/ios/fast/lists/dynamic-marker-crash-expected.txt:
  • platform/ios/fast/overflow/overflow-x-y-expected.txt:
  • platform/ios/fast/replaced/replaced-breaking-expected.txt:
  • platform/ios/fast/replaced/replaced-breaking-mixture-expected.txt:
  • platform/ios/fast/replaced/three-selects-break-expected.txt:
  • platform/ios/fast/replaced/width100percent-button-expected.txt:
  • platform/ios/fast/replaced/width100percent-menulist-expected.txt:
  • platform/ios/fast/replaced/width100percent-searchfield-expected.txt:
  • platform/ios/fast/replaced/width100percent-textarea-expected.txt:
  • platform/ios/fast/replaced/width100percent-textfield-expected.txt:
  • platform/ios/fast/selectors/064-expected.txt:
  • platform/ios/fast/table/append-cells2-expected.txt:
  • platform/ios/fast/table/colspanMinWidth-expected.txt:
  • platform/ios/fast/table/remove-td-display-none-expected.txt:
  • platform/ios/fast/table/spanOverlapRepaint-expected.txt:
  • platform/ios/fast/table/text-field-baseline-expected.txt:
  • platform/ios/fast/text/drawBidiText-expected.txt:
  • platform/ios/fast/text/international/bidi-listbox-atsui-expected.txt:
  • platform/ios/fast/text/international/bidi-listbox-expected.txt:
  • platform/ios/fast/text/international/bidi-menulist-expected.txt:
  • platform/ios/fast/text/international/hindi-spacing-expected.txt:
  • platform/ios/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt:
  • platform/ios/svg/custom/foreign-object-skew-expected.txt:
  • platform/ios/svg/custom/inline-svg-in-xhtml-expected.txt:
  • platform/ios/svg/hixie/mixed/003-expected.txt:
  • platform/ios/tables/mozilla/bugs/45621-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug12384-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug194024-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug24200-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug26178-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug28928-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug29326-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug30559-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug30692-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4382-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug44505-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug46368-1-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug46368-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug51037-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug51727-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug52505-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug52506-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug55545-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug59354-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug60749-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug68912-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug92647-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug96334-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug99948-expected.txt:
  • platform/ios/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
  • platform/ios/tables/mozilla/core/margins-expected.txt:
  • platform/ios/tables/mozilla/dom/tableDom-expected.txt:
  • platform/ios/tables/mozilla/other/move_row-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:
  • platform/ios/transforms/2d/zoom-menulist-expected.txt:
  • platform/ios/transforms/3d/general/perspective-non-layer-expected.txt:
9:06 AM Changeset in webkit [275522] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Remove definition used for staging change with internal repo
https://bugs.webkit.org/show_bug.cgi?id=224196

  • Shared/Cocoa/DefaultWebBrowserChecks.h:

This definition was used to help me land the patch without breaking the internal build.
Now that I've used it to adapt to the open source changes, I can remove it.

9:05 AM Changeset in webkit [275521] by Tadeu Zagallo
  • 3 edits
    2 adds in trunk

Handle OOM in ScriptExecutionContext::reportUnhandledPromiseRejection
https://bugs.webkit.org/show_bug.cgi?id=223777
<rdar://66271491>

Reviewed by Yusuke Suzuki.

Source/WebCore:

It's possible to fail to allocate the error message in ScriptExecutionContext::reportUnhandledPromiseRejection,
in which case we should report an OOM exception instead of crashing.

Test: js/Promise-reject-large-string.html

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection):

LayoutTests:

  • js/dom/Promise-reject-large-string-expected.txt: Added.
  • js/dom/Promise-reject-large-string.html: Added.
9:00 AM Changeset in webkit [275520] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[iOS] Update UIDatePickerStyle for <input type=time>
https://bugs.webkit.org/show_bug.cgi?id=224187
<rdar://problem/76219729>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker datePickerStyle]):

Use UIDatePickerStyleWheels rather than UIDatePickerStyleInline, since
the inline style now requires an additional tap to present the editable
picker view.

8:56 AM Changeset in webkit [275519] by Patrick Angle
  • 4 edits in trunk/Source

Web Inspector: Grid overlay does not honor writing modes and RTL layout direction.
https://bugs.webkit.org/show_bug.cgi?id=224127

Reviewed by BJ Burg.

Source/WebCore:

Grid overlays did not previous honor writing modes and RTL layout direction correctly. The underlying math was
correct, but the 'origin' of the element's grid, and the direction in which rows and columns increased, was not
handled correctly. This patch resolves this by taking writing mode and direction into account when calculating
row/column line positions as well as correctly orienting layout label arrows based on the current writing
mode/direction.

Area names have been moved to the center of their respective areas, which both helps to make sure the label is
within the area for all writing modes/direction/transformation, as well as improved legibility on smaller grids
where area names were previously behind other labels.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::backgroundPathForLayoutLabel):
(WebCore::InspectorOverlay::drawLayoutLabel):
(WebCore::InspectorOverlay::drawGridOverlay):

  • backgroundPathForLayoutLabel, drawLayoutLabel, and drawGridOverlay now interpret the None arrow direction

as using the label's location as its center, not top-left.
(WebCore::authoredGridTrackSizes):

  • Drive-by removal of extra whitespace.

(WebCore::InspectorOverlay::buildGridOverlay):

  • Use the element's computed style to determine writing mode and direction (which takes into account the dir attribute).
  • Adjust columnLineAt and rowLineAt calculations based on writing mode and direction.
  • Adjust all arrow directions and positions based on writing mode and direction.

Source/WebKit:

  • UIProcess/Inspector/ios/WKInspectorHighlightView.mm:

(createLayoutLabelLayer):

  • WebCore::backgroundPathForLayoutLabel now treats the None arrow direction as being centered on the label's

location.

8:41 AM Changeset in webkit [275518] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Fix build of DiagnosticLoggingDomain.h
https://bugs.webkit.org/show_bug.cgi?id=224205

Reviewed by Don Olmstead.

No new tests, build fix only.

  • page/DiagnosticLoggingDomain.h: Include wtf/EnumTraits.h
7:58 AM Changeset in webkit [275517] by commit-queue@webkit.org
  • 5 edits in trunk

[WPE] Enable Cog's GTK4 backend
https://bugs.webkit.org/show_bug.cgi?id=224099

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

Source/WebKit:

  • wpe/wpe-webkit-uninstalled.pc.in: Fix paths to derived sources.

Tools:

The Cog GTK4 platform plugin is more suitable for developer builds on desktop, compared to
the fdo backend which provides no window decorations on most Wayland compositors.

  • PlatformWPE.cmake:
  • Scripts/webkitpy/port/wpe.py:

(WPEPort.run_minibrowser):

7:40 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
7:37 AM Changeset in webkit [275516] by commit-queue@webkit.org
  • 6 edits in trunk

REGRESSION(r274358) [GStreamer] http/tests/images/mp4-partial-load.html is flaky crashing inside GStreamer
https://bugs.webkit.org/show_bug.cgi?id=223636

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore:

Ensure the GStreamer messages are always processed synchronously, even when the handler is
called from another thread. Without blocking in the latter case, the select-streams event
might be sent to decodebin too late. It has to be sent as a synchronous reaction to the
stream-collection message.

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::InnerDecoder::handleMessage):
(WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.h:

LayoutTests:

  • platform/glib/TestExpectations: Update tests expectations.
  • platform/gtk/TestExpectations: Ditto.
7:03 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
6:55 AM Changeset in webkit [275515] by Alan Bujtas
  • 156 edits
    1 add
    1 delete in trunk

[LFC][Integration] Enable inline box support (RenderInline)
https://bugs.webkit.org/show_bug.cgi?id=220148
<rdar://problem/72768785>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/orthogonal-flex-item-crash-expected.txt:
  • web-platform-tests/css/css-text/word-break/word-break-break-all-inline-007-expected.html:
  • web-platform-tests/css/css-text/word-break/word-break-break-all-inline-007.html:
  • web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt:
  • web-platform-tests/innerText/getter-expected.txt:

Source/WebCore:

Use the modern line layout for content like <span>content inside an inline box</span>.

  • layout/integration/LayoutIntegrationCoverage.cpp:

Tools:

  • TestWebKitAPI/Tests/ios/AccessibilityTestsIOS.mm:

(TestWebKitAPI::TEST):

LayoutTests:

  • correctness progressions
  • output progressions
  • 1px rounding diffs
  • misc
  • editing/execCommand/delete-hidden-crash.html:
  • fast/css/empty-inline-003-quirksmode-expected.txt:
  • fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position-expected.txt:
  • fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position.html:
  • fast/invalid/018-expected.txt:
  • fast/text/line-break-between-text-nodes-latin1-expected.html:
  • imported/blink/fast/css/first-letter-all-inherit-td-crash-expected.html: Removed.
  • imported/blink/fast/css/first-letter-all-inherit-td-crash-expected.txt: Added.
  • imported/blink/fast/css/first-letter-all-inherit-td-crash.html:
  • platform/ios-wk2/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-flexbox/orthogonal-flex-item-crash-expected.txt:
  • platform/ios/css1/box_properties/border-expected.txt:
  • platform/ios/css1/box_properties/width-expected.txt:
  • platform/ios/css1/text_properties/text_decoration-expected.txt:
  • platform/ios/css1/text_properties/vertical_align-expected.txt:
  • platform/ios/css1/text_properties/word_spacing-expected.txt:
  • platform/ios/css2.1/t0803-c5505-mrgn-00-b-ag-expected.txt:
  • platform/ios/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/ios/fast/block/basic/014-expected.txt:
  • platform/ios/fast/block/margin-collapse/block-inside-inline/001-expected.txt:
  • platform/ios/fast/block/margin-collapse/block-inside-inline/005-expected.txt:
  • platform/ios/fast/block/positioning/057-expected.txt:
  • platform/ios/fast/body-propagation/background-image/010-expected.txt:
  • platform/ios/fast/body-propagation/background-image/010-xhtml-expected.txt:
  • platform/ios/fast/css-generated-content/after-duplicated-after-split-expected.txt:
  • platform/ios/fast/css/child-style-can-override-visited-style-expected.txt:
  • platform/ios/fast/css/empty-inline-003-quirksmode-expected.txt:
  • platform/ios/fast/css/inline-element-line-break-expected.txt:
  • platform/ios/fast/css/word-space-extra-expected.txt:
  • platform/ios/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/ios/fast/forms/select-change-listbox-size-expected.txt:
  • platform/ios/fast/images/image-map-anchor-children-expected.txt:
  • platform/ios/fast/inline-block/003-expected.txt:
  • platform/ios/fast/inline/002-expected.txt:
  • platform/ios/fast/inline/drawStyledEmptyInlines-expected.txt:
  • platform/ios/fast/invalid/003-expected.txt:
  • platform/ios/fast/lists/marker-before-empty-inline-expected.txt:
  • platform/ios/fast/selectors/visited-descendant-expected.txt:
  • platform/ios/fast/table/border-collapsing/004-expected.txt:
  • platform/ios/fast/table/frame-and-rules-expected.txt:
  • platform/ios/fast/table/table-display-types-strict-expected.txt:
  • platform/ios/fast/text/basic/007-expected.txt:
  • platform/ios/fast/text/basic/012-expected.txt:
  • platform/ios/fast/text/whitespace/018-expected.txt:
  • platform/ios/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
  • platform/ios/fonts/sans-serif-expected.txt:
  • platform/ios/fonts/serif-expected.txt:
  • platform/ios/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/ios/svg/custom/svg-fonts-word-spacing-expected.txt:
  • platform/ios/svg/hixie/processing-model/003-expected.txt:
  • platform/ios/svg/hixie/processing-model/004-expected.txt:
  • platform/ios/tables/mozilla/bugs/adforce_imgis_com-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug113235-1-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug113235-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug113235-3-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug113424-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug126742-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug14323-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug22513-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug2267-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug38916-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug4849-2-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug57300-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug59354-expected.txt:
  • platform/ios/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/ios/tables/mozilla/core/bloomberg-expected.txt:
  • platform/ios/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/ios/tables/mozilla/other/wa_table_tr_align-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug89315-expected.txt:
  • platform/mac-catalina/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/mac-catalina/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/mac-catalina/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/mac-catalina/tables/mozilla/other/wa_table_tr_align-expected.txt:
  • platform/mac-wk1/fast/inline-block/003-expected.txt:
  • platform/mac/css1/box_properties/width-expected.txt:
  • platform/mac/css1/text_properties/vertical_align-expected.txt:
  • platform/mac/css1/text_properties/word_spacing-expected.txt:
  • platform/mac/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/mac/editing/selection/previous-line-position-expected.txt:
  • platform/mac/fast/block/basic/014-expected.txt:
  • platform/mac/fast/block/margin-collapse/block-inside-inline/001-expected.txt:
  • platform/mac/fast/block/margin-collapse/block-inside-inline/005-expected.txt:
  • platform/mac/fast/block/positioning/057-expected.txt:
  • platform/mac/fast/css-generated-content/after-duplicated-after-split-expected.txt:
  • platform/mac/fast/css/child-style-can-override-visited-style-expected.txt:
  • platform/mac/fast/css/inline-element-line-break-expected.txt:
  • platform/mac/fast/css/resize-corner-tracking-transformed-expected.txt:
  • platform/mac/fast/css/word-space-extra-expected.txt:
  • platform/mac/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/mac/fast/encoding/utf-16-big-endian-expected.txt:
  • platform/mac/fast/encoding/utf-16-little-endian-expected.txt:
  • platform/mac/fast/images/image-map-anchor-children-expected.txt:
  • platform/mac/fast/inline-block/003-expected.txt:
  • platform/mac/fast/inline/002-expected.txt:
  • platform/mac/fast/inline/drawStyledEmptyInlines-expected.txt:
  • platform/mac/fast/invalid/003-expected.txt:
  • platform/mac/fast/invalid/missing-end-tag-expected.txt:
  • platform/mac/fast/lists/marker-before-empty-inline-expected.txt:
  • platform/mac/fast/parser/nofoo-tags-inside-paragraph-expected.txt:
  • platform/mac/fast/parser/xhtml-alternate-entities-expected.txt:
  • platform/mac/fast/selectors/visited-descendant-expected.txt:
  • platform/mac/fast/table/frame-and-rules-expected.txt:
  • platform/mac/fast/table/table-display-types-strict-expected.txt:
  • platform/mac/fast/text/basic/007-expected.txt:
  • platform/mac/fast/text/basic/012-expected.txt:
  • platform/mac/fast/text/basic/generic-family-reset-expected.txt:
  • platform/mac/fast/text/text-letter-spacing-expected.txt:
  • platform/mac/fast/text/textIteratorNilRenderer-expected.txt:
  • platform/mac/fast/text/wbr-expected.txt:
  • platform/mac/fast/text/whitespace/018-expected.txt:
  • platform/mac/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
  • platform/mac/fonts/sans-serif-expected.txt:
  • platform/mac/fonts/serif-expected.txt:
  • platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/mac/svg/custom/svg-fonts-word-spacing-expected.txt:
  • platform/mac/svg/hixie/processing-model/003-expected.txt:
  • platform/mac/svg/hixie/processing-model/004-expected.txt:
  • platform/mac/tables/mozilla/bugs/adforce_imgis_com-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug113235-2-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug113235-3-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug113424-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug126742-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug14323-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug22513-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug2267-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug38916-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug4849-2-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug57300-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug57828-2-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug59354-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug60804-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug60807-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/mac/tables/mozilla/core/bloomberg-expected.txt:
  • platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug89315-expected.txt:
6:53 AM Changeset in webkit [275514] by commit-queue@webkit.org
  • 7 edits in trunk

[GStreamer][WebRTC] Audio is not played from an audio element when the srcObject object has unstarted video tracks
https://bugs.webkit.org/show_bug.cgi?id=209163

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

Source/WebCore:

Ensure no MediaStream (active) video tracks can be added in a pipeline representing an <audio> element.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::sourceSetup):
(WebCore::MediaPlayerPrivateGStreamer::hasFirstSampleReachedSink const):
(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChanged):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

(webkitMediaStreamSrcPostStreamCollection):
(webkitMediaStreamSrcSetStream):

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.h:

LayoutTests:

  • platform/glib/TestExpectations: Unflag now-passing test.
6:38 AM Changeset in webkit [275513] by commit-queue@webkit.org
  • 5 edits
    2 deletes in trunk/Tools

[GStreamer] Test harness should use a mock audio output device
https://bugs.webkit.org/show_bug.cgi?id=223888

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

Prioritize the new fakeaudiosink over other platform sinks when running the layout and API
tests. Mute and volume handling will still be tested (mocked, actually) but no actual
rendering will be performed.

The pulseaudio "sanitizer" can't work with a pipewire-pulse server because dynamic module
(un)loading is heavily restricted in this new wrapper. Moreover relying on the default sinks
when running on desktop machines easily triggers unintended beeps when running the tests.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.init):
(GtkPort.setup_test_run):
(GtkPort.setup_environ_for_server):
(GtkPort.clean_up_test_run): Deleted.

  • Scripts/webkitpy/port/gtk_unittest.py:

(GtkPortTest):
(GtkPortTest.make_port): Deleted.

  • Scripts/webkitpy/port/pulseaudio_sanitizer.py: Removed.
  • Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py: Removed.
  • Scripts/webkitpy/port/wpe.py:

(WPEPort.setup_environ_for_server):

  • Scripts/webkitpy/port/wpe_unittest.py:

(WPEPortTest):
(WPEPortTest.make_port): Deleted.

6:34 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
6:30 AM Changeset in webkit [275512] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GTK][GStreamer] Web Audio - Media element source - Audio is cracking.
https://bugs.webkit.org/show_bug.cgi?id=196293

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

The provider client might request samples faster than the current clock speed, so this sink
should process buffers as fast as possible. The cracks were consequence of the audio sink of
the AudioDestination starving off.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::handleNewDeinterleavePad):

6:25 AM Changeset in webkit [275511] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

[GStreamer] Heap allocation exceptions
https://bugs.webkit.org/show_bug.cgi?id=224188

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

The current GStreamer audio-related backends can't yet avoid heap allocations in the audio
thread, so we need exceptions for those cases.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::provideInput):

  • platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp:

(gstMemoryFastMallocNew):

  • platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):

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

[GStreamer][MediaStream] AudioSource triggering critical warnings
https://bugs.webkit.org/show_bug.cgi?id=224180

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

Keep track of audio channel offsets and store them as metadata in audio buffers. This is
used by downstream elements such as the audio convert elements.

  • Modules/webaudio/MediaStreamAudioSourceGStreamer.cpp:

(WebCore::copyBusData):
(WebCore::MediaStreamAudioSource::consumeAudio):

6:18 AM Changeset in webkit [275509] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Disable LFC if paginated context has inline boxes
https://bugs.webkit.org/show_bug.cgi?id=224222

Reviewed by Zalan Bujtas.

There are no known problems with this combination but it is untested.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForChild):

Pass in the RenderBlockFlow and move the existing test requiring it here too.

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

6:18 AM Changeset in webkit [275508] by keith_miller@apple.com
  • 4 edits
    2 adds in trunk

CloneDeserializer should use ArrayBuffer::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=224218

Reviewed by Antti Koivisto.

Source/WebCore:

Right now CloneDeserializer assumes that every ArrayBuffer allocation during
deserialization will succeed. This is silly since it's an array-like object.
It should call tryCreate and fail the deserialization instead.

Test: fast/dom/Window/post-message-large-array-buffer-should-not-crash.html

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readArrayBuffer):

LayoutTests:

This test was generated by a fuzzer so it allocates a large Array backing store
by doing Object.defineProperty on a large offset. That said, I chose to leave it
because it's sometimes useful to do things in different ways for testing.

Also, skip the test on windows because we seem to throw a stack overflow error.
Not sure why this happens but it's not super important that this particular
test runs on all ports as we're mostly trying to just unblock the fuzzer.

  • fast/dom/Window/post-message-large-array-buffer-should-not-crash-expected.txt: Added.
  • fast/dom/Window/post-message-large-array-buffer-should-not-crash.html: Added.
  • platform/win/TestExpectations:
5:58 AM Changeset in webkit [275507] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer][MediaStream] Unreviewed micro-gardening
https://bugs.webkit.org/show_bug.cgi?id=224233

  • platform/glib/TestExpectations:
5:13 AM Changeset in webkit [275506] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[resultsdbpy] Remove obsolete BuildbotEightURLFactory
https://bugs.webkit.org/show_bug.cgi?id=223796

Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/example/environment.py:
  • Scripts/libraries/resultsdbpy/resultsdbpy/model/ci_context.py:

(BuildbotEightURLFactory): Deleted.
(BuildbotEightURLFactory.init): Deleted.
(BuildbotEightURLFactory.url): Deleted.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/ci_context_unittest.py:

(URLFactoryTest.test_old_builder_url): Deleted.
(URLFactoryTest.test_old_worker_url): Deleted.

4:46 AM Changeset in webkit [275505] by commit-queue@webkit.org
  • 1 edit in trunk/LayoutTests/ChangeLog

WebGL conformance tests are missing files due to too widely matching .gitignore
https://bugs.webkit.org/show_bug.cgi?id=223988

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-06
Reviewed by Alexey Proskuryakov.

Add the missing tests that were hidden by the .gitignore.

  • webgl/1.0.x/conformance/ogles/GL/build/*: Added.
  • webgl/2.0.y/conformance/ogles/GL/build/*: Added.
  • webgl/resources/webgl_test_files/conformance/ogles/GL/build/*: Added.
4:25 AM Changeset in webkit [275504] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Change mediaControlsLocalizedStrings to use unicode escapes
https://bugs.webkit.org/show_bug.cgi?id=224195

Reviewed by Yusuke Suzuki.

  • en.lproj/mediaControlsLocalizedStrings.js:

Switch from literal smart quotes to unicode escapes.

4:22 AM Changeset in webkit [275503] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Enable high bit depth in libvpx
https://bugs.webkit.org/show_bug.cgi?id=224049

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-06
Reviewed by Adrian Perez de Castro.

10 and 12-bit formats are needed for profile 2 and 3 VP9 decoding.

  • elements/freedesktop-sdk.bst:
  • patches/fdo-0001-libvpx-Enable-high-bit-depth-support.patch: Added.
3:49 AM Changeset in webkit [275502] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Migrate layout ascents and descents to LayoutUnits instead of ints
https://bugs.webkit.org/show_bug.cgi?id=133040

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Zalan Bujtas.

Migrate layout ascents and descents to LayoutUnits instead of ints.
The actual ascent/descent values are still integral.

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
(WebCore::InlineFlowBox::computeLogicalBoxHeights):

  • rendering/InlineFlowBox.h:
  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::alignBoxesInBlockDirection):
(WebCore::setAscentAndDescent):
(WebCore::RootInlineBox::ascentAndDescentForBox const):

  • rendering/RootInlineBox.h:
3:01 AM Changeset in webkit [275501] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

IPC::decodeObject null dereference in decodeArrayInternal()
https://bugs.webkit.org/show_bug.cgi?id=224214

Patch by Ian Gilbert <iang@apple.com> on 2021-04-06
Reviewed by Ryosuke Niwa.

Add null pointer check to decodeArrayInternal.

Source/WebKit:

Test: ipc/decode-object-array-crash.html

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(IPC::decodeArrayInternal):

LayoutTests:

  • ipc/decode-object-array-crash-expected.txt: Added.
  • ipc/decode-object-array-crash.html: Added.
2:59 AM Changeset in webkit [275500] by Chris Lord
  • 3 edits in trunk/Source/WebCore

BidiContext caching is not thread-safe
https://bugs.webkit.org/show_bug.cgi?id=224179

Reviewed by Darin Adler.

Make BidiContext ThreadSafeRefCounted and make shared context creation
thread-safe. This is needed by OffscreenCanvas to use text in Workers.

No new tests, covered by existing tests.

  • platform/text/BidiContext.cpp:

(WebCore::BidiContext::create):

  • platform/text/BidiContext.h:
2:51 AM Changeset in webkit [275499] by rniwa@webkit.org
  • 26 edits in trunk

Disable WebSQL in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=224144

Reviewed by Sihui Liu.

Tools:

Disabled WebSQL in WebKitTestRunner.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

Skipped various WebSQL tests on WebKit2 and removed references to openDatabase in some tests.

  • fast/dom/Window/resources/WindowProperties.js: Removed openDatabase from the list of properties to test.
  • fast/dom/Window/window-function-frame-getter-precedence-expected.txt:
  • fast/dom/Window/window-function-name-getter-precedence-expected.txt:
  • fast/frames/resources/sandboxed-iframe-storage-allowed.html: Ditto.
  • fast/frames/resources/sandboxed-iframe-storage-disallowed.html: Ditto.
  • fast/frames/sandboxed-iframe-storage-expected.txt:
  • http/tests/security/cross-frame-access-call-expected.txt:
  • http/tests/security/cross-frame-access-call.html: Ditto.
  • inspector/runtime/CommandLineAPI-inspect-expected.txt:
  • inspector/runtime/CommandLineAPI-inspect.html: Ditto.
  • js/dom/callback-function-with-handle-event-expected.txt:
  • js/dom/callback-function-with-handle-event.html: Use requestAnimationFrame instead of openDatabase.
  • js/dom/exceptions-thrown-in-callbacks-expected.txt:
  • js/dom/exceptions-thrown-in-callbacks.html: Ditto and use geolocation.getCurrentLocation.
  • platform/glib/TestExpectations: Removed entries under storage/websql since they're all skipped now.
  • platform/gtk/TestExpectations: Ditto.
  • platform/ios-wk2/TestExpectations: Ditto.
  • platform/mac-wk1/TestExpectations: Moved flaky timeout expectation on a test here from mac-wk2.
  • platform/mac-wk2/TestExpectations: Removed an entry to skip storage/websql as it's now skipped for all WK2 ports.
  • platform/mac/TestExpectations: Removed flaky timeout expectation since this will force the test to run

in WebKitTestRunner, which isn't what we want to do.

  • platform/wincairo/TestExpectations: Removed entries under storage/websql since they're all skipped now.
  • platform/wk2/TestExpectations: Skip all the tests for WebSQL.
  • platform/wpe/TestExpectations: Removed entries under storage/websql since they're all skipped now.
2:22 AM Changeset in webkit [275498] by commit-queue@webkit.org
  • 4 edits
    3 adds in trunk

Nullptr crash in EventPath::eventTargetRespectingTargetRules
https://bugs.webkit.org/show_bug.cgi?id=222718

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-06
Reviewed by Ryosuke Niwa.

Source/WebCore:

During executions of "undo" and "redo" commands, beforeinput and input events are dispatched
on root editable elements. It is however possible that these elements had been disconnected,
causing nullptr crash. This patch exits the command execution early if that's the case.

Test: editing/undo/undo-with-disconnected-editable-element-crash.html

  • editing/CompositeEditCommand.cpp:

(WebCore::EditCommandComposition::areRootEditabledElementsConnected): Add helper function
to check whether m_startingRootEditableElement and m_endingRootEditableElement are still
connected.
(WebCore::EditCommandComposition::unapply): Exit early if root editable elements are no
longer connected. Put this after the layout update.
(WebCore::EditCommandComposition::reapply): Ditto.

  • editing/CompositeEditCommand.h: Declare new helper function.

LayoutTests:

Add regression test.

  • editing/undo/undo-with-disconnected-editable-element-crash-expected.txt: Added.
  • editing/undo/undo-with-disconnected-editable-element-crash.html: Added.
  • editing/undo/undo-with-disconnected-editable-element-crash.js: Added.

(runTests.window.parent.onwebkitanimationiteration):
(runTests):

2:00 AM Changeset in webkit [275497] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream
https://bugs.webkit.org/show_bug.cgi?id=222266

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Manuel Rego Casasnovas.

Resync web-platform-tests/css/css-sizing/aspect-ratio from upstream 8837d4e994.

  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-025.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-026.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-003.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-dynamic-aspect-ratio.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/w3c-import.log:
1:54 AM Changeset in webkit [275496] by youenn@apple.com
  • 2 edits in trunk/Source/WTF

Enable NSURLSession WebSocket code path by default
https://bugs.webkit.org/show_bug.cgi?id=224102

Reviewed by Alex Christensen.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
1:39 AM Changeset in webkit [275495] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

[css-grid] Initialize auto-repeat data in RenderStyle in applyInitialGridTemplate{Columns|Rows}
https://bugs.webkit.org/show_bug.cgi?id=222852

Reviewed by Antti Koivisto.

We should initialize the auto repeat data (like auto repeat tracks or the insertion point) whenever
applyInitialGridTemplateXXX is called. That method is normally called using different RenderStyle's
but under some circumstances it might be the same. For those cases we wouldn't like to end up with
obsolete data from a previous style resolution.

The same applies also to the applyInheritGridTemplateXXX calls. We're also removing a duplicate call
to setGridAutoRepeat{Row|Column}sInsertionPoint() that is not needed at all.

In order to have a single place with all the style properties affecting columns and rows, all the set
calls were moved to a macro that is used by all the apply{Initial|Inherit}GridTemplate{Columns|Rows}
methods. This would allow us to prevent eventual out-of-sync issues like this one.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateRows):

1:37 AM Changeset in webkit [275494] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Move synthesizedBaselineFromBorderBox to RenderBox
https://bugs.webkit.org/show_bug.cgi?id=224186

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-06
Reviewed by Javier Fernandez.

Move synthesizedBaselineFromBorderBox to RenderBox since there are
various call sites using it.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineBlockBaseline const):

  • rendering/RenderBox.cpp:

(WebCore::synthesizedBaselineFromBorderBox):

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

(WebCore::synthesizedBaselineFromBorderBox): Deleted.

  • rendering/RenderGrid.cpp:

(WebCore::synthesizedBaselineFromBorderBox): Deleted.

12:28 AM Changeset in webkit [275493] by Razvan Caliman
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Layout sidebar grid overlay color swatch tooltip shouldn't include "switch format" hint
https://bugs.webkit.org/show_bug.cgi?id=223418
<rdar://problem/75825793>

Reviewed by BJ Burg.

  • UserInterface/Views/CSSGridSection.js:

(WI.CSSGridSection.prototype.layout):

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch):
(WI.InlineSwatch.prototype.set shiftClickColorEnabled):
(WI.InlineSwatch.prototype._updateSwatch):
(WI.InlineSwatch.prototype._allowChangingColorFormats):

Apr 5, 2021:

9:49 PM Changeset in webkit [275492] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Allow the WebAuthn UI to inform users about BiometryLockout
https://bugs.webkit.org/show_bug.cgi?id=224124
<rdar://74815938>

Reviewed by Brent Fulgham.

  • UIProcess/WebAuthentication/Cocoa/LocalService.mm:

(WebKit::LocalService::isAvailable):
The LocalService is still available within the BiometryLockout period.

9:31 PM Changeset in webkit [275491] by Wenson Hsieh
  • 8 edits in trunk/Source/WebKit

[macOS] Image preview context menu action should be shown conditionally
https://bugs.webkit.org/show_bug.cgi?id=224126
<rdar://problem/76162272>

Reviewed by Devin Rousso.

Add a page client hook to return whether or not the "reveal image" context menu item should be enabled, given
the image URL and decoded image bitmap; we then use this method to conditionally insert a context menu item for
revealing the image in context menu data.

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

(WebKit::PageClient::computeCanRevealImage):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::computeCanRevealImage):

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

(WebKit::PageClientImpl::computeCanRevealImage):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::createMenuActionItem):

Pull logic for mapping a WebContextMenuItemData of type ActionType or CheckableActionType to a platform
NSMenuItem out into a separate helper function. Use this helper in getContextMenuItem, as well as the
completion handler for the call to computeCanRevealImage. Note that this also requires moving the
menuItemIdentifier function up above getContextMenuFromItems.

(WebKit::WebContextMenuProxyMac::getContextMenuFromItems):

Special case the ContextMenuItemTagRevealImage item; instead of adding this item to the context menu right
away, we hide it by default, and only reinsert it if the page client indicates that we require the item (via
computeCanRevealImage).

(WebKit::WebContextMenuProxyMac::getContextMenuItem):

9:25 PM Changeset in webkit [275490] by ysuzuki@apple.com
  • 50 edits in trunk/Source

[JSC] Shrink some of Vectors in JSC
https://bugs.webkit.org/show_bug.cgi?id=224162

Reviewed by Simon Fraser.

Source/JavaScriptCore:

  1. Add XXXStatus::shrinkToFit to shrink underlying dynamic Vectors.
  2. Replace tierUpInLoopHierarchy's Vector with RefCountedArray since it is constructed-once-lookup-only data.
  3. Use MemoryCompactLookupOnlyRobinHoodHashSet for StringTables since this is constructed-once-lookup-only data. We also add MemoryCompactLookupOnlyRobinHoodHashSet support for CachedTypes.
  4. Use resizeToFit for StringSwitchJumpTables and SwitchJumpTables.
  5. JITStubRoutineSet's Vector should be shrunk.
  6. BlockDirectoryBits's Vector's initial size should be small.
  7. Make PolyProtoAccessChain RefCounted, and use RefCountedArray for its Vector<StructureID>. And remove PolyProtoAccessChain::clone. Just having Ref is enough since this is immutable data.
  8. Use RefCountedArray for UnlinkedFunctionExecutable's m_classFieldLocations.
  9. Use RefCountedArray for JSWebAssemblyInstance.
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::AccessCase):
(JSC::AccessCase::create):
(JSC::AccessCase::createTransition):

  • bytecode/AccessCase.h:

(JSC::AccessCase::AccessCase): Deleted.

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::setFrameShuffleData):

  • bytecode/CheckPrivateBrandStatus.cpp:

(JSC::CheckPrivateBrandStatus::shrinkToFit):
(JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::CheckPrivateBrandStatus::merge):

  • bytecode/CheckPrivateBrandStatus.h:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • bytecode/DeleteByStatus.cpp:

(JSC::DeleteByStatus::shrinkToFit):
(JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::DeleteByStatus::merge):

  • bytecode/DeleteByStatus.h:
  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::shrinkToFit):
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::GetByStatus::computeFor):
(JSC::GetByStatus::merge):

  • bytecode/GetByStatus.h:
  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::GetterSetterAccessCase):
(JSC::GetterSetterAccessCase::create):

  • bytecode/GetterSetterAccessCase.h:
  • bytecode/InByIdStatus.cpp:

(JSC::InByIdStatus::shrinkToFit):
(JSC::InByIdStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::InByIdStatus::merge):

  • bytecode/InByIdStatus.h:
  • bytecode/InstanceOfStatus.cpp:

(JSC::InstanceOfStatus::shrinkToFit):
(JSC::InstanceOfStatus::computeForStubInfo):

  • bytecode/InstanceOfStatus.h:
  • bytecode/IntrinsicGetterAccessCase.cpp:

(JSC::IntrinsicGetterAccessCase::IntrinsicGetterAccessCase):
(JSC::IntrinsicGetterAccessCase::create):

  • bytecode/IntrinsicGetterAccessCase.h:
  • bytecode/JumpTable.h:
  • bytecode/PolyProtoAccessChain.cpp:

(JSC::PolyProtoAccessChain::tryCreate):
(JSC::PolyProtoAccessChain::create): Deleted.

  • bytecode/PolyProtoAccessChain.h:

(JSC::PolyProtoAccessChain::clone): Deleted.
(JSC::PolyProtoAccessChain::chain const): Deleted.
(JSC::PolyProtoAccessChain::operator!= const): Deleted.
(JSC::PolyProtoAccessChain::forEach const): Deleted.
(JSC::PolyProtoAccessChain::slotBaseStructure const): Deleted.

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::visitWeak const):
(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:
  • bytecode/ProxyableAccessCase.cpp:

(JSC::ProxyableAccessCase::ProxyableAccessCase):
(JSC::ProxyableAccessCase::create):

  • bytecode/ProxyableAccessCase.h:
  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::shrinkToFit):
(JSC::PutByIdStatus::computeForStubInfo):
(JSC::PutByIdStatus::computeFor):
(JSC::PutByIdStatus::merge):

  • bytecode/PutByIdStatus.h:
  • bytecode/SetPrivateBrandStatus.cpp:

(JSC::SetPrivateBrandStatus::shrinkToFit):
(JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::SetPrivateBrandStatus::merge):

  • bytecode/SetPrivateBrandStatus.h:
  • bytecode/UnlinkedCodeBlock.h:
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):

  • bytecode/UnlinkedFunctionExecutable.h:
  • dfg/DFGJITCode.h:
  • dfg/DFGPlan.h:

(JSC::DFG::Plan::tierUpInLoopHierarchy):

  • dfg/DFGTierUpCheckInjectionPhase.cpp:

(JSC::DFG::TierUpCheckInjectionPhase::run):

  • heap/BlockDirectoryBits.h:
  • heap/JITStubRoutineSet.cpp:

(JSC::JITStubRoutineSet::deleteUnmarkedJettisonedStubRoutines):

  • jit/CallFrameShuffleData.h:

(JSC::CallFrameShuffleData::shrinkToFit):

  • jit/GCAwareJITStubRoutine.h:
  • jit/PolymorphicCallStubRoutine.h:
  • jit/Repatch.cpp:

(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):
(JSC::tryCacheInByID):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseClassFieldInitializerSourceElements):

  • parser/Parser.h:

(JSC::Parser<LexerType>::parse):
(JSC::parse):

  • runtime/CachedTypes.cpp:

(JSC::CachedFunctionExecutableRareData::encode):
(JSC::CachedFunctionExecutableRareData::decode const):

  • runtime/VM.cpp:

(JSC::VM::popAllCheckpointOSRSideStateUntil):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildrenImpl):

  • wasm/js/JSWebAssemblyInstance.h:

Source/WTF:

Add rbegin and rend to make RefCountedArray usable for Vector clients who use these features.

  • wtf/RefCountedArray.h:

(WTF::RefCountedArray::begin):
(WTF::RefCountedArray::end):
(WTF::RefCountedArray::begin const):
(WTF::RefCountedArray::end const):
(WTF::RefCountedArray::rbegin):
(WTF::RefCountedArray::rend):
(WTF::RefCountedArray::rbegin const):
(WTF::RefCountedArray::rend const):

9:20 PM Changeset in webkit [275489] by Russell Epstein
  • 7 edits in branches/safari-612.1.10-branch/Source/ThirdParty/ANGLE

Cherry-pick r275476. rdar://problem/76250256

[METAL ANGLE] Stencil only formats being used as the depth attachment.
https://bugs.webkit.org/show_bug.cgi?id=224183

Patch by John Cunningham <johncunnigham@apple.com> on 2021-04-05
Reviewed by Jon Lee.

  • src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:
  • src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.cpp: (sh::Rewriter::argAlreadyProcessed):
  • src/libANGLE/renderer/metal/ContextMtl.mm: (rx::ContextMtl::setupDraw):
  • src/libANGLE/renderer/metal/mtl_command_buffer.h:
  • src/libANGLE/renderer/metal/mtl_command_buffer.mm: (rx::mtl::RenderCommandEncoder::reset): (rx::mtl::RenderCommandEncoder::setRenderPipelineState): (rx::mtl::RenderCommandEncoder::draw): (rx::mtl::RenderCommandEncoder::drawInstanced): (rx::mtl::RenderCommandEncoder::drawIndexed): (rx::mtl::RenderCommandEncoder::drawIndexedInstanced): (rx::mtl::RenderCommandEncoder::drawIndexedInstancedBaseVertex):
  • src/libANGLE/renderer/metal/mtl_utils.mm: (rx::mtl::InitializeDepthStencilTextureContentsGPU):

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

9:18 PM Changeset in webkit [275488] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Wasted vector capacity in CSSSegmentedFontFace
https://bugs.webkit.org/show_bug.cgi?id=224167

Reviewed by Myles C. Maxfield.

Shrink FontRanges.m_ranges. This saves about 12KB on youtube.com.

  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::fontRanges):

  • platform/graphics/FontRanges.h:

(WebCore::FontRanges::shrinkToFit):

9:03 PM Changeset in webkit [275487] by commit-queue@webkit.org
  • 9 edits in trunk

REGRESSION(r267763) NetworkProcess never terminates
https://bugs.webkit.org/show_bug.cgi?id=224191
<rdar://problem/76124590>

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

Source/WebKit:

Before r267763, when a WebProcessPool was deallocated, the NetworkProcess it owned was terminated.
Since then, once you start using a NetworkProcess, it will be kept until your app closes or it crashes.
To reclaim these resources in a way similar to how we did before, we now terminate the network process in two situations:

  1. If all WebsiteDataStores associated with it are deallocated. This happens if you have never used the default WKWebsiteDataStore.
  2. If all WebProcessPools are deallocated. This can still happen if you do use the default WKWebsiteDataStore, which is never deallocated.

Covered by API tests.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _defaultNetworkProcessExists]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::defaultNetworkProcessExists):
(WebKit::NetworkProcessProxy::removeSession):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

9:02 PM Changeset in webkit [275486] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit

Reduce crash inside getAuditToken
https://bugs.webkit.org/show_bug.cgi?id=224196
<rdar://74536285>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by David Kilzer.

Something is crashing inside the call to getAuditToken, and I believe it is happening during teardown of the network process.
After many days of head scratching and many previous attempts at fixing this problem, it persists.
Since direct strategies at fixing this problem have failed, I now try something different.
Instead of calling getAuditToken at the beginning of every resource load to ask if the parent process has an entitlement,
I now call it only once per process. That should make things faster and less crashy. Otherwise no change in behavior.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::activateSessionCleanup):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):

  • Shared/Cocoa/DefaultWebBrowserChecks.h:
  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::doesParentProcessHaveITPEnabled):
(WebKit::isParentProcessAFullWebBrowser):

  • WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:

(WebKit::WebCore::isWebBrowser):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::isParentProcessAWebBrowser const):

8:19 PM Changeset in webkit [275485] by Chris Dumez
  • 19 edits in trunk/Source

Make sure we no longer show the previous page when running a JS prompt
https://bugs.webkit.org/show_bug.cgi?id=215782
<rdar://problem/67698601>

Reviewed by Darin Adler.

Source/WebCore:

Add linked-on-after check for the behavior change to minimize the risk of
breakage.

  • platform/cocoa/VersionChecks.h:

Source/WebKit:

Make sure we no longer show the previous page when running a JS prompt.
If we have not yet done a layer tree commit since the last load commit, then
we are likely still showing the previous page. If we are asked to run a JS
prompt / alert / confirm at this point, it would be confusing to still show
the previous page. In order to address the issue, we now make the view blank
in such scenario (ideally, we'd have painted the new page but this is
currently not a trivial thing to do).

To make the view blank, the approach chosen is the set the opacity of our
root layer to 0 when the JS prompt is requested (before the first paint) and
set the opacity back to 1 after the first paint.

To minimize the risks of breakage, the behavior change is behind a
linked-on-after check. Also, we only trigger this behavior if the WKWebView
client actually implements the corresponding JS prompt delegate.

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):

  • UIProcess/PageClient.h:

(WebKit::PageClient::makeViewBlank):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::runJavaScriptAlert):

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

(WebKit::PageClientImpl::makeViewBlank):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didCommitLayerTree):

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

(WebKit::PageClientImpl::makeViewBlank):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Add flag to make sure pending async messages are processed *before* the JS prompt sync IPCs.
Without this, it was possible for the UIProcess to receive the JS prompt IPC *before* the
DidCommitLoadForFrame IPC, which would confuse our logic, since we would think this is a JS
prompt for the previous page.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::sendSyncWithDelayedReply):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updateRendering):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::didUpdateRendering):

8:19 PM Changeset in webkit [275484] by commit-queue@webkit.org
  • 29 edits
    2 moves
    1 add in trunk

Resurrect Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=224084

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by Tim Horton.

.:

  • Source/cmake/OptionsMac.cmake:

Source/JavaScriptCore:

  • PlatformMac.cmake:

Source/ThirdParty/ANGLE:

  • PlatformMac.cmake: Added.

Source/ThirdParty/libwebrtc:

  • CMakeLists.txt:

Source/WebCore:

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mac/WebGLBlocklist.mm:
  • platform/text/cocoa/LocalizedDateCache.h: Renamed from Source/WebCore/platform/text/ios/LocalizedDateCache.h.
  • platform/text/cocoa/LocalizedDateCache.mm: Renamed from Source/WebCore/platform/text/ios/LocalizedDateCache.mm.

(WebCore::localizedDateCache):
(WebCore::_localeChanged):
(WebCore::LocalizedDateCache::LocalizedDateCache):
(WebCore::LocalizedDateCache::~LocalizedDateCache):
(WebCore::LocalizedDateCache::localeChanged):
(WebCore::LocalizedDateCache::formatterForDateType):
(WebCore::LocalizedDateCache::maximumWidthForDateType):
(WebCore::LocalizedDateCache::createFormatterForType):
(WebCore::LocalizedDateCache::calculateMaximumWidth):

  • testing/cocoa/WebViewVisualIdentificationOverlay.mm:

Source/WebCore/PAL:

  • pal/PlatformMac.cmake:

Source/WebKit:

  • NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp:

(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveBuffer):

  • PlatformMac.cmake:
  • Shared/Cocoa/SandboxExtensionCocoa.mm:
  • SourcesCocoa.txt:
  • UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h:

Source/WebKitLegacy:

  • PlatformMac.cmake:

Source/WTF:

  • wtf/PlatformMac.cmake:

Tools:

  • TestWebKitAPI/PlatformMac.cmake:
  • WebKitTestRunner/PlatformMac.cmake:
8:08 PM Changeset in webkit [275483] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Wasted vector capacity in SVGPathByteStream
https://bugs.webkit.org/show_bug.cgi?id=224165

Reviewed by Said Abou-Hallawa.

On youtube.com, about 50KB of vector capacity is wasted in SVGPathByteStream,
so shrink them after parsing.

  • svg/SVGPathByteStream.h:

(WebCore::SVGPathByteStream::shrinkToFit):

  • svg/SVGPathParser.cpp:

(WebCore::SVGPathParser::parseToByteStream):

7:46 PM Changeset in webkit [275482] by commit-queue@webkit.org
  • 2 edits in trunk

Document how to use logging in WebKit
https://bugs.webkit.org/show_bug.cgi?id=224152

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-05
Reviewed by Simon Fraser.

Add documentation about how to use logging in WebKit.

  • Introduction.md:
7:46 PM Changeset in webkit [275481] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Wasted vector capacity in CSSVariableData
https://bugs.webkit.org/show_bug.cgi?id=224164

Reviewed by Anders Carlsson.

Shrink m_tokens. This saves 2.7MB on youtube.com.

  • css/CSSVariableData.cpp:

(WebCore::CSSVariableData::CSSVariableData):

7:36 PM Changeset in webkit [275480] by Wenson Hsieh
  • 13 edits in trunk

REGRESSION: ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUsesIdempotentMode() on various tests
https://bugs.webkit.org/show_bug.cgi?id=209450
<rdar://problem/60799255>

Reviewed by Tim Horton.

Source/WebCore:

When running layout tests without idempotent text autosizing after layout tests with idempotent text autosizing
enabled, it's possible to get into a state where the text size adjustment timer (which is used to schedule
idempotent text autosizing style adjustments) is scheduled, but idempotent text autosizing is disabled before
the timer fires. This causes the assertion in resetIdempotentTextAutosizingIfNeeded to fail, leading to a
debug assertion.

To prevent this, we simply add a client method to call out to WebPage to stop its idempotent text autosizing
timer when the idempotent text autosizing WebCore setting changes to disabled.

This fixes assertions on these four tests, which are normally run after fast/text-autosizing:

  • fast/text/control-characters/visible-control-characters-1.html
  • fast/text/firstline/001.html
  • fast/text-indicator/text-indicator-empty-link.html
  • fast/text/basic/001.html
  • page/ChromeClient.h:

(WebCore::ChromeClient::textAutosizingUsesIdempotentModeChanged):

Add the new chrome client hook (see WebKit2 change for more details).

  • page/SettingsBase.cpp:

(WebCore::SettingsBase::textAutosizingUsesIdempotentModeChanged):

Replace the existing settings change handler (setNeedsRecalcStyleInAllFrames) with a custom change handler
(textAutosizingUsesIdempotentModeChanged) that invokes the client hook above, in addition to flagging all
frames for a style recalc.

  • page/SettingsBase.h:

Source/WebKit:

See WebCore for more details.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::textAutosizingUsesIdempotentModeChanged):

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

(WebKit::WebPage::textAutosizingUsesIdempotentModeChanged):

Stop the idempotent text autosizing recomputation timer (m_textAutoSizingAdjustmentTimer) when idempotent text
autosizing is disabled.

  • WebProcess/WebPage/WebPage.h:

Source/WTF:

Replace the call to setNeedsRecalcStyleInAllFrames with textAutosizingUsesIdempotentModeChanged when
changing whether idempotent text autosizing is enabled.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Remove crashing expectations for several tests that previously hit this assertion, due to running immediately
after some layout tests in fast/text-autosizing that enable idempotent text autosizing.

  • platform/ios-wk2/TestExpectations:
7:34 PM Changeset in webkit [275479] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Shrink the Vector<> of keyframe values
https://bugs.webkit.org/show_bug.cgi?id=224154

Reviewed by Sam Weinig.

The Vector<double> returned by CSSParserImpl::consumeKeyframeKeyList()
wasted 152KB of vector capacity on nytimes.com pages, so shrink it.

  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeKeyframeKeyList):

7:33 PM Changeset in webkit [275478] by Alan Bujtas
  • 27 edits in trunk/Source/WebCore

No need to update the list marker number during internal move (e.g. result of anonymous collapsing)
https://bugs.webkit.org/show_bug.cgi?id=224142
<rdar://76101241>

Reviewed by Antti Koivisto.

Let's not update the marker numbers when the reason for re-parenting is "internal move"
which means the renderer's insertion point remains the same (e.g collapsing its anonymous parent).

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::insertedIntoTree):
(WebCore::RenderElement::willBeRemovedFromTree):

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

(WebCore::RenderFragmentContainer::insertedIntoTree):
(WebCore::RenderFragmentContainer::willBeRemovedFromTree):

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

(WebCore::RenderListItem::insertedIntoTree):
(WebCore::RenderListItem::willBeRemovedFromTree):

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

(WebCore::RenderMultiColumnFlow::willBeRemovedFromTree):

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

(WebCore::RenderObject::insertedIntoTree):
(WebCore::RenderObject::willBeRemovedFromTree):

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

(WebCore::RenderQuote::insertedIntoTree):
(WebCore::RenderQuote::willBeRemovedFromTree):

  • rendering/RenderQuote.h:
  • rendering/RenderTableCaption.cpp:

(WebCore::RenderTableCaption::insertedIntoTree):
(WebCore::RenderTableCaption::willBeRemovedFromTree):

  • rendering/RenderTableCaption.h:
  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::willBeRemovedFromTree):

  • rendering/RenderTableCell.h:
  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::insertedIntoTree):
(WebCore::RenderTableCol::willBeRemovedFromTree):

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

(WebCore::RenderTableRow::willBeRemovedFromTree):

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

(WebCore::RenderTableSection::willBeRemovedFromTree):

  • rendering/RenderTableSection.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::insertedIntoTree):
(WebCore::RenderSVGRoot::willBeRemovedFromTree):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):
(WebCore::RenderTreeBuilder::move):
(WebCore::RenderTreeBuilder::detachFromRenderElement):

  • rendering/updating/RenderTreeBuilder.h:
7:19 PM Changeset in webkit [275477] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebSocketChannel buffers use memory after going idle (64K wasted on facebook.com
https://bugs.webkit.org/show_bug.cgi?id=224193

Patch by Alex Christensen <achristensen@webkit.org> on 2021-04-05
Reviewed by Simon Fraser.

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::processFrame):

7:16 PM Changeset in webkit [275476] by commit-queue@webkit.org
  • 7 edits in trunk/Source/ThirdParty/ANGLE

[METAL ANGLE] Stencil only formats being used as the depth attachment.
https://bugs.webkit.org/show_bug.cgi?id=224183

Patch by John Cunningham <johncunnigham@apple.com> on 2021-04-05
Reviewed by Jon Lee.

  • src/compiler/translator/TranslatorMetalDirect/ProgramPrelude.cpp:
  • src/compiler/translator/TranslatorMetalDirect/RewriteOutArgs.cpp:

(sh::Rewriter::argAlreadyProcessed):

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

(rx::ContextMtl::setupDraw):

  • src/libANGLE/renderer/metal/mtl_command_buffer.h:
  • src/libANGLE/renderer/metal/mtl_command_buffer.mm:

(rx::mtl::RenderCommandEncoder::reset):
(rx::mtl::RenderCommandEncoder::setRenderPipelineState):
(rx::mtl::RenderCommandEncoder::draw):
(rx::mtl::RenderCommandEncoder::drawInstanced):
(rx::mtl::RenderCommandEncoder::drawIndexed):
(rx::mtl::RenderCommandEncoder::drawIndexedInstanced):
(rx::mtl::RenderCommandEncoder::drawIndexedInstancedBaseVertex):

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

(rx::mtl::InitializeDepthStencilTextureContentsGPU):

7:16 PM Changeset in webkit [275475] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Make sure the Frame always gets destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=224213
<rdar://75131946>

Reviewed by Alex Christensen.

Make sure the Frame always gets destroyed on the main thread.

Since http://trac.webkit.org/changeset/181791, Frame is ThreadSafeRefCounted and captured
on other threads. We should make sure the Frame is always destroyed on the main thread
though, since it is a main thread object and we hold WeakPtrs to it in many places.

  • page/AbstractFrame.h:
7:12 PM Changeset in webkit [275474] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Protect frame in WebPage::runJavaScriptInFrameInScriptWorld()
https://bugs.webkit.org/show_bug.cgi?id=224210

Reviewed by Alex Christensen.

Between the time we were getting the raw pointer to the frame, and the time were were passing it to
WebPage::runJavaScript(), we were potentially calling WebFrameLoaderClient::dispatchGlobalObjectAvailable().
It is possible in theory for those synchronous injected bundle calls to mess with the frame tree and cause
our frame to go bad. As a result, it is best to protect the frame as soon as we get it.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):

7:08 PM Changeset in webkit [275473] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Add a missing bounds check when mapping display list items from a shared display list handle
https://bugs.webkit.org/show_bug.cgi?id=224156
<rdar://problem/71805209>

Reviewed by Tim Horton.

Add a check to ensure that we don't end up with out-of-bounds memory access when attempting to map an offset
and capacity in shared display list data into a WebCore::DisplayList. It's possible for this to happen if
either the sum of offset and capacity (i.e. the extent of the mapped segment) overflows size_t, or the
extent exceeds the total length of the buffer in shared memory.

  • GPUProcess/graphics/DisplayListReaderHandle.cpp:

(WebKit::DisplayListReaderHandle::displayListForReading const):

Note that returning nullptr here subsequently causes us to terminate the web process due to the message check
for displayList inside nextDestinationImageBufferAfterApplyingDisplayLists.

6:52 PM Changeset in webkit [275472] by keith_miller@apple.com
  • 3 edits
    1 add in trunk

DFG arity fixup nodes should exit to the caller's call opcode
https://bugs.webkit.org/show_bug.cgi?id=223278

Reviewed by Saam Barati.

JSTests:

  • stress/dfg-arity-fixup-uses-callers-exit-origin.js: Added.

(main.v22):
(main.v30):
(main.try.v40):
(main.try.v47):
(main.try.v56):
(main.):
(main):

Source/JavaScriptCore:

Right now when we do arity fixup in the DFG we model it in the
same way that it executes, which means all the nodes are part of
the callee. Unfortunately, this causes PhantomInsertionPhase to
think those nodes could be replacing previously defined
VirtualRegisters as they are part of the callee's header (always
alive). When PhantomInsertionPhase then inserts a Phantom it will
put that node in the caller's frame as that's the first ExitOK
node. The caller however may have no knowledge of that
VirtualRegister though. For example:

--> foo: loc10 is a local in foo.

...
1: MovHint(loc10)
2: SetLocal(loc10)

<-- foo loc10 ten is now out of scope for the InlineCallFrame of the caller.
...
Phantom will be inserted here refering to loc10, which doesn't make sense.
--> bar loc10 is an argument to bar and needs arity fixup.

... All of these nodes are ExitInvalid
3: MovHint(loc10, ExitInvalid)
4: SetLocal(loc10, ExitInvalid)
...

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::currentNodeOrigin):
(JSC::DFG::ByteCodeParser::inlineCall):

6:45 PM Changeset in webkit [275471] by Simon Fraser
  • 16 edits in trunk/Source/WebCore

Wasted vector capacity in FEColorMatrix and filters
https://bugs.webkit.org/show_bug.cgi?id=224169

Reviewed by Said Abou-Hallawa.

When building filter effects, avoid the inputEffects() having a larger
capacity than needed.

Shrink the Vector<float> which is input to FEColorMatrix.

This saves around 40KB on facebook.com feed pages.

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::FEColorMatrix):
(WebCore::FEColorMatrix::create):

  • platform/graphics/filters/FEColorMatrix.h:
  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::build):
(WebCore::endMatrixRow): Deleted.
(WebCore::lastMatrixRow): Deleted.

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives const):

  • svg/SVGFEColorMatrixElement.cpp:

(WebCore::SVGFEColorMatrixElement::build const):

  • svg/SVGFEComponentTransferElement.cpp:

(WebCore::SVGFEComponentTransferElement::build const):

  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::build const):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::build const):

  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::build const):

  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::build const):

  • svg/SVGFEMergeElement.cpp:

(WebCore::SVGFEMergeElement::build const):

  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::build const):

  • svg/SVGFEOffsetElement.cpp:

(WebCore::SVGFEOffsetElement::build const):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::build const):

  • svg/SVGFETileElement.cpp:

(WebCore::SVGFETileElement::build const):

6:38 PM Changeset in webkit [275470] by Chris Gambrell
  • 3 edits in trunk/LayoutTests

REGRESSION (r275332?): [ EWS macOS iOS wk2 ] http/tests/appcache/fail-on-update.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224120
<rdar://problem/76157112>

Reviewed by Jonathan Bedard.

  • http/tests/appcache/fail-on-update-2.html:
  • http/tests/appcache/fail-on-update.html:
6:36 PM Changeset in webkit [275469] by Ruben Turcios
  • 2 edits in branches/safari-612.1.10-branch/Source/WebKit

Revert r275451. rdar://problem/76244988

This reverts commit d3893bd38276290b6e85a644f1496ca69c727e65.

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

[ macOS ] media/webaudio-background-playback.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=221935
<rdar://problem/74370844>

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

The test was flaky because it was checking if the destination had processed new buffers
immediately after an asynchronous state change. The proposed solution is to monitor the
statechange event and do the actual test after another additional 100 milli-seconds have
passed.

  • media/webaudio-background-playback.html:
6:13 PM Changeset in webkit [275467] by Ruben Turcios
  • 2 edits in branches/safari-612.1.10-branch/Source/WebKit

Cherry-pick r275451. rdar://problem/76244988

[GPUP][iPad] Audio only when airplaying a youtube video
https://bugs.webkit.org/show_bug.cgi?id=224132

Reviewed by Eric Carlson.

While MediaPlayerPrivateAVFoundationObjC only implements setWirelessPlaybackTarget()
on macOS, MediaPlayerPrivateMediaSourceAVFObjC implements it on both macOS and iOS.
Therefore, RemoteMediaPlayerProxy has to forward the calls of setWirelessPlaybackTarget()
from WebContent processes to "MediaPlayerPrivate*" on both macOS and iOS.

Manually tested.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::setWirelessPlaybackTarget):

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

6:06 PM Changeset in webkit [275466] by sbarati@apple.com
  • 4 edits in trunk

Enable QuotaExceededError on non GSTREAMER platforms
https://bugs.webkit.org/show_bug.cgi?id=224136
<rdar://71219720>

Reviewed by Jer Noble.

Source/WebCore:

This fixes a memory leak in Disney+ where we end up queuing up the entire
video because we never communicate to the page that they should stop queuing
more data.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::appendBufferInternal):

LayoutTests:

  • platform/mac/media/media-source/media-source-append-before-last-range-no-quota-exceeded-expected.txt:
6:05 PM Changeset in webkit [275465] by Chris Dumez
  • 28 edits
    1 add in trunk/Source

Make sure service workers use a ScriptSourceCode backed by file-mapped memory when possible
https://bugs.webkit.org/show_bug.cgi?id=224088

Reviewed by Yusuke Suzuki.

Source/WebCore:

To run a worker, we were constructing a ScriptSourceCode from the source String and calling
JSC::evaluate. ScriptSourceCode would construct a JSC::StringSourceProvider, which would
keep the source String alive for the lifetime of the provider. This is problematic since
those worker scripts may be big and keeping heap-allocated version of them in memory is
expensive.

To address the issue, this patch introduces a new JSC::SourceProvider subclass named
ScriptBufferSourceProvider, which uses a ScriptBuffer internally. ScriptBuffer has the
benefit of being able to hold file-mapped data. We only convert the ScriptBuffer to
a String whenever necessary (When the script contains non-ascii characters and JSC
requests a StringView to the script). If we do end up converting the ScriptBuffer to
a String, this String will get cleared on memory pressure. This is similar to what
CachedScriptSourceProvider / CachedScript do on the main thread.

In the warm case, where the service worker script is coming from disk, we create
the ScriptBufferSourceProvider right away from a file-mapped ScriptBuffer, thus
greatly reducing dirty memory use. In the cold case, we initially construct the
ScriptBufferSourceProvider using a ScriptBuffer that is not file-mapped. However,
once the script is saved to disk (via SWScriptStorage), we replace the
ScriptBufferSourceProvider's ScriptBuffer with the new file-mapped version in
order to reduce dirty memory use in this case too.

  • WebCore.xcodeproj/project.pbxproj:

Add ScriptBufferSourceProvider.h to the project.

  • bindings/js/ScriptBufferSourceProvider.h: Added.
  • Add new ScriptBufferSourceProvider, which is a JSC::SourceProvider subclass that

uses a ScriptBuffer as backing instead of a String. This allows us to use file-mapped
memory whenever possible, thus reducing dirty memory use. This provider provides
similar functionality to CachedScriptSourceProvider / CachedScript but works with
a ScriptBuffer and can be used off the main thread.

  • We only transform the SharedBuffer into a String when strictly necessary, meaning that the ScriptBuffer contains non-ascii characters and JSC is asking for a StringView to the script.
  • The class supports clearing the String copy of the script (done on memory pressure) and replacing the ScriptBuffer (with a new file-mapped version).
  • bindings/js/ScriptSourceCode.h:

(WebCore::ScriptSourceCode::ScriptSourceCode):
(WebCore::ScriptSourceCode::m_code):
(WebCore::ScriptSourceCode::provider):
Add new constructors taking a ScriptBuffer instead of a String for the source code.
We then use the new ScriptBufferSourceProvider internally instead of the
StringSourceProvider.

  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):

  • workers/DedicatedWorkerThread.h:

Use ScriptBuffer instead of String.

  • workers/ScriptBuffer.cpp:

(WebCore::ScriptBuffer::empty):
(WebCore::ScriptBuffer::append):
(WebCore::operator!=):

  • workers/ScriptBuffer.h:

(WebCore::ScriptBuffer::isEmpty const):
Add some functionality to SCriptBuffer to make it more convenient to use.

  • workers/Worker.cpp:

(WebCore::Worker::notifyFinished):
Convert ScriptBuffer to a String since this is what WebInspector expects.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts):

  • When importing a new script, we now construct a ScriptSourceCode from a

ScriptBuffer instead of a String.

  • We also store a weak pointer to the ScriptBufferSourceProvider used by the ScriptSourceCode on the WorkerGlobalScope. This is so that we can ask those ScriptBufferSourceProvider objects to clear their cached String representation of the script source on memory pressure. It is also needed so we can replace the ScriptBufferSourceProvider's ScriptBuffer with a file-mapped version when one becomes available.

(WebCore::WorkerGlobalScope::releaseMemory):
In addition to deleting JS code and doing garbage collection, we now also ask the
ScriptBufferSourceProvider objects to clear their cached String representation of the script
source.

(WebCore::WorkerGlobalScope::deleteJSCodeAndGC):
Moved the logic to delete JS code and doing GC from releaseMemory() to a new function, now
that releaseMemory() needs to do more things.

(WebCore::WorkerGlobalScope::setMainScriptSourceProvider):
(WebCore::WorkerGlobalScope::addImportedScriptSourceProvider):
Functions used to store the CachedScriptSourceProvider objects for the scripts used by the
worker on the WorkerGlobalScope. We keep weak pointers to those.

(WebCore::WorkerGlobalScope::clearDecodedScriptData):
Function used to ask the ScriptBufferSourceProvider objects to clear their cached String
representation of the script source on memory pressure.

(WebCore::WorkerGlobalScope::updateSourceProviderBuffers):
Function used to ask the ScriptBufferSourceProvider objects to replace their ScriptBuffers
with file-backed versions.

  • workers/WorkerGlobalScope.h:
  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:

Use ScriptBuffer instead of String.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::WorkerScriptLoader):
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::didReceiveData):

  • workers/WorkerScriptLoader.h:

(WebCore::WorkerScriptLoader::script):
Use ScriptBuffer instead of String to hold the script source. We eventually need a ScriptBuffer
since this is what the Worker now needs to launch. Also, in the service worker case, we may
get a ScriptBuffer right away from the scriptResourceMap, without going to the network at all.

  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
Use ScriptBuffer instead of String.

(WebCore::WorkerThread::evaluateScriptIfNecessary):

  • When evaluating the main worker script, we now construct a ScriptSourceCode from a

ScriptBuffer instead of a String.

  • We also store a weak pointer to the ScriptBufferSourceProvider used by the ScriptSourceCode on the WorkerGlobalScope. This is so that we can ask those ScriptBufferSourceProvider objects to clear their cached String representation of the script source on memory pressure. It is also needed so we can replace the ScriptBufferSourceProvider's ScriptBuffer with a file-mapped version when one becomes available.
  • workers/WorkerThread.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerFetchResult.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::didSaveScriptsToDisk):

  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::updateWorker):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):
Use ScriptBuffer instead of String.

Source/WebKit:

  • NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:

(WebKit::ServiceWorkerSoftUpdateLoader::didFinishLoading):

5:50 PM Changeset in webkit [275464] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Update dav1d and libavif
https://bugs.webkit.org/show_bug.cgi?id=224177

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-05
Reviewed by Adrian Perez de Castro.

  • elements/freedesktop-sdk.bst: Update dav1d to version 0.8.2.
  • elements/sdk/libavif.bst: Update to version 0.9.0.
  • patches/fdo-0001-dav1d-Bump-to-version-0.8.2.patch: Added.
5:50 PM Changeset in webkit [275463] by Fujii Hironori
  • 15 edits
    2 adds in trunk/Source

[Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process
https://bugs.webkit.org/show_bug.cgi?id=224014

Reviewed by Don Olmstead.

Source/WebCore:

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::sharedDisplay): GPU process calls this
function in IPC thread. Removed the assertion checking the main
thread.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/texmap/GraphicsContextGLTextureMapper.cpp:

(WebCore::GraphicsContextGLOpenGL::createForGPUProcess): Added.

Source/WebKit:

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
  • GPUProcess/graphics/RemoteGraphicsContextGLWin.cpp: Added.

(WebKit::RemoteGraphicsContextGL::create):
(WebKit::RemoteGraphicsContextGLWin::RemoteGraphicsContextGLWin):
(WebKit::RemoteGraphicsContextGLWin::platformWorkQueueInitialize):
(WebKit::RemoteGraphicsContextGL::prepareForDisplay):

  • Platform/IPC/IPCSemaphore.cpp:
  • Platform/IPC/IPCSemaphore.h:
  • Platform/IPC/StreamClientConnection.cpp:

(IPC::StreamClientConnection::setWakeUpSemaphore):
(IPC::StreamClientConnection::wakeUpServer):

  • Platform/IPC/StreamClientConnection.h:

(IPC::StreamClientConnection::tryAcquire):
(IPC::StreamClientConnection::tryAcquireAll):

  • Platform/IPC/StreamConnectionWorkQueue.cpp:

(IPC::StreamConnectionWorkQueue::StreamConnectionWorkQueue):
(IPC::StreamConnectionWorkQueue::removeStreamConnection):
(IPC::StreamConnectionWorkQueue::stop):
(IPC::StreamConnectionWorkQueue::wakeUp):
(IPC::StreamConnectionWorkQueue::wakeUpProcessingThread):

  • Platform/IPC/StreamConnectionWorkQueue.h:
  • Platform/IPC/StreamServerConnection.cpp:

(IPC::StreamServerConnectionBase::release):
(IPC::StreamServerConnectionBase::releaseAll):

  • Platform/IPC/win/IPCSemaphoreWin.cpp: Added.

(IPC::Semaphore::Semaphore):
(IPC::Semaphore::~Semaphore):
(IPC::Semaphore::operator=):
(IPC::Semaphore::signal):
(IPC::Semaphore::wait):
(IPC::Semaphore::waitFor):
(IPC::Semaphore::encode const):
(IPC::Semaphore::decode):
(IPC::Semaphore::destroy):

  • PlatformWin.cmake:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGraphicsContextGL const):

5:42 PM Changeset in webkit [275462] by Cameron McCormack
  • 11 edits
    2 adds in trunk

Fix max-content on tables with percentage cell widths.
https://bugs.webkit.org/show_bug.cgi?id=221165

Reviewed by Zalan Bujtas.

Source/WebCore:

When width: max-content is specified on an element, any percentages
on content inside the element that are relative to the containing block
width should be treated as auto. Percentages on table cells and columns
in tables using auto table layout are not quite relative to the
containing block width, but do have a similar influence. So when
computing the intrinsic width of a table for the purpose of determining
the max-content value to use, ignore any percentages specified on table
cells and columns.

This change makes us match Firefox and Chrome on the test case.

Test: fast/table/percent-width-max-content.html

  • rendering/AutoTableLayout.cpp:

(WebCore::AutoTableLayout::computeIntrinsicLogicalWidths):

  • rendering/AutoTableLayout.h:
  • rendering/FixedTableLayout.cpp:

(WebCore::FixedTableLayout::computeIntrinsicLogicalWidths):

  • rendering/FixedTableLayout.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeIntrinsicLogicalWidthUsing const): Call
into the new computeIntrinsicKeywordLogicalWidths function so that
tables can return different values for layout and intrinsic keyword
calculation.

  • rendering/RenderBox.h:

(WebCore::RenderBox::computeIntrinsicKeywordLogicalWidths const):
Added to support computing intrinsic keyword lengths that differ from
those returned by computeIntrinsicLogicalWidths.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::computeIntrinsicLogicalWidths const): Factored
this out to allow specifying an argument for whether the intrinsics
being computed are for layout or for instrinsic keyword calculation,
like max-content.
(WebCore::RenderTable::computeIntrinsicKeywordLogicalWidths const):
Added. This is the only override of the default implementation in
RenderBox.

  • rendering/RenderTable.h:
  • rendering/TableLayout.h:

LayoutTests:

Fix max-content on tables with percentage cell widths.

  • fast/table/percent-width-max-content-expected.html: Added.
  • fast/table/percent-width-max-content.html: Added.
5:39 PM Changeset in webkit [275461] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Backport GStreamer fakeaudiosink
https://bugs.webkit.org/show_bug.cgi?id=224053

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-05
Reviewed by Adrian Perez de Castro.

This audio sink will be used for the media layout and API tests.

  • elements/sdk/gst-plugins-bad.bst:
  • patches/gst-plugins-bad-0001-debugutils-Add-fakeaudiosink-element.patch: Added.
5:27 PM Changeset in webkit [275460] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7

5:22 PM Changeset in webkit [275459] by mmaxfield@apple.com
  • 22 edits
    1 copy
    1 add in trunk

[GPU Process] Simplify DisplayList::Iterator part 1: Require encoding/decoding delegates for non-inline display list items
https://bugs.webkit.org/show_bug.cgi?id=223849

Reviewed by Wenson Hsieh.

Source/WebCore:

Requiring delegates for non-inline display list items has these advantages:

  • DisplayList::Iterator::updateCurrentItem() only has 2 codepaths instead of 3.
  • ItemBuffer::m_itemsToDestroyInAllocatedBuffers can be deleted entirely.
  • The conditional inside ItemBuffer::append() can be simplified from

!T::isInlineItem && m_writingClient to just !T::isInlineItem, which I think makes the
function significantly more readable.

There are a few places where we were using non-inline display list items without a delegate:
This patch adds two new "null" delegates, and hooks them up to a subclass of DisplayList,
called InMemoryDisplayList. Clients who want to use in-memory display lists (like the
DrawGlyphs cache) can just use this class, and retain their calling pattern they were using
before. Also, this patch adds InMemoryDisplayList without adding any virtual functions to
DisplayList.

No new tests because there is no behavior change.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLCanvasElement.cpp:
  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::displayListForTextRun const):

  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::displayListForTextRun):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::platformCALayerPaintContents):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem):

  • platform/graphics/displaylists/DisplayListDrawingContext.h:

(WebCore::DisplayList::DrawingContext::replayedDisplayList const):

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

(WebCore::DisplayList::ImageBuffer::ImageBuffer):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::copyInto):
(WebCore::DisplayList::ItemBuffer::ItemBuffer):
(WebCore::DisplayList::ItemBuffer::operator=):
(WebCore::DisplayList::ItemBuffer::clear):
(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::m_allocatedBuffers): Deleted.

  • platform/graphics/displaylists/DisplayListItemBuffer.h:

(WebCore::DisplayList::ItemHandle::get const):
(WebCore::DisplayList::ItemBufferWritingClient::~ItemBufferWritingClient):
(WebCore::DisplayList::ItemBufferWritingClient::createItemBuffer):
(WebCore::DisplayList::ItemBufferWritingClient::requiredSizeForItem const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemOutOfLine const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemInline const):
(WebCore::DisplayList::ItemBufferWritingClient::didAppendData):
(WebCore::DisplayList::ItemBuffer::append):

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h:
  • platform/graphics/displaylists/InMemoryDisplayList.cpp: Added.

(WebCore::DisplayList::InMemoryDisplayList::WritingClient::requiredSizeForItem const):
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::encodeItemInline const):
(WebCore::DisplayList::InMemoryDisplayList::ReadingClient::decodeItem):
(WebCore::DisplayList::InMemoryDisplayList::InMemoryDisplayList):
(WebCore::DisplayList::InMemoryDisplayList::~InMemoryDisplayList):

  • platform/graphics/displaylists/InMemoryDisplayList.h: Copied from Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h.
  • rendering/GlyphDisplayListCache.h:

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
5:11 PM Changeset in webkit [275458] by jer.noble@apple.com
  • 9 edits in trunk/Source

[MediaSession] Small refactoring of MediaSession implementation classes
https://bugs.webkit.org/show_bug.cgi?id=224141

Reviewed by Eric Carlson.

A smorgasboard of small refactoring changes:

Source/WebCore:

  • Don't call action handlers by default in response to coordinator requests.
  • Since we don't call the action handlers, we don't need the internal methods.
  • Simplify the call site by defining the action details inline.
  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::seekSessionToTime):
(WebCore::MediaSessionCoordinator::playSession):
(WebCore::MediaSessionCoordinator::pauseSession):
(WebCore::MediaSessionCoordinator::setSessionTrack):
(WebCore::MediaSessionCoordinator::internalSeekTo): Deleted.
(WebCore::MediaSessionCoordinator::internalPlay): Deleted.
(WebCore::MediaSessionCoordinator::internalPause): Deleted.
(WebCore::MediaSessionCoordinator::internalSetTrack): Deleted.

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasession/MediaSessionCoordinatorPrivate.h:

Source/WebKit:

  • MediaSessionCoordinatorProxyPrivate should use an Optional<ExceptionData> rather than an actual ExceptionData, to handle the case where no exception was encoutered.
  • RemoteMediaSessionCoordinatorProxy::create() should just return a Ref, not a RefPtr.
  • Logging inside a completion handler requires access to this.
  • Add RemoteMediaSessionCoordinatorProxy.cpp to the build.
  • UIProcess/Media/MediaSessionCoordinatorProxyPrivate.h:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::create):
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::join):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSeekTo):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePlay):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePause):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSetTrack):
(WebKit::RemoteMediaSessionCoordinatorProxy::pauseSession):
(WebKit::RemoteMediaSessionCoordinatorProxy::setSessionTrack):
(WebKit::RemoteMediaSessionCoordinatorProxy::logChannel const):
(WebKit::RemoteMediaSessionCoordinatorProxy::::coordinateSetTrack): Deleted.

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:

(WebKit::RemoteMediaSessionCoordinatorProxy::logger const):
(WebKit::RemoteMediaSessionCoordinatorProxy::logIdentifier const):
(WebKit::RemoteMediaSessionCoordinatorProxy::logClassName const):

5:09 PM Changeset in webkit [275457] by ysuzuki@apple.com
  • 15 edits in trunk/Source

Define AtomString(ASCIILiteral) and use ASCIILiteral more to avoid memory allocation
https://bugs.webkit.org/show_bug.cgi?id=224125

Reviewed by Saam Barati.

Source/WebCore:

We apply "..."_s more. This avoids allocating of string storage when creating StringImpl.

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):

  • dom/ScriptElement.cpp:

(WebCore::isLegacySupportedJavaScriptLanguage):

  • editing/EditorCommand.cpp:

(WebCore::createCommandMap):

  • html/Autofill.cpp:

(WebCore::fieldNameMap):

  • platform/LegacySchemeRegistry.cpp:

(WebCore::builtinLocalURLSchemes):
(WebCore::builtinSecureSchemes):
(WebCore::builtinSchemesWithUniqueOrigins):
(WebCore::builtinEmptyDocumentSchemes):
(WebCore::builtinCanDisplayOnlyIfCanRequestSchemes):
(WebCore::builtinCORSEnabledSchemes):

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::systemPreviewMIMETypes):

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::hasValidAverageCharWidth const):

  • platform/graphics/HEVCUtilities.cpp:

(WebCore::codecStringForDoViCodecType):
(WebCore::profileIDForAlphabeticDoViProfile):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::staticMIMETypeList):

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

(WebCore::AVAssetMIMETypeCache::staticContainerTypeList):

  • platform/graphics/cg/ImageSourceCGWin.cpp:

(WebCore::preferredExtensionForImageType):

  • svg/SVGTests.cpp:

(WebCore::supportedSVGFeatures):

Source/WTF:

Add AtomString(ASCIILiteral). ASCIILiteral ensures that storage is constant non-heap string by its type.
So we can just use it as a literal (not allocating a string storage).

  • wtf/text/AtomString.h:
5:04 PM Changeset in webkit [275456] by Devin Rousso
  • 3 edits in trunk/LayoutTests

REGRESSION (r275358): [ iOS wk2 ] media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html is a constant text failure
https://bugs.webkit.org/show_bug.cgi?id=224130
<rdar://problem/76164289>

Unreviewed test fix.

  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html:
  • media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls-expected.txt:

Set a maximumRightContainerButtonCountOverride so that the collapsing behavior of the
overflow button doesn't affect the test (and force a layout to ensure it's picked up).

5:00 PM Changeset in webkit [275455] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Calling AudioComponentFetchServerRegistrations on main thread causes launch time regression
https://bugs.webkit.org/show_bug.cgi?id=224137
<rdar://76137483>

Reviewed by Eric Carlson.

Run the command to fetch AudioComponent registration data on a generic background queue.

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::sendAudioComponentRegistrations):

4:56 PM Changeset in webkit [275454] by chris.reid@sony.com
  • 9 edits in trunk

[WinCairo] Enable Service Worker tests
https://bugs.webkit.org/show_bug.cgi?id=223591

Reviewed by Fujii Hironori.

Source/WebKit:

WPT HTTP tests were failing because SSL Connect errors weren't triggering authentication challenges.
Also Add a suggestedFilename implementation.

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:
  • NetworkProcess/curl/NetworkDataTaskCurl.h:

Tools:

Ignore cert errors with downloads and fix an issue with windows paths.

  • WebKitTestRunner/TestController.cpp:
  • WebKitTestRunner/TestController.h:

LayoutTests:

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo/TestExpectations:
4:55 PM Changeset in webkit [275453] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Garden API test failure and flakiness after r275267

Unreviewed test gardening.

  • TestWebKitAPI/glib/TestExpectations.json:
4:45 PM Changeset in webkit [275452] by Ruben Turcios
  • 1 copy in branches/safari-612.1.10-branch

New branch.

4:43 PM Changeset in webkit [275451] by Peng Liu
  • 2 edits in trunk/Source/WebKit

[GPUP][iPad] Audio only when airplaying a youtube video
https://bugs.webkit.org/show_bug.cgi?id=224132

Reviewed by Eric Carlson.

While MediaPlayerPrivateAVFoundationObjC only implements setWirelessPlaybackTarget()
on macOS, MediaPlayerPrivateMediaSourceAVFObjC implements it on both macOS and iOS.
Therefore, RemoteMediaPlayerProxy has to forward the calls of setWirelessPlaybackTarget()
from WebContent processes to "MediaPlayerPrivate*" on both macOS and iOS.

Manually tested.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::setWirelessPlaybackTarget):

9:48 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
9:47 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)

Apr 2, 2021:

4:27 PM Changeset in webkit [275450] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

PendingImageBitmap gets created on a stopped script execution context.
https://bugs.webkit.org/show_bug.cgi?id=223971

Reviewed by Youenn Fablet.

Don't create a PendingImageBitmap in PendingImageBitmap::fetch
if the associated script execution context had already been stoppped.

The new behavior matches of Chrome although it's technically incorrect.

Correcting it to match the spec & Firefox will refactor a larger fix around
how script execution context is used by the threaded loader.

  • html/ImageBitmap.cpp:

(WebCore::PendingImageBitmap::fetch):

3:57 PM Changeset in webkit [275449] by Simon Fraser
  • 2 edits in trunk/Source/WTF

Enable PreferPageRenderingUpdatesNear60FPSEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=224133

Reviewed by Tim Horton.

Turn the PreferPageRenderingUpdatesNear60FPSEnabled internal setting on by default. This
means that requestAnimationFrame on 144Hz displays will fire at 72Hz. 60Hz displays are
unaffected.

Firing at "close to 60fps" was determined to be necessary for web compatibility and power.

  • Scripts/Preferences/WebPreferencesInternal.yaml:
3:44 PM Changeset in webkit [275448] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

[GPUP] Power regression: audio hardware is configured for 128 frame preferred buffer size during VideoAudio playback
https://bugs.webkit.org/show_bug.cgi?id=224122

Reviewed by Eric Carlson.

The RemoteAudioHardwareListenerProxy tracks when audio hardware changes, and updates the WebContent process with
the supported properies of the new default audio device, including supported buffer sizes. However, it only does
so when the current audio devices changes, and not initially. Instead, ensure the WebContent process is immediately
update with the correct values for supported buffer sizes. This allows VideoAudio playback to enter a lower-power
playback mode by specifying a large preferred buffer size (4096).

  • GPUProcess/media/RemoteAudioHardwareListenerProxy.cpp:

(WebKit::RemoteAudioHardwareListenerProxy::RemoteAudioHardwareListenerProxy):

3:39 PM Changeset in webkit [275447] by beidson@apple.com
  • 17 edits in trunk

Add WKURLSchemeTask redirect API.
https://bugs.webkit.org/show_bug.cgi?id=224119

Reviewed by Alex Christensen.

Source/WebKit:

Covered by new API tests.

Instead of the existing "did do a redirect" SPI without completion handler, this one has
a completion handler with a new request for the task, proposed by WebKit.

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

(raiseExceptionIfNecessary):
(-[WKURLSchemeTaskImpl willPerformRedirection:newRequest:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setURLSchemeHandlerForScheme):

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::willPerformRedirection):
(WebKit::WebURLSchemeTask::didPerformRedirection):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):

  • UIProcess/WebURLSchemeTask.h:

(WebKit::WebURLSchemeTask::waitingForRedirectCompletionHandlerCallback const):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::urlSchemeTaskWillPerformRedirection):
(WebKit::WebPage::urlSchemeTaskDidPerformRedirection):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::taskDidPerformRedirection):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:

(WebKit::WebURLSchemeTaskProxy::didPerformRedirection):

  • WebProcess/WebPage/WebURLSchemeTaskProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[TaskSchemeHandler webView:startURLSchemeTask:]):
(TEST):
(-[HTTPRedirectTest webView:startURLSchemeTask:]):
(-[HTTPRedirectTest webView:stopURLSchemeTask:]):

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

[ MacOS ] media/modern-media-controls/macos-inline-media-controls/macos-inline-media-dropping-controls.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=224123

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:24 PM Changeset in webkit [275445] by Alexey Shvayka
  • 12 edits in trunk

Remove [Replaceable] extended attribute from document.all
https://bugs.webkit.org/show_bug.cgi?id=223883

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/idlharness.https-expected.txt:

Source/WebCore:

[Replaceable] semantics was introduced around 2003 to work around a web-compat issue.
Since then, document.all was revised multiple times and standardized as IsHTMLDDA?
object without a setter, which was proven to be compatible with the web.

This patch aligns WebKit with the spec [1], Blink, and Gecko.

iOS apps are unlikely to accidentally depend on subtleties in document.all behavior since
they were authored long after it became obsolete.

Old versions of libraries, originally designed for the web, are also unlikely to rely on
previous behavior, because document.all was never replaceable in some popular browsers.

[1] https://html.spec.whatwg.org/multipage/obsolete.html#Document-partial

Tests: fast/dom/undetectable-document-all.html

imported/w3c/web-platform-tests/html/dom/idlharness.https.html

  • dom/Document+HTMLObsolete.idl:

LayoutTests:

  • fast/dom/undetectable-document-all-expected.txt:
  • fast/dom/undetectable-document-all.html:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • 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:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
3:20 PM Changeset in webkit [275444] by Jonathan Bedard
  • 3 edits in trunk/Tools

[check-webkit-style] Check python files in LayoutTests
https://bugs.webkit.org/show_bug.cgi?id=224079
<rdar://problem/76122813>

Reviewed by Dewei Zhu.

  • Scripts/webkitpy/style/checker.py:

(CheckerDispatcher.should_skip_without_warning): Never skip style checks on .py files.

  • Scripts/webkitpy/style/checker_unittest.py:

(CheckerDispatcherSkipTest.test_should_skip_without_warningfalse):

2:53 PM Changeset in webkit [275443] by Chris Dumez
  • 35 edits
    2 adds in trunk/Source

Introduce ScriptBuffer class to wrap SharedBuffer containing a script
https://bugs.webkit.org/show_bug.cgi?id=224092

Reviewed by Yusuke Suzuki and Geoff Garen.

Introduce ScriptBuffer class to wrap SharedBuffer containing a script. We started using SharedBuffer to represent
worker scripts instead of String, so that they can hold file mapped data and be shared across processes.
This patch introduces a new ScriptBuffer to wrap those SharedBuffers. The type makes it clearer what type of
data we're dealing with. The helper functions used to convert between String and SharedBuffer can now simply
be member functions on ScriptBuffer. This also simplifies IPC code.

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new ScriptBuffer class to project files.

  • inspector/agents/worker/ServiceWorkerAgent.cpp:

(WebCore::ServiceWorkerAgent::getInitializationInfo):
Use ScriptBuffer::toString() instead of scriptBufferToString().

  • workers/ScriptBuffer.cpp: Added.

(WebCore::ScriptBuffer::ScriptBuffer):
(WebCore::ScriptBuffer::toString const):
(WebCore::ScriptBuffer::containsSingleFileMappedSegment const):
(WebCore::operator==):

  • workers/ScriptBuffer.h: Added.

(WebCore::ScriptBuffer::ScriptBuffer):
(WebCore::ScriptBuffer::buffer const):
(WebCore::ScriptBuffer::isolatedCopy const):
(WebCore::ScriptBuffer::operator bool const):
New ScriptBuffer class that wraps a SharedBuffer representation of a script.
This class helps make it clear what data we're dealing with. It also facilitates
conversion to and from a String when needed. The class also has its own IPC
coder at WebKit layer to encode the script as a ShareableResource when file
mapped.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):
Use ScriptBuffer::toString() instead of scriptBufferToString().
And use StringBuffer constructor that takes a String instead of stringToScriptBuffer().

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerContextData.cpp:

(WebCore::ServiceWorkerContextData::isolatedCopy const):

  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::ImportedScript::encode const):
(WebCore::ServiceWorkerContextData::ImportedScript::decode):
(WebCore::ServiceWorkerContextData::ImportedScript::isolatedCopy const):
(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):

  • Use ScriptBuffer instead of RefPtr<SharedBuffer> for scripts.
  • Drop scriptBufferToString() & stringToScriptBuffer() as they are no longer needed.
  • Move IPC coders for ServiceWorkerContextData back from WebCoreArgumentCoders back to the WebCore class, now that the coders no longer need to deal with ShareableResource directly. We now encode / decode ScriptBuffer objects and its coder takes care of using a ShareableResource whenever possible.
  • workers/service/ServiceWorkerGlobalScope.cpp:

(WebCore::ServiceWorkerGlobalScope::didSaveScriptsToDisk):

  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/context/SWContextManager.cpp:

(WebCore::SWContextManager::didSaveScriptsToDisk):

  • workers/service/context/SWContextManager.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::didSaveScriptsToDisk):

  • workers/service/context/ServiceWorkerThreadProxy.h:
  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):

  • workers/service/server/RegistrationStore.cpp:

(WebCore::RegistrationStore::didSaveWorkerScriptsToDisk):

  • workers/service/server/RegistrationStore.h:
  • workers/service/server/SWScriptStorage.cpp:

(WebCore::SWScriptStorage::store):
(WebCore::SWScriptStorage::retrieve):

  • workers/service/server/SWScriptStorage.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::didSaveWorkerScriptsToDisk):
(WebCore::SWServer::updateWorker):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):

  • workers/service/server/SWServerToContextConnection.h:
  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::SWServerWorker):
(WebCore::SWServerWorker::didSaveScriptsToDisk):

  • workers/service/server/SWServerWorker.h:

(WebCore::SWServerWorker::script const):
Use ScriptBuffer instead of SharedBuffer.

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::didSaveScriptsToDisk):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:

Use ScriptBuffer instead SharedBuffer.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::tryConvertToShareableResourceHandle):
(IPC::decodeScriptBufferAsShareableResourceHandle):
(IPC::ArgumentCoder<WebCore::ScriptBuffer>::encode):
(IPC::ArgumentCoder<WebCore::ScriptBuffer>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Add IPC encoder / decoder for ScriptBuffer which tries to encode / decode as a ShareableResource whenever possible (single segment that is file mapped). This logic used to be in the ServiceWorkerContextData coders. Now that the logic is in the ScriptBuffer coder, the ServiceWorkerContextData encoding / decoding becomes much simpler.
  • Moved ServiceWorkerContextData coders from WebCoreArgumentCoders back to its class in WebCore, now that they no longer need to deal with ShareableResource directly.
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::didSaveScriptsToDisk):

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:

Send scripts over IPC as ScriptBuffer instead of using ShareableResource directly. The new IPC encoder /
decoder for ScriptBuffer takes care of using ShareableResource for us.

2:39 PM Changeset in webkit [275442] by Chris Dumez
  • 20 edits
    2 deletes in trunk/Source

Unreviewed, reverting r275434.

Need to figure out a better strategy to chose the color

Reverted changeset:

"Make sure we are no longer show the previous page when
running a JS prompt"
https://bugs.webkit.org/show_bug.cgi?id=215782
https://commits.webkit.org/r275434

2:32 PM Changeset in webkit [275441] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[MacOS Debug] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html is a flakey crash and failure
https://bugs.webkit.org/show_bug.cgi?id=222750

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:29 PM Changeset in webkit [275440] by Simon Fraser
  • 14 edits in trunk/Source

Allow wheel events to trigger high frequency DisplayLinks
https://bugs.webkit.org/show_bug.cgi?id=224095

Reviewed by Sam Weinig.

Source/WebCore:

Adjust some logging so it's clear which process code is running in.

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayLinkFired):

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::ensureMonitorForDisplayID):

Source/WebKit:

When scrolling via wheel events, we may want to drive scrolling tree updates
(which are driven by EventDispatcher::displayWasRefreshed()) at a higher rate
than the main thread does rendering updates.

To support this, give DisplayLink a count of "full speed" clients, and when this count is
greater than zero, have DisplayLink::notifyObserversDisplayWasRefreshed() send
EventDispatcher IPC at full framerate, while passing a flag based on the usual
relevantForUpdateFrequency() about whether to update the main thread for a given update.

Allow DisplayLink connection info objects with non-zero fullSpeedUpdatesClientCount
to stick around, because that fullSpeedUpdatesClientCount needs to be stored for
connections that may not yet have observers.

Since DisplayLink might have info for connections with no observers, adjust the logic in
DisplayLink::notifyObserversDisplayWasRefreshed() to do the CVDisplayLinkStop
after traversing the observers.

The "full speed" client count is maintained by a HysteresisActivity on WebPageProxy,
whose impulse is wheel events. This replaces a singleton HysteresisActivity which
was used to determine whether IPC goes to EventDispatcher or the main thread of
the web process.

WebPageProxy needs to track the PlatformDisplayID for the screen that its view is on,
so it knows which DisplayLink to message.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::setDisplayLinkForDisplayWantsFullSpeedUpdates):

  • UIProcess/WebPageProxy.cpp:

(WebKit::m_wheelEventActivityHysteresis):
(WebKit::WebPageProxy::wheelEventHysteresisUpdated):
(WebKit::WebPageProxy::sendWheelEvent):
(WebKit::WebPageProxy::windowScreenDidChange):
(WebKit::ScrollingObserver::willSendWheelEvent): Deleted.
(WebKit::ScrollingObserver::ScrollingObserver): Deleted.
(WebKit::ScrollingObserver::singleton): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.h:
  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::~DisplayLink):
(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::removeObserver):
(WebKit::DisplayLink::removeInfoForConnectionIfPossible):
(WebKit::DisplayLink::incrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::decrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::setPreferredFramesPerSecond):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • UIProcess/mac/DisplayLink.h:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::displayWasRefreshed):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:

(WebKit::DisplayRefreshMonitorMac::startNotificationMechanism):
(WebKit::DisplayRefreshMonitorMac::adjustPreferredFramesPerSecond):

2:20 PM Changeset in webkit [275439] by Alexey Shvayka
  • 17 edits in trunk

Reduce bytecode instruction count emitted for class extends
https://bugs.webkit.org/show_bug.cgi?id=223884

Reviewed by Yusuke Suzuki.

JSTests:

  • ChakraCore/test/Error/validate_line_column.baseline-jsc:

Source/JavaScriptCore:

This patch adds a variant of globalFuncSetPrototypeDirect() that throws on
invalid Prototype? values (instead of ignoring them) and utilizes it in
ClassExprNode::emitBytecode(), removing equivalent checks.

Throwing for invalid superclass.prototype value after setting the Prototype?
of constructor is unobservable because it's a newly created extensible object
and superclass is a proven object.

The fact that Prototype? set can throw only in case of superclass.prototype
allows keeping descriptive error message via custom appender. To find "extends"
in a source code, ClassExprNode is made an instance of ThrowableExpressionData.

This change reduces the number of emitted bytecodes by 4, and fixes IsConstructor's
error [1] to point to correct source code location.

[1]: https://tc39.es/ecma262/#sec-runtime-semantics-classdefinitionevaluation (step 5.f)

  • builtins/BuiltinNames.h:
  • bytecode/LinkTimeConstant.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitDirectSetPrototypeOf):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitPutConstantProperty):
(JSC::ClassExprNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createClassExpr):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createClassExpr):

  • runtime/ExceptionHelpers.cpp:

(JSC::invalidPrototypeSourceAppender):
(JSC::createInvalidPrototypeError):

  • runtime/ExceptionHelpers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGlobalObjectFunctions.h:
2:10 PM Changeset in webkit [275438] by commit-queue@webkit.org
  • 21 edits
    5 adds in trunk

JSTests:
Add tests for the new type method on certain JS-API wasm objects.
https://bugs.webkit.org/show_bug.cgi?id=222412

Patch by Jessica Tallon <jtallon@igalia.com> on 2021-04-02
Reviewed by Yusuke Suzuki.

  • wasm/js-api/global.js: Added.

(assert.throws):

  • wasm/js-api/table.js:

(assert.truthy):

  • wasm/js-api/test_memory.js:

LayoutTests/imported/w3c:
Update wasm JS-API tests for the type method to latest upstream.
https://bugs.webkit.org/show_bug.cgi?id=222412

Patch by Jessica Tallon <jtallon@igalia.com> on 2021-04-02
Reviewed by Yusuke Suzuki.

The upstream tests has recently added a test for the table type method and
updated the other type tests to methods to keep up with a recent spec change.
This adds those updated tests as well as now expectations they pass.

  • web-platform-tests/wasm/jsapi/global/type.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/type.tentative.any.js:

(assert_type):
(string_appeared_here.test):

  • web-platform-tests/wasm/jsapi/global/type.tentative.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/memory/type.tentative.any-expected.txt:
  • web-platform-tests/wasm/jsapi/memory/type.tentative.any.js:

(assert_type):

  • web-platform-tests/wasm/jsapi/memory/type.tentative.any.worker-expected.txt:

Source/JavaScriptCore:
Add type method to WebAssembly.Memory, WebAssembly.Table & WebAssembly.Global objects
https://bugs.webkit.org/show_bug.cgi?id=222412

Patch by Jessica Tallon <jtallon@igalia.com> on 2021-04-02
Reviewed by Yusuke Suzuki.

This adds a type method to several WASM objects as part of the work to add WASM
type reflections to the JS-API. The methods return a JSON object which describes
the type of the object and can be passed to the constructor to create a new wasm
object of that type.

  • wasm/js/JSWebAssemblyGlobal.cpp:

(JSC::JSWebAssemblyGlobal::type):

  • wasm/js/JSWebAssemblyGlobal.h:
  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::type):

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::type):

  • wasm/js/JSWebAssemblyTable.h:
  • wasm/js/WebAssemblyGlobalPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyGlobalPrototype.h:
  • wasm/js/WebAssemblyMemoryPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

2:07 PM Changeset in webkit [275437] by Russell Epstein
  • 1 copy in tags/Safari-612.1.9

Tag Safari-612.1.9.

2:04 PM Changeset in webkit [275436] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

UBSan: AlternativeTextController::dismiss()/dismissSoon(): runtime error: load of value nnn, which is not a valid value for type 'bool'
<https://webkit.org/b/223903>

Reviewed by Wenson Hsieh.

Covered by 449 layout tests using WebKit compiled with UBSan.

  • editing/AlternativeTextController.h:
  • Initialize m_isActive and m_isDismissedByEditing.
1:23 PM Changeset in webkit [275435] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ EWS iOS wk2 ] css2.1/20110323/replaced-intrinsic-ratio-001.htm is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=224121

Uneviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations: Updated test expectations to Pass Failure because it was slowing down EWS. Keeping expectation while test is reviewed.
12:37 PM Changeset in webkit [275434] by Chris Dumez
  • 20 edits
    2 adds in trunk/Source

Make sure we are no longer show the previous page when running a JS prompt
https://bugs.webkit.org/show_bug.cgi?id=215782
<rdar://problem/67698601>

Reviewed by Simon Fraser.

Source/WebCore:

Add linked-on-after check for the behavior change to minimize the risk of
breakage.

  • platform/cocoa/VersionChecks.h:

Source/WebKit:

Make sure we are no longer show the previous page when running a JS prompt.
If we have not yet done a layer tree commit since the last load commit, then
we are likely still showing the previous page. If we are asked to run a JS
prompt / alert / confirm at this point, it would be confusing to still show
the previous page. In order to address the issue, we now make the view blank
in such scenario (ideally, we'd have painted the new page but this is
currently not a trivial thing to do).

To make the view blank, the approach chosen was to add a blank overlay view
on top of the content. This overlay view gets taken down as soon as we
paint the view again.

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _hasBlankOverlay]):
(-[WKWebView _setHasBlankOverlay:]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::setHasBlankOverlay):

  • UIProcess/Cocoa/WKBlankOverlayView.h: Added.
  • UIProcess/Cocoa/WKBlankOverlayView.mm: Added.

(-[WKBlankOverlayView initWithFrame:]):

  • UIProcess/PageClient.h:

(WebKit::PageClient::setHasBlankOverlay):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didCommitLayerTree):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::updateRendering):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::didUpdateRendering):

12:33 PM Changeset in webkit [275433] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Add IOKit method filter telemetry
https://bugs.webkit.org/show_bug.cgi?id=223652
<rdar://problem/75751391>

Reviewed by Brent Fulgham.

Add IOKit method filter telemetry in the WebContent sandbox on macOS and iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
12:32 PM Changeset in webkit [275432] by Russell Epstein
  • 1 edit in branches/safari-612.1.9-branch/Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml

Apply patch. rdar://problem/76159515

12:32 PM Changeset in webkit [275431] by Devin Rousso
  • 6 edits in trunk/Source/WebCore

[iPadOS] unable to reorder tabs on *.mybinder.org
https://bugs.webkit.org/show_bug.cgi?id=224034
<rdar://problem/51770057>

Reviewed by Brent Fulgham.

  • page/Quirks.h:
  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):
(WebCore::Quirks::simulatedMouseEventTypeForTarget const):
Modify Quirks::shouldDispatchSimulatedMouseEvents to accept an EventTarget so that we
can limit dispatching touch events as mouse events on *.mybinder.org to only the tab bar.

  • dom/EventNames.h:

(WebCore::EventNames::isTouchRelatedEventType const):

  • dom/Node.cpp:

(WebCore::Node::moveNodeToNewDocument):
(WebCore::tryAddEventListener):
(WebCore::tryRemoveEventListener):
(WebCore::Node::defaultEventHandler):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::addEventListener):
(WebCore::DOMWindow::removeEventListener):
Pass in the EventTarget when calling Quirks::shouldDispatchSimulatedMouseEvents.

12:30 PM Changeset in webkit [275430] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[AspectRatio] Out-of-flow box with intrinsic width (e.g. <img>) may trigger infinite recursion
https://bugs.webkit.org/show_bug.cgi?id=224113

Reviewed by Rob Buis.

Source/WebCore:

This covers the case when the out-of-flow box has intrinsic width (replaced box) and
the max-width is also set to "intrinsic" meaning content size dependent. In such cases
the aspect ratio computation ends up recursing around RenderBox::computeReplacedLogicalWidthRespectingMinMaxWidth.
This path checks if the out-of-flow box's horizontal size is also constrained by the intrinsic width.

Test: fast/replaced/infinite-recursion-with-intrinsic-width.html

  • rendering/RenderBox.cpp:

(WebCore::shouldComputeLogicalWidthFromAspectRatioAndInsets):

LayoutTests:

  • fast/replaced/infinite-recursion-with-intrinsic-width-expected.txt: Added.
  • fast/replaced/infinite-recursion-with-intrinsic-width.html: Added.
11:52 AM Changeset in webkit [275429] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Capture rotation is wrong after Safari is backgrounded then foregrounded
https://bugs.webkit.org/show_bug.cgi?id=224103

Reviewed by Eric Carlson.

WebPage computes rotation either based on rotation notification or viewport notification.
Apply the same technique in UIProcess to let GPUProcess get the right information.
Manually tested.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dynamicViewportSizeUpdate):

11:40 AM Changeset in webkit [275428] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Delete JS code and trigger garbage collection in worker threads on memory pressure
https://bugs.webkit.org/show_bug.cgi?id=224110

Reviewed by Geoffrey Garen.

Delete JS code and trigger garbage collection in worker threads on memory pressure,
to release as much memory as possible. We were previously only doing this in the
common (main thread) VM.

For the garbage collection logic, I tried to match what the GCController is doing
for the commonVM but apply it to worker VMs.

  • page/MemoryRelease.cpp:

(WebCore::releaseCriticalMemory):

  • workers/WorkerGlobalScope.cpp:

(WebCore::allWorkerGlobalScopeIdentifiers):
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::releaseMemory):
(WebCore::WorkerGlobalScope::releaseMemoryInWorkers):

  • workers/WorkerGlobalScope.h:
11:35 AM Changeset in webkit [275427] by Chris Gambrell
  • 68 edits
    5 adds
    5 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/referrer-policy convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=223234
<rdar://problem/75460136>

Reviewed by Jonathan Bedard.

  • http/tests/cache/resources/svg-defs-vary.py:
  • http/tests/css/resources/webfont-request.py:

(get_request_count):
(set_request_count):
(getRequestCount): Deleted.
(setRequestCount): Deleted.

  • http/tests/eventsource/resources/status-codes.py:
  • http/tests/misc/resources/dns-prefetch-control.py:
  • http/tests/misc/resources/protected/protected-image.py:
  • http/tests/navigation/ping-attribute/resources/utilities.js:

(clearLastPingResultAndRunTest):

  • http/tests/navigation/resources/post-goback-same-url.py:
  • http/tests/navigation/resources/randomredirects/randomredirect.py:
  • http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/no-referrer-when-downgrade/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/no-referrer-when-downgrade/same-origin.html:
  • http/tests/referrer-policy-anchor/no-referrer/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/no-referrer/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/no-referrer/same-origin.html:
  • http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-anchor/origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/origin/same-origin.html:
  • http/tests/referrer-policy-anchor/same-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/same-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/same-origin/same-origin.html:
  • http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/strict-origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-anchor/strict-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/strict-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/strict-origin/same-origin.html:
  • http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http-http.html:
  • http/tests/referrer-policy-anchor/unsafe-url/cross-origin-http.https.html:
  • http/tests/referrer-policy-anchor/unsafe-url/same-origin.html:
  • http/tests/referrer-policy-img/no-referrer-when-downgrade/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/no-referrer-when-downgrade/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/no-referrer-when-downgrade/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/no-referrer-when-downgrade/same-origin.html:
  • http/tests/referrer-policy-img/no-referrer/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/no-referrer/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/no-referrer/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/no-referrer/same-origin.html:
  • http/tests/referrer-policy-img/origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/origin-when-cross-origin/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-img/origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/origin/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/origin/same-origin.html:
  • http/tests/referrer-policy-img/same-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/same-origin/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/same-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/same-origin/same-origin.html:
  • http/tests/referrer-policy-img/strict-origin-when-cross-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/strict-origin-when-cross-origin/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/strict-origin-when-cross-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/strict-origin-when-cross-origin/same-origin.html:
  • http/tests/referrer-policy-img/strict-origin/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/strict-origin/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/strict-origin/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/strict-origin/same-origin.html:
  • http/tests/referrer-policy-img/unsafe-url/cross-origin-http-http.html:
  • http/tests/referrer-policy-img/unsafe-url/cross-origin-http.https-expected.txt:
  • http/tests/referrer-policy-img/unsafe-url/cross-origin-http.https.html:
  • http/tests/referrer-policy-img/unsafe-url/same-origin.html:
  • http/tests/referrer-policy/resources/check-referrer.php: Removed.
  • http/tests/referrer-policy/resources/check-referrer.py: Added.
  • http/tests/referrer-policy/resources/image.php: Removed.
  • http/tests/referrer-policy/resources/image.py: Added.
  • http/tests/referrer-policy/resources/script.php: Removed.
  • http/tests/referrer-policy/resources/script.py: Added.
  • http/tests/security/xssAuditor/resources/tag-with-pause.py:
  • http/tests/websocket/tests/hybi/contentextensions/block-cookies-worker.php.json: Removed.
  • http/tests/websocket/tests/hybi/contentextensions/block-cookies-worker.py.json: Added.
  • http/tests/websocket/tests/hybi/contentextensions/block-cookies.php.json: Removed.
  • http/tests/websocket/tests/hybi/contentextensions/block-cookies.py.json: Added.
  • imported/blink/http/tests/misc/input-image-fallback-content-crash.html:
  • resources/js-test.js:

(downgradeReferrerCallback):

11:17 AM Changeset in webkit [275426] by Aditya Keerthi
  • 10 edits in trunk

Do not paint native decorations for search fields without '-webkit-appearance: searchfield'
https://bugs.webkit.org/show_bug.cgi?id=223946
<rdar://problem/75621365>

Reviewed by Antti Koivisto.

Source/WebCore:

On iOS, sites that use <input type="search"> have been observed to draw
their own icons next to the field. Since we draw our own icon for
search fields, this results in an unwanted icon on some sites, such as
on chanel.com. However, in this case, the site specifies
"-webkit-appearance: textfield" on the search input, indicating a desire
to remove the native search field appearance. To remove the unwanted
icon, we should not paint decorations for search fields without
"-webkit-appearance: searchfield".

To achieve this behavior, adjust the -webkit-appearance value on the
pseudo element containing the icon when the search field has a different
-webkit-appearance value, so that the native painting is elided. The
decision to not simply set "display: none" on the element was made so
that sites can still customize the decoration should they choose to do
so. Note that on macOS, Web Inspector paints their own search icon
using the pseudo element.

No new tests. A layout test is not possible since SearchFieldResultsButtonElement
is inaccessible through DOM APIs. A reference mismatch test is not
possible since changing the -webkit-appearance property on a search field
already results in visual changes. Existing tests were rebaselined to
account for the fact that the decoration is removed when changing
-webkit-appearance, so we do have test coverage.

  • html/HTMLElement.h:

(WebCore::HTMLElement::isSearchFieldResultsButtonElement const):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::SearchFieldResultsButtonElement::SearchFieldResultsButtonElement):
(WebCore::SearchFieldResultsButtonElement::resolveCustomStyle):

If the searchfield's appearance is not "searchfield", adjust the
appearance of the results button to NoControlPart. For compatibility
reasons, the adjustment is skipped if the author has specified the
results attribute on the searchfield. This is determined by checking
the maxResults of the input element.

If the adjustment needs to be performed, we elide standard style
adjustments from the theme by setting canAdjustStyleForAppearance to
false. Without this, the call to resolveStyle will apply native styles
to the element, since it does not know we are about to reset appearance.

  • html/shadow/TextControlInnerElements.h:

(isType):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::adjustSearchFieldDecorationStyle const):

Skip style adjustment and reset the appearance when necessary.

  • rendering/RenderTheme.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):

Resolve all descendants if the appearance property of a search input is
changed. Without this change, the style of the results button is not
resolved when making a dynamic style change to the appearance of the
search input.

LayoutTests:

Rebaselined tests to account for the removal of the native decoration
when a different -webkit-appearance is specified on a search field.

  • platform/ios/fast/css/input-search-padding-expected.txt:
  • platform/mac/fast/css/text-input-with-webkit-border-radius-expected.txt:
10:41 AM Changeset in webkit [275425] by Chris Fleizach
  • 10 edits
    2 adds in trunk

AX: textRectsFromMarkers always fails
https://bugs.webkit.org/show_bug.cgi?id=223556
<rdar://74256003>

Reviewed by Zalan Bujtas.

Source/WebCore:

The textRectsFromMarkers:text: method is always failing to return a valid answer because when we try to extend
the search range of text to search, we're creating a range that can't be iterated with a CharacterIterator.

Test: accessibility/ios-simulator/text-rects-for-range-matches.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::rangeMatchesTextNearRange):

Tools:

  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::rectsForTextMarkerRange):

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::AccessibilityUIElement::rectsForTextMarkerRange):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::rectsForTextMarkerRange):

  • WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:

(WTR::AccessibilityUIElement::rectsForTextMarkerRange):

LayoutTests:

  • accessibility/ios-simulator/text-rects-for-range-matches-expected.txt: Added.
  • accessibility/ios-simulator/text-rects-for-range-matches.html: Added.
10:01 AM Changeset in webkit [275424] by Chris Gambrell
  • 6 edits
    1 add
    1 delete in trunk/LayoutTests

[LayoutTests] Convert http/tests/multipart convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=223475
<rdar://problem/75587716>

Reviewed by Alex Christensen.

  • http/tests/multipart/invalid-image-data-standalone.html:
  • http/tests/multipart/invalid-image-data.html:
  • http/tests/multipart/multipart-async-image.html:
  • http/tests/multipart/multipart-image.html:
  • http/tests/multipart/resources/multipart.php: Removed.
  • http/tests/multipart/resources/multipart.py: Added.

(send_part):

  • http/tests/multipart/stop-crash.html:
9:48 AM Changeset in webkit [275423] by clopez@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening of flaky tests

Unreviewed gardening.

Update list of flaky tests.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
9:23 AM Changeset in webkit [275422] by commit-queue@webkit.org
  • 39 edits in trunk/Source/WebCore

Non-unified build fixes, early April 2021
https://bugs.webkit.org/show_bug.cgi?id=224091

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-04-02
Reviewed by Alex Christensen.

Non-unified build fixes, April 2021.

  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):
For IDLs that have a property with a type of undefined, also add #include "JSDOMConvertBase.h" to
the generated binding source file. This fixes a build error in
DerivedSources/JSWebGLLoseContext.cpp that looked like:

WebCore/DerivedSources/JSWebGLLoseContext.cpp:147:78: error: expected primary-expression before ‘>’ token
RELEASE_AND_RETURN(throwScope, JSValue::encode(toJS<IDLUndefined>(*lexicalGlobalObject, throwScope, [&]() -> decltype(auto) { return impl.loseContext(); })));

Thanks to Darin Adler for figuring this out.

To see the full error, go here: https://bugs.webkit.org/show_bug.cgi?id=223150#c14

  • dom/EventContext.h:
  • dom/FocusOptions.h:
  • loader/ResourceLoadInfo.cpp:
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:
  • platform/network/soup/SoupNetworkSession.cpp:
  • rendering/RenderLayerModelObject.cpp:
  • style/Styleable.cpp:
  • workers/service/server/SWScriptStorage.cpp:
  • workers/service/server/SWScriptStorage.h:
  • Modules/mediastream/RTCDataChannelRemoteSource.h:

Fix 'invalid use of incomplete type <TYPE>' or '<TYPE> does not name a type' errors.

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:
  • bindings/scripts/test/JS/JSTestCallTracer.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithThisObject.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestConditionalIncludes.cpp:
  • bindings/scripts/test/JS/JSTestDomainSecurity.cpp:
  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp:
  • bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestOperationConditional.cpp:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp:

Update bindings via run-bindings-tests --reset-results to add new "JSDOMConvertBase.h" include.

7:56 AM Changeset in webkit [275421] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Do not send samples to GPUProcess if mediastream video is not playing
https://bugs.webkit.org/show_bug.cgi?id=224100
<rdar://74809558>

Reviewed by Eric Carlson.

In case video is paused, there is no need to send samples to GPUProcess.
Instead, we can just exit early.
This fixes the issue of freezing camera in case a hidden video element tries to play the camera feed.
Manually tested.

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.cpp:

(WebKit::SampleBufferDisplayLayer::play):
(WebKit::SampleBufferDisplayLayer::pause):
(WebKit::SampleBufferDisplayLayer::enqueueSample):

  • WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
7:06 AM Changeset in webkit [275420] by Chris Lord
  • 30 edits in trunk

Implement text rendering on OffscreenCanvas in a Worker
https://bugs.webkit.org/show_bug.cgi?id=202793

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Adjust test expectations.

  • web-platform-tests/html/canvas/offscreen/text/2d.text.font.parse.basic.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/text/2d.text.font.parse.complex.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/text/2d.text.font.parse.invalid.worker-expected.txt:
  • web-platform-tests/html/canvas/offscreen/text/2d.text.font.parse.tiny.worker-expected.txt:

Source/WebCore:

Add a CSSFontSelector and FontCache to WorkerGlobalScope and via
interface changes to ScriptExecutionContext and FontSelector, use them
as appropriate after enabling text functions on Worker threads with
OffscreenCanvas.

No new tests, rebaselined existing tests.

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::CSSFontSelector):
(WebCore::m_version):
(WebCore::CSSFontSelector::~CSSFontSelector):
(WebCore::CSSFontSelector::fontRangesForFamily):
(WebCore::CSSFontSelector::fallbackFontAt):

  • css/CSSFontSelector.h:
  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::genericFontFamily):
(WebCore::CSSPropertyParserHelpers::genericFontFamilyIndex):

  • css/parser/CSSPropertyParserHelpers.h:
  • dom/Document.h:
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::fontCache):

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::cssFontSelector):

  • dom/make_names.pl:
  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::canDrawText):

  • html/canvas/OffscreenCanvasRenderingContext2D.cpp:

(WebCore::OffscreenCanvasRenderingContext2D::setFont):

  • platform/graphics/FontCache.cpp:

(WebCore::FontDataCacheKeyHash::hash):
(WebCore::FontDataCacheKeyHash::equal):
(WebCore::FontDataCacheKeyTraits::emptyValue):
(WebCore::FontDataCacheKeyTraits::constructDeletedValue):
(WebCore::FontDataCacheKeyTraits::isDeletedValue):
(WebCore::FontCache::create):
(WebCore::FontCache::singleton):
(WebCore::FontCache::FontCache):
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontDataIfNeeded):
(WebCore::FontCache::purgeInactiveFontData):
(WebCore::FontCache::verticalData):
(WebCore::FontCache::fontCount):
(WebCore::FontCache::inactiveFontCount):
(WebCore::FontCache::invalidate):

  • platform/graphics/FontCache.h:

(WebCore::FontCache::fontCacheFallbackToSingleton):

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::isCurrent const):
(WebCore::FontCascade::update const):

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::FontCascadeFonts::FontCascadeFonts):
(WebCore::realizeNextFallback):
(WebCore::FontCascadeFonts::realizeFallbackRangesAt):

  • platform/graphics/FontSelector.h:
  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::fontForCombiningCharacterSequence const):

  • platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::getFamilyNameStringFromFamily):

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueFontFamily):

  • style/StyleResolveForFontRaw.cpp:

(WebCore::Style::useFixedDefaultSize):
(WebCore::Style::resolveForFontRaw):

  • style/StyleResolveForFontRaw.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::cssFontSelector):
(WebCore::WorkerGlobalScope::fontCache):

  • workers/WorkerGlobalScope.h:

LayoutTests:

Adjust expectations for manual OffscreenCanvas worker text test.

  • platform/glib/TestExpectations:
7:01 AM Changeset in webkit [275419] by wilander@apple.com
  • 3 edits in trunk/Source/WebKit

PCM: PrivateClickMeasurementManager::getTokenPublicKey() should not use PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable when validating the token before the attribution report is sent
https://bugs.webkit.org/show_bug.cgi?id=223956
<rdar://problem/76086936>

Reviewed by Youenn Fablet.

No new tests. This just changes the NetworkLoadParameters field pcmDataCarried
for the initial public key load and for PCM Debug Mode. This network load setting
is not observable in tests.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::storeUnattributed):

Now sends PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable
to PrivateClickMeasurementManager::getTokenPublicKey() since it's required.

(WebKit::generateNetworkLoadParameters):

Now takes the parameter isDebugModeEnabled and if it's true, forces
PrivateClickMeasurement::PcmDataCarried::PersonallyIdentifiable since
Debug Mode disables privacy measures making PCM network requests likely
to be personally identifiable.

(WebKit::generateNetworkLoadParametersForHttpPost):

Now forwards isDebugModeEnabled to generateNetworkLoadParameters().

(WebKit::generateNetworkLoadParametersForHttpGet):

Now forwards isDebugModeEnabled to generateNetworkLoadParameters().

(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):

Now takes a PrivateClickMeasurement::PcmDataCarried parameter to be able
to request the public key in either network load mode.
Now also forwards isDebugModeEnabled to generateNetworkLoadParameters().

(WebKit::PrivateClickMeasurementManager::fireConversionRequest):

Now sends PrivateClickMeasurement::PcmDataCarried::NonPersonallyIdentifiable
to PrivateClickMeasurementManager::getTokenPublicKey() since it's required.

(WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):

Now forwards isDebugModeEnabled to generateNetworkLoadParameters().

  • NetworkProcess/PrivateClickMeasurementManager.h:
6:26 AM Changeset in webkit [275418] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Use webrtc GPU Process feature flag for audio capture on MacOS
https://bugs.webkit.org/show_bug.cgi?id=223682

Reviewed by Eric Carlson.

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCaptureAudioInGPUProcessEnabled):

6:19 AM Changeset in webkit [275417] by youenn@apple.com
  • 12 edits
    2 adds in trunk

No audio output when unplugged wired headset during a call
https://bugs.webkit.org/show_bug.cgi?id=216389
<rdar://problem/68692800>

Reviewed by Eric Carlson.

Source/WebCore:

Implement shouldOverridePauseDuringRouteChange for media elements.
If it is a media stream backed video element, do not pause on active audio route change.

Implement internal API to write a layout test.

Refactoring to share more code between WebCore and WebKit and implement the internal API.
Improve isolation of MediaSessionHelper by moving all its members from protected to private.

Test: fast/mediastream/MediaStream-video-element-change-audio-route.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::shouldOverridePauseDuringRouteChange const):

  • html/HTMLMediaElement.h:
  • platform/audio/ios/MediaSessionHelperIOS.h:

(WebCore::MediaSessionHelper::MediaSessionHelper):

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(MediaSessionHelper::activeAudioRouteDidChange):
(MediaSessionHelper::applicationWillEnterForeground):
(MediaSessionHelper::applicationDidEnterBackground):
(MediaSessionHelper::applicationWillBecomeInactive):
(MediaSessionHelper::applicationDidBecomeActive):
(MediaSessionHelper::mediaServerConnectionDied):
(MediaSessionHelper::externalOutputDeviceAvailableDidChange):
(MediaSessionHelper::isPlayingToAutomotiveHeadUnitDidChange):
(MediaSessionHelper::activeVideoRouteDidChange):
(MediaSessionHelper::startMonitoringWirelessRoutes):
(MediaSessionHelper::stopMonitoringWirelessRoutes):
(MediaSessionHelperiOS::MediaSessionHelperiOS):
(MediaSessionHelperiOS::startMonitoringWirelessRoutesInternal):
(MediaSessionHelperiOS::stopMonitoringWirelessRoutesInternal):
(MediaSessionHelperiOS::mediaServerConnectionDied):
(MediaSessionHelperiOS::setIsPlayingToAutomotiveHeadUnit):
(MediaSessionHelperiOS::activeAudioRouteDidChange):
(MediaSessionHelperiOS::activeVideoRouteDidChange):
(MediaSessionHelperiOS::externalOutputDeviceAvailableDidChange):
(MediaSessionHelperiOS::startMonitoringWirelessRoutes): Deleted.
(MediaSessionHelperiOS::stopMonitoringWirelessRoutes): Deleted.
(MediaSessionHelperiOS::applicationDidBecomeActive): Deleted.
(MediaSessionHelperiOS::applicationDidEnterBackground): Deleted.
(MediaSessionHelperiOS::applicationWillBecomeInactive): Deleted.
(MediaSessionHelperiOS::applicationWillEnterForeground): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::activeAudioRouteDidChange):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

Make use of WebCore methods instead of reimplementing them here.

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::startMonitoringWirelessRoutesInternal):
(WebKit::RemoteMediaSessionHelper::stopMonitoringWirelessRoutesInternal):
(WebKit::RemoteMediaSessionHelper::activeVideoRouteDidChange):
(WebKit::RemoteMediaSessionHelper::startMonitoringWirelessRoutes): Deleted.
(WebKit::RemoteMediaSessionHelper::stopMonitoringWirelessRoutes): Deleted.
(WebKit::RemoteMediaSessionHelper::applicationWillEnterForeground): Deleted.
(WebKit::RemoteMediaSessionHelper::applicationDidEnterBackground): Deleted.
(WebKit::RemoteMediaSessionHelper::applicationWillBecomeInactive): Deleted.
(WebKit::RemoteMediaSessionHelper::applicationDidBecomeActive): Deleted.
(WebKit::RemoteMediaSessionHelper::externalOutputDeviceAvailableDidChange): Deleted.
(WebKit::RemoteMediaSessionHelper::isPlayingToAutomotiveHeadUnitDidChange): Deleted.
(WebKit::RemoteMediaSessionHelper::activeAudioRouteDidChange): Deleted.

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.h:

LayoutTests:

  • fast/mediastream/MediaStream-video-element-change-audio-route-expected.txt: Added.
  • fast/mediastream/MediaStream-video-element-change-audio-route.html: Added.
3:59 AM Changeset in webkit [275416] by svillar@igalia.com
  • 7 edits in trunk/LayoutTests

[css-flexbox] align-content issues
https://bugs.webkit.org/show_bug.cgi?id=221468

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/align-content_center-expected.html: Fixed stylesheet link.
  • web-platform-tests/css/css-flexbox/align-content_flex-end-expected.html: Ditto.
  • web-platform-tests/css/css-flexbox/align-content_space-around-expected.html: Ditto.
  • web-platform-tests/css/css-flexbox/align-content_stretch-expected.html: Ditto.

LayoutTests:

Fix the relative path to a stylesheet in 4 expected results. The tests were working as expected
but the expected results were wrong without those CSS rules.

3:44 AM Changeset in webkit [275415] by youenn@apple.com
  • 6 edits in trunk

[MacOS] Enable NSURLSession WebSocket code path in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=220973
<rdar://problem/73655870>

Reviewed by Darin Adler.

Source/WebKit:

Disable a debug assert until it gets fixed below WebKit.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:webSocketTask:didOpenWithProtocol:]):

Source/WTF:

  • wtf/PlatformHave.h:

Bump NSURLSessionWebSocket path to above BigSur and iOS14.

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

2:14 AM Changeset in webkit [275414] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Start observing outgoing audio/video sources asynchronously
https://bugs.webkit.org/show_bug.cgi?id=224040

Reviewed by Eric Carlson.

We delay sending media a little bit to guarantee that senders can be
assigned a transform synchronously at creation time.
This guarantees all sent media will go through the transform.
Difficult to test in practice as this would be very racy.

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::operator==):
(WebCore::LibWebRTCRtpSenderBackend::startSource):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
2:08 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
2:07 AM Changeset in webkit [275413] by commit-queue@webkit.org
  • 57 edits in trunk/Source/WebCore

Subpixel layout: Switch inlines' baseline positioning from int to LayoutUnit.
https://bugs.webkit.org/show_bug.cgi?id=133932

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-02
Reviewed by Zalan Bujtas.

This change converts the int returns type to LayoutUnit.
To match the old behavior, the implicit toInt() calls
have been replaced by explicit toInt() calls.

  • rendering/GridBaselineAlignment.cpp:

(WebCore::GridBaselineAlignment::ascentForChild const):

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::baselinePosition const):

  • rendering/InlineBox.h:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::baselinePosition const):

  • rendering/InlineTextBox.h:
  • rendering/RenderAttachment.cpp:

(WebCore::RenderAttachment::baselinePosition const):

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

(WebCore::RenderBlock::baselinePosition const):
(WebCore::RenderBlock::firstLineBaseline const):
(WebCore::RenderBlock::inlineBlockBaseline const):

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

(WebCore::RenderBlockFlow::firstLineBaseline const):
(WebCore::RenderBlockFlow::inlineBlockBaseline const):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::baselinePosition const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::firstLineBaseline const):
(WebCore::RenderBox::inlineBlockBaseline const):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderButton.cpp:

(WebCore::RenderButton::baselinePosition const):

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

(WebCore::synthesizedBaselineFromBorderBox):
(WebCore::RenderFlexibleBox::baselinePosition const):
(WebCore::RenderFlexibleBox::firstLineBaseline const):
(WebCore::RenderFlexibleBox::inlineBlockBaseline const):

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

(WebCore::synthesizedBaselineFromBorderBox):
(WebCore::RenderGrid::baselinePosition const):
(WebCore::RenderGrid::firstLineBaseline const):
(WebCore::RenderGrid::inlineBlockBaseline const):

  • rendering/RenderGrid.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::baselinePosition const):

  • rendering/RenderInline.h:
  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::baselinePosition const):

  • rendering/RenderLineBreak.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::baselinePosition const):

  • rendering/RenderListBox.h:
  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::baselinePosition const):

  • rendering/RenderListMarker.h:
  • rendering/RenderMenuList.h:
  • rendering/RenderSlider.cpp:

(WebCore::RenderSlider::baselinePosition const):

  • rendering/RenderSlider.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::baselinePosition const):
(WebCore::RenderTable::inlineBlockBaseline const):
(WebCore::RenderTable::firstLineBaseline const):

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

(WebCore::RenderTableSection::firstLineBaseline const):

  • rendering/RenderTableSection.h:
  • rendering/RenderTextControl.h:
  • rendering/RenderTextControlMultiLine.cpp:

(WebCore::RenderTextControlMultiLine::baselinePosition const):

  • rendering/RenderTextControlMultiLine.h:
  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::baselinePosition const):

  • rendering/RootInlineBox.h:
  • rendering/mathml/RenderMathMLBlock.cpp:

(WebCore::RenderMathMLBlock::baselinePosition const):
(WebCore::RenderMathMLTable::firstLineBaseline const):

  • rendering/mathml/RenderMathMLBlock.h:

(WebCore::RenderMathMLBlock::ascentForChild):

  • rendering/mathml/RenderMathMLFraction.cpp:

(WebCore::RenderMathMLFraction::firstLineBaseline const):

  • rendering/mathml/RenderMathMLFraction.h:
  • rendering/mathml/RenderMathMLOperator.cpp:

(WebCore::RenderMathMLOperator::firstLineBaseline const):

  • rendering/mathml/RenderMathMLOperator.h:
  • rendering/mathml/RenderMathMLPadded.cpp:

(WebCore::RenderMathMLPadded::firstLineBaseline const):

  • rendering/mathml/RenderMathMLPadded.h:
  • rendering/mathml/RenderMathMLRow.cpp:

(WebCore::RenderMathMLRow::firstLineBaseline const):

  • rendering/mathml/RenderMathMLRow.h:
  • rendering/mathml/RenderMathMLScripts.cpp:

(WebCore::RenderMathMLScripts::firstLineBaseline const):

  • rendering/mathml/RenderMathMLScripts.h:
  • rendering/mathml/RenderMathMLSpace.cpp:

(WebCore::RenderMathMLSpace::firstLineBaseline const):

  • rendering/mathml/RenderMathMLSpace.h:
  • rendering/mathml/RenderMathMLToken.cpp:

(WebCore::RenderMathMLToken::firstLineBaseline const):

  • rendering/mathml/RenderMathMLToken.h:
2:06 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
1:55 AM Changeset in webkit [275412] by Philippe Normand
  • 6 edits in trunk

REGRESSION(r268176): [GStreamer] media/video-orientation-canvas.html fails
https://bugs.webkit.org/show_bug.cgi?id=223850

Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore:

The GL pipeline used by the player is now able to handle image rotation tags itself. Manual
handling of the image rotation tags is now performed only when the pipeline is not able to
do it by itself.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(webKitGLVideoSinkConstructed):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::getVideoOrientation):
(WebCore::MediaPlayerPrivateGStreamer::updateVideoSizeAndOrientationFromCaps):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

LayoutTests:

  • platform/gtk/TestExpectations: Unflag now-passing test.
1:50 AM Changeset in webkit [275411] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, fix passing hash value
https://bugs.webkit.org/show_bug.cgi?id=223895

  • wtf/RobinHoodHashTable.h:

(WTF::SizePolicy>::addPassingHashCode):

1:33 AM Changeset in webkit [275410] by ysuzuki@apple.com
  • 86 edits
    2 copies
    3 adds in trunk

[WTF] Introduce RobinHoodHashTable
https://bugs.webkit.org/show_bug.cgi?id=223895

Reviewed by Fil Pizlo.

Source/JavaScriptCore:

  • builtins/BuiltinNames.cpp:

(JSC::lookUpPrivateNameImpl):
(JSC::lookUpWellKnownSymbolImpl):

  • builtins/BuiltinNames.h:
  • bytecode/BytecodeIntrinsicRegistry.h:
  • runtime/Identifier.h:
  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):
(JSC::IntlCollator::checkICULocaleInvariants):

  • runtime/IntlCollator.h:
  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::initializeDateTimeFormat):

  • runtime/IntlDateTimeFormatConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlDisplayNames.cpp:

(JSC::IntlDisplayNames::initializeDisplayNames):

  • runtime/IntlDisplayNamesConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlListFormat.cpp:

(JSC::IntlListFormat::initializeListFormat):

  • runtime/IntlListFormatConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::initializeNumberFormat):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlObject.cpp:

(JSC::addScriptlessLocaleIfNeeded):
(JSC::intlAvailableLocales):
(JSC::intlCollatorAvailableLocales):
(JSC::intlSegmenterAvailableLocales):
(JSC::bestAvailableLocale):
(JSC::lookupMatcher):
(JSC::bestFitMatcher):
(JSC::resolveLocale):
(JSC::lookupSupportedLocales):
(JSC::bestFitSupportedLocales):
(JSC::supportedLocales):

  • runtime/IntlObject.h:

(JSC::intlDateTimeFormatAvailableLocales):
(JSC::intlDisplayNamesAvailableLocales):
(JSC::intlNumberFormatAvailableLocales):
(JSC::intlPluralRulesAvailableLocales):
(JSC::intlRelativeTimeFormatAvailableLocales):
(JSC::intlListFormatAvailableLocales):

  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::initializePluralRules):

  • runtime/IntlPluralRulesConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlRelativeTimeFormat.cpp:

(JSC::IntlRelativeTimeFormat::initializeRelativeTimeFormat):

  • runtime/IntlRelativeTimeFormatConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::initializeSegmenter):

  • runtime/IntlSegmenterConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/RegExpCache.h:
  • runtime/RegExpKey.h:

Source/WebCore:

  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::bucketMIMETypes):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::popupValue const):

  • dom/Element.cpp:

(WebCore::canAttachAuthorShadowRoot):

  • dom/QualifiedName.h:
  • dom/make_names.pl:

(printNamesHeaderFile):
(printFactoryCppFile):
(printWrapperFactoryCppFile):

  • editing/FormatBlockCommand.cpp:

(WebCore::isElementForFormatBlock):

  • editing/RemoveFormatCommand.cpp:

(WebCore::isElementForRemoveFormatCommand):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::isProhibitedParagraphChild):

  • html/Autofill.cpp:

(WebCore::fieldNameMap):

  • html/HTMLDocument.cpp:

(WebCore::HTMLDocument::isCaseSensitiveAttribute):

  • html/HTMLObjectElement.cpp:

(WebCore::preventsParentObjectFromExposure):

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::createCaseMap):
(WebCore::adjustSVGTagNameCase):
(WebCore::adjustAttributes):
(WebCore::createForeignAttributesMap):
(WebCore::adjustForeignAttributes):
(WebCore::addNamesWithPrefix): Deleted.

  • page/DebugPageOverlays.cpp:

(WebCore::touchEventRegionColors):
(WebCore::NonFastScrollableRegionOverlay::drawRect):

  • page/PerformanceUserTiming.cpp:

(WebCore::restrictedMarkNamesToNavigationTimingFunctionMap):

  • platform/cocoa/MIMETypeRegistryCocoa.mm:

(WebCore::extensionsForMIMETypeMap):

  • platform/graphics/FontCascade.cpp:

(WebCore::useBackslashAsYenSignForFamily):
(WebCore::FontCascade::hasValidAverageCharWidth const):

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::validInitDataTypes):

  • platform/graphics/cg/UTIRegistry.cpp:

(WebCore::defaultSupportedImageTypes):

  • platform/graphics/cg/UTIRegistry.h:
  • platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:

(WebCore::codecTypeForDoViCodecString):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::supportedVideoCodecs):
(WebCore::SourceBufferParserWebM::supportedAudioCodecs):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • rendering/svg/SVGResources.cpp:

(WebCore::clipperFilterMaskerTags):
(WebCore::markerTags):
(WebCore::fillAndStrokeTags):
(WebCore::chainableResourceTags):

  • style/StyleAdjuster.cpp:

(WebCore::Style::hasEffectiveDisplayNoneForDisplayContents):

  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::isSupportedAttribute):

  • svg/SVGElement.cpp:

(WebCore::createAttributeNameToCSSPropertyIDMap):
(WebCore::SVGElement::animatableAttributeForName):
(WebCore::SVGElement::cssPropertyIdForSVGAttributeName):

  • svg/SVGTests.cpp:

(WebCore::SVGTests::addSupportedAttributes):

  • svg/SVGTests.h:
  • svg/SVGUseElement.cpp:

(WebCore::createAllowedElementSet):
(WebCore::isDisallowedElement):

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::isSupportedAttribute):

  • xml/XPathFunctions.cpp:

(WebCore::XPath::createFunctionMap):

  • xml/XPathParser.cpp:

(WebCore::XPath::createAxisNamesMap):

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ObservedDomainsTableSchemaV1Alternate):
(WebKit::expectedUnattributedColumns):
(WebKit::expectedAttributedColumns):
(WebKit::createTableQueries):

  • Platform/IPC/ArgumentCoders.h:
  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::getAppBoundDomainsTesting):

  • Shared/WebPreferencesStore.cpp:

(WebKit::WebPreferencesStore::decode):

  • Shared/WebPreferencesStore.h:
  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess):

  • UIProcess/WebProcessProxy.h:

Source/WTF:

This patch implements RobinHoodHashTable[1]. We don't use it as a default hashtable since it has different performance v.s. memory-saving characteristics,
and this patch's goal is not tackling on making this default. Rather, the goal of this patch is introducing it to non-performance sensitive area quickly
so that we can save memory. RobinHoodHashTable more frequently computes hash value compared to HashTable, so this is not drop-in replacement for the existing
one. But still, this is useful since we know that "while there are many small HashTables and they holds much memory, there are super large HashTables and
they holds almost same amount of memory while they are a few.". This patch's goal is applying this RobinHoodHashTable to these "large, but a few" singleton tables.

RobinHoodHashTable maintains distance-from-initial-bucket (DIB) small by adjusting existing entries when inserting. When inserting, if we found that the
existing entry has less DIB than the current inserting entry's DIB, then we swap entries, and insert the existing entry to the other place. This is giving
some good DIB from rich entry to poor entry (that's why it is called RobinHood Hashing), and making average DIB lower. And this algorithm adds good invariant
that, when looking up an entry, and we found that existing entry has smaller DIB, then we can stop searching in the middle of the chain since we know that
we should swap entries when this happened when inserting. These two tricks maintain HashTable performance even under significantly high load factor: 90% load-factor
just works. 95% load-factor regress adding performance, but still it does not become catastrophic compared to normal open-addressing HashTable.

We introduce RobinHoodHashTable, and adding several kinds of tables based on load-factors.

  1. MemoryCompactLookupOnlyRobinHoodHashSet / HashMap

This has 95% load-factor. This is suitable for sets and maps which is mostly-constant: constructing once, and looking up repeatedly. In WebKit, there are so
many this kind of tables e.g. singleton HashMap for various kinds of things. We can use this super high load-factor table so that we can save memory even while
we are maintains fast HashTable lookup.

  1. MemoryCompactRobinHoodHashSet / HashMap

This has 90% load-factor. It just works, and we can try using it if sets and maps are significantly performance intensive.

  1. FastRobinHoodHashSet / HashMap

This has 75% load-factor. This is still good compared to HashSet and HashMap since they are using 50% load-factor for large sized tables. This has very slightly performance regressed
compared to 50% load-factor large HashSet and HashMap, but if that is not performance intensive (e.g. AtomStringTable is one of the most performance intensive table), this is good.

In this patch, we replace many singleton HashSet / HashMap with RobinHoodHashTable.

[1]: https://www.sebastiansylvan.com/post/robin-hood-hashing-should-be-your-default-hash-table-implementation/

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/Forward.h:
  • wtf/HashMap.h:

(WTF::Y>::swap):
(WTF::Y>::size const):
(WTF::Y>::capacity const):
(WTF::Y>::isEmpty const):
(WTF::Y>::begin):
(WTF::Y>::end):
(WTF::Y>::begin const):
(WTF::Y>::end const):
(WTF::Y>::find):
(WTF::Y>::find const):
(WTF::Y>::contains const):
(WTF::Y>::get const):
(WTF::Y>::inlineGet const):
(WTF::TableTraitsArg>::inlineSet):
(WTF::TableTraitsArg>::inlineAdd):
(WTF::TableTraitsArg>::inlineEnsure):
(WTF::TableTraitsArg>::set):
(WTF::TableTraitsArg>::add):
(WTF::TableTraitsArg>::fastAdd):
(WTF::TableTraitsArg>::ensure):
(WTF::Y>::remove):
(WTF::Y>::removeIf):
(WTF::Y>::clear):
(WTF::Y>::take):
(WTF::Y>::checkConsistency const):
(WTF::Y>::isValidKey):
(WTF::operator==):
(WTF::operator!=):
(WTF::X>::swap): Deleted.
(WTF::X>::size const): Deleted.
(WTF::X>::capacity const): Deleted.
(WTF::X>::isEmpty const): Deleted.
(WTF::X>::begin): Deleted.
(WTF::X>::end): Deleted.
(WTF::X>::begin const): Deleted.
(WTF::X>::end const): Deleted.
(WTF::X>::find): Deleted.
(WTF::X>::find const): Deleted.
(WTF::X>::contains const): Deleted.
(WTF::X>::get const): Deleted.
(WTF::X>::inlineGet const): Deleted.
(WTF::MappedTraitsArg>::inlineSet): Deleted.
(WTF::MappedTraitsArg>::inlineAdd): Deleted.
(WTF::MappedTraitsArg>::inlineEnsure): Deleted.
(WTF::MappedTraitsArg>::set): Deleted.
(WTF::MappedTraitsArg>::add): Deleted.
(WTF::MappedTraitsArg>::fastAdd): Deleted.
(WTF::MappedTraitsArg>::ensure): Deleted.
(WTF::MappedTraits>::get const): Deleted.
(WTF::MappedTraits>::inlineGet const): Deleted.
(WTF::X>::remove): Deleted.
(WTF::X>::removeIf): Deleted.
(WTF::X>::clear): Deleted.
(WTF::MappedTraits>::take): Deleted.
(WTF::X>::take): Deleted.
(WTF::X>::checkConsistency const): Deleted.
(WTF::X>::isValidKey): Deleted.

  • wtf/HashSet.h:

(WTF::W>::swap):
(WTF::W>::size const):
(WTF::W>::capacity const):
(WTF::W>::isEmpty const):
(WTF::W>::begin const):
(WTF::W>::end const):
(WTF::W>::find const):
(WTF::W>::contains const):
(WTF::TableTraits>::find const):
(WTF::TableTraits>::contains const):
(WTF::TableTraits>::ensure):
(WTF::W>::add):
(WTF::W>::addVoid):
(WTF::TableTraits>::add):
(WTF::W>::remove):
(WTF::W>::removeIf):
(WTF::W>::clear):
(WTF::W>::take):
(WTF::W>::takeAny):
(WTF::TableTraits>::remove):
(WTF::TableTraits>::take):
(WTF::W>::isValidValue):
(WTF::= const):
(WTF::W>::checkConsistency const):
(WTF::V>::swap): Deleted.
(WTF::V>::size const): Deleted.
(WTF::V>::capacity const): Deleted.
(WTF::V>::isEmpty const): Deleted.
(WTF::V>::begin const): Deleted.
(WTF::V>::end const): Deleted.
(WTF::V>::find const): Deleted.
(WTF::V>::contains const): Deleted.
(WTF::Traits>::find const): Deleted.
(WTF::Traits>::contains const): Deleted.
(WTF::Traits>::ensure): Deleted.
(WTF::V>::add): Deleted.
(WTF::V>::addVoid): Deleted.
(WTF::Traits>::add): Deleted.
(WTF::V>::remove): Deleted.
(WTF::V>::removeIf): Deleted.
(WTF::V>::clear): Deleted.
(WTF::V>::take): Deleted.
(WTF::V>::takeAny): Deleted.
(WTF::Traits>::remove): Deleted.
(WTF::Traits>::take): Deleted.
(WTF::V>::isValidValue): Deleted.
(WTF::V>::checkConsistency const): Deleted.

  • wtf/HashTable.h:

(WTF::addIterator):
(WTF::removeIterator):
(WTF::invalidateIterators):
(WTF::HashTable::~HashTable):
(WTF::HashTable::random):
(WTF::KeyTraits>::inlineLookup):
(WTF::KeyTraits>::lookupForWriting):
(WTF::KeyTraits>::fullLookupForWriting):
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::add):
(WTF::KeyTraits>::addPassingHashCode):
(WTF::KeyTraits>::removeAndInvalidateWithoutEntryConsistencyCheck):
(WTF::KeyTraits>::removeAndInvalidate):
(WTF::KeyTraits>::clear):
(WTF::KeyTraits>::swap):
(WTF::KeyTraits>::HashTable):
(WTF::HashTable::invalidateIterators): Deleted.
(WTF::KeyTraits>::invalidateIterators): Deleted.

  • wtf/RobinHoodHashMap.h: Added.
  • wtf/RobinHoodHashSet.h: Added.
  • wtf/RobinHoodHashTable.h: Added.

(WTF::RobinHoodHashTable::~RobinHoodHashTable):
(WTF::RobinHoodHashTable::begin):
(WTF::RobinHoodHashTable::end):
(WTF::RobinHoodHashTable::begin const):
(WTF::RobinHoodHashTable::end const):
(WTF::RobinHoodHashTable::random):
(WTF::RobinHoodHashTable::random const):
(WTF::RobinHoodHashTable::size const):
(WTF::RobinHoodHashTable::capacity const):
(WTF::RobinHoodHashTable::isEmpty const):
(WTF::RobinHoodHashTable::reserveInitialCapacity):
(WTF::RobinHoodHashTable::add):
(WTF::RobinHoodHashTable::find):
(WTF::RobinHoodHashTable::find const):
(WTF::RobinHoodHashTable::contains const):
(WTF::RobinHoodHashTable::isEmptyBucket):
(WTF::RobinHoodHashTable::isEmptyOrDeletedBucket):
(WTF::RobinHoodHashTable::lookup):
(WTF::RobinHoodHashTable::checkTableConsistency):
(WTF::RobinHoodHashTable::internalCheckTableConsistency const):
(WTF::RobinHoodHashTable::internalCheckTableConsistencyExceptSize const):
(WTF::RobinHoodHashTable::internalCheckTableConsistencyExceptSize):
(WTF::RobinHoodHashTable::internalCheckTableConsistency):
(WTF::RobinHoodHashTable::shouldExpand):
(WTF::RobinHoodHashTable::computeTableHash):
(WTF::RobinHoodHashTable::shouldExpand const):
(WTF::RobinHoodHashTable::shouldShrink const):
(WTF::RobinHoodHashTable::shrink):
(WTF::RobinHoodHashTable::deleteBucket):
(WTF::RobinHoodHashTable::desiredIndex):
(WTF::RobinHoodHashTable::probeDistance):
(WTF::RobinHoodHashTable::makeIterator):
(WTF::RobinHoodHashTable::makeConstIterator const):
(WTF::RobinHoodHashTable::makeKnownGoodIterator):
(WTF::RobinHoodHashTable::makeKnownGoodConstIterator const):
(WTF::RobinHoodHashTable::checkTableConsistencyExceptSize):
(WTF::RobinHoodHashTable::tableSize const):
(WTF::RobinHoodHashTable::tableSizeMask const):
(WTF::RobinHoodHashTable::keyCount const):
(WTF::RobinHoodHashTable::tableHash const):
(WTF::SizePolicy>::checkKey):
(WTF::SizePolicy>::lookup):
(WTF::SizePolicy>::inlineLookup):
(WTF::SizePolicy>::initializeBucket):
(WTF::SizePolicy>::add):
(WTF::SizePolicy>::maintainProbeDistanceForAdd):
(WTF::SizePolicy>::addPassingHashCode):
(WTF::SizePolicy>::reinsert):
(WTF::SizePolicy>::find):
(WTF::SizePolicy>::find const):
(WTF::SizePolicy>::contains const):
(WTF::SizePolicy>::removeAndInvalidateWithoutEntryConsistencyCheck):
(WTF::SizePolicy>::removeAndInvalidate):
(WTF::SizePolicy>::remove):
(WTF::SizePolicy>::removeWithoutEntryConsistencyCheck):
(WTF::SizePolicy>::allocateTable):
(WTF::SizePolicy>::deallocateTable):
(WTF::SizePolicy>::expand):
(WTF::SizePolicy>::computeBestTableSize):
(WTF::SizePolicy>::shrinkToBestSize):
(WTF::SizePolicy>::rehash):
(WTF::SizePolicy>::clear):
(WTF::SizePolicy>::RobinHoodHashTable):
(WTF::SizePolicy>::swap):
(WTF::=):
(WTF::SizePolicy>::checkTableConsistency const):
(WTF::SizePolicy>::checkTableConsistencyExceptSize const):

  • wtf/text/AtomStringHash.h:
  • wtf/text/AtomStringImpl.cpp:
  • wtf/text/AtomStringTable.cpp:

(WTF::AtomStringTable::~AtomStringTable):

  • wtf/text/AtomStringTable.h:

(WTF::AtomStringTable::table):

  • wtf/text/StringHash.h:

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/DeletedAddressOfOperator.h:
  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::testMovingUsingEnsure):
(TestWebKitAPI::testMovingUsingAdd):

  • TestWebKitAPI/Tests/WTF/HashSet.cpp:

(TestWebKitAPI::generateTestCapacityUpToSize<0>):
(TestWebKitAPI::generateTestCapacityUpToSize):

  • TestWebKitAPI/Tests/WTF/MoveOnly.h:
  • TestWebKitAPI/Tests/WTF/RobinHoodHashMap.cpp: Copied from Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp.

(TestWebKitAPI::TEST):
(TestWebKitAPI::bucketForKey):
(TestWebKitAPI::ZeroHash::hash):
(TestWebKitAPI::ObjectWithRefLogger::ObjectWithRefLogger):
(TestWebKitAPI::testMovingUsingEnsure):
(TestWebKitAPI::testMovingUsingAdd):
(TestWebKitAPI::DerefObserver::ref):
(TestWebKitAPI::DerefObserver::deref):
(TestWebKitAPI::TestObjectWithCustomDestructor::TestObjectWithCustomDestructor):
(TestWebKitAPI::TestObjectWithCustomDestructor::~TestObjectWithCustomDestructor):

  • TestWebKitAPI/Tests/WTF/RobinHoodHashSet.cpp: Copied from Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp.

(TestWebKitAPI::capacityForSize):
(TestWebKitAPI::testInitialCapacity):
(TestWebKitAPI::generateTestCapacityUpToSize<0>):
(TestWebKitAPI::generateTestCapacityUpToSize):
(TestWebKitAPI::TEST):
(TestWebKitAPI::DerefObserver::ref):
(TestWebKitAPI::DerefObserver::deref):

1:19 AM Changeset in webkit [275409] by clopez@igalia.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[CMake][GStremer] Fails to build if OpenH264 is not present
https://bugs.webkit.org/show_bug.cgi?id=224089

Reviewed by Philippe Normand.

  • CMakeLists.txt: Only try to link with OpenH264 when it is found.
1:11 AM Changeset in webkit [275408] by youenn@apple.com
  • 3 edits
    3 adds in trunk

Bail out early if encoded frame is written twice
https://bugs.webkit.org/show_bug.cgi?id=224041

Reviewed by Eric Carlson.

Source/WebCore:

Test: http/wpt/webrtc/write-twice-transform.html

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp:

(WebCore::LibWebRTCRtpTransformBackend::processTransformedFrame):
In case the frame is written twice, the second write is considered as a no-op.

LayoutTests:

  • http/wpt/webrtc/write-twice-transform-expected.txt: Added.
  • http/wpt/webrtc/write-twice-transform.html: Added.
  • http/wpt/webrtc/write-twice-transform.js: Added.

(onrtctransform.process):
(onrtctransform):

1:07 AM Changeset in webkit [275407] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

Pass the main frame URL to requestGeolocationAuthorizationForURL delegate SPI
https://bugs.webkit.org/show_bug.cgi?id=224045

Reviewed by Alex Christensen.

Simplify code path using requestGeolocationAuthorizationForURL SPI.
We store the URL in the GeolocationRequestData since it might change over time given the requests may be processed asynchronously.
Once geolocation access check is done, we then process each request one at a time using a Deque.
We pass the main frame URL instead of the URL of the frame that called the API, following getUserMedia and device motion orientation.
Manually tested in the simulator.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

Remove shouldRequestGeolocationAuthorizationForURL SPI that is not used.

  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest):
Remove unneeded origin creation.

  • UIProcess/ios/WKGeolocationProviderIOS.mm:

(-[WKGeolocationProviderIOS decidePolicyForGeolocationRequestFromOrigin:completionHandler:view:]):
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
(-[WKGeolocationProviderIOS geolocationAuthorizationDenied]):

  • UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm:

(WebKit::decidePolicyForGeolocationRequestFromOrigin):

Note: See TracTimeline for information about the timeline view.