Timeline



Jun 4, 2021:

10:45 PM Changeset in webkit [278523] by Chris Dumez
  • 7 edits in trunk/Source

Optimize a few call sites creating SharedBuffer objects
https://bugs.webkit.org/show_bug.cgi?id=226674

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::transformFrame):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::interceptWithResponse):
(WebCore::InspectorNetworkAgent::interceptRequestWithResponse):

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf):

  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::processResponse):

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadDataInFrame):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadAlternateHTML):
(WebKit::WebPage::loadSimulatedRequestAndResponse):

10:35 PM Changeset in webkit [278522] by Chris Dumez
  • 8 edits in trunk/Source/WebCore

Reduce use of legacy MainThreadTaskQueue in media code
https://bugs.webkit.org/show_bug.cgi?id=226672

Reviewed by Darin Adler.

Reduce use of legacy MainThreadTaskQueue in media code. Simply use callOnMainThread()
for these instead.

  • platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.mm:

(WebCore::TextTrackRepresentationCocoa::boundsChanged):

  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:

(WebCore::CoreAudioCaptureDeviceManager::scheduleUpdateCaptureDevices):

  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
  • platform/mock/MediaPlaybackTargetPickerMock.cpp:

(WebCore::MediaPlaybackTargetPickerMock::showPlaybackTargetPicker):
(WebCore::MediaPlaybackTargetPickerMock::startingMonitoringPlaybackTargets):
(WebCore::MediaPlaybackTargetPickerMock::setState):

  • platform/mock/MediaPlaybackTargetPickerMock.h:
9:47 PM Changeset in webkit [278521] by Chris Dumez
  • 24 edits in trunk

FileSystem::readFromFile() should return data as void*
https://bugs.webkit.org/show_bug.cgi?id=226671

Reviewed by Darin Adler.

FileSystem::readFromFile() should return data as void* instead of char*. This is more flexible and
consistent with FileSystem::writeToFile().

Source/JavaScriptCore:

  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::backendCommands const):

Source/WebCore:

  • platform/FileHandle.cpp:

(WebCore::FileHandle::read):

  • platform/FileStream.cpp:

(WebCore::FileStream::read):

  • platform/FileStream.h:
  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::readSync):
(WebCore::BlobResourceHandle::readDataSync):
(WebCore::BlobResourceHandle::readFileSync):
(WebCore::BlobResourceHandle::notifyReceiveData):

  • platform/network/BlobResourceHandle.h:
  • platform/network/curl/CurlCacheEntry.cpp:

(WebCore::CurlCacheEntry::readCachedData):
(WebCore::CurlCacheEntry::loadResponseHeaders):
(WebCore::CurlCacheEntry::loadFileToBuffer):

  • platform/network/curl/CurlCacheEntry.h:
  • rendering/RenderThemeWin.cpp:

(WebCore::fillBufferWithContentsOfFile):
(WebCore::RenderThemeWin::stringWithContentsOfFile):

Source/WebKit:

  • NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp:

(WebKit::NetworkCache::IOChannel::read):

  • Shared/PersistencyUtils.cpp:

(WebKit::createForFile):

Source/WTF:

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::appendFileContentsToFileHandle):
(WTF::FileSystemImpl::readOrMakeSalt):

  • wtf/FileSystem.h:
  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::readFromFile):

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::readFromFile):

  • wtf/win/FileSystemWin.cpp:

(WTF::FileSystemImpl::readFromFile):

Tools:

  • TestWebKitAPI/Tests/WebCore/FileMonitor.cpp:

(TestWebKitAPI::readContentsOfFile):

9:39 PM Changeset in webkit [278520] by Chris Dumez
  • 9 edits in trunk

Worker.constructor throws an exception when the url param is an empty string
https://bugs.webkit.org/show_bug.cgi?id=226637

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it is passing.

  • web-platform-tests/workers/constructors/Worker/Worker-constructor-expected.txt:

Source/WebCore:

Stop throwing an exception if the Worker constructor gets called with an empty string.
Instead treat it as a relative URL, like Chrome and Firefox do.

No new tests, updated existing ones.

  • workers/AbstractWorker.cpp:

(WebCore::AbstractWorker::resolveURL):

LayoutTests:

Update existing tests to reflect behavior change.

  • fast/workers/worker-constructor-expected.txt:
  • fast/workers/worker-constructor.html:
  • http/tests/workers/worker-invalid-url-expected.txt:
  • http/tests/workers/worker-invalid-url.html:
7:21 PM Changeset in webkit [278519] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. Remove flaky tests that have been constantly passing for the last 4000 revisions.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
7:17 PM Changeset in webkit [278518] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed Windows build fix after r278516.

  • platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:

(WebCore::WebCoreAVCFResourceLoader::dataReceived):

  • platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h:
7:15 PM Changeset in webkit [278517] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

REGRESSION(r275765) When ignoring HSTS, sometimes loads fail
https://bugs.webkit.org/show_bug.cgi?id=226670
<rdar://problem/78066692>

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

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(setIgnoreHSTS):
Use the value passed in to the function instead of always false.

6:16 PM Changeset in webkit [278516] by Chris Dumez
  • 214 edits in trunk

Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer
https://bugs.webkit.org/show_bug.cgi?id=226623

Reviewed by Darin Adler.

Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer. Also have SharedBuffer::data()
return a const uint8_t* instead of const char*. This is our preferred type to store bytes.

Source/WebCore:

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::consumeFormData):

  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::packageFormData):
(WebCore::resolveWithTypeAndData):

  • Modules/highlight/AppHighlight.h:

(WebCore::AppHighlight::encode const):

  • Modules/indexeddb/IDBGetResult.cpp:

(WebCore::IDBGetResult::dataFromBuffer):

  • Modules/indexeddb/server/IDBSerialization.cpp:

(WebCore::serializeIDBKeyData):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::didReceiveRawData):

  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCDataChannelRemoteHandler.cpp:

(WebCore::RTCDataChannelRemoteHandler::didReceiveRawData):
(WebCore::RTCDataChannelRemoteHandler::sendRawData):

  • Modules/mediastream/RTCDataChannelRemoteHandler.h:
  • Modules/mediastream/RTCDataChannelRemoteSource.h:

(WebCore::RTCDataChannelRemoteSource::sendRawData):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::sendRawData):
(WebCore::LibWebRTCDataChannelHandler::OnMessage):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::load):

  • fileapi/Blob.cpp:

(WebCore::Blob::Blob):

  • fileapi/NetworkSendQueue.cpp:

(WebCore::NetworkSendQueue::enqueue):
(WebCore::NetworkSendQueue::processMessages):

  • fileapi/NetworkSendQueue.h:
  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::ResourceData::appendData):
(WebCore::NetworkResourcesData::maybeAddResourceData):

  • inspector/NetworkResourcesData.h:
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didReceiveData):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::decodeBuffer):
(WebCore::InspectorPageAgent::dataContent):

  • inspector/agents/InspectorPageAgent.h:
  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::deliverResourceData):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::maybeCreateArchive):
(WebCore::DocumentLoader::maybeFinishLoadingMultipartContent):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):

  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer):

  • loader/NetscapePlugInStreamLoader.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::didReceiveDataOrBuffer):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveDataOrBuffer):

  • loader/TextResourceDecoder.h:

(WebCore::TextResourceDecoder::decode):
(WebCore::TextResourceDecoder::decodeAndFlush):

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::processNewCueData):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didFinishLoadingManifest):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory):

  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::generateMHTMLData):

  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseNextPart):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::updateBuffer):
(WebCore::CachedRawResource::finishLoading):
(WebCore::CachedRawResource::didAddClient):

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::combineIntoOneSegment const):
(WebCore::SharedBuffer::data const):
(WebCore::SharedBuffer::tryCreateArrayBuffer const):
(WebCore::SharedBuffer::append):
(WebCore::SharedBuffer::DataSegment::data const):
(WebCore::SharedBuffer::DataSegment::size const):
(WebCore::SharedBufferDataView::data const):
(WebCore::utf8Buffer):

  • platform/SharedBuffer.h:
  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::extractKeyidsLocationFromCencInitData):
(WebCore::extractKeyidsFromCencInitData):

  • platform/graphics/Model.h:

(WebCore::Model::encode const):

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

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

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

(WebCore::CDMInstanceThunder::setServerCertificate):
(WebCore::ParsedResponseMessage::ParsedResponseMessage):
(WebCore::CDMInstanceSessionThunder::errorCallback):
(WebCore::CDMInstanceSessionThunder::requestLicense):
(WebCore::CDMInstanceSessionThunder::updateLicense):
(WebCore::CDMInstanceSessionThunder::loadSession):

  • platform/graphics/opentype/OpenTypeTypes.h:

(WebCore::OpenType::TableBase::isValidEnd):

  • platform/mediastream/RTCDataChannelHandler.h:
  • platform/mediastream/RTCDataChannelHandlerClient.h:
  • platform/mediastream/RTCDataChannelRemoteSourceConnection.h:
  • platform/mock/RTCDataChannelHandlerMock.cpp:

(WebCore::RTCDataChannelHandlerMock::sendRawData):

  • platform/mock/RTCDataChannelHandlerMock.h:
  • platform/network/FormData.cpp:

(WebCore::FormData::asSharedBuffer const):

  • platform/network/ResourceHandleClient.cpp:

(WebCore::ResourceHandleClient::didReceiveBuffer):

  • platform/network/cocoa/RangeResponseGenerator.mm:

(WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):

  • platform/text/TextEncoding.h:

(WebCore::TextEncoding::decode const):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::dataChanged):

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::docLoaderFunc):

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::OffsetBuffer::OffsetBuffer):

Source/WebKit:

  • Platform/IPC/SharedBufferCopy.h:

(IPC::SharedBufferCopy::data const):

  • PluginProcess/PluginControllerProxy.cpp:

(WebKit::PluginControllerProxy::streamDidReceiveData):
(WebKit::PluginControllerProxy::manualStreamDidReceiveData):

  • Shared/PersistencyUtils.cpp:

(WebKit::writeToDisk):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::tryConvertToShareableResourceHandle):

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didComplete):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveData):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::createMessageQueue):

  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.cpp:

(WebKit::RTCDataChannelRemoteManager::sendData):
(WebKit::RTCDataChannelRemoteManager::receiveData):
(WebKit::RTCDataChannelRemoteManager::RemoteSourceConnection::didReceiveRawData):

  • WebProcess/Network/webrtc/RTCDataChannelRemoteManager.h:
  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:

(WebKit::parsePostBuffer):

  • WebProcess/Plugins/Netscape/NetscapePlugin.cpp:

(WebKit::NetscapePlugin::streamDidReceiveData):
(WebKit::NetscapePlugin::manualStreamDidReceiveData):

  • WebProcess/Plugins/Netscape/NetscapePlugin.h:
  • WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:

(WebKit::NetscapePluginStream::didReceiveData):
(WebKit::NetscapePluginStream::sendJavaScriptStream):
(WebKit::NetscapePluginStream::deliverData):
(WebKit::NetscapePluginStream::deliverDataToFile):

  • WebProcess/Plugins/Netscape/NetscapePluginStream.h:
  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData):
(WebKit::PDFPlugin::streamDidReceiveData):
(WebKit::PDFPlugin::manualStreamDidReceiveData):

  • WebProcess/Plugins/Plugin.h:
  • WebProcess/Plugins/PluginProxy.cpp:

(WebKit::PluginProxy::streamDidReceiveData):
(WebKit::PluginProxy::manualStreamDidReceiveData):

  • WebProcess/Plugins/PluginProxy.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::Stream::didReceiveData):
(WebKit::PluginView::manualLoadDidReceiveData):

  • WebProcess/Plugins/PluginView.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::committedLoad):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::bufferForType):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/HostedNetscapePluginStream.h:
  • Plugins/Hosted/HostedNetscapePluginStream.mm:

(WebKit::HostedNetscapePluginStream::didReceiveData):

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::evaluateJavaScript):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(-[WebHostedNetscapePluginView pluginView:receivedData:]):

  • Plugins/WebNetscapePluginStream.h:
  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::didReceiveData):

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView pluginView:receivedData:]):
(-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]):

Tools:

  • TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::checkBuffer):

5:57 PM Changeset in webkit [278515] by Wenson Hsieh
  • 6 edits
    2 adds in trunk

[iOS] Meaningful click heuristic should account for media state changes
https://bugs.webkit.org/show_bug.cgi?id=226655
rdar://78330664

Reviewed by Tim Horton and Devin Rousso.

Source/WebKit:

Teach the "meaningful click" heuristic about changes to media element state flags. See comments below for more
details.

Test: fast/events/ios/meaningful-click-when-playing-media.html

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::isPlayingMediaDidChange):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::isPlayingMediaDidChange):

Refactor some logic here so that the WebChromeClient calls into WebPage, which then sends an IPC message to the
UI process and additionally calls into a private method for platform-specific logic (see WebPageIOS.mm).

  • WebProcess/WebPage/WebPage.h:

Replace m_didHandleOrPreventMouseDownOrMouseUpEventDuringSyntheticClick with another flag,
m_currentSyntheticClickMayNotBeMeaningful, that is initially set to true at the beginning of
WebPage::completeSyntheticClick, and consulted after the events have been dispatched to see if anything has
set it to false (currently, this includes only playing media state changes and handled click events by the
page). If the flag is set to false, we then consider the click to have been "meaningful", with respect to the
-_webView:didNotHandleTapAsMeaningfulClickAtPoint: UI delegate method.

(WebKit::WebPage::platformIsPlayingMediaDidChange):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::didHandleOrPreventMouseDownOrMouseUpEvent):
(WebKit::WebPage::platformIsPlayingMediaDidChange):

Make these set m_currentSyntheticClickMayNotBeMeaningful to false.

LayoutTests:

Add a layout test to verify that tapping to play or pause a video triggers "meaningful" synthetic clicks.

  • fast/events/ios/meaningful-click-when-playing-media-expected.txt: Added.
  • fast/events/ios/meaningful-click-when-playing-media.html: Added.
5:24 PM Changeset in webkit [278514] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit

Store MediaPlayer using WeakPtr in MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=224421

Unreviewed. Address Darin's post commit commnet.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::load):
(WebKit::MediaPlayerPrivateRemote::networkStateChanged):
(WebKit::MediaPlayerPrivateRemote::setReadyState):
(WebKit::MediaPlayerPrivateRemote::readyStateChanged):
(WebKit::MediaPlayerPrivateRemote::volumeChanged):
(WebKit::MediaPlayerPrivateRemote::muteChanged):
(WebKit::MediaPlayerPrivateRemote::timeChanged):
(WebKit::MediaPlayerPrivateRemote::durationChanged):
(WebKit::MediaPlayerPrivateRemote::rateChanged):
(WebKit::MediaPlayerPrivateRemote::playbackStateChanged):
(WebKit::MediaPlayerPrivateRemote::engineFailedToLoad):
(WebKit::MediaPlayerPrivateRemote::characteristicChanged):
(WebKit::MediaPlayerPrivateRemote::sizeChanged):
(WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable):
(WebKit::MediaPlayerPrivateRemote::renderingModeChanged):
(WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):
(WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged):
(WebKit::MediaPlayerPrivateRemote::mediaPlayerKeyNeeded):
(WebKit::MediaPlayerPrivateRemote::waitingForKeyChanged):
(WebKit::MediaPlayerPrivateRemote::initializationDataEncountered):
(WebKit::MediaPlayerPrivateRemote::resourceNotSupported):
(WebKit::MediaPlayerPrivateRemote::activeSourceBuffersChanged):
(WebKit::MediaPlayerPrivateRemote::getRawCookies const):

5:22 PM Changeset in webkit [278513] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: cannot see experimental settings when inspecting ServiceWorker
https://bugs.webkit.org/show_bug.cgi?id=226666

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
There are experimental settings that have nothing to do with preview features or CSS. Don't
limit the Experimental pane to only if those things exist.

5:16 PM Changeset in webkit [278512] by Devin Rousso
  • 3 edits
    2 adds in trunk

Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'InspectorBackend.Enum.Page.ResourceType')
https://bugs.webkit.org/show_bug.cgi?id=226664

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Protocol/InspectorBackend.js:

(InspectorBackendClass.prototype.get Enum):
Use the list of all registered domains, not just the active domains, as only commands/events
are able to be filtered by target type.

LayoutTests:

  • inspector/protocol/enum.html: Added.
  • inspector/protocol/enum-expected.txt: Added.
4:57 PM Changeset in webkit [278511] by Devin Rousso
  • 3 edits in trunk/Source/JavaScriptCore

Web Inspector: mark recently added protocol commands/events as page-only
https://bugs.webkit.org/show_bug.cgi?id=226661

Reviewed by Joseph Pecoraro.

  • inspector/protocol/CSS.json:
  • inspector/protocol/Network.json:

These commands are not implemented in ITML. By not specifying "targetTypes": ["page"] it's
implicitly saying that the command/event is supported by ITML since the command/event will
fall back to the domain's "targetTypes", which includes ITML.

4:44 PM Changeset in webkit [278510] by ysuzuki@apple.com
  • 3 edits
    2 adds in trunk

[JSC] Private static method should define privateClassBrandIdentifier in class-scope
https://bugs.webkit.org/show_bug.cgi?id=226656
rdar://78313139

Reviewed by Keith Miller.

JSTests:

  • stress/private-in-error.js: Added.

(shouldThrow):
(x):
(prototype.foo):

  • stress/private-static-method-declaration-error.js: Added.

(shouldThrow):
(prototype.get x):
(prototype.foo.D.a):
(prototype.foo.D.prototype.b):
(prototype.foo.D):
(prototype.foo):

Source/JavaScriptCore:

We accidentally made declaresStaticPrivateMethod always false.
This patch fixes that so that we properly define privateClassBrandIdentifier field in the class-scope if static-private-method is defined.

  • parser/Parser.cpp:

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

3:45 PM Changeset in webkit [278509] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r278431. rdar://problem/78843971

3:45 PM Changeset in webkit [278508] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r278321. rdar://problem/78718570

3:45 PM Changeset in webkit [278507] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r278209. rdar://problem/78595584

3:45 PM Changeset in webkit [278506] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WTF

Cherry-pick r278208. rdar://problem/78595584

3:45 PM Changeset in webkit [278505] by Alan Coon
  • 13 edits in branches/safari-611-branch/Source/bmalloc

Cherry-pick r277898. rdar://problem/78888809

3:45 PM Changeset in webkit [278504] by Alan Coon
  • 1 edit in branches/safari-611-branch/Source/WTF/wtf/cocoa/FileSystemCocoa.mm

Cherry-pick r278048. rdar://problem/78467158

3:45 PM Changeset in webkit [278503] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source

Cherry-pick r277881. rdar://problem/78467158

3:45 PM Changeset in webkit [278502] by Alan Coon
  • 13 edits in branches/safari-611-branch/Source

Cherry-pick r274746. rdar://problem/76366123

3:27 PM Changeset in webkit [278501] by pvollan@apple.com
  • 2 edits in trunk

[AppleWin] JSC build failure
https://bugs.webkit.org/show_bug.cgi?id=226659
<rdar://78844190>

Reviewed by Brent Fulgham.

WTF scripts location is not being correctly identified.

  • Source/cmake/OptionsAppleWin.cmake:
3:17 PM Changeset in webkit [278500] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Flaky crash under UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy() on the bots
https://bugs.webkit.org/show_bug.cgi?id=226653

Reviewed by Eric Carlson.

The SourceProxy destructor was taking care of calling invalidate() on the SharedRingBufferStorage
before destroying the CARingBuffer on the main thread, to avoid having SourceProxy::storageChanged()
called in the middle of destruction. However, the background thread may still be running at this
point and may reconstruct the RingBuffer right after the invalidate call, causing us to crash
because storageChanged() still gets called in the middle on destruction.

To address the issue, we now make sure to stop the rendering thread before we proceed with the
destruction and invalidate the SharedRingBufferStorage's storage change handler.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy):

3:16 PM Changeset in webkit [278499] by dino@apple.com
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/watchlist

Update watchlist to add Ken and myself to ANGLE bugs.

  • Scripts/webkitpy/common/config/watchlist:
2:21 PM Changeset in webkit [278498] by beidson@apple.com
  • 7 edits
    1 delete in trunk

Enforce a quota in window.sessionStorage
rdar://78507096 and https://bugs.webkit.org/show_bug.cgi?id=226337

Reviewed by Chris Dumez.

Source/WebCore:

Covered by change to existing test.

  • page/Page.cpp:

(WebCore::Page::sessionStorage): Make sure the quota for session storage is not "noQuota"

  • page/Settings.yaml: Default to 5mb instead of noQuota to match other browsers.

LayoutTests:

  • platform/ios-wk1/TestExpectations:
  • platform/ios/ios/storage/domstorage/5mb-quota.html: Removed.
  • storage/domstorage/quota-expected.txt:
  • storage/domstorage/quota.html:
2:04 PM Changeset in webkit [278497] by Darin Adler
  • 8 edits in trunk/Source/WebCore

Move from WebCore::SuccessOr to WTF::Expected
https://bugs.webkit.org/show_bug.cgi?id=226614

Reviewed by Sam Weinig.

The upcoming std::expected is designed for cases like the ones we
are using SuccessOr for, using void for the expected type in a case like
this where it's success or failure. Our WTF::Expected is for our use
while waiting for compilers with std::expected. It was straightforward
to port our uses of SuccessOr to instead use Expected.

  • Headers.cmake: Removed SuccessOr.h.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • dom/SuccessOr.h: Emptied out this file for now; delete later.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const): Use
Expected for the return type and call makeUnexpected as needed. Also
updated the check of the result from playbackStateChangePermitted to
call Expected::error instead of SuccessOr::value.
(WebCore::HTMLMediaElement::setReadyState): Use Expected::error
instead of SuccessOr::value, and updated local variable name for
greater clarity. Also fixed one call site that had the success check
backwards: The symptom is that it would never log "Autoplay blocked"
in that case, but otherwise seems harmless.
(WebCore::HTMLMediaElement::play): Ditto.

  • html/HTMLMediaElement.h: Use Expected for the return type of

canTransitionFromAutoplayToPlay.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackStateChangePermitted const): Use
Expected for the return type and call makeUnexpected as needed.

  • html/MediaElementSession.h: Removed include of SuccessOr.h, and

tweaked coding style a bit. Use Expected for the return type of
playbackStateChangePermitted.

1:41 PM Changeset in webkit [278496] by rniwa@webkit.org
  • 6 edits in trunk/Source

Store MediaPlayer using WeakPtr in MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=224421

Reviewed by Eric Carlson.

Source/WebCore:

Made it possible to create a WeakPtr of MediaPlayer.

  • platform/graphics/MediaPlayer.h:

Source/WebKit:

Made MediaPlayerPrivateRemote::m_player a WeakPtr.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
(WebKit::MediaPlayerPrivateRemote::load):
(WebKit::MediaPlayerPrivateRemote::networkStateChanged):
(WebKit::MediaPlayerPrivateRemote::setReadyState):
(WebKit::MediaPlayerPrivateRemote::readyStateChanged):
(WebKit::MediaPlayerPrivateRemote::volumeChanged):
(WebKit::MediaPlayerPrivateRemote::muteChanged):
(WebKit::MediaPlayerPrivateRemote::timeChanged):
(WebKit::MediaPlayerPrivateRemote::durationChanged):
(WebKit::MediaPlayerPrivateRemote::rateChanged):
(WebKit::MediaPlayerPrivateRemote::playbackStateChanged):
(WebKit::MediaPlayerPrivateRemote::engineFailedToLoad):
(WebKit::MediaPlayerPrivateRemote::characteristicChanged):
(WebKit::MediaPlayerPrivateRemote::sizeChanged):
(WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable):
(WebKit::MediaPlayerPrivateRemote::renderingModeChanged):
(WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):
(WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged):
(WebKit::MediaPlayerPrivateRemote::mediaPlayerKeyNeeded):
(WebKit::MediaPlayerPrivateRemote::waitingForKeyChanged):
(WebKit::MediaPlayerPrivateRemote::initializationDataEncountered):
(WebKit::MediaPlayerPrivateRemote::resourceNotSupported):
(WebKit::MediaPlayerPrivateRemote::activeSourceBuffersChanged):
(WebKit::MediaPlayerPrivateRemote::getRawCookies const):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):

1:24 PM Changeset in webkit [278495] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r278000. rdar://problem/78875213

Only create MediaElementSession when necessary
https://bugs.webkit.org/show_bug.cgi?id=226132

Patch by Ian Gilbert <iang@apple.com> on 2021-05-25
Reviewed by Eric Carlson.

Some methods had an unexpected side effect of creating a MediaElementSession.
Modified these to not create one if one does not already exist.

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent): (WebCore::HTMLMediaElement::mediaState const):

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

1:24 PM Changeset in webkit [278494] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r278441. rdar://problem/78875140

Fix thread safety issues in [WKShareSheet presentWithParameters]
https://bugs.webkit.org/show_bug.cgi?id=226611
<rdar://77736001>

Reviewed by Ryosuke Niwa.

The code in [WKShareSheet presentWithParameters] was passing WebCore::RawFile objects to another thread.
This wasn't safe since WebCore::RawFile contains a WTF::String and a SharedBuffer, both of which are not
thread safe. Fix this by creating an isolated copy of the fileName String and converting the SharedBuffer
to a NSData before passing them to the background thread.

Also rewrite the code from ObjC to C++ because I felt it was clearer and less error-prone.

  • UIProcess/Cocoa/WKShareSheet.mm: (appendFilesAsShareableURLs): (-[WKShareSheet presentWithParameters:inRect:completionHandler:]):

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

1:24 PM Changeset in webkit [278493] by Alan Coon
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r277951. rdar://problem/78875422

REGRESSION(r256715): XSLTProcessor does not parse script when transforming to document
https://bugs.webkit.org/show_bug.cgi?id=226087

Reviewed by Darin Adler.

Source/WebCore:

Allow JavaScript if context document is null to match old behavior before r256715.

Test: fast/xsl/xslt-transform-script.html

  • dom/Document.cpp: (WebCore::Document::allowsContentJavaScript const):

LayoutTests:

  • fast/xsl/xslt-transform-script.html: Added.
  • fast/xsl/xslt-transform-script-expected.txt: Added.

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

1:24 PM Changeset in webkit [278492] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r277873. rdar://problem/78875406

[Cocoa] REGRESSION(Sandbox): Font smoothing within Safari doesn't seem to respect AppleFontSmoothing
https://bugs.webkit.org/show_bug.cgi?id=226066
<rdar://problem/72795817>

Reviewed by Per Arne Vollan.

We accidentally blocked access to the relevant defaults database.

It turns out this is untestable. I can't use the actual functionality without actually setting the preference
for the whole user (and all their apps). And, I can't use sandbox_check() to make sure the file is readable
because it's in the user's home directory, so the path to check will be different for every user.

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

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

1:24 PM Changeset in webkit [278491] by Alan Coon
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r277644. rdar://problem/78875252

SHOULD NEVER BE REACHED in FrameSelection::setSelectionWithoutUpdatingAppearance
https://bugs.webkit.org/show_bug.cgi?id=225219

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-18
Reviewed by Ryosuke Niwa.

Source/WebCore:

When FrameSelection::selectFrameElementInParentIfFullySelected sets focus on the parent
frame, that can trigger DOM events, possibly making orphan the newSelection prepared before.
This patch fixes that issue by clearing the selection on that parent frame in such a
situation.

Test: editing/selection/selection-in-iframe-removed-assert.html

  • editing/FrameSelection.cpp: (WebCore::FrameSelection::selectFrameElementInParentIfFullySelected): Check if the newSelection became orphan and if so, clear it.

LayoutTests:

Add a regression test.

  • editing/selection/selection-in-iframe-removed-assert.html: Copied from editing/selection/selection-in-iframe-removed-crash.html, with an additional requestAnimationFrame.
  • editing/selection/selection-in-iframe-removed-assert-expected.txt: Added.

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

1:24 PM Changeset in webkit [278490] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r277536. rdar://problem/78875336

Replace PlatformCAAnimationRemote::KeyframeValue with Variant
https://bugs.webkit.org/show_bug.cgi?id=225474

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

KeyframeValue was effectively a Variant. Replaced the existing class with a WTF::Variant.

No test as this does not change code behavior.

  • Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<RefPtr<WebCore::FilterOperation>>::encode): (IPC::ArgumentCoder<RefPtr<WebCore::FilterOperation>>::decode):
  • Shared/WebCoreArgumentCoders.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: (WebKit::animationValueFromKeyframeValue): (WebKit::operator<<): (WebKit::PlatformCAAnimationRemote::KeyframeValue::encode const): Deleted. (WebKit::PlatformCAAnimationRemote::KeyframeValue::decode): Deleted.

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

1:24 PM Changeset in webkit [278489] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r276514. rdar://problem/78875360

Web Inspector: [Cocoa] WKInspectorResourceURLSchemeHandler needs to serialize cleanup actions
https://bugs.webkit.org/show_bug.cgi?id=224986
<rdar://76768454>

Reviewed by Devin Rousso.

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm: (-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]): Do cleanup on the main queue so that it can be serialized with reads.

(-[WKInspectorResourceURLSchemeHandler webView:stopURLSchemeTask:]):
Ensure that all removals from the map are processed before doing a lookup.

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

1:24 PM Changeset in webkit [278488] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r276359. rdar://problem/78875297

Integrator's note: did some conflict resolution here. Did a partial find-and-replace to update pullSamples as well.

AudioMediaStreamTrackRendererUnit should not have its data zeroed if one track has not enough data
https://bugs.webkit.org/show_bug.cgi?id=224673

Reviewed by Eric Carlson.

AudioMediaStreamTrackRendererUnit may get data from multiple tracks.
If one track has not enough data, AudioSampleDataSource will zero the buffer while it should leave it unchanged.
If all tracks do not have enough data, AudioMediaStreamTrackRendererUnit will have silent output as the first track will actually zero the buffer.

Manually tested.

  • platform/audio/cocoa/AudioSampleDataSource.mm: (WebCore::AudioSampleDataSource::pullSamplesInternal):

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

1:24 PM Changeset in webkit [278487] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r275886. rdar://problem/78874996

StorageArea in LocalStorageNamespace can be abandoned
https://bugs.webkit.org/show_bug.cgi?id=224459

Reviewed by Geoffrey Garen.

Remove StorageArea from LocalStorageNamespace if it has no connection (no web page is using it).

  • NetworkProcess/WebStorage/LocalStorageNamespace.cpp: (WebKit::LocalStorageNamespace::removeStorageArea):
  • NetworkProcess/WebStorage/LocalStorageNamespace.h:
  • NetworkProcess/WebStorage/StorageArea.cpp: (WebKit::StorageArea::removeListener):
  • NetworkProcess/WebStorage/StorageManagerSet.cpp: (WebKit::StorageManagerSet::removeConnection): (WebKit::StorageManagerSet::disconnectFromStorageArea):

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

1:24 PM Changeset in webkit [278486] by Alan Coon
  • 3 edits in branches/safari-611-branch

Cherry-pick r273141. rdar://problem/78875378

Norton Safe Web extension is causing crashes / hangs under [WKRemoteObjectEncoder encodeObject:forKey:]
https://bugs.webkit.org/show_bug.cgi?id=222172

Reviewed by Alex Christensen.

The extension appears to be trying to send a JSValue that is a DOM Node. WebKit makes the following
call to convert it into a NSDictionary:
[[JSValue valueWithJSValueRef:value inContext:[JSContext contextWithJSGlobalContextRef:JSContextGetGlobalContext(context)]] toObject]

JSC very aggressively iterates over all of the properties of the DOM Node and recursively ends up
converting the whole DOM tree with all their properties. This leads to a lot of cycles to as JSC
maintains the JSObject <-> NSObject identity during the conversion (Each time the JSDocument is
serialized, the same NSDictionary* pointer is used to represent it).

The logic introduced in r270559 to detect cycles was flawed because it relied on a NSSet of
NSObject* and [NSSet containsObject:] to detect the cycles. The issue is that [NSSet containsObject:]
doesn't do a simple pointer comparison but instead calls [NSObject isEqual:] which is very
expensive for types like NSDictionary and leads to trouble when the dictionary contains a cycle.
To address this I replaced the NSSet with a WTF::HashSet<NSObject *> so that key lookup ends up
doing a simple pointer comparison.

Even after the previous fix, the extension would still cause massive hangs because it would take
a very long time to try and encode the whole DOM tree with all the properties of each Node (even
without cycles). To address this, we now abort encoding when detecting a cycle instead of encoding
an empty object to break the cycle.

After this change, Safari becomes usable with this extension again. However, there are still much
shorter hangs that occur due to the converting of the JSNode into a JSDictionary via
[JSValue toObject]. We should probably improve this in a follow-up.

Easy way to reproduce the crash / hang:

  1. Install Norton Safe Web & Norton Password Manager extension (may require a subscription)
  2. Make sure the extensions are activated and turned on by clicking on their icons next to the URL bar
  3. Go to https://bugs.webkit.org/attachment.cgi?id=420530&action=edit
  4. Click on the combo box next to "Review" -> Hang / Crash

No new tests, covered by WebKit.RemoteObjectRegistry API test.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm: (-[WKRemoteObjectEncoder init]): (encodeInvocationArguments): (encodeObject):

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

1:24 PM Changeset in webkit [278485] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.7

12:50 PM Changeset in webkit [278484] by Martin Robinson
  • 13 edits in trunk/Source/WebCore

[css-scroll-snap] Snap offsets and active index are duplicated in ScrollController and ScrollableArea
https://bugs.webkit.org/show_bug.cgi?id=226538

Reviewed by Simon Fraser.

Remove duplicate css-scroll-snap state from ScrollableArea. This state is already
stored in ScrollController, so we do not need to store it also in ScrollableArea.
This change also renames a couple methods so that they have clearer and more
consistent names.

No new tests. This should not change behavior.

  • page/FrameView.cpp:

(WebCore::FrameView::performPostLayoutTasks): updateScrollSnapState() is now called
resnapAfterLayout().

  • page/scrolling/AsyncScrollingCoordinator.cpp: snapOffsetInfo() is now called

snapOffsetsInfo().
(WebCore::AsyncScrollingCoordinator::setScrollingNodeScrollableAreaGeometry): Ditto.
(WebCore::AsyncScrollingCoordinator::updateScrollSnapPropertiesWithFrameView): Ditto.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode): Use new method name.

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::updateActiveScrollSnapIndexForOffset): We no longer need to
sync state with Scrollable Area.
(WebCore::ScrollAnimator::setSnapOffsetsInfo): Added this setter which
calls through to ScrollController.
(WebCore::ScrollAnimator::snapOffsetsInfo const): Added this getter which calls through
to ScrollController.
(WebCore::ScrollAnimator::setActiveScrollSnapIndexForAxis): Added this method.

  • platform/ScrollAnimator.h: Update method declarations.
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::allowsVerticalStretching const): Use new method names.
(WebCore::ScrollAnimatorMac::allowsHorizontalStretching const): Ditto.

  • platform/ScrollController.cpp:

(WebCore::ScrollController::setSnapOffsetsInfo): Combined updateScrollSnapState and
updateScrollSnapPoints into this method.
(WebCore::ScrollController::snapOffsetsInfo const): Added this getter.

  • platform/ScrollController.h: Update method declarations.
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::handleWheelEventForScrolling): We no longer need to sync
from the ScrollAnimator.
(WebCore::ScrollableArea::snapOffsetsInfo const): Renamed this getter.
(WebCore::ScrollableArea::setScrollSnapOffsetInfo): This now calls through to
ScrollController.
(WebCore::ScrollableArea::clearSnapOffsets): Ditto.
(WebCore::ScrollableArea::currentHorizontalSnapPointIndex const): Ditto.
(WebCore::ScrollableArea::currentVerticalSnapPointIndex const): Ditto.
(WebCore::ScrollableArea::setCurrentHorizontalSnapPointIndex): Ditto.
(WebCore::ScrollableArea::setCurrentVerticalSnapPointIndex): Ditto.
(WebCore::ScrollableArea::resnapAfterLayout): Renamed this method and moved
setting the ScrollSnapOffsetsInfo to setScrollSnapOffsetInfo.
(WebCore::ScrollableArea::doPostThumbMoveSnapping): Use new methods to access
scroll snap state and return early if we don't have a ScrollAnimator already.
This was done implicitly in the previous implementation.

  • platform/ScrollableArea.h:
  • rendering/RenderLayerScrollableArea.cpp: Update method definitions and

remove members that are no longer used.
(WebCore::RenderLayerScrollableArea::updateScrollInfoAfterLayout): Use new method name.

  • testing/Internals.cpp:

(WebCore::Internals::scrollSnapOffsets): Ditto.

12:34 PM Changeset in webkit [278483] by Chris Dumez
  • 9 edits in trunk/Source/WebCore

Stop using legacy MainThreadTaskQueue in PlatformMediaSessionManager / MediaSessionManagerCocoa
https://bugs.webkit.org/show_bug.cgi?id=226649

Reviewed by Eric Carlson.

Stop using legacy MainThreadTaskQueue in PlatformMediaSessionManager / MediaSessionManagerCocoa.
Media code should be using the HTML event loop whenever possible and can use callOnMainThread()
for global singleton classes that are not associated with a particular document (like
PlatformMediaSessionManager).

Also stop subclassing CanMakeWeakPtr<>. It doesn't make sense since the class is a singleton.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::scheduleUpdateSessionState):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::scheduleSessionStatusUpdate):
(WebCore::MediaSessionManagerCocoa::sessionWillEndPlayback):

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::mediaServerConnectionDied):

12:23 PM Changeset in webkit [278482] by Wenson Hsieh
  • 12 edits in trunk/Source

Remove the unused sourceElementID argument in Document::updateIsPlayingMedia and related code
https://bugs.webkit.org/show_bug.cgi?id=226650

Reviewed by Chris Dumez.

Source/WebCore:

This uint64_t argument is currently not used for anything. It was originally added in r188030 with the purpose
of mapping to HTMLMediaElements via HTMLMediaElement::elementWithID(), but that mechanism was entirely removed
in r267885.

It appears that this code has been superceded by (relatively recent) support for the Media Session API.

No change in behavior.

  • dom/Document.cpp:

(WebCore::Document::willBeRemovedFromFrame):
(WebCore::Document::updateIsPlayingMedia):

  • dom/Document.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::isPlayingMediaDidChange):

  • page/Page.cpp:

(WebCore::Page::updateIsPlayingMedia):

  • page/Page.h:

Source/WebKit:

Remove more unused code. See WebCore/ChangeLog for more details.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::isPlayingMediaDidChange):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
12:11 PM Changeset in webkit [278481] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Port MediaKeySystemAccess & MediaCapabilities to the HTML event loop
https://bugs.webkit.org/show_bug.cgi?id=226646

Reviewed by Eric Carlson.

Port MediaKeySystemAccess & MediaCapabilities to the HTML event loop instead of using
a global Timer. Most of the media code has been ported to the HTML event loop already.

  • Modules/encryptedmedia/MediaKeySystemAccess.cpp:

(WebCore::MediaKeySystemAccess::createMediaKeys):

  • Modules/encryptedmedia/MediaKeySystemAccess.h:
  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):

  • Modules/mediacapabilities/MediaCapabilities.h:
  • Modules/mediacapabilities/MediaCapabilities.idl:
12:03 PM Changeset in webkit [278480] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

DOMFileSystem::listDirectory() fails to protect |this| when going to the background thread
https://bugs.webkit.org/show_bug.cgi?id=226652

Reviewed by Darin Adler.

  • Modules/entriesapi/DOMFileSystem.cpp:

(WebCore::DOMFileSystem::listDirectory):

11:59 AM Changeset in webkit [278479] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Stop using legacy MainThreadTaskQueue in Document::didLogMessage()
https://bugs.webkit.org/show_bug.cgi?id=226645

Reviewed by Darin Adler.

Stop using legacy MainThreadTaskQueue in Document::didLogMessage() and use the HTML
event loop instead.

  • dom/Document.cpp:

(WebCore::Document::didLogMessage):

  • dom/Document.h:
11:52 AM Changeset in webkit [278478] by Antti Koivisto
  • 3 edits
    3 adds in trunk

REGRESSION (maybe r276882): custom properties not available on host on initial paint
https://bugs.webkit.org/show_bug.cgi?id=226574
<rdar://problem/78863643>

Reviewed by Simon Fraser.

Source/WebCore:

We fail to invalidate :host style when switching out of shared resolver after asynchronously
loading a stylesheet into a shadow tree. This happens because the resolver has been cleared and
the invalidation code just bails out if none is present.

Test case by vb@bigdot.de.

Test: fast/shadow-dom/shared-resolver-host-invalidation.html

  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::invalidateHostAndSlottedStyleIfNeeded):

Change the assumption so that if we don't have a resolver we always invalidate the host.
The alternative would be to build the resolver and do this accurately but doing that here
seems bit risky. This should be cheap and rare invalidation in any case.

LayoutTests:

  • fast/shadow-dom/resources/shared-resolver-host-invalidation.css: Added.

(:host,):
(div):

  • fast/shadow-dom/shared-resolver-host-invalidation-expected.html: Added.
  • fast/shadow-dom/shared-resolver-host-invalidation.html: Added.
11:35 AM Changeset in webkit [278477] by achristensen@apple.com
  • 29 edits
    1 delete in trunk

Implement off-by-default experimental feature for PerformanceResourceTiming.transferSize, encodedBodySize, and decodedBodySize
https://bugs.webkit.org/show_bug.cgi?id=226629

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/navigation-timing/nav2_test_attributes_exist-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_attributes_values-expected.txt:
  • web-platform-tests/navigation-timing/secure_connection_start_non_zero.https-expected.txt:
  • web-platform-tests/navigation-timing/test_document_onload-expected.txt:
  • web-platform-tests/resource-timing/TAO-case-insensitive-null-opaque-origin.sub-expected.txt:
  • web-platform-tests/resource-timing/TAO-crossorigin-port.sub-expected.txt:
  • web-platform-tests/resource-timing/TAO-null-opaque-origin.sub-expected.txt:

This apparent regression is actually just uncovering an existing failure.
The test expects the sum of many values to not be equal to zero.
It used to be adding undefined to many 0 values, which returned undefined, which is not equal to zero.
Now it's adding 0's and getting 0 which correctly indicates that we are not exposing timing values where we should.

  • web-platform-tests/resource-timing/cors-preflight.any-expected.txt:
  • web-platform-tests/resource-timing/cors-preflight.any.worker-expected.txt:
  • web-platform-tests/resource-timing/idlharness.any-expected.txt:
  • web-platform-tests/resource-timing/idlharness.any.worker-expected.txt:
  • web-platform-tests/resource-timing/resource-timing-level1.sub-expected.txt:
  • web-platform-tests/resource-timing/resource_connection_reuse-expected.txt:
  • web-platform-tests/resource-timing/resource_connection_reuse.https-expected.txt:
  • web-platform-tests/resource-timing/single-entry-per-resource-expected.txt:
  • web-platform-tests/resource-timing/test_resource_timing.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/resource-timing-cross-origin.https-expected.txt:

Source/WebCore:

The tests for TAO are entangled with the tests for these properties. Having an implementation helps see what is still broken.
Covered by web platform tests.

  • page/PerformanceResourceTiming.cpp:

(WebCore::PerformanceResourceTiming::transferSize const):
(WebCore::PerformanceResourceTiming::encodedBodySize const):
(WebCore::PerformanceResourceTiming::decodedBodySize const):

  • page/PerformanceResourceTiming.h:
  • page/PerformanceResourceTiming.idl:

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

  • performance-api/resource-timing-apis-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/resource-timing/test_resource_timing-expected.txt: Removed.
11:14 AM Changeset in webkit [278476] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Don't emit the NotDouble checks if we're already NotDouble.

Rubber stamped by Saam Barati.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateNotDouble):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::speculateNotDouble):

11:02 AM Changeset in webkit [278475] by achristensen@apple.com
  • 28 edits
    2 adds in trunk

Make attributedBundleIdendifier a property for WKWebViewConfiguration instead of _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=226548
Source/WebKit:

<rdar://78737547>

Reviewed by Brady Eidson.

We have been putting properties to go into the NSURLSessionConfiguration on the _WKWebsiteDataStoreConfiguration.
This has been ok so far, but now we have an application that needs to run networking attributed to different applications
but sharing the data storage in the same process. We now do what we should've done long ago: put these non-storage-related
properties on the WKWebViewConfiguration.

I introduce WebPageNetworkParameters which currently has only one member, but will soon have more.

I made it so that if multiple WKWebViews with the same data store have the same attributedBundleIdendifier, they share an NSURLSession.
Otherwise, they get their own NSURLSession in a different SessionSet.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addWebPageNetworkParameters):
(WebKit::NetworkProcess::removeWebPageNetworkParameters):
(WebKit::NetworkProcess::countNonDefaultSessionSets):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::addWebPageNetworkParameters):
(WebKit::NetworkSession::removeWebPageNetworkParameters):
(WebKit::NetworkSession::countNonDefaultSessionSets const):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

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

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

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::initializeNSURLSessionsInSet):
(WebKit::NetworkSessionCocoa::SessionSet::initializeEphemeralStatelessSessionIfNeeded):
(WebKit::NetworkSessionCocoa::addWebPageNetworkParameters):
(WebKit::NetworkSessionCocoa::removeWebPageNetworkParameters):
(WebKit::NetworkSessionCocoa::countNonDefaultSessionSets const):
(WebKit::NetworkSessionCocoa::attributedBundleIdentifier const): Deleted.
(WebKit::NetworkSessionCocoa::initializeStandardSessionsInSet): Deleted.

  • Shared/WebPageNetworkParameters.cpp: Added.

(WebKit::WebPageNetworkParameters::encode const):
(WebKit::WebPageNetworkParameters::decode):

  • Shared/WebPageNetworkParameters.h: Added.

(WebKit::WebPageNetworkParameters::WebPageNetworkParameters):
(WebKit::WebPageNetworkParameters::isHashTableDeletedValue const):
(WebKit::WebPageNetworkParameters::hash const):
(WebKit::WebPageNetworkParameters::operator== const):
(WebKit::WebPageNetworkParameters::attributedBundleIdentifier const):
(WTF::DefaultHash<WebKit::WebPageNetworkParameters>::hash):
(WTF::DefaultHash<WebKit::WebPageNetworkParameters>::equal):

  • Sources.txt:
  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::setAttributedBundleIdentifier):
(API::PageConfiguration::attributedBundleIdentifier const):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setAttributedBundleIdentifier:]):
(-[WKWebViewConfiguration _attributedBundleIdentifier]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _countNonDefaultSessionSets:]):

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

(-[_WKWebsiteDataStoreConfiguration setAttributedBundleIdentifier:]): Deleted.
(-[_WKWebsiteDataStoreConfiguration attributedBundleIdentifier]): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::initializeWebPage):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::countNonDefaultSessionSets):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::setSourceApplicationSecondaryIdentifier):
(WebKit::WebsiteDataStoreConfiguration::attributedBundleIdentifier const): Deleted.
(WebKit::WebsiteDataStoreConfiguration::setAttributedBundleIdentifier): Deleted.

  • WebKit.xcodeproj/project.pbxproj:

Tools:

Reviewed by Brady Eidson.

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:

(TestWebKitAPI::TEST):

10:58 AM Changeset in webkit [278474] by Devin Rousso
  • 5 edits in trunk/Source/WTF

Add a way to prefix output of WTFReportBacktrace to make log filtering easier
https://bugs.webkit.org/show_bug.cgi?id=226390

Reviewed by Megan Gardner.

Often times while debugging I add WTFLogAlways("<DR> ...") to various places as indicators
that "logic has reached here". This is especially useful when debugging iOS as unlike macOS
there's no console output from run-safari, meaning that I have to use system logging,
which is often a deluge of unrelated information. Having "<DR>" as a prefix makes filtering
through the system logging trivial as I can ignore logs that don't have it. Unfortunately,
WTFReportBacktrace does not have a way to add this prefix, so it becomes much harder to
find in the logs. This patch enables adding a prefix to each line of WTFReportBacktrace
via a new function WTFReportBactraceWithPrefix.

  • wtf/Assertions.h:
  • wtf/Assertions.cpp:

(WTFReportBacktraceWithPrefix): Added.
(WTFPrintBacktraceWithPrefix): Added.

  • wtf/StackTrace.h:

(WTF::StackTrace::StackTrace):

  • wtf/StackTrace.cpp:

(WTF::StackTrace::dump const):

10:46 AM Changeset in webkit [278473] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Placate exception checker validation in objectPrototypeHasOwnProperty.
https://bugs.webkit.org/show_bug.cgi?id=226651
rdar://78861296

Reviewed by Keith Miller.

JSTests:

  • stress/placate-exception-checker-in-objectPrototypeHasOwnProperty.js: Added.

Source/JavaScriptCore:

  • runtime/ObjectPrototype.cpp:

(JSC::objectPrototypeHasOwnProperty):

10:23 AM Changeset in webkit [278472] by Robert Jenner
  • 1 edit
    7 deletes in trunk/LayoutTests

Cleanup unused resources in LayoutTests/storage
https://bugs.webkit.org/show_bug.cgi?id=226226
<rdar://problem/78469934>

Reviewed by Jonathan Bedard.

  • storage/domstorage/localstorage/resources/iframe-events-second.html: Removed.
  • storage/domstorage/localstorage/resources/private-browsing-3.html: Removed.
  • storage/domstorage/localstorage/resources/private-browsing-storage-2.html: Removed.
  • storage/domstorage/sessionstorage/resources/iframe-events-second.html: Removed.
  • storage/indexeddb/modern/resources/workers-disabled.js: Removed.
  • storage/indexeddb/resources/test-data.html: Removed.
  • storage/indexeddb/resources/test-data.txt: Removed.
10:14 AM Changeset in webkit [278471] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Avoid wasteful large allocation in SpeechRecognitionRemoteRealtimeMediaSource::setStorage()
https://bugs.webkit.org/show_bug.cgi?id=226644

Reviewed by Eric Carlson.

Avoid wasteful large allocation in SpeechRecognitionRemoteRealtimeMediaSource::setStorage().
setStorage() was setting m_buffer's size to the same size as the RingBuffer (2*sampleRate),
only to resize it to the size of the rendering quantum (512) later in
SpeechRecognitionRemoteRealtimeMediaSource::remoteAudioSamplesAvailable().

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):

10:12 AM Changeset in webkit [278470] by Alan Coon
  • 1 copy in tags/Safari-612.1.16.3

Tag Safari-612.1.16.3.

10:10 AM Changeset in webkit [278469] by Alan Coon
  • 8 edits in branches/safari-612.1.16-branch/Source

Versioning.

WebKit-7612.1.16.3

10:06 AM Changeset in webkit [278468] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Pass NetworkLoadParameters to NetworkDataTaskCocoa constructor
https://bugs.webkit.org/show_bug.cgi?id=226628

Reviewed by Sam Weinig.

No change in behavior. Just pass a parameters object instead of splitting them into separate parameters.

  • NetworkProcess/NetworkActivityTracker.h:

(WebKit::NetworkActivityTracker::getPlatformObject const):
(WebKit::NetworkActivityTracker::getPlatformObject): Deleted.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::didReceiveResponse):

9:36 AM Changeset in webkit [278467] by mmaxfield@apple.com
  • 2 edits in trunk/Websites/browserbench.org

[MotionMark] Publish r278436 as a part of MotionMark 1.2
https://bugs.webkit.org/show_bug.cgi?id=226626

Reviewed by Simon Fraser.

Controller.filterOutOutliers must pass a compare function to Array.sort()
because it filters an array of numbers.

  • MotionMark1.2/tests/resources/main.js:

(filterOutOutliers):

9:34 AM Changeset in webkit [278466] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebCore

Use references in font loading code instead of pointers which can never be null
https://bugs.webkit.org/show_bug.cgi?id=226622

Reviewed by Chris Dumez.

CSSFontFace::create()'s CSSFontSelector can never be null. This is clear from
observation of all 3 call sites.

No new tests because there is no behavior change.

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::create):

  • css/CSSFontFace.h:
  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::addFontFaceRule):

  • css/FontFace.cpp:

(WebCore::FontFace::FontFace):

9:32 AM Changeset in webkit [278465] by fpizlo@apple.com
  • 12 edits
    2 adds in trunk

DFG should speculate on CompareStrictEq(@x, @x)
https://bugs.webkit.org/show_bug.cgi?id=226621

Reviewed by Mark Lam.

JSTests:

  • microbenchmarks/untyped-stricteq-self.js: Added.

(foo):

  • stress/untyped-stricteq-self-fail.js: Added.

(bar):
(foo):

Source/JavaScriptCore:

Introduces a NotDouble: speculation. We use it to speculate on CompareStrictEq(@x, @x).

  • bytecode/SpeculatedType.h:

(JSC::isNotDoubleSpeculation):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupCompareStrictEqAndSameValue):

  • dfg/DFGNode.h:

(JSC::DFG::Node::shouldSpeculateNotDouble):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::SafeToExecuteEdge::operator()):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateNotDouble):
(JSC::DFG::SpeculativeJIT::speculate):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::checkMayCrashIfInputIsEmpty):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateNotDouble):

9:08 AM Changeset in webkit [278464] by keith_miller@apple.com
  • 7 edits in trunk/JSTests

Fix tests that fail under executable allocation fuzzing
https://bugs.webkit.org/show_bug.cgi?id=226593

Reviewed by Mark Lam.

  • microbenchmarks/memcpy-wasm-large.js:

(typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
(typeof.WebAssembly.string_appeared_here.catch):
(typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.

  • microbenchmarks/memcpy-wasm-medium.js:

(typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
(typeof.WebAssembly.string_appeared_here.catch):
(typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.

  • microbenchmarks/memcpy-wasm-small.js:

(typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
(typeof.WebAssembly.string_appeared_here.catch):
(typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.

  • microbenchmarks/memcpy-wasm.js:

(typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
(typeof.WebAssembly.string_appeared_here.catch):
(typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.

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

(numberOfDFGCompiles):
(bitOr): Deleted.
(bitXor): Deleted.
(bitNot): Deleted.
(bitLShift): Deleted.

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

(numberOfDFGCompiles):
(let.o.valueOf): Deleted.

9:04 AM Changeset in webkit [278463] by rmorisset@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

Drop the FTL(DFG) graph after lowering to B3
https://bugs.webkit.org/show_bug.cgi?id=226556

Reviewed by Phil Pizlo.

The challenge in this patch was dealing with all of the Patchpoints created by FTLLowerDFGToB3: they get a lambda at that time, which they execute at the end of Air, and many of these lambdas were capturing a pointer to some parts of the DFG graph and reading through it when being executed.
In all cases but one it was easily fixed: they were only reading a few bits from a given node, so I just read these bits in FTLLowerDFGToB3, and captured them (by value) instead of the pointer to the node.
The exception was compileCallOrConstructVarargsSpread(): its patchpoint generator was walking through the graph, flattening a tree of PhantomSpread/PhantomNewArrayWithSpread/PhantomNewArrayBuffer/PhantomCreateRest, emitting some code along the way.
We now do this flattening of the tree in FTLLowerDFGToB3, store just enough information to later emit the required code in a vector, and capture that vector in the lambda (through a move capture, which is allowed since C++14). See struct VarargsSpreadArgumentToEmit for the information that we need to store in that vector.

I tested this change by completing a full run of JetStream2 with ASAN.
I also ran the stress tests with "spread" in their name in Debug mode.

  • b3/B3SparseCollection.h:

(JSC::B3::SparseCollection::clearAll):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::freeDFGIRAfterLowering):

  • dfg/DFGGraph.h:
  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC):
(JSC::FTL::DFG::LowerDFGToB3::getPrivateName):
(JSC::FTL::DFG::LowerDFGToB3::compilePrivateBrandAccess):
(JSC::FTL::DFG::LowerDFGToB3::cachedPutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileDelBy):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::VarargsSpreadArgumentToEmit::VarargsSpreadArgumentToEmit):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
(JSC::FTL::DFG::LowerDFGToB3::compileInById):
(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
(JSC::FTL::DFG::LowerDFGToB3::getById):
(JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis):
(JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet):
(JSC::FTL::DFG::LowerDFGToB3::crash):

8:58 AM Changeset in webkit [278462] by Tadeu Zagallo
  • 33 edits
    1 add in trunk

Optimize Function.prototype.toString
https://bugs.webkit.org/show_bug.cgi?id=226418
<rdar://77861846>

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/function-to-string.js: Added.

(f):
(C):
(C.prototype.method1):
(C.prototype.method2):
(test):
(test2):

Source/JavaScriptCore:

Add caching to Function.prototype.toString. This is used heavily in Speedometer2, and repeatedly recomputing a
string which is a constant is costly. We cache the results of toString in all cases except for bound functions.
To make this work for bound functions, we'd need to add a new field they can use for this cache. For other
functions, we cache it on the executable (either NativeExecutable or FunctionExecutable). The reason we can't
do this on the executable for bound functions is that all bound functions share the same executable, but
individual bound functions can have different names. The reason it's valid to cache the results in general is that a
function's name field can't be changed from JS code -- it's non-writable.

This patch also makes Function.prototype.toString an intrinsic in the DFG/FTL. We emit code on the fast path
which reads the cached value if it's present. If not, we call into the slow path, which will compute
the cached value for non bound functions, or compute the result for bound functions.

I added a new microbenchmark that speeds up by >35x:

function-to-string 2197.5952+-30.7118 59.9861+-2.5550 definitely 36.6350x faster

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::getExecutable):
(JSC::DFG::SpeculativeJIT::compileFunctionToString):
(JSC::DFG::SpeculativeJIT::compileGetExecutable):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::getExecutable):
(JSC::FTL::DFG::LowerDFGToB3::compileGetExecutable):
(JSC::FTL::DFG::LowerDFGToB3::compileFunctionToString):

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildrenImpl):
(JSC::FunctionExecutable::toStringSlow):

  • runtime/FunctionExecutable.h:
  • runtime/FunctionExecutableInlines.h:

(JSC::FunctionExecutable::toString):

  • runtime/FunctionPrototype.cpp:

(JSC::FunctionPrototype::addFunctionProperties):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::toString):

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::asStringConcurrently const):

  • runtime/JSStringInlines.h:
  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::toStringSlow):
(JSC::NativeExecutable::visitChildrenImpl):

  • runtime/NativeExecutable.h:
8:48 AM Changeset in webkit [278461] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r278121): Fix build failure due to weak external symbol

Occurs when building coverage+release builds:

ERROR: symbol _DDHighlightCreateWithRectsInVisibleRectWithStyleScaleAndDirection

The soft-linked symbol was originally added in r259276.

  • Configurations/WebCore.unexp:
  • Add _DDHighlightCreateWithRectsInVisibleRectWithStyleScaleAndDirection to the list of unexported symbols.
  • Also sort symbols in the group alphabetically.
8:35 AM Changeset in webkit [278460] by Martin Robinson
  • 2 edits in trunk/Tools

The CMake cache is removed when specifying a build target
https://bugs.webkit.org/show_bug.cgi?id=226642

Reviewed by Jonathan Bedard.

  • Scripts/webkitdirs.pm:

(shouldRemoveCMakeCache): Only remove the CMake cache when arguments
that start with a dash change.

8:32 AM Changeset in webkit [278459] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

[iOS] Long pressing images on 9gag.com fails to present context menus
https://bugs.webkit.org/show_bug.cgi?id=226625
rdar://78136095

Reviewed by Megan Gardner.

Source/WebKit:

Make some small adjustments to context menu logic to allow the context menu to appear when long pressing images
that are inside links (anchor elements) with JavaScript URLs. See below for more details.

Test: fast/events/touch/ios/long-press-on-image-in-javascript-link.html

  • UIProcess/ios/WKActionSheetAssistant.mm:

(isJavaScriptURL):

Pull logic that checks for "javascript" URL schemes into a separate helper function, and use it below.

(-[WKActionSheetAssistant _createSheetWithElementActions:defaultTitle:showLinkTitle:]):
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):

Add _WKElementActionTypeCopy for image sheets, even when the target URL is a JavaScript URL; even if the image
is inside a JavaScript URL, we should be capable of triggering the "Copy" action by copying the image data and
the image URL, rather than the JavaScript URL. The change in WebPage::performActionOnElement below ensures
that we don't end up copying the JavaScript URL.

(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):

Make another minor adjustment to share the imageURL instead of the target URL in the case where the target is a
JavaScript URL.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView continueContextMenuInteraction:]):

Avoid bailing early with continueWithContextMenuConfiguration(nil); in the case where we're long pressing an
image inside a JavaScript link.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::performActionOnElement):

Push the JavaScript URL check in defaultActionsForImageSheet down into WebPage::performActionOnElement, when
copying an image. This tweak allows us to still show the Copy action for images in JavaScript URLs, but just
copy the image and image URL instead of the JavaScript URL.

LayoutTests:

Add a layout test to verify that a context menu is presented when long pressing an image inside a link with a
JavaScript URL as an href.

  • fast/events/touch/ios/long-press-on-image-in-javascript-link-expected.txt: Added.
  • fast/events/touch/ios/long-press-on-image-in-javascript-link.html: Added.
8:03 AM Changeset in webkit [278458] by commit-queue@webkit.org
  • 11 edits in trunk/Source

Fix more GCC warnings
https://bugs.webkit.org/show_bug.cgi?id=226193

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-04
Reviewed by Adrian Perez de Castro.

Source/JavaScriptCore:

Fix -Wreturn-type warnings due to missing RELEASE_ASSERT_NOT_REACHED() where expected.

  • jit/JITPlan.cpp:

(JSC::JITPlan::tier const):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):

Source/WebCore:

Fix -Wunused-parameter warnings. Also, fix a -Wredundant-move warning.

  • platform/animation/TimingFunction.cpp:

(WebCore::TimingFunction::createFromCSSText):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContextCairo::getCTM const):
(WebCore::GraphicsContextCairo::roundToDevicePixels):

  • platform/graphics/x11/PlatformDisplayX11.cpp:

(WebCore::PlatformDisplayX11::supportsGLX const):

Source/WebKit:

Remove redundant WTFMove that's triggering GCC's -Wredundant-move.

  • Platform/IPC/ArgumentCoder.h:

(IPC::ArgumentCoder::decode):

Source/WTF:

Add missing static_cast<void*> required to suppress GCC's -Wclass-memaccess warning when
intentionally not running constructors/destructors. There's already a static_assert to
ensure this is safe, which is better than usual for us.

  • wtf/SmallSet.h:
7:48 AM Changeset in webkit [278457] by Chris Dumez
  • 19 edits
    2 moves in trunk/Source/WebCore

Rename MainThreadGenericEventQueue to EventLoopEventQueue
https://bugs.webkit.org/show_bug.cgi?id=226618

Reviewed by Ryosuke Niwa.

Rename MainThreadGenericEventQueue to EventLoopEventQueue, now that it is based on the HTML
event loop (and not a global Timer).

  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::MediaSessionCoordinator):

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::MediaSource):

  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::SourceBuffer):

  • Modules/mediasource/SourceBuffer.h:
  • Modules/mediasource/SourceBufferList.cpp:

(WebCore::SourceBufferList::SourceBufferList):

  • Modules/mediasource/SourceBufferList.h:
  • Modules/remoteplayback/RemotePlayback.cpp:

(WebCore::RemotePlayback::RemotePlayback):

  • Modules/remoteplayback/RemotePlayback.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventLoopEventQueue.cpp: Renamed from Source/WebCore/dom/GenericEventQueue.cpp.

(WebCore::EventLoopEventQueue::EventLoopEventQueue):
(WebCore::EventLoopEventQueue::enqueueEvent):
(WebCore::EventLoopEventQueue::dispatchOneEvent):
(WebCore::EventLoopEventQueue::close):
(WebCore::EventLoopEventQueue::cancelAllEvents):
(WebCore::EventLoopEventQueue::hasPendingActivity const):
(WebCore::EventLoopEventQueue::hasPendingEventsOfType const):
(WebCore::EventLoopEventQueue::stop):
(WebCore::EventLoopEventQueue::activeDOMObjectName const):
(WebCore::EventLoopEventQueue::create):

  • dom/EventLoopEventQueue.h: Renamed from Source/WebCore/dom/GenericEventQueue.h.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):

  • html/HTMLMediaElement.h:
  • html/track/TrackListBase.cpp:

(WebCore::TrackListBase::TrackListBase):

  • html/track/TrackListBase.h:
7:22 AM Changeset in webkit [278456] by commit-queue@webkit.org
  • 8 edits in trunk

[GTK][WPE] Expose setCORSDisablingPatterns
https://bugs.webkit.org/show_bug.cgi?id=219995

Source/WebKit:

Patch by Jan-Michael Brummer <jan.brummer@tabos.org> on 2021-06-04
Reviewed by Carlos Garcia Campos.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_set_cors_allowlist):

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/docs/wpe-1.0-sections.txt:

Tools:

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-04
Reviewed by Carlos Garcia Campos.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewCORSAllowlist):
(beforeAll):

7:19 AM Changeset in webkit [278455] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Speed up ews status bubble loading speed
https://bugs.webkit.org/show_bug.cgi?id=214821

Reviewed by Jonathan Bedard.

This change does a trade-off between accuracy of queue position vs status-bubble loading time.
This would reduce the calculations needed for queue position computation, but the position
might not be accurate if the queue has a backlog of more than 12 hours (which shouldn't be
the case normally). If the backlog is less than 12 hours, then the queue position will be accurate.

Also, this patch separates the logic of when to hide the status-bubble. Status-bubble will now be hidden
after 7 days of no build. However, if patch is waiting for more than 12 hours, but less than 7 days,
instead of computing the exact queue position, we do not display queue position.

  • CISupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):
(StatusBubble._build_bubble):
(StatusBubble._queue_position):

7:04 AM Changeset in webkit [278454] by Jonathan Bedard
  • 8 edits in trunk/Tools

[run-webkit-tests] Use webkitcorepy's TaskPool
https://bugs.webkit.org/show_bug.cgi?id=226234
<rdar://problem/78471695>

Reviewed by Dewei Zhu.

  • Scripts/run-webkit-tests: Stop using multiprocessing_bootstrap.
  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(setup_shard): Run setup in Worker process.
(handle_started_test): Notify parent process that a test has started.
(run_shard): Run test shard in Worker process.
(handle_finished_test): Notify parent process that a test has finished.
(teardown_shard): Teardown worker process metadata.
(LayoutTestRunner.init): Make printer public.
(LayoutTestRunner.run_tests): Use TaskPool to spawn multiple workers.
(LayoutTestRunner.update_summary_with_result): Renamed from
_update_summary_with_result, strip unused arguments.
(LayoutTestRunner._annotate_results_with_additional_failures): Strip
unused arguments.
(LayoutTestRunner.start_servers): Make printer public.
(LayoutTestRunner.stop_servers): Ditto.
(Worker.setup): Instantiate singleton worker.
(Worker.teardown): Teardown singleton worker.
(Worker.init): Pass port object, remove unused variable.
(Worker.run_tests): Use TaskPool process name.
(Worker.stop): Ditto.
(Worker._kill_driver): Use port options, use TaskPool process name.
(Worker._run_test_with_or_without_timeout): Ditto.
(Worker._clean_up_after_test): Use TaskPool process name.
(Worker._run_test_in_another_thread): Ditto.
(Worker._run_test_in_this_thread): Ditto.
(Worker._run_single_test): Use port options.
(LayoutTestRunner._worker_factory): Deleted.
(LayoutTestRunner._handle_did_spawn_worker): Deleted.
(LayoutTestRunner._update_summary_with_result): Deleted.
(LayoutTestRunner.handle): Deleted.
(LayoutTestRunner._handle_started_test): Deleted.
(LayoutTestRunner._handle_finished_test): Deleted.
(LayoutTestRunner._handle_finished_test_group): Deleted.
(Worker.del): Deleted.
(Worker.start): Deleted.
(Worker.handle): Deleted.
(Worker._run_test): Deleted.
(Worker._finished_test_group): Deleted.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:

(LayoutTestRunnerTests.test_update_summary_with_result): The runner keeps track of it's state.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py: Remove call to main.
  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:

(RunTest.serial_test_basic): Run all tests in the same process.
(RunTest.test_hung_thread): Deleted.

  • Scripts/webkitpy/port/base.py:

(Port.worker_startup_delay_secs): Deleted.

  • Scripts/webkitpy/port/test.py:

(Port.worker_startup_delay_secs): Deleted.

5:04 AM Changeset in webkit [278453] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

Reintroduce logging useful for debugging in AudioSampleDataSource
https://bugs.webkit.org/show_bug.cgi?id=226578

Reviewed by Eric Carlson.

Removed logging was actually useful for debugging audio issues.
Reintroduce it by restrict logging to ensure we do not introduce too much audio glitches by doing so:

  • If we pull samples and do not have enough data, enter more-data-needed mode, and log once that data is missing.
  • If we pull samples and do not have enough data and we are already in more-data-needed mode, do not log anything.
  • If we push samples and are in more-data-needed mode, reset mode to none and log this information.

The mode check happens in two different threads so might be a bit racy but at worst, this reduces accuracy of the logging.

No change of behavior.

  • platform/audio/cocoa/AudioSampleDataSource.h:
  • platform/audio/cocoa/AudioSampleDataSource.mm:

(WebCore::AudioSampleDataSource::pushSamplesInternal):
(WebCore::AudioSampleDataSource::pullSamplesInternal):

4:05 AM Changeset in webkit [278452] by Martin Robinson
  • 4 edits
    2 adds in trunk

[Win] Implement scroll-snap-points on Windows
https://bugs.webkit.org/show_bug.cgi?id=142503
<rdar://problem/20093603>

Reviewed by Simon Fraser.

.:

  • Source/cmake/OptionsWin.cmake: Stop disabling scroll-snap for Apple Win port.

LayoutTests:

  • platform/win/TestExpectations: Unskip scroll-snap tests.
  • platform/win/css3/scroll-snap/scroll-snap-wheel-event-expected.txt: Added. Windows doesn't

seem to support horizontal wheel events.

3:43 AM Changeset in webkit [278451] by Carlos Garcia Campos
  • 2 edits in trunk/Tools

[GTK] MiniBrowser: add support for saving multiple tabs in session state
https://bugs.webkit.org/show_bug.cgi?id=225763

Reviewed by Michael Catanzaro.

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowSaveSession):
(browserWindowTryClose):
(browserWindowFinalize):
(browserWindowDispose):
(browser_window_load_session):

1:03 AM Changeset in webkit [278450] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

[css-flexbox] Sanitize the aspect ratio handling code
https://bugs.webkit.org/show_bug.cgi?id=226324

Reviewed by Javier Fernandez.

Sanitized the code that detects whether aspect ratio should be used to compute sizes. The
useChildAspectRatio() method was removed as it was very misleading, the name was a bad choice
and it was very confusing. A new method childHasComputableAspectRatio() was added. It verifies
whether the item has an aspect ratio (of any type) and whether we could compute it.

Also two calls to detect whether the cross size was definite (or considered definite) were
unified in a single method.

No new tests as there is no change in behaviour.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childHasComputableAspectRatio const): New method which takes the
checks from useChildAspectRatio.
(WebCore::RenderFlexibleBox::childHasComputableAspectRatioAndCrossSizeIsConsideredDefinite):
New method doing 3 different checks.
(WebCore::RenderFlexibleBox::childCrossSizeShouldUseContainerCrossSize const): Removed the aspect
ratio checks which make no sense there.
(WebCore::RenderFlexibleBox::computeInnerFlexBaseSizeForChild): Use the new method.
(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax): Ditto.
(WebCore::RenderFlexibleBox::useChildAspectRatio): Deleted.

  • rendering/RenderFlexibleBox.h:

Jun 3, 2021:

11:35 PM Changeset in webkit [278449] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebKit

Make WebIDBServer use WorkQueue instead of Thread
https://bugs.webkit.org/show_bug.cgi?id=226589

Reviewed by Chris Dumez.

This matches other storage manager classes and makes management of thread lifetime much easier. We used to
destroy WebIDBServer aggressively (when there is no connection or task left) to ensure thread of WebIDBServer
does not stay around idly, and that led us to create new WebIDBServer for new task right after destroying
WebIDBServer and before databases are properly closed in some cases, which can caused issues like database is
locked during new task. With WorkQueue, we don't need to manage the threads, and we can close WebIDBServer
when session is destroyed.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::create):
(WebKit::WebIDBServer::WebIDBServer):
(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::addConnection):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::postTask):
(WebKit::WebIDBServer::postTaskReply):
(WebKit::WebIDBServer::close):
(WebKit::m_closeCallback): Deleted.
(WebKit::WebIDBServer::dispatchToThread): Deleted.
(WebKit::WebIDBServer::tryClose): Deleted.

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

(WebKit::NetworkProcess::didClose):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::createWebIDBServer):

9:16 PM Changeset in webkit [278448] by Jean-Yves Avenard
  • 5 edits in trunk/Source/WebCore

fast/dom/Window/property-access-on-cached-window-after-frame-removed.html (layout-test) may crash
https://bugs.webkit.org/show_bug.cgi?id=226612
rdar://78846264

Reviewed by Eric Carlson.

It is possible under some circumstances for a MediaSession to be constructed
when no page or frame exists (such as when we move in/out bfcache).
The MediaSession constructor incorrectly only created the MediaSessionCoordinatorPrivate
if a Page and Frame existed.
To avoid any ambiguities on when MediaSession::m_coordinator could be set, we
make this member a const Ref<>.
Test is covered by fast/dom/Window/property-access-on-cached-window-after-frame-removed.html

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::MediaSession): Create MediaSessionCoordinatorPrivate in initializer list.
(WebCore::MediaSession::suspend): Remove unnecessary null check
(WebCore::MediaSession::stop): Remove unnecessary null check

  • Modules/mediasession/MediaSession.h: Make m_coordinator a const Ref<>

(WebCore::MediaSession::coordinator const):

  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::create): Remove MediaSessionCoordinatorPrivate argument to constructor.
(WebCore::MediaSessionCoordinator::MediaSessionCoordinator):

  • Modules/mediasession/MediaSessionCoordinator.h:
8:45 PM Changeset in webkit [278447] by msaboff@apple.com
  • 14 edits in trunk/Source/bmalloc

2021-06-03 Michael Saboff <msaboff@apple.com>

Unreviewed, rolling out r278278.
https://bugs.webkit.org/show_bug.cgi?id=226237

Made some JSC mini mode and other tests flakey.

Reverted changeset:

[bmalloc] Make adaptive scavenging more precise
https://bugs.webkit.org/show_bug.cgi?id=226237

  • bmalloc/BPlatform.h:
  • bmalloc/Heap.cpp: (bmalloc::Heap::decommitLargeRange): (bmalloc::Heap::scavenge): (bmalloc::Heap::scavengeToHighWatermark): (bmalloc::Heap::allocateSmallChunk): (bmalloc::Heap::deallocateSmallChunk): (bmalloc::Heap::allocateSmallPage): (bmalloc::Heap::splitAndAllocate): (bmalloc::Heap::allocateLarge): (bmalloc::Heap::tryAllocateLargeChunk): (bmalloc::Heap::shrinkLarge): (bmalloc::Heap::deallocateLarge):
  • bmalloc/Heap.h:
  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h: (bmalloc::passedNumPages>::takeFirstEligible): (bmalloc::passedNumPages>::scavenge): (bmalloc::passedNumPages>::scavengeToHighWatermark):
  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h: (bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark):
  • bmalloc/IsoSharedHeapInlines.h: (bmalloc::IsoSharedHeap::allocateSlow):
  • bmalloc/LargeMap.cpp: (bmalloc::LargeMap::add):
  • bmalloc/LargeRange.h: (bmalloc::LargeRange::LargeRange): (bmalloc::LargeRange::setTotalPhysicalSize): (bmalloc::merge): (bmalloc::LargeRange::split const): (bmalloc::LargeRange::physicalEnd const): Deleted. (bmalloc::LargeRange::setPhysicalEnd): Deleted. (bmalloc::LargeRange::clearPhysicalEnd): Deleted.
  • bmalloc/Scavenger.cpp: (bmalloc::Scavenger::Scavenger): (bmalloc::Scavenger::didStartGrowing): (bmalloc::Scavenger::scheduleIfUnderMemoryPressure): (bmalloc::Scavenger::schedule): (bmalloc::Scavenger::timeSinceLastPartialScavenge): (bmalloc::Scavenger::scavenge): (bmalloc::Scavenger::partialScavenge): (bmalloc::Scavenger::threadRunLoop):
  • bmalloc/Scavenger.h:
  • bmalloc/SmallPage.h:
8:42 PM Changeset in webkit [278446] by Said Abou-Hallawa
  • 2 edits in trunk/Tools

[MotionMark] Controller.filterOutOutliers() sorts the frameLengths array incorrectly
https://bugs.webkit.org/show_bug.cgi?id=226605
<rdar://77350238>

Reviewed by Simon Fraser.

Update MotionMark 1.1 to use the version r278436.

  • Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan:
8:10 PM Changeset in webkit [278445] by Ross Kirsling
  • 54 edits
    2 moves
    3 adds in trunk

[JSC] Implement JIT ICs for InByVal
https://bugs.webkit.org/show_bug.cgi?id=226563

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/in-by-val-int32.js: Added.
  • microbenchmarks/in-by-val-string-index.js: Added.
  • microbenchmarks/in-by-val-symbol.js: Added.

Source/JavaScriptCore:

Until now, InByVal has had few optimizations implemented:
DFG would attempt to convert string index lookups to InById and int32 lookups to HasIndexedProperty,
but there has been no inline caching nor any special handling for symbol lookups.

This has become a more urgent problem now, as #x in obj (i.e. HasPrivateName / HasPrivateBrand)
will need to mimic InByVal's inline caching strategy in order to be deemed performant enough to ship.

This patch thus implements inline caching for InByVal at all JIT tiers.
The result is a night-and-day difference for symbols, a nice boost for string indices, and no change for int32s:

in-by-val-symbol 203.5572+-2.7647 19.1035+-0.7498 definitely 10.6555x faster
in-by-val-string-index 87.0368+-44.7766 45.9971+-32.0007 might be 1.8922x faster
in-by-val-int32 110.9904+-1.7109 ? 111.3431+-1.7558 ?

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/CheckPrivateBrandStatus.cpp:

(JSC::CheckPrivateBrandStatus::singleIdentifier const):

  • bytecode/DeleteByStatus.cpp:

(JSC::DeleteByStatus::singleIdentifier const):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::singleIdentifier const):

  • bytecode/ICStatusMap.h:
  • bytecode/ICStatusUtils.h:

(JSC::singleIdentifierForICStatus):

  • bytecode/InByIdVariant.cpp:

(JSC::InByIdVariant::InByIdVariant):
(JSC::InByIdVariant::attemptToMerge):
(JSC::InByIdVariant::dumpInContext const):

  • bytecode/InByIdVariant.h:

(JSC::InByIdVariant::identifier const):
(JSC::InByIdVariant::overlaps):

  • bytecode/InByStatus.cpp: Renamed from Source/JavaScriptCore/bytecode/InByIdStatus.cpp.

(JSC::InByStatus::appendVariant):
(JSC::InByStatus::shrinkToFit):
(JSC::InByStatus::computeFor):
(JSC::InByStatus::computeForStubInfo):
(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::InByStatus::merge):
(JSC::InByStatus::filter):
(JSC::InByStatus::markIfCheap):
(JSC::InByStatus::finalize):
(JSC::InByStatus::singleIdentifier const):
(JSC::InByStatus::dump const):

  • bytecode/InByStatus.h: Renamed from Source/JavaScriptCore/bytecode/InByIdStatus.h.
  • bytecode/RecordedStatuses.cpp:

(JSC::RecordedStatuses::addInByStatus): Renamed from addInByIdStatus.

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

(JSC::SetPrivateBrandStatus::singleIdentifier const):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

  • bytecode/StructureStubInfo.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::filterICStatus):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleInById):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGClobbersExitState.cpp:

(JSC::DFG::clobbersExitState):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addInByVal):

  • dfg/DFGMayExit.cpp:
  • dfg/DFGNode.h:

(JSC::DFG::Node::hasInByStatus): Renamed from hasInByIdStatus.
(JSC::DFG::Node::inByStatus): Renamed from inByIdStatus.

  • dfg/DFGNodeType.h:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileInByVal):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGVarargsForwardingPhase.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileInBy):
(JSC::FTL::DFG::LowerDFGToB3::compileInById):
(JSC::FTL::DFG::LowerDFGToB3::compileInByVal):

  • jit/ICStats.h:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITInByValGenerator::JITInByValGenerator):
(JSC::JITInByValGenerator::generateFastPath):
(JSC::JITInByValGenerator::finalize):
(JSC::JITInByIdGenerator::JITInByIdGenerator):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITDelByIdGenerator::slowPathJump const):
(JSC::JITInByValGenerator::JITInByValGenerator):
(JSC::JITInByValGenerator::slowPathJump const):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitSlow_op_in_by_val):

  • jit/Repatch.cpp:

(JSC::tryCacheInBy): Renamed from tryCacheInByID.
(JSC::repatchInBy): Renamed from repatchInByID.
(JSC::resetInBy): Renamed from resetInByID.

  • jit/Repatch.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:
  • runtime/CommonSlowPaths.h:
7:20 PM Changeset in webkit [278444] by ddkilzer@apple.com
  • 4 edits in trunk/Tools

Weak external symbols found when building with Release+Coverage configuration
<https://webkit.org/b/226562>
<rdar://problem/78765608>

Reviewed by Jonathan Bedard.

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

(XcodeOptions):

  • Switch to using XcodeCoverageSupportOptions() so make and build-webkit both use the same configuration.

(XcodeCoverageSupportOptions):

  • Remove old Xcode variables from 2008 in favor of passing -xcconfig Tools/coverage/coverage.xcconfig.
  • coverage/coverage.xcconfig:

(OTHER_CPLUSPLUSFLAGS):

  • Remove OTHER_CPLUSPLUSFLAGS since this just caused duplicate command-line switches to be used when compiling C++ sources.
7:03 PM Changeset in webkit [278443] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Crack in hero text on https://www.apple.com/mac-mini/
https://bugs.webkit.org/show_bug.cgi?id=226610
<rdar://71246655>

Reviewed by Simon Fraser.

Source/WebCore:

FillBox::Text's mask rect needs pixel snapping so that we can position/size it properly on non-1x screens.

Test: fast/clip/hidpi-background-clip-with-text-fill-color.html

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:

LayoutTests:

  • fast/clip/hidpi-background-clip-with-text-fill-color-expected.html: Added.
  • fast/clip/hidpi-background-clip-with-text-fill-color.html: Added.
6:53 PM Changeset in webkit [278442] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

stopMakingViewBlankDueToLackOfRenderingUpdate logging shows even if we never made the view blank
https://bugs.webkit.org/show_bug.cgi?id=226616

Reviewed by Tim Horton.

stopMakingViewBlankDueToLackOfRenderingUpdate logging was showing even if we never made the view blank.
This was confusing so this fix makes the logging conditional.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didUpdateRenderingAfterCommittingLoad):
(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):

  • UIProcess/WebPageProxy.h:
6:49 PM Changeset in webkit [278441] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Fix thread safety issues in [WKShareSheet presentWithParameters]
https://bugs.webkit.org/show_bug.cgi?id=226611
<rdar://77736001>

Reviewed by Ryosuke Niwa.

The code in [WKShareSheet presentWithParameters] was passing WebCore::RawFile objects to another thread.
This wasn't safe since WebCore::RawFile contains a WTF::String and a SharedBuffer, both of which are not
thread safe. Fix this by creating an isolated copy of the fileName String and converting the SharedBuffer
to a NSData before passing them to the background thread.

Also rewrite the code from ObjC to C++ because I felt it was clearer and less error-prone.

  • UIProcess/Cocoa/WKShareSheet.mm:

(appendFilesAsShareableURLs):
(-[WKShareSheet presentWithParameters:inRect:completionHandler:]):

6:30 PM Changeset in webkit [278440] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.15

5:43 PM Changeset in webkit [278439] by Jean-Yves Avenard
  • 4 edits in trunk/Source/WebCore

REGRESSION(r278336): fast/dom/Window/property-access-on-cached-window-after-frame-removed.html (layout-test) is a constant crash
https://bugs.webkit.org/show_bug.cgi?id=226570
rdar://78784709

Reviewed by Eric Carlson.

Now that the coordinator attribute is no longer optional following bug 226328, it can
be iterated while in closed state. Check that the MediaSessionCoordinatorPrivate is set.
Fix crash in existing test.
Fly-by fixes: trailing whitespaces and make header declaration conditional.

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

(WebCore::MediaSessionCoordinator::identifier const): Add nullptr check, return empty String if so.

  • Modules/mediasession/MediaSessionCoordinator.idl: Remove trailing whitespace
5:41 PM Changeset in webkit [278438] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Fix an ASSERT in objectPrototypeHasOwnProperty() to account for TerminationException.
https://bugs.webkit.org/show_bug.cgi?id=226609
rdar://78465046

Reviewed by Robin Morisset.

JSTests:

  • stress/termination-exception-in-objectPrototypeHasOwnProperty.js: Added.

Source/JavaScriptCore:

  • runtime/ObjectPrototype.cpp:

(JSC::objectPrototypeHasOwnProperty):

5:35 PM Changeset in webkit [278437] by Devin Rousso
  • 4 edits in trunk/Source/WebCore

[Payment Request] allow additional line items and/or an override total to be specified in ApplePayModifier
https://bugs.webkit.org/show_bug.cgi?id=226597
<rdar://problem/78835065>

Reviewed by Wenson Hsieh.

Instead of merging properties of the first applicable PaymentDetailsModifier (or more
specifically the related ApplePayModifier with only the total line item, add total
and additionalLineItems properties to ApplePayModifier that are ApplePayLineItem.

  • Modules/applepay/paymentrequest/ApplePayModifier.idl:
  • Modules/applepay/paymentrequest/ApplePayModifier.h:

Drive-by: Rename additionalShippingOptions to additionalShippingMethods to emphasize

that the values are ApplePayShippingMethod instead of PaymentShippingOption.

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::computeShippingMethods const):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):

5:31 PM Changeset in webkit [278436] by Said Abou-Hallawa
  • 2 edits in trunk/PerformanceTests

[MotionMark] Controller.filterOutOutliers() sorts the frameLengths array incorrectly
https://bugs.webkit.org/show_bug.cgi?id=226605

Reviewed by Myles C. Maxfield.

Controller.filterOutOutliers must pass a compare function to Array.sort()
because it filters an array of numbers.

  • MotionMark/tests/resources/main.js:

(filterOutOutliers):

5:20 PM Changeset in webkit [278435] by Ruben Turcios
  • 1 copy in tags/Safari-611.3.6.1.5

Tag Safari-611.3.6.1.5.

5:19 PM Changeset in webkit [278434] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] Make $vm's accessor test functions robust against primitive |this|
https://bugs.webkit.org/show_bug.cgi?id=226591

Reviewed by Saam Barati.

JSTests:

  • stress/test-static-accessor-on-primitive.js: Added.

(shouldThrow):

Source/JavaScriptCore:

These functions are testing-purpose, and they are not robust against passing primitive as |this|.
This patch makes them robust so that we throw an error instead of crash.

  • tools/JSDollarVM.cpp:
5:14 PM Changeset in webkit [278433] by Ruben Turcios
  • 2 edits in branches/safari-611.3.6.1-branch/Source/WTF

Cherry-pick r278431. rdar://problem/78843971

Unreviewed build fix after r277881.

Fix warning about unused function.

  • wtf/cocoa/FileSystemCocoa.mm:

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

5:06 PM Changeset in webkit [278432] by Ruben Turcios
  • 8 edits in branches/safari-611.3.6.1-branch/Source

Versioning.

WebKit-7611.3.6.1.5

4:45 PM Changeset in webkit [278431] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed build fix after r277881.

Fix warning about unused function.

  • wtf/cocoa/FileSystemCocoa.mm:
4:44 PM Changeset in webkit [278430] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Add a way to specify origin and destination of app highlight
https://bugs.webkit.org/show_bug.cgi?id=226607

Patch by Matt Mokary <mmokary@apple.com> on 2021-06-03
Reviewed by Megan Gardner.

Expose a method for adding app highlights which allows the caller to specify origin and destination of the new
highlight. Update the existing method, which specifies originatedInApp: true, newGroup: false, to use this new
method.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _addAppHighlight]):
(-[WKWebView _addAppHighlightInNewGroup:originatedInApp:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
4:39 PM Changeset in webkit [278429] by Chris Lord
  • 5 edits in trunk

[WPE] position:sticky content is not correctly offset on async scrolled overflow layers with an RTL vertical scrollbar
https://bugs.webkit.org/show_bug.cgi?id=226327

Reviewed by Darin Adler.

Source/WebCore:

Make sure to respect the origin of sticky positioning nodes'
constraining rect.

No new tests, covered by existing tests.

  • page/scrolling/cocoa/ScrollingTreeStickyNode.mm:

(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

  • page/scrolling/nicosia/ScrollingTreeStickyNode.cpp:

(WebCore::ScrollingTreeStickyNode::computeLayerPosition const):

LayoutTests:

Some sticky-positioning RTL related tests now pass.

  • platform/wpe/TestExpectations:
4:37 PM Changeset in webkit [278428] by Simon Fraser
  • 4 edits
    2 adds in trunk

REGRESSION (Safari 14): Menu items jump around on codelearn.cat
https://bugs.webkit.org/show_bug.cgi?id=226608
<rdar://78636003>

Reviewed by Alan Bujtas.

Source/WebCore:

This site changes overflow style dynamically on a stacking-context layer which
has an existing child compositing layer, and the layer has an offset from its
renderer due to the box-shadow.

When this happens, we need to ensure the child layers get a geometry update,
because the newly created clipping layer changes the offset for the child layers.

Test: compositing/overflow/overflow-change-reposition-descendants.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateAfterLayout):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerStyleChanged):

LayoutTests:

  • compositing/overflow/overflow-change-reposition-descendants-expected.html: Added.
  • compositing/overflow/overflow-change-reposition-descendants.html: Added.
4:21 PM Changeset in webkit [278427] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[MacOS] animations/leak-document-with-css-animation.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226598

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:58 PM Changeset in webkit [278426] by Chris Dumez
  • 21 edits in trunk/Source/WebCore

Drop generic GenericTaskQueue<T> and DeferrableTask<T> now that they are unused
https://bugs.webkit.org/show_bug.cgi?id=226601

Reviewed by Ryosuke Niwa.

Drop generic GenericTaskQueue<T> and DeferrableTask<T> now that they are unused. Rename
GenericTaskQueue<Timer> to MainThreadTaskQueue and DeferrableTask<Timer> to
MainThreadDeferrableTask as they still have some usage.

I used the "MainThread" naming for consistency with the legacy MainThreadEventQueue and
because the implementation relies on a static Timer.

  • Modules/encryptedmedia/MediaKeySystemAccess.h:
  • Modules/mediacapabilities/MediaCapabilities.h:
  • dom/Document.h:
  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::enqueueTaskForDispatcher): Deleted.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::setVolume):
(WebCore::HTMLMediaElement::cancelPendingTasks):
(WebCore::HTMLMediaElement::closeTaskQueues):
(WebCore::HTMLMediaElement::enqueueTaskForDispatcher): Deleted.

  • html/HTMLMediaElement.h:
  • platform/DeferrableTask.h:

(WebCore::MainThreadDeferrableTask::MainThreadDeferrableTask):
(WebCore::DeferrableTask::DeferrableTask): Deleted.
(WebCore::DeferrableTask::scheduleTask): Deleted.

  • platform/GenericTaskQueue.cpp:

(WebCore::MainThreadTaskDispatcher::MainThreadTaskDispatcher):
(WebCore::MainThreadTaskDispatcher::postTask):
(WebCore::MainThreadTaskDispatcher::sharedTimer):
(WebCore::MainThreadTaskDispatcher::sharedTimerFired):
(WebCore::MainThreadTaskDispatcher::pendingDispatchers):
(WebCore::MainThreadTaskDispatcher::dispatchOneTask):
(WebCore::TaskDispatcher<Timer>::TaskDispatcher): Deleted.
(WebCore::TaskDispatcher<Timer>::postTask): Deleted.
(WebCore::TaskDispatcher<Timer>::sharedTimer): Deleted.
(WebCore::TaskDispatcher<Timer>::sharedTimerFired): Deleted.
(WebCore::TaskDispatcher<Timer>::pendingDispatchers): Deleted.
(WebCore::TaskDispatcher<Timer>::dispatchOneTask): Deleted.

  • platform/GenericTaskQueue.h:

(WebCore::MainThreadTaskQueue::MainThreadTaskQueue):
(WebCore::MainThreadTaskQueue::~MainThreadTaskQueue):
(WebCore::TaskDispatcher::TaskDispatcher): Deleted.
(WebCore::TaskDispatcher::postTask): Deleted.
(WebCore::GenericTaskQueueBase::hasPendingTasks const): Deleted.
(WebCore::GenericTaskQueueBase::isClosed const): Deleted.
(WebCore::GenericTaskQueueBase::close): Deleted.
(WebCore::GenericTaskQueueBase::cancelAllTasks): Deleted.
(WebCore::GenericTaskQueueBase::incrementPendingTasks): Deleted.
(WebCore::GenericTaskQueueBase::decrementPendingTasks): Deleted.
(WebCore::GenericTaskQueue::GenericTaskQueue): Deleted.
(WebCore::GenericTaskQueue::~GenericTaskQueue): Deleted.
(WebCore::GenericTaskQueue::enqueueTask): Deleted.

  • platform/RemoteCommandListener.h:
  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.h:

(WebCore::MediaSessionManagerCocoa::taskQueue):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
  • platform/graphics/cocoa/TextTrackRepresentationCocoa.h:
  • platform/graphics/gpu/GPUBuffer.h:
  • platform/graphics/gpu/GPUQueue.h:
  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.h:
  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
  • platform/mock/MediaPlaybackTargetPickerMock.h:
3:44 PM Changeset in webkit [278425] by commit-queue@webkit.org
  • 7 edits in trunk

Unreviewed, reverting r278356.
https://bugs.webkit.org/show_bug.cgi?id=226606

"Breaks jsc tests".

Reverted changeset:

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

3:27 PM Changeset in webkit [278424] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

DFG should eliminate obvious store barriers
https://bugs.webkit.org/show_bug.cgi?id=226604

Reviewed by Mark Lam.

This has a couple changes:

  • PutByOffset doesn't GC! So let's not say that it does.
  • The store barrier clustering phase is no longer called the store barrier fencing phase in dumps.

Small Speedometer2 speed-up. Definite speed-up for Elm.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGStoreBarrierClusteringPhase.cpp:
3:27 PM Changeset in webkit [278423] by Jean-Yves Avenard
  • 7 edits in trunk

Add MediaSessionCoordinator test to ensure that disconnection on the private side is properly handled.
https://bugs.webkit.org/show_bug.cgi?id=226568
rdar://problem/78801408

Reviewed by Eric Carlson.

Source/WebCore:

Make MediaSessionCoordinatorClient::coordinatorStateChanged pure virtual.

  • Modules/mediasession/MediaSessionCoordinatorPrivate.h: Add coordinatorStateChanged method,

will forward state to RemoteMediaSessionCoordinatorProxy::coordinatorStateChanged.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _createMediaSessionCoordinatorForTesting:completionHandler:]): Carry on required
change as coordinatorStateChanged is now pure virtual.
(-[WKMediaSessionCoordinatorHelper coordinatorStateChanged:]):

Tools:

  • TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm:

(-[_WKMockMediaSessionCoordinator sessionStateChanged:]): Add method to signal
change in coordinator state.
(TestWebKitAPI::TEST_F): Add test.

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

[Hardening] Stop storing raw pointers inside WebIDBServer::m_connections
https://bugs.webkit.org/show_bug.cgi?id=226595

Reviewed by Ryosuke Niwa.

Stop storing raw pointers inside WebIDBServer::m_connections and use a WeakHashSet instead.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::addConnection):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::close):
(WebKit::WebIDBServer::tryClose):

  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • Platform/IPC/Connection.h:
2:39 PM Changeset in webkit [278421] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Move protector earlier in NetworkProcessProxy::networkProcessDidTerminate()
https://bugs.webkit.org/show_bug.cgi?id=226594

Reviewed by Geoffrey Garen.

Move protector earlier in NetworkProcessProxy::networkProcessDidTerminate() as it seems unsafe
to do some of the earlier operations before protected |this|.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::networkProcessDidTerminate):

2:34 PM Changeset in webkit [278420] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Stop storing Ref<IPC::Connection> in RTCDataChannelRemoteManagerProxy::m_webProcessConnections
https://bugs.webkit.org/show_bug.cgi?id=226596

Reviewed by Eric Carlson.

Stop storing Ref<IPC::Connection> in RTCDataChannelRemoteManagerProxy::m_webProcessConnections.
Keeping the IPC::Connection alive always carries the chance of leaking if we fail to properly
clear the HashMap. We can simply store an IPC::Connection::UniqueID and use that ID to send the
IPC on the background thread.

  • NetworkProcess/webrtc/RTCDataChannelRemoteManagerProxy.cpp:

(WebKit::RTCDataChannelRemoteManagerProxy::registerConnectionToWebProcess):
(WebKit::RTCDataChannelRemoteManagerProxy::sendData):
(WebKit::RTCDataChannelRemoteManagerProxy::close):
(WebKit::RTCDataChannelRemoteManagerProxy::changeReadyState):
(WebKit::RTCDataChannelRemoteManagerProxy::receiveData):
(WebKit::RTCDataChannelRemoteManagerProxy::detectError):
(WebKit::RTCDataChannelRemoteManagerProxy::bufferedAmountIsDecreasing):

  • NetworkProcess/webrtc/RTCDataChannelRemoteManagerProxy.h:
2:26 PM Changeset in webkit [278419] by Cameron McCormack
  • 10 edits
    28 adds in trunk

Prevent background-attachment:fixed from causing slow scrolling when in a position:fixed layer
https://bugs.webkit.org/show_bug.cgi?id=226399

Reviewed by Simon Fraser.

Source/WebCore:

Tests: scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-1.html

scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-async.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-sync.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-async.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-sync.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-4.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-async.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-sync.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-6.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-7.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-async.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-sync.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-async.html
scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-sync.html

We move responsbility for managing the HasSlowRepaintObjects
synchronous scrolling reason on the root scrolling node from
ScrollingCoordinator to RenderLayerCompositor, which is where it's
handled for all other scrolling nodes.

If a slow repaint object (i.e. a background-attachment:fixed element) is
present in a non-root async scrolling layer, then it continues to add
HasSlowRepaintObjects to the scrolling node's synchronous scrolling
reasons. But we now no longer add HasSlowRepaintObjects to the root
scrolling node's synchronous scrolling reasons if its containing async
scrolling layer "behaves as fixed", i.e. won't move while scrolling the
viewport.

  • page/FrameView.cpp:

(WebCore::FrameView::addSlowRepaintObject): No longer need to inform
the ScrollingCoordinator since the RenderLayerCompositor now handles
HasSlowRepaintObjects synchronous scroling reason updates for the root.
(WebCore::FrameView::removeSlowRepaintObject): Ditto.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::synchronousScrollingReasons const):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::updateSynchronousScrollingReasons):
Preserve the current value of HasSlowRepaintObjects when updating
synchronous scrolling reasons.
(WebCore::ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously const):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText const):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::synchronousScrollingReasons const):
(WebCore::ScrollingCoordinator::hasSynchronousScrollingReasons const):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::propagateSynchronousScrollingReasons):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes):
Take responsibility for managing HasSlowRepaintObjects on the root
scroll tree node. Only add HasSlowRepaintObjects on the root if not
in a fixed position layer.

LayoutTests:

  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe-expected.txt:
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-1-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-1.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-async-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-async.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-sync-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-2-sync.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-async-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-async.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-sync-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-3-sync.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-4-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-4.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-async-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-async.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-sync-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-5-sync.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-6-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-6.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-7-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-7.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-async-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-async.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-sync-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-8-sync.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-async-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-async.html: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-sync-expected.txt: Added.
  • scrollingcoordinator/mac/fixed-backgrounds/fixed-background-slow-scrolling-9-sync.html: Added.
2:00 PM Changeset in webkit [278418] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.16.2

Tag Safari-612.1.16.2.

1:53 PM Changeset in webkit [278417] by mmaxfield@apple.com
  • 3 edits in trunk/PerformanceTests

[MotionMark] Update version number of local development version of the benchmark to match the currently-being-released version
https://bugs.webkit.org/show_bug.cgi?id=226592

Reviewed by Darin Adler.

We are currently in the process of releasing MotionMark 1.2. http://browserbench.org/MotionMark1.2/

  • MotionMark/about.html:
  • MotionMark/resources/strings.js:
12:59 PM Changeset in webkit [278416] by Fujii Hironori
  • 10 edits in trunk/Source

[Win] Remove unused GraphicsContext::shouldIncludeChildWindows()
https://bugs.webkit.org/show_bug.cgi?id=226567

Reviewed by Don Olmstead.

Source/WebCore:

It was added by r40366 (Bug 23623) for Plugins. However, the
plugin support was removed by r278265 (Bug 226410).

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::shouldIncludeChildWindows const): Deleted.

  • platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
  • platform/graphics/cg/GraphicsContextPlatformPrivateCG.h:

(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):

  • platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
  • platform/graphics/win/GraphicsContextWin.cpp:

(WebCore::GraphicsContext::setShouldIncludeChildWindows): Deleted.
(WebCore::GraphicsContext::shouldIncludeChildWindows const): Deleted.

Source/WebKitLegacy/win:

  • WebFrame.cpp:

(WebFrame::paintDocumentRectToContext):
(WebFrame::paintScrollViewRectToContextAtPoint):
(WebFrame::spoolPages):

  • WebView.cpp:

(WebView::updateBackingStore):
(WebView::paint):
(WebView::paintIntoBackingStore):

  • WebView.h: Removed WindowsToPaint.
12:40 PM Changeset in webkit [278415] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Do not recalibrate camera if the settings are the same
https://bugs.webkit.org/show_bug.cgi?id=226585

Reviewed by Eric Carlson.

Make sure to not update the preset if the constraints are equal to the current settings.
Manually tested.

  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::clientUpdatedSizeAndFrameRate):

12:40 PM Changeset in webkit [278414] by Wenson Hsieh
  • 7 edits in trunk/Source/WebKit

[macOS] Image extraction preview panel should automatically close when the web view is unparented
https://bugs.webkit.org/show_bug.cgi?id=226588
rdar://77062762

Reviewed by Tim Horton.

Refactor some logic for presenting the preview panel. See below for more details.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::handleProcessSwapOrExit):
(WebKit::WebViewImpl::viewDidMoveToWindow):

When the web view is removed from the view hierarchy (i.e. when the view is moved to a nil window), call into
closeSharedPreviewPanelIfNecessary to dismiss the shared preview panel if we're currently controlling its
presentation for the purposes of image extraction.

(WebKit::WebViewImpl::beginPreviewPanelControl):
(WebKit::WebViewImpl::endPreviewPanelControl):

Add more plumbing into WebPageProxy to begin and end preview panel control; this allows us to avoid having to
expose a separate method to reset WebPageProxy's m_imageExtractionPreviewController and call it from
WebViewImpl.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

Additionally call into closeSharedPreviewPanelIfNecessary when committing main frame navigation. We also
refactor a bit of logic here so that we fold several pieces of similar "reset" logic into a single if statement.

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

(-[WKImageExtractionPreviewController beginControl:]):
(-[WKImageExtractionPreviewController endControl:]):
(-[WKImageExtractionPreviewController closePanelIfNecessary]):
(-[WKImageExtractionPreviewController isControlling:]):

Move logic for assigning, removing, and checking the QLPreviewPanel's -delegate and -dataSource into helper
methods on WKImageExtractionPreviewController. Doing this allows us to consolidate more of the QuickLookUI-
specific logic inside WKImageExtractionPreviewController and WebPageProxy, but also (and more importantly)
prevents us from having to #import <pal/spi/mac/QuickLookMacSPI.h> inside WebPageProxyMac.mm, which results
in nullability errors when calling into -[NSApplication stopSpeaking:].

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::beginPreviewPanelControl):
(WebKit::WebPageProxy::endPreviewPanelControl):
(WebKit::WebPageProxy::closeSharedPreviewPanelIfNecessary):

12:32 PM Changeset in webkit [278413] by Patrick Angle
  • 3 edits in trunk/Source/JavaScriptCore

Web Inspector: [Cocoa] RemoteInspector won't connect to a new relay if it hasn't yet failed to communicate with a previously connected relay
https://bugs.webkit.org/show_bug.cgi?id=226539

Reviewed by Devin Rousso.

RemoteInspector communicates with a relay daemon running on the same device in order to send updates like new
or removed inspectable targets and receive changes to settings like automatic debugging. The relay daemon then
communicates with a client that connects for debugging. Only one relay daemon should ever be running at a time,
and its lifecycle is managed separately from JavaScriptCore.

RemoteInspector holds a RefPtr to its connection to this relay, and only clears this pointer upon a failure to
communicate over the XPC connection or a known disconnection. However, it is possible, and in some cases likely
(for example the relay restarting from a brief client disconnection and reconnection), that we can be informed
of a newly launched relay being available while still thinking we are connected to the old relay, as we have not
yet sent a message and triggered a failure in the interim period of time.

To correct this we now send a simple message any time setupXPCConnectionIfNeeded is called if we have an
existing RefPtr to a relay connection in order to verify the connection is still functional. We now also retry
to connect to a relay upon failure in order to create a new connection to the current relay.

In order to prevent entering a retry loop where every subsequent retry's failure results in another retry
forever, a flag to retry connecting is set when a call to setupXPCConnectionIfNeeded is made while we already
have a RefPtr to a relay connection. On failure if we are in this special state we will retry once to connect
but subsequent failures will not automatically reattempt a connection.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::stopInternal):

  • Clear the retry connection flag when stopping in an orderly fashion.

(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):

  • Set the retry connection flag and send a simple message if we already have a relay connection in order to make

sure the connection is either still valid or is torn down properly on failure.
(Inspector::RemoteInspector::xpcConnectionFailed):

  • If the retry flag is set, schedule a retry and clear the retry flag.
11:04 AM Changeset in webkit [278412] by Chris Fleizach
  • 2 edits in trunk/Source/WebKit

AX: macOS WebContent can't read prefs from com.apple.Accessibility
https://bugs.webkit.org/show_bug.cgi?id=226528

Reviewed by Per Arne Vollan.

Some accessibility preferences on macOS use libAccessibility.
WebContent should process these on iOS & macOS.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::setPreferenceValue):

10:53 AM Changeset in webkit [278411] by Alan Bujtas
  • 4 edits
    6 adds in trunk

Incorrect text selection when crossing flex item boundary
https://bugs.webkit.org/show_bug.cgi?id=226518
<rdar://59487603>

Reviewed by Simon Fraser.

Source/WebCore:

Let's use the more sophisticated "which child is closer to the hit point" logic in RenderBox for the flex (and grid) content.
The rest of the RenderBlock::positionForPoint is meant to deal with BFC content where block level boxes are positioned in block direction, after each other.

Test: editing/selection/selecting-content-by-overshooting-the-container.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::positionForPoint):

LayoutTests:

  • editing/selection/selecting-content-by-overshooting-the-container-expected.txt: Added.
  • editing/selection/selecting-content-by-overshooting-the-container.html: Added.
10:25 AM Changeset in webkit [278410] by youenn@apple.com
  • 12 edits in trunk

Cherry-pick webrtc fix to correctly handle audio track state in case of renegotiation
https://bugs.webkit.org/show_bug.cgi?id=226577

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/receiver-track-live.https-expected.txt:

Source/ThirdParty/libwebrtc:

Cherry-pick https://webrtc.googlesource.com/src/+/c335b0e63bff56ca0fbfa617dee6a644c85df164%5E%21/.
We need to do small changes to peer_connection.cc given the upstream fix is based on a newer version
which has some code moved from peer_connection.cc to rtp_transmission_manager.cc.

  • Source/webrtc/pc/audio_rtp_receiver.cc:
  • Source/webrtc/pc/audio_rtp_receiver.h:
  • Source/webrtc/pc/peer_connection.cc:
  • Source/webrtc/pc/peer_connection_rtp_unittest.cc:
  • Source/webrtc/pc/remote_audio_source.cc:
  • Source/webrtc/pc/remote_audio_source.h:
  • Source/webrtc/pc/rtp_sender_receiver_unittest.cc:

LayoutTests:

Update test now that we have the correct behavior.

  • webrtc/receiver-track-should-stay-live-even-if-receiver-is-inactive.html:
10:04 AM Changeset in webkit [278409] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

StorageArea should be able to send its IPC directly from the background thread
https://bugs.webkit.org/show_bug.cgi?id=226583

Reviewed by Alex Christensen.

Update StorageArea so that it does its IPC sending straight from the storage thread, instead of
hopping to the main thread to do so.

  • NetworkProcess/WebStorage/StorageArea.cpp:

(WebKit::StorageArea::clear):
(WebKit::StorageArea::dispatchEvents const):

8:25 AM Changeset in webkit [278408] by magomez@igalia.com
  • 2 edits
    1 add in trunk/Tools/buildstream

REGRESSION(r275755): [GStreamer] Crashes on surfaceless i965 platforms
https://bugs.webkit.org/show_bug.cgi?id=226581

Reviewed by Philippe Normand.

Vendor potential fix for https://gitlab.freedesktop.org/mesa/mesa/-/issues/778.

  • elements/sdk/mesa.bst:
  • patches/mesa/0002-i965-Prevent-invalid-framebuffer-usage.patch: Added.
8:23 AM Changeset in webkit [278407] by Antti Koivisto
  • 9 edits
    2 deletes in trunk/Source/WebCore

Remove TrailingFloatsRootInlineBox
https://bugs.webkit.org/show_bug.cgi?id=226579

Reviewed by Sam Weinig.

Replace it with a bit in LegacyRootInlineBox.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/VisibleUnits.cpp:

(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • rendering/LegacyInlineBox.cpp:

(WebCore::LegacyInlineBox::logicalHeight const):

  • rendering/LegacyInlineFlowBox.h:

(WebCore::LegacyInlineFlowBox::LegacyInlineFlowBox):

  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::linkToEndLineIfNeeded):

  • rendering/LegacyRootInlineBox.h:

(WebCore::LegacyRootInlineBox::isForTrailingFloats const):
(WebCore::LegacyRootInlineBox::setIsForTrailingFloats):
(WebCore::LegacyRootInlineBox::isTrailingFloatsRootInlineBox const): Deleted.

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/TrailingFloatsRootInlineBox.cpp: Removed.
  • rendering/TrailingFloatsRootInlineBox.h: Removed.
7:27 AM Changeset in webkit [278406] by magomez@igalia.com
  • 4 edits in trunk/Source/WebCore

[GStreamer] Remove dependency on glvideoflip and videoflip
https://bugs.webkit.org/show_bug.cgi?id=225456

Reviewed by Philippe Normand.

Stop using videoflip and glvideoflip to rotate the video frames inside GStreamer. These perform a copy
of the frame to perform the rotation that we can avoid if we rotate the frames ourselves when painting them.

Covered by existent tests.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(webKitGLVideoSinkConstructed):
(webKitGLVideoSinkGetProperty):
(webkit_gl_video_sink_class_init):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::updateVideoSizeAndOrientationFromCaps):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
6:39 AM Changeset in webkit [278405] by Antti Koivisto
  • 40 edits
    2 moves in trunk/Source/WebCore

Rename InlineFlowBox to LegacyInlineFlowBox
https://bugs.webkit.org/show_bug.cgi?id=226569

Reviewed by Alan Bujtas.

More legacy line layout naming.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/Verification.cpp:

(WebCore::Layout::collectFlowBoxSubtree):
(WebCore::Layout::collectInlineBoxes):

  • layout/formattingContexts/inline/InlineFormattingQuirks.cpp:

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

  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::InlineContentBuilder::computeLineLevelVisualAdjustmentsForRuns const):
(WebCore::LayoutIntegration::InlineContentBuilder::createDisplayLines const):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::EllipsisBox):

  • rendering/EllipsisBox.h:
  • rendering/InlineElementBox.cpp:
  • rendering/InlineElementBox.h:

(WebCore::InlineElementBox::InlineElementBox):

  • rendering/LegacyInlineBox.cpp:

(WebCore::LegacyInlineBox::dirtyLineBoxes):
(WebCore::LegacyInlineBox::nextLeafOnLine const):
(WebCore::LegacyInlineBox::previousLeafOnLine const):

  • rendering/LegacyInlineBox.h:

(WebCore::LegacyInlineBox::parent const):
(WebCore::LegacyInlineBox::setParent):
(WebCore::LegacyInlineBox::LegacyInlineBox):

  • rendering/LegacyInlineFlowBox.cpp: Renamed from Source/WebCore/rendering/InlineFlowBox.cpp.

(WebCore::LegacyInlineFlowBox::~LegacyInlineFlowBox):
(WebCore::LegacyInlineFlowBox::setHasBadChildList):
(WebCore::LegacyInlineFlowBox::getFlowSpacingLogicalWidth):
(WebCore::setHasTextDescendantsOnAncestors):
(WebCore::LegacyInlineFlowBox::addToLine):
(WebCore::LegacyInlineFlowBox::removeChild):
(WebCore::LegacyInlineFlowBox::deleteLine):
(WebCore::LegacyInlineFlowBox::removeLineBoxFromRenderObject):
(WebCore::LegacyInlineFlowBox::extractLine):
(WebCore::LegacyInlineFlowBox::extractLineBoxFromRenderObject):
(WebCore::LegacyInlineFlowBox::attachLine):
(WebCore::LegacyInlineFlowBox::attachLineBoxToRenderObject):
(WebCore::LegacyInlineFlowBox::adjustPosition):
(WebCore::isLastChildForRenderer):
(WebCore::isAncestorAndWithinBlock):
(WebCore::LegacyInlineFlowBox::determineSpacingForFlowBoxes):
(WebCore::LegacyInlineFlowBox::placeBoxesInInlineDirection):
(WebCore::LegacyInlineFlowBox::placeBoxRangeInInlineDirection):
(WebCore::LegacyInlineFlowBox::requiresIdeographicBaseline const):
(WebCore::verticalAlignApplies):
(WebCore::LegacyInlineFlowBox::adjustMaxAscentAndDescent):
(WebCore::LegacyInlineFlowBox::computeLogicalBoxHeights):
(WebCore::LegacyInlineFlowBox::placeBoxesInBlockDirection):
(WebCore::LegacyInlineFlowBox::maxLogicalBottomForTextDecorationLine const):
(WebCore::LegacyInlineFlowBox::minLogicalTopForTextDecorationLine const):
(WebCore::LegacyInlineFlowBox::flipLinesInBlockDirection):
(WebCore::LegacyInlineFlowBox::addBoxShadowVisualOverflow):
(WebCore::LegacyInlineFlowBox::addBorderOutsetVisualOverflow):
(WebCore::LegacyInlineFlowBox::addTextBoxVisualOverflow):
(WebCore::LegacyInlineFlowBox::addOutlineVisualOverflow):
(WebCore::LegacyInlineFlowBox::addReplacedChildOverflow):
(WebCore::LegacyInlineFlowBox::computeOverflow):
(WebCore::LegacyInlineFlowBox::setLayoutOverflow):
(WebCore::LegacyInlineFlowBox::setVisualOverflow):
(WebCore::LegacyInlineFlowBox::setOverflowFromLogicalRects):
(WebCore::LegacyInlineFlowBox::nodeAtPoint):
(WebCore::LegacyInlineFlowBox::paint):
(WebCore::LegacyInlineFlowBox::paintFillLayers):
(WebCore::LegacyInlineFlowBox::boxShadowCanBeAppliedToBackground const):
(WebCore::LegacyInlineFlowBox::paintFillLayer):
(WebCore::LegacyInlineFlowBox::paintBoxShadow):
(WebCore::LegacyInlineFlowBox::constrainToLineTopAndBottomIfNeeded const):
(WebCore::clipRectForNinePieceImageStrip):
(WebCore::LegacyInlineFlowBox::paintBoxDecorations):
(WebCore::LegacyInlineFlowBox::paintMask):
(WebCore::LegacyInlineFlowBox::firstLeafDescendant const):
(WebCore::LegacyInlineFlowBox::lastLeafDescendant const):
(WebCore::LegacyInlineFlowBox::selectionState):
(WebCore::LegacyInlineFlowBox::canAccommodateEllipsis const):
(WebCore::LegacyInlineFlowBox::placeEllipsisBox):
(WebCore::LegacyInlineFlowBox::clearTruncation):
(WebCore::LegacyInlineFlowBox::computeOverAnnotationAdjustment const):
(WebCore::LegacyInlineFlowBox::computeUnderAnnotationAdjustment const):
(WebCore::LegacyInlineFlowBox::collectLeafBoxesInLogicalOrder const):
(WebCore::LegacyInlineFlowBox::computeReplacedAndTextLineTopAndBottom const):
(WebCore::LegacyInlineFlowBox::boxName const):
(WebCore::LegacyInlineFlowBox::outputLineTreeAndMark const):
(WebCore::LegacyInlineFlowBox::checkConsistency const):

  • rendering/LegacyInlineFlowBox.h: Renamed from Source/WebCore/rendering/InlineFlowBox.h.

(WebCore::LegacyInlineFlowBox::LegacyInlineFlowBox):
(WebCore::LegacyInlineFlowBox::renderer const):
(WebCore::LegacyInlineFlowBox::lineStyle const):
(WebCore::LegacyInlineFlowBox::prevLineBox const):
(WebCore::LegacyInlineFlowBox::nextLineBox const):
(WebCore::LegacyInlineFlowBox::setNextLineBox):
(WebCore::LegacyInlineFlowBox::setPreviousLineBox):
(WebCore::LegacyInlineFlowBox::firstChild const):
(WebCore::LegacyInlineFlowBox::lastChild const):
(WebCore::LegacyInlineFlowBox::marginBorderPaddingLogicalLeft const):
(WebCore::LegacyInlineFlowBox::marginBorderPaddingLogicalRight const):
(WebCore::LegacyInlineFlowBox::marginLogicalLeft const):
(WebCore::LegacyInlineFlowBox::marginLogicalRight const):
(WebCore::LegacyInlineFlowBox::borderLogicalLeft const):
(WebCore::LegacyInlineFlowBox::borderLogicalRight const):
(WebCore::LegacyInlineFlowBox::paddingLogicalLeft const):
(WebCore::LegacyInlineFlowBox::paddingLogicalRight const):
(WebCore::LegacyInlineFlowBox::includeLogicalLeftEdge const):
(WebCore::LegacyInlineFlowBox::includeLogicalRightEdge const):
(WebCore::LegacyInlineFlowBox::setEdges):
(WebCore::LegacyInlineFlowBox::beginPlacingBoxRangesInInlineDirection):
(WebCore::LegacyInlineFlowBox::endPlacingBoxRangesInInlineDirection):
(WebCore::LegacyInlineFlowBox::hasTextChildren const):
(WebCore::LegacyInlineFlowBox::hasTextDescendants const):
(WebCore::LegacyInlineFlowBox::hasHardLinebreak const):
(WebCore::LegacyInlineFlowBox::setHasTextChildren):
(WebCore::LegacyInlineFlowBox::setHasTextDescendants):
(WebCore::LegacyInlineFlowBox::layoutOverflowRect const):
(WebCore::LegacyInlineFlowBox::logicalTopLayoutOverflow const):
(WebCore::LegacyInlineFlowBox::logicalBottomLayoutOverflow const):
(WebCore::LegacyInlineFlowBox::logicalLayoutOverflowRect const):
(WebCore::LegacyInlineFlowBox::visualOverflowRect const):
(WebCore::LegacyInlineFlowBox::logicalLeftVisualOverflow const):
(WebCore::LegacyInlineFlowBox::logicalRightVisualOverflow const):
(WebCore::LegacyInlineFlowBox::logicalTopVisualOverflow const):
(WebCore::LegacyInlineFlowBox::logicalBottomVisualOverflow const):
(WebCore::LegacyInlineFlowBox::logicalVisualOverflowRect const):
(WebCore::LegacyInlineFlowBox::frameRectIncludingLineHeight const):
(WebCore::LegacyInlineFlowBox::logicalFrameRectIncludingLineHeight const):
(WebCore::LegacyInlineFlowBox::descendantsHaveSameLineHeightAndBaseline const):
(WebCore::LegacyInlineFlowBox::clearDescendantsHaveSameLineHeightAndBaseline):
(WebCore::LegacyInlineFlowBox::checkConsistency const):
(WebCore::LegacyInlineFlowBox::setHasBadChildList):

  • rendering/LegacyLineLayout.cpp:

(WebCore::parentIsConstructedOrHaveNext):
(WebCore::LegacyLineLayout::createLineBoxes):
(WebCore::LegacyLineLayout::constructLine):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForSegment):

  • rendering/LegacyLineLayout.h:
  • rendering/LegacyRootInlineBox.cpp:

(WebCore::LegacyRootInlineBox::LegacyRootInlineBox):
(WebCore::LegacyRootInlineBox::clearTruncation):
(WebCore::LegacyRootInlineBox::lineCanAccommodateEllipsis):
(WebCore::LegacyRootInlineBox::placeEllipsisBox):
(WebCore::LegacyRootInlineBox::paint):
(WebCore::LegacyRootInlineBox::nodeAtPoint):
(WebCore::LegacyRootInlineBox::adjustPosition):
(WebCore::LegacyRootInlineBox::includeFontForBox const):
(WebCore::LegacyRootInlineBox::includeGlyphsForBox const):
(WebCore::LegacyRootInlineBox::includeInitialLetterForBox const):

  • rendering/LegacyRootInlineBox.h:

(WebCore::LegacyRootInlineBox::logicalTopVisualOverflow const):
(WebCore::LegacyRootInlineBox::logicalBottomVisualOverflow const):
(WebCore::LegacyRootInlineBox::logicalTopLayoutOverflow const):
(WebCore::LegacyRootInlineBox::logicalBottomLayoutOverflow const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineBlockBaseline const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::containingBlockLogicalWidthForPositioned const):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned const):
(WebCore::RenderBox::computePositionedLogicalWidthUsing const):
(WebCore::RenderBox::computePositionedLogicalWidthReplaced const):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::getBackgroundRoundedRect const):
(WebCore::RenderBoxModelObject::backgroundRoundedRectAdjustedForBleedAvoidance const):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::boxShadowShouldBeAppliedToBackground const):

  • rendering/RenderImage.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::generateLineBoxRects const):
(WebCore::RenderInline::generateCulledLineBoxRects const):
(WebCore::RenderInline::linesBoundingBox const):
(WebCore::RenderInline::linesVisualOverflowBoundingBox const):
(WebCore::RenderInline::linesVisualOverflowBoundingBoxInFragment const):
(WebCore::RenderInline::dirtyLineBoxes):
(WebCore::RenderInline::createInlineFlowBox):
(WebCore::RenderInline::createAndAppendInlineFlowBox):
(WebCore::RenderInline::paintOutline):

  • rendering/RenderInline.h:

(WebCore::RenderInline::firstLineBox const):
(WebCore::RenderInline::lastLineBox const):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::appendLineBox):
(WebCore::RenderLineBoxList::deleteLineBoxTree):
(WebCore::RenderLineBoxList::extractLineBox):
(WebCore::RenderLineBoxList::attachLineBox):
(WebCore::RenderLineBoxList::removeLineBox):
(WebCore::RenderLineBoxList::deleteLineBoxes):
(WebCore::RenderLineBoxList::dirtyLineBoxes):
(WebCore::RenderLineBoxList::lineIntersectsDirtyRect const):
(WebCore::RenderLineBoxList::paint const):
(WebCore::RenderLineBoxList::hitTest const):
(WebCore::RenderLineBoxList::checkConsistency const):

  • rendering/RenderLineBoxList.h:

(WebCore::RenderLineBoxList::firstLineBox const):
(WebCore::RenderLineBoxList::lastLineBox const):

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

(WebCore::RenderTableCell::boxShadowShouldBeAppliedToBackground const):

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

(WebCore::RenderVTTCue::initializeLayoutParameters):
(WebCore::RenderVTTCue::shouldSwitchDirection const):
(WebCore::RenderVTTCue::repositionCueSnapToLinesSet):
(WebCore::RenderVTTCue::repositionGenericCue):

  • rendering/RenderVTTCue.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::createInlineFlowBox):
(WebCore::RenderSVGInline::absoluteQuads const):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/SVGInlineFlowBox.h:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::findRendererDefininingTextDecoration):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::layoutCharactersInTextBoxes):
(WebCore::SVGRootInlineBox::layoutChildBoxes):

  • rendering/svg/SVGRootInlineBox.h:
  • rendering/svg/SVGTextQuery.cpp:

(WebCore::flowBoxForRenderer):
(WebCore::SVGTextQuery::collectTextBoxesInFlowBox):

  • rendering/svg/SVGTextQuery.h:
6:10 AM Changeset in webkit [278404] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/Source/WTF

REGRESSION(r277744): Broke build on s390x mainframes
https://bugs.webkit.org/show_bug.cgi?id=226497

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-03
Reviewed by Darin Adler.

The problem is we have a template defined in a C++ source file, used by multiple source
files. This is not valid C++, so let's split the templates defined in StringBuilder.cpp out
into a new StringBuilderInternals.h that we can #include in both StringBuilder.cpp and
StringBuilderJSON.cpp.

Ideally we would move the template defined in StringBuilderJSON.cpp as well, and then
eliminate StringBuilderJSON.cpp since there would only be one function left. But that file
has an MPL license. It's easier to leave it be to keep the license situation simpler.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/text/StringBuilder.cpp:

(WTF::StringBuilder::expandedCapacity):
(WTF::expandedCapacity): Deleted.
(WTF::StringBuilder::allocateBuffer): Deleted.
(WTF::StringBuilder::extendBufferForAppending): Deleted.
(WTF::StringBuilder::extendBufferForAppendingSlowCase): Deleted.

  • wtf/text/StringBuilder.h:
  • wtf/text/StringBuilderInternals.h: Added.

(WTF::StringBuilder::allocateBuffer):
(WTF::StringBuilder::reallocateBuffer):
(WTF::StringBuilder::extendBufferForAppending):
(WTF::StringBuilder::extendBufferForAppendingSlowCase):

  • wtf/text/StringBuilderJSON.cpp:
6:02 AM Changeset in webkit [278403] by Alan Bujtas
  • 8 edits
    2 adds in trunk

[LFC][TFC] Use the fixed table height value to resolve percent column height values
https://bugs.webkit.org/show_bug.cgi?id=226566

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/table-with-percent-columns-simple.html

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraSpace):

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::verticalSpaceForCellContent const):

  • layout/formattingContexts/table/TableFormattingGeometry.h:

LayoutTests:

  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing-expected.html:
  • fast/layoutformattingcontext/table-with-percent-columns-and-spacing.html:
  • fast/layoutformattingcontext/table-with-percent-columns-simple-expected.html: Added.
  • fast/layoutformattingcontext/table-with-percent-columns-simple.html: Added.
5:49 AM Changeset in webkit [278402] by Carlos Garcia Campos
  • 4 edits in trunk

[GLIB] imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html is failing since r277493
https://bugs.webkit.org/show_bug.cgi?id=225904

Reviewed by Michael Catanzaro.

Source/WebKit:

Set secureConnectionStart to WebCore::reusedTLSConnectionSentinel in case of reused TLS connection.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::didStartRequest):

LayoutTests:

  • platform/glib/TestExpectations:
1:00 AM Changeset in webkit [278401] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Update Danish translation for WebkitGTK
https://bugs.webkit.org/show_bug.cgi?id=226565

Rubber-stamped by Carlos Garcia Campos.

  • da.po:
12:59 AM Changeset in webkit [278400] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Updated Swedish translation
https://bugs.webkit.org/show_bug.cgi?id=226558

Rubber-stamped by Carlos Garcia Campos.

  • sv.po:
12:57 AM Changeset in webkit [278399] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK] [l10n] Updated Ukrainian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=226419

Rubber-stamped by Carlos Garcia Campos.

  • uk.po:
12:09 AM Changeset in webkit [278398] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in HTMLConverter::_addLinkForElement()
https://bugs.webkit.org/show_bug.cgi?id=226398

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-06-03
Reviewed by Ryosuke Niwa.

Source/WebCore:

While traversing a node, exit an element with a startIndex
that is always inside the bounds of the attribute string.

Test: editing/pasteboard/select-all-link-cut.html

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_traverseNode):

LayoutTests:

Add a test for this crasher.

  • editing/pasteboard/select-all-link-cut-expected.txt: Added.
  • editing/pasteboard/select-all-link-cut.html: Added.

Jun 2, 2021:

11:50 PM Changeset in webkit [278397] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Make EndTransparancyLayer a potential no-op
https://bugs.webkit.org/show_bug.cgi?id=226523

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

Make EndTransparancyLayer a no-op if there is no
current transparency layer in place.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::EndTransparencyLayer::apply const):

11:26 PM Changeset in webkit [278396] by commit-queue@webkit.org
  • 12 edits in trunk

Split FillInlinePath/StrokeInlinePath
https://bugs.webkit.org/show_bug.cgi?id=225687

Patch by Rob Buis <rbuis@igalia.com> on 2021-06-02
Reviewed by Wenson Hsieh.

Source/WebCore:

Use specialized display list item types instead of
a Variant for FillInlinePath/StrokeInlinePath.

  • 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::FillLine::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::FillArc::apply const):
(WebCore::DisplayList::FillQuadCurve::apply const):
(WebCore::DisplayList::FillBezierCurve::apply const):
(WebCore::DisplayList::StrokeArc::localBounds const):
(WebCore::DisplayList::StrokeArc::apply const):
(WebCore::DisplayList::StrokeQuadCurve::localBounds const):
(WebCore::DisplayList::StrokeQuadCurve::apply const):
(WebCore::DisplayList::StrokeBezierCurve::localBounds const):
(WebCore::DisplayList::StrokeBezierCurve::apply const):
(WebCore::DisplayList::FillInlinePath::apply const): Deleted.
(WebCore::DisplayList::StrokeInlinePath::localBounds const): Deleted.
(WebCore::DisplayList::StrokeInlinePath::apply const): Deleted.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::FillLine::FillLine):
(WebCore::DisplayList::FillLine::path const):
(WebCore::DisplayList::FillLine::globalBounds const):
(WebCore::DisplayList::FillLine::localBounds const):
(WebCore::DisplayList::FillArc::FillArc):
(WebCore::DisplayList::FillArc::path const):
(WebCore::DisplayList::FillArc::globalBounds const):
(WebCore::DisplayList::FillArc::localBounds const):
(WebCore::DisplayList::FillQuadCurve::FillQuadCurve):
(WebCore::DisplayList::FillQuadCurve::path const):
(WebCore::DisplayList::FillQuadCurve::globalBounds const):
(WebCore::DisplayList::FillQuadCurve::localBounds const):
(WebCore::DisplayList::FillBezierCurve::FillBezierCurve):
(WebCore::DisplayList::FillBezierCurve::path const):
(WebCore::DisplayList::StrokeLine::StrokeLine):
(WebCore::DisplayList::StrokeArc::StrokeArc):
(WebCore::DisplayList::StrokeArc::path const):
(WebCore::DisplayList::StrokeArc::globalBounds const):
(WebCore::DisplayList::StrokeQuadCurve::StrokeQuadCurve):
(WebCore::DisplayList::StrokeQuadCurve::path const):
(WebCore::DisplayList::StrokeQuadCurve::globalBounds const):
(WebCore::DisplayList::StrokeBezierCurve::StrokeBezierCurve):
(WebCore::DisplayList::StrokeBezierCurve::path const):
(WebCore::DisplayList::InlinePathDataStorage::InlinePathDataStorage): Deleted.
(WebCore::DisplayList::InlinePathDataStorage::isValid const): Deleted.
(WebCore::DisplayList::InlinePathDataStorage::path const): Deleted.
(WebCore::DisplayList::FillInlinePath::FillInlinePath): Deleted.
(WebCore::DisplayList::FillInlinePath::globalBounds const): Deleted.
(WebCore::DisplayList::FillInlinePath::localBounds const): Deleted.
(WebCore::DisplayList::StrokeInlinePath::StrokeInlinePath): Deleted.
(WebCore::DisplayList::StrokeInlinePath::globalBounds const): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::strokePath):

Source/WebKit:

Adjust to new display list item types.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::decodeItem):

Tools:

Adjust to API new display list items.

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

10:09 PM Changeset in webkit [278395] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

Stop using a RefPtr<IPC::Connection> as HashMap key in DisplayLink
https://bugs.webkit.org/show_bug.cgi?id=226561

Reviewed by Simon Fraser.

Stop using a RefPtr<IPC::Connection> as HashMap key in DisplayLink. Using a RefPtr as key is suboptimal
and could leak to memory leaks. The reason this needed a RefPtr<IPC::Connection> was because we needed
to send IPC from a background thread. To support this, I have added a static IPC::Connection::send()
function that takes an IPC::Connection::UniqueID and that is thread safe. The function looks up the
IPC::Connection from its UniqueID and sends the IPC while still holding the lock.

As a result, DisplayLink can use IPC::Connection::UniqueID as key instead.

Note that I am planning to use the new static IPC::Connection::send() in other cases where we could
send IPC directly from a background thread instead of having to hop to the main thread to look up
the IPC::Connection from its UniqueID. StorageArea::dispatchEvents() is an example of where this will
be useful.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::~Connection):

  • Platform/IPC/Connection.h:

(IPC::Connection::send):

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::removeObserver):
(WebKit::DisplayLink::removeObservers):
(WebKit::DisplayLink::removeInfoForConnectionIfPossible):
(WebKit::DisplayLink::incrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::decrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::setPreferredFramesPerSecond):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • UIProcess/mac/DisplayLink.h:
9:59 PM Changeset in webkit [278394] by Wenson Hsieh
  • 11 edits
    1 add in trunk/Source/WebKit

[iOS] Show data detector context menu on long press inside image overlays
https://bugs.webkit.org/show_bug.cgi?id=226559
<rdar://problem/78789078>

Reviewed by Tim Horton.

Add additional support for data detectors that appear inside image overlays on iOS.

  • Shared/ImageExtractionUpdateResult.h: Added.

Turn the bool propagated back to the UI process when calling updateWithImageExtractionResult into a separate
three-state enum instead; see changes below for more details.

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

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

Make some minor adjustments to InteractionInformationAtPosition:

  • Add dataDetectorBounds, which determines the bounds in root view coordinates of the data detector result

corresponding to the hit-tested element.

  • Encode and decode dataDetectorResults, even if isDataDetectorLink is false. Unless the data detector

is inside an image overlay, this (effectively) has no impact, since dataDetectorResults was previously
only set if isDataDetectorLink was true.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::updateWithImageExtractionResult):

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

(-[WKContentView dataDetectionContextForPositionInformation:]):

Let dataDetectorResults take precedence over regular bounds when returning the context for the data
detector menu configuration.

(-[WKContentView positionInformationHasImageOverlayDataDetector]):

Add a helper method that returns YES in the case where the currently cached position information object
contains a text data detection result inside an image overlay.

(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):

Use dataDetectorBounds instead of bounds when creating a fallback targeted preview for a data detection
result in an image overlay.

(-[WKContentView continueContextMenuInteraction:]):
(-[WKContentView continueContextMenuInteractionWithDataDetectors:]):

Adjust these codepaths so that we'll continue through to the data detector case instead of bailing early in the
case where both isImageOverlayText is set, and dataDetectionResults exist.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::findDataDetectionResultElementInImageOverlay):

Add a static helper to locate a data detector element underneath the given point, inside the given element's
image overlay in the user agent shadow root. Note that we check each of the element's bounds instead of using
a hit-test because we normally just hit-test to the text containers instead of the data detector containers.

(WebKit::WebPage::updateWithImageExtractionResult):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::dataDetectorLinkPositionInformation):
(WebKit::dataDetectorImageOverlayPositionInformation):

Add a static helper function to populate the given InteractionInformationAtPosition, if it's over a data
detection result inside an image overlay.

(WebKit::elementPositionInformation): Call the above helper function.

9:57 PM Changeset in webkit [278393] by sihui_liu@apple.com
  • 12 edits
    2 deletes in trunk/Source/WebCore

Introduce a shared IDB serialization thread
https://bugs.webkit.org/show_bug.cgi?id=226228
<rdar://problem/78725516>

Reviewed by Chris Dumez.

Currently each WebIDBServer has its own thread, and does serialization/deserialization on that thread. To
prepare for making WebIDBServer use WorkQueue, like the other storage manager classes, let's create a shared
thread for handling all serialization/deserialization operations, which cannot be done on WorkQueue as VM needs
to access thread-specific data. Now IDB tasks will call callOnIDBSerializationThreadAndWait to perform
serialization/deserialization operations synchronously.

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBSerializationContext.cpp: Removed. Moved to IDBBindingUtilities.cpp as

IDBSerializationContext is only used by IDBSerialization thread now.

  • Modules/indexeddb/server/IDBSerializationContext.h: Removed.
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::MemoryIDBBackingStore):
(WebCore::IDBServer::MemoryIDBBackingStore::serializationContext): Deleted.

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

(WebCore::IDBServer::MemoryObjectStore::MemoryObjectStore):
(WebCore::IDBServer::MemoryObjectStore::addRecord):
(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):

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

(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::serializationContext): Deleted.

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

(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):

  • Sources.txt:
  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::IDBSerializationContext::IDBSerializationContext):
(WebCore::IDBSerializationContext::~IDBSerializationContext):
(WebCore::IDBSerializationContext::globalObject):
(WebCore::IDBSerializationContext::initializeVM):
(WebCore::callOnIDBSerializationThreadAndWait): Create a IDBSerialization thread if not exists, and dispatch a
synchronous task to it.

  • bindings/js/IDBBindingUtilities.h:
6:54 PM Changeset in webkit [278392] by Chris Dumez
  • 19 edits in trunk/Source/WebCore

Port media code to the HTML event loop
https://bugs.webkit.org/show_bug.cgi?id=226543

Reviewed by Ryosuke Niwa.

Port media code to the HTML event loop so that event processing order is consistent
with non-media related events. To avoid having a very large patch, I made the following
changes:

  • Update MainThreadGenericEventQueue to be based on the HTML event loop instead of a global Timer.
  • Introduce a EventLoopDeferrableTask which has the same API as DeferrableTask<Timer> but uses the HTML event loop instead of a global Timer. Port media code to use EventLoopDeferrableTask instead of DeferrableTask.
  • Introduce an EventLoopTaskQueue which has the same API as GenericTaskQueue<Timer> but uses the HTML event loop instead of a global Timer. Port media code to use EventLoopTaskQueue instead of GenericTaskQueue<Timer>.

This effectively ports our entire media code to the HTML event loop. It allows new
media code to use the HTML event loop *directly* without fear of ordering issues. It also
allows us to refactor existing media code to use the HTML event loop *directly* when possible,
in an incremental fashion, without causing ordering issues.

  • Headers.cmake:
  • Modules/remoteplayback/RemotePlayback.cpp:

(WebCore::RemotePlayback::RemotePlayback):

  • Modules/remoteplayback/RemotePlayback.h:
  • animation/DocumentTimelinesController.cpp:

(WebCore::DocumentTimelinesController::DocumentTimelinesController):

  • animation/DocumentTimelinesController.h:
  • dom/FullscreenManager.cpp:
  • dom/FullscreenManager.h:
  • dom/GenericEventQueue.cpp:

(WebCore::MainThreadGenericEventQueue::MainThreadGenericEventQueue):
(WebCore::MainThreadGenericEventQueue::enqueueEvent):
(WebCore::MainThreadGenericEventQueue::close):
(WebCore::MainThreadGenericEventQueue::cancelAllEvents):
(WebCore::MainThreadGenericEventQueue::hasPendingEventsOfType const):

  • dom/GenericEventQueue.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):

  • html/HTMLMediaElement.h:
  • html/shadow/MediaControlTextTrackContainerElement.cpp:

(WebCore::MediaControlTextTrackContainerElement::MediaControlTextTrackContainerElement):

  • html/shadow/MediaControlTextTrackContainerElement.h:
  • platform/DeferrableTask.h:

(WebCore::DeferrableTaskBase::close):
(WebCore::DeferrableTaskBase::cancelTask):
(WebCore::DeferrableTaskBase::hasPendingTask const):
(WebCore::DeferrableTaskBase::isClosed const):
(WebCore::DeferrableTaskBase::setHasPendingTask):

  • platform/GenericTaskQueue.h:

(WebCore::GenericTaskQueueBase::hasPendingTasks const):
(WebCore::GenericTaskQueueBase::isClosed const):
(WebCore::GenericTaskQueueBase::close):
(WebCore::GenericTaskQueueBase::cancelAllTasks):
(WebCore::GenericTaskQueueBase::incrementPendingTasks):
(WebCore::GenericTaskQueueBase::decremementPendingTasks):

6:25 PM Changeset in webkit [278391] by achristensen@apple.com
  • 59 edits
    10 adds
    3 deletes in trunk

Fix WPT test resource-timing/cross-origin-redirects.html
https://bugs.webkit.org/show_bug.cgi?id=190523
<rdar://45227788>

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/navigation-timing/nav2_test_redirect_server-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_redirect_server.html:

Sometimes, with our use of Performance::reduceTimeResolution, the event times are equal to each other.
Allow this.

  • web-platform-tests/resource-timing/cross-origin-redirects-expected.txt: Added.
  • web-platform-tests/resource-timing/cross-origin-redirects.html: Added.
  • web-platform-tests/resource-timing/resources/entry-invariants.js: Added.

(const.assert_all_equal_):
(const.assert_ordered_):
(const.assert_zeroed_):
(const.assert_not_negative_):
(const.assert_positive_):
(const.attribute_test_internal):
(async const):
(const.attribute_test_with_validator):

  • web-platform-tests/resource-timing/resources/resource-loaders.js: Added.

(const.load.font.path.return.document.fonts.ready.then):
(const.load.stylesheet.async path):
(const.load.iframe.async path):
(const.load.script.async path):
(const.load.xhr_sync.async path):

Source/WebCore:

Test: imported/w3c/web-platform-tests/resource-timing/cross-origin-redirects.html

This test took more to fix than I thought it would. We used to collect our timing data
from various sources into various structures, mostly based on Google's work from 2010 with
a few things tacked on to it. The timing specifications have changed considerably in the
last 11 years, and so should the shape of the structures we put the data into.

We used to have a LoadTiming structure in various places that claimed to contain the redirect times,
but markRedirectStart and markRedirectEnd were never called. Instead we tried to collect this data
from the SubResourceLoader and DocumentLoader reporting redirects in the web process. This wasn't great.
Redirect timing is best collected in the network process by the framework doing the redirecting,
and now we have the NSURLSessionTaskMetrics API to get the data we need.

I've made NetworkLoadMetrics the structure that contains all the network load metrics from the network process.
DocumentEventTiming is owned in the web process by the Document, and it contains the load event timing data.
ResourceLoadTiming is owned by the ResourceLoader, and it contains the fetch start and end times including the
parts of the fetch algorithm that happen in the web process.
DocumentLoadTiming inherits from it and is owned by the DocumentLoader, which reflects the fact that
PerformanceNavigationTiming inherits from PerformanceResourceTiming in the specs.
With these structures in place, we now have the infrastructure to collect timing data and expose it correctly.

Another thing that has changed is that these structures consistently store the timing data in the MonotonicTime type,
which is the number of seconds since the machine restarted. NetworkLoadMetrics used to confusingly store fetch
start time and then other network times as deltas from it, and we would pretend that fetch start time was the same
as the fetch start time in the web process and calculate everything from the deltas. This is an unfortunate
consequence of my younger self not realizing that the double values from NSURLConnection._timingData are values to
be put into [NSDate initWithTimeIntervalSinceReferenceDate] then pulled out with timeIntervalSince1970 to get
WallTime. I was confused because they weren't WallTime or MonotonicTime, so I only dealt with them as deltas
from each other. Consistently using MonotonicTime makes all this code much more straightforward.

I also use std::numeric_limits<uint64_t>::max() instead of std::numeric_limits<uint32_t>::max() as a sentinel value
for requestHeaderBytesSent and responseHeaderBytesReceived to make everything more sane. I'm not too worried about
the metrics of downloads of exactly 4GB, but they should also be fixed.

A consequence of collecting the redirect times in the network process is that we have to move the
SecurityOrigin::canRequest checks to see if the redirects are same-origin to ResourceHandle and NetworkDataTask.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp const):

  • dom/Document.h:

(WebCore::Document::eventTiming const):
(WebCore::Document::timing const): Deleted.

  • dom/DocumentEventTiming.h: Copied from Source/WebCore/dom/DocumentTiming.h.
  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForMetrics):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):

  • inspector/agents/InspectorNetworkAgent.h:
  • loader/DocumentLoadTiming.h: Renamed from Source/WebCore/loader/LoadTiming.h.

(WebCore::DocumentLoadTiming::timeOrigin const):
(WebCore::DocumentLoadTiming::markUnloadEventStart):
(WebCore::DocumentLoadTiming::markUnloadEventEnd):
(WebCore::DocumentLoadTiming::markLoadEventStart):
(WebCore::DocumentLoadTiming::markLoadEventEnd):
(WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
(WebCore::DocumentLoadTiming::unloadEventStart const):
(WebCore::DocumentLoadTiming::unloadEventEnd const):
(WebCore::DocumentLoadTiming::loadEventStart const):
(WebCore::DocumentLoadTiming::loadEventEnd const):
(WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument const):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::startLoadingMainResource):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::timing const):
(WebCore::DocumentLoader::timing):
(WebCore::DocumentLoader::resetTiming):

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::dispatchUnloadEvents):

  • loader/LoadTiming.cpp: Removed.
  • loader/ResourceLoadTiming.h: Renamed from Source/WebCore/dom/DocumentTiming.h.

(WebCore::ResourceLoadTiming::markStartTime):
(WebCore::ResourceLoadTiming::markEndTime):
(WebCore::ResourceLoadTiming::startTime const):
(WebCore::ResourceLoadTiming::endTime const):
(WebCore::ResourceLoadTiming::isolatedCopy const):

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::init):

  • loader/ResourceLoader.h:

(WebCore::ResourceLoader::loadTiming):

  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::fromMemoryCache):
(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::ResourceTiming::fromCache): Deleted.

  • loader/ResourceTiming.h:

(WebCore::ResourceTiming::resourceLoadTiming const):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::loadTiming const): Deleted.

  • loader/ResourceTimingInformation.cpp:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didFinishLoading):

  • loader/cache/CachedResource.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::performance const):

  • page/Performance.cpp:

(WebCore::Performance::addNavigationTiming):

  • page/Performance.h:
  • page/PerformanceNavigation.cpp:

(WebCore::PerformanceNavigation::redirectCount const):

  • page/PerformanceNavigationTiming.cpp:

(WebCore::PerformanceNavigationTiming::PerformanceNavigationTiming):
(WebCore::PerformanceNavigationTiming::millisecondsSinceOrigin const):
(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::unloadEventStart const):
(WebCore::PerformanceNavigationTiming::unloadEventEnd const):
(WebCore::PerformanceNavigationTiming::domInteractive const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventStart const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceNavigationTiming::domComplete const):
(WebCore::PerformanceNavigationTiming::loadEventStart const):
(WebCore::PerformanceNavigationTiming::loadEventEnd const):
(WebCore::PerformanceNavigationTiming::redirectCount const):

  • page/PerformanceNavigationTiming.h:
  • page/PerformanceResourceTiming.cpp:

(WebCore::networkLoadTimeToDOMHighResTimeStamp):
(WebCore::fetchStart):
(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::fetchStart const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::responseEnd const):
(WebCore::monotonicTimeToDOMHighResTimeStamp): Deleted.
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp const): Deleted.

  • page/PerformanceResourceTiming.h:
  • page/PerformanceTiming.cpp:

(WebCore::PerformanceTiming::navigationStart const):
(WebCore::PerformanceTiming::unloadEventStart const):
(WebCore::PerformanceTiming::unloadEventEnd const):
(WebCore::PerformanceTiming::redirectStart const):
(WebCore::PerformanceTiming::redirectEnd const):
(WebCore::PerformanceTiming::fetchStart const):
(WebCore::PerformanceTiming::domainLookupStart const):
(WebCore::PerformanceTiming::domainLookupEnd const):
(WebCore::PerformanceTiming::connectStart const):
(WebCore::PerformanceTiming::connectEnd const):
(WebCore::PerformanceTiming::secureConnectionStart const):
(WebCore::PerformanceTiming::requestStart const):
(WebCore::PerformanceTiming::responseStart const):
(WebCore::PerformanceTiming::responseEnd const):
(WebCore::PerformanceTiming::domLoading const):
(WebCore::PerformanceTiming::domInteractive const):
(WebCore::PerformanceTiming::domContentLoadedEventStart const):
(WebCore::PerformanceTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceTiming::domComplete const):
(WebCore::PerformanceTiming::loadEventStart const):
(WebCore::PerformanceTiming::loadEventEnd const):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentEventTiming const):
(WebCore::PerformanceTiming::documentLoadTiming const):
(WebCore::PerformanceTiming::networkLoadMetrics const):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds const):
(WebCore::PerformanceTiming::documentTiming const): Deleted.
(WebCore::PerformanceTiming::loadTiming const): Deleted.
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart const): Deleted.

  • page/PerformanceTiming.h:
  • platform/network/NetworkLoadMetrics.h:

(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):

  • platform/network/ResourceHandle.cpp:

(WebCore::ResourceHandle::hasCrossOriginRedirect const):
(WebCore::ResourceHandle::setHasCrossOriginRedirect):
(WebCore::ResourceHandle::incrementRedirectCount):
(WebCore::ResourceHandle::redirectCount const):
(WebCore::ResourceHandle::startTimeBeforeRedirects const):
(WebCore::ResourceHandle::networkLoadMetrics):
(WebCore::ResourceHandle::setNetworkLoadMetrics):

  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleInternal.h:
  • platform/network/cocoa/NetworkLoadMetrics.mm:

(WebCore::dateToMonotonicTime):
(WebCore::packageTimingData):
(WebCore::copyTimingData):

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(networkLoadMetricsDate):
(-[WebCoreNSURLSessionTaskTransactionMetrics fetchStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics secureConnectionStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics requestStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseEndDate]):

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::getNetworkLoadMetrics):

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

(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::networkLoadMetrics):

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::start):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):

Source/WebKit:

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):

LayoutTests:

  • http/tests/misc/webtiming-slow-load-expected.txt:
  • http/tests/misc/webtiming-slow-load.py:

Our new metrics gathering now matches Firefox instead of Chrome in PerformanceResourceTiming::responseEnd in this edge case of a deprecated API.
Update expectations accordingly.

  • platform/mac-wk1/TestExpectations:

Bringing this test to passing in WK2 makes it flaky in WK1 because we don't get good redirect timing data from CFNetwork through NSURLConnection.

  • platform/win/http/tests/misc/webtiming-one-redirect-expected.txt: Added.
  • platform/win/http/tests/misc/webtiming-slow-load-expected.txt: Copied from LayoutTests/http/tests/misc/webtiming-slow-load-expected.txt.
  • platform/win/http/tests/misc/webtiming-two-redirects-expected.txt: Added.

The network layer is now responsible for counting redirects and providing redirect timings.
Our friend CFURLConnection doesn't have that ability, so it doesn't pass these tests any more.
It never supported any timing APIs and other tests are skipped.

6:07 PM Changeset in webkit [278390] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

B3MoveConstants should filter directly on Values, and only create ValueKeys when useful
https://bugs.webkit.org/show_bug.cgi?id=226420

Reviewed by Phil Pizlo.

I did a few runs of JetStream2 to measure results, the time spent in B3MoveConstants goes from 160-180ms to 100-110ms.
The total time spent in B3+Air is in the 6 to 8s range, so this is approximately a 1% speedup.

  • b3/B3MoveConstants.cpp:
5:33 PM Changeset in webkit [278389] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Remove redundant isChildHitTestCandidate in RenderBlock::positionForPoint
https://bugs.webkit.org/show_bug.cgi?id=226554
<rdar://problem/78782485>

Reviewed by Simon Fraser.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::positionForPoint):

5:09 PM Changeset in webkit [278388] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[MacOS] media/video-played-collapse.html is flaky timeout and failure
https://bugs.webkit.org/show_bug.cgi?id=226520

Unreviewed test gardening.

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

[BigSur E Wk1 Release] media/media-event-listeners.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=226517

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:51 PM Changeset in webkit [278386] by Ruben Turcios
  • 4 edits in branches/safari-612.1.16-branch/Source/WebKit

Cherry-pick r278370. rdar://problem/78787261

[iOS] Fix IOKit sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=226546
<rdar://78523469>

Reviewed by Tim Horton.

Fix IOKit sandbox violations in the WebContent process on iOS.

  • Configurations/SandboxProfiles.xcconfig:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • WebKit.xcodeproj/project.pbxproj:

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

4:51 PM Changeset in webkit [278385] by Ruben Turcios
  • 6 edits
    1 move in branches/safari-612.1.16-branch/Source/WebKit

Cherry-pick r278308. rdar://problem/78789128

[iOS] Preprocess the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=226301
<rdar://problem/78575178>

Reviewed by Geoffrey Garen.

Run the WebContent sandbox through the preprocessor on iOS.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.
  • WebKit.xcodeproj/project.pbxproj:

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

4:49 PM Changeset in webkit [278384] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Drop WTF::Vector overloads taking index as Checked<size_t>
https://bugs.webkit.org/show_bug.cgi?id=226553

Reviewed by Geoffrey Garen.

Drop WTF::Vector overloads taking index as Checked<size_t>. They are no longer needed now that
Checked<size_t> can implicitly get converted to size_t (r278338).

  • wtf/Vector.h:

(WTF::Vector::at const):
(WTF::Vector::operator[] const):

4:33 PM Changeset in webkit [278383] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[Cocoa] Clean up notification_center message filters
https://bugs.webkit.org/show_bug.cgi?id=226555
<rdar://problem/77164076>

Reviewed by Per Arne Vollan.

We initially had two groups of mach-message-send filter rules for 'com.apple.system.notification_center' so we could
collect telemetry on a group of messages. Now that we have removed all the messages we do not need, there is no reason
to maintain two separate sets.

This patch just combines the two sets into a single list so we can easily conditionalize it for different OS releases
if needed.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
4:30 PM Changeset in webkit [278382] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

[iOS] Unreviewed test gardening.

  • platform/ios/TestExpectations:
4:28 PM Changeset in webkit [278381] by rmorisset@apple.com
  • 17 edits
    2 deletes in trunk/Source/JavaScriptCore

Merge B3::StackSlot and Air::StackSlot
https://bugs.webkit.org/show_bug.cgi?id=226362

Reviewed by Filip Pizlo.

This is a very simple and safe (although small) memory saving, since every B3StackSlot eventually becomes an AirStackSlot with an exact copy of all the same information.
Simply dropping the B3StackSlot past that point is tricky, because one of them might be retained by FTLState (and modified by Air).
It is much simpler to just use Air::StackSlot throughout. It saves us:

  • 16 bytes per B3StackSlot (for the structure itself)
  • another 8 bytes per B3StackSlot (for the pointer in the SparseCollection)
  • 8 bytes per AirStackSlot (for the pointer to the B3::StackSlot)

I also took the opportunity to save an extra 8 bytes per AirStackSlot, by shrinking the bytesize field to a uint16_t (with a RELEASE_ASSERT that we never overflow it) and moving the StackSlotKind in the hole this creates.
Total savings: 16 bytes per spill slot and 40 bytes per locked (by B3) slot.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • b3/B3LowerToAir.cpp:
  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::addStackSlot):
(JSC::B3::Procedure::dump const):

  • b3/B3Procedure.h:
  • b3/B3ProcedureInlines.h:

(JSC::B3::Procedure::stackSlots):
(JSC::B3::Procedure::stackSlots const):

  • b3/B3SlotBaseValue.cpp:
  • b3/B3SlotBaseValue.h:
  • b3/B3StackSlot.cpp: Removed.
  • b3/B3StackSlot.h: Removed.
  • b3/B3Value.cpp:
  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::addStackSlot):

  • b3/air/AirCode.h:
  • b3/air/AirStackSlot.cpp:

(JSC::B3::Air::StackSlot::setOffsetFromFP):
(JSC::B3::Air::StackSlot::deepDump const):
(JSC::B3::Air::StackSlot::StackSlot):

  • b3/air/AirStackSlot.h:

(JSC::B3::Air::StackSlot::ensureSize):

  • b3/testb3.h:
  • ftl/FTLCompile.cpp:
  • ftl/FTLState.h:
4:10 PM Changeset in webkit [278380] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkitcorepy] TaskPool shouldn't fork when 1 process is needed
https://bugs.webkit.org/show_bug.cgi?id=226506
<rdar://problem/78724554>

Reviewed by Dewei Zhu.

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

(TaskPool.init): Allow user to force fork, even with a single process.
(TaskPool.enter): If only a single worker is needed and the caller is not forcing
a fork, run the setup function in the parent process.
(TaskPool.do): If no queue has been constructed, we're running in the parent process.
(TaskPool.wait): Nothing to wait for if we're running in the parent process.
(TaskPool.exit): If no queue has been constructed, we're running in the parent process,
so run the teardown in this process and reset the process name.

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

(TaskPoolUnittest.test_single): Force fork.
(TaskPoolUnittest.test_single_no_fork):
(TaskPoolUnittest.test_exception): Force fork.
(TaskPoolUnittest.test_exception_no_fork):
(TaskPoolUnittest.test_invalid_shutdown): Force fork.

3:31 PM Changeset in webkit [278379] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Incorrect selection when tall float is present
https://bugs.webkit.org/show_bug.cgi?id=226552
<rdar://problem/78781056>

Reviewed by Simon Fraser.

Source/WebCore:

While floats may end up at the bottom of their containers, they do not necessarily stretch the container by their full height.
e.g. <div><div style="float: left; height: 10px; width: 10px;"></div>some<br>text<br>here</div>
The [some text here] content wraps around the float and stretches the containing block <div>.

Test: editing/selection/select-out-of-floated-non-editable-13.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::positionForPoint):

LayoutTests:

  • editing/selection/select-out-of-floated-non-editable-07.html:
  • editing/selection/select-out-of-floated-non-editable-13-expected.txt: Added.
  • editing/selection/select-out-of-floated-non-editable-13.html: Added.
3:29 PM Changeset in webkit [278378] by commit-queue@webkit.org
  • 5 edits in trunk/Tools

[resultsdbpy] "legend" is misspelled as "lengend"
https://bugs.webkit.org/show_bug.cgi?id=226436

Patch by W.D. Xiong <w_xiong@apple.com> on 2021-06-02
Reviewed by Darin Adler.

Corrected said misspelling in resultsdbpy

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/css/docs.yaml:
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/css/index.html:
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:

(.legend, .timeline>.content .legend):
(.legend.horizontal, .timeline>.header .legend):
(.legend>.item):
(.legend>.item .dot):
(.legend>.item .dot img, .legend>.item .dot .text):
(.legend>.item .dot>img, .legend>.item .dot>.text):
(.timeline.legend>.item .dot::before):
(.timeline.legend>.item .dot::after):
(.legend>.item .label):
(.lengend, .timeline>.content .lengend): Deleted.
(.lengend.horizontal, .timeline>.header .lengend): Deleted.
(.lengend>.item): Deleted.
(.lengend>.item .dot): Deleted.
(.lengend>.item .dot img, .lengend>.item .dot .text): Deleted.
(.lengend>.item .dot>img, .lengend>.item .dot>.text): Deleted.
(.timeline.lengend>.item .dot::before): Deleted.
(.timeline.lengend>.item .dot::after): Deleted.
(.lengend>.item .label): Deleted.

3:00 PM Changeset in webkit [278377] by graouts@webkit.org
  • 3 edits
    4 adds in trunk

Hit-testing does not account for clip-path set on parent of <iframe>
https://bugs.webkit.org/show_bug.cgi?id=226499
<rdar://problem/77317612>

Reviewed by Simon Fraser.

Source/WebCore:

Before considering hit-testing children layers, we should ensure that the current RenderLayer doesn't have styles
set on its renderer that would clip the layer in such a way that the hit test location wouldn't yield a positive
result.

Tests: css3/masking/clip-path-hit-test-on-absolute-position-iframe-parent.html

css3/masking/clip-path-hit-test-on-iframe-parent.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hitTestLayer):

LayoutTests:

Add new tests checking that we don't hit-tests elements when the location is
part of an <iframe> clipped by the clip-path property set on a parent element.
We test the case where the <iframe> has position: absolute as well as the
default position.or https://bugs.webkit.org/show_bug.cgi?id=226499

  • css3/masking/clip-path-hit-test-on-absolute-position-iframe-parent-expected.txt: Added.
  • css3/masking/clip-path-hit-test-on-absolute-position-iframe-parent.html: Added.
  • css3/masking/clip-path-hit-test-on-iframe-parent-expected.txt: Added.
  • css3/masking/clip-path-hit-test-on-iframe-parent.html: Added.
2:51 PM Changeset in webkit [278376] by graouts@webkit.org
  • 4 edits
    2 adds in trunk

REGRESSION (r275227): Check boxes on V-Safe site flicker when selected
https://bugs.webkit.org/show_bug.cgi?id=226549
<rdar://problem/77722651>

Reviewed by Simon Fraser.

Source/WebCore:

When checking equality for StyleCachedImage, check whether the backing CSSImageValue is equal even if the pointer is different.

Test: webanimations/background-image-css-variable-no-transition.html

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::operator== const):

LayoutTests:

Check that a background-image set to a CSS variable doesn't yield a transition when another style property changes.

  • webanimations/background-image-css-variable-no-transition-expected.txt: Added.
  • webanimations/background-image-css-variable-no-transition.html: Added.
  • webanimations/empty-keyframes-crash.html: motify this existing test which relie on the buggy behavior to trigger

a transition.

2:47 PM Changeset in webkit [278375] by Pablo Saavedra
  • 2 edits in trunk/Source/JavaScriptCore

Fix build error with ENABLE_DFG_JIT=OFF
https://bugs.webkit.org/show_bug.cgi?id=226550

Reviewed by Mark Lam.

  • jit/JITPlan.cpp:

(JSC::JITPlan::compileInThread):

2:35 PM Changeset in webkit [278374] by jer.noble@apple.com
  • 14 edits in trunk/Source

REGRESSION(r276993): 5 TestWebKitAPI.AudioRoutingArbitration (api-tests) are constant failures
https://bugs.webkit.org/show_bug.cgi?id=226104
<rdar://77998049>

Reviewed by Eric Carlson.

Source/WebCore:

Add a mechanism for a client to wait until an AudioSession is created or changed before taking
an action.

  • platform/audio/AudioSession.cpp:

(WebCore::audioSessionChangedObservers):
(WebCore::AudioSession::sharedSession):
(WebCore::AudioSession::setSharedSession):
(WebCore::AudioSession::addAudioSessionChangedObserver):

  • platform/audio/AudioSession.h:

Source/WebKit:

In r276993, AudioSessionRoutingArbitration was moved from being initiated in the WebContent process
and dispatched to the UIProcess, to being dispatched to the GPU process. However two problems occurred:

1) The UIProcess no longer knows about routing arbitration, which is reasonable for the feature, but

breaks an API test that queries arbitration status in the UIProcess.

2) A sandbox violation causes routing arbitration to fail in the GPU process regardless.

We could open up the sandbox to allow routing arbitration to succeed (and come up with a way to push
state changes up to the UIProcess for testing purposes), but it's not technically necessary for
arbitration to occur there. Instead, just revert to the status-quo-ante behavior of having arbitration
take place in the UIProcess, and just add a new set of messages from the GPUConnoctionToWebProcess to
the GPUProcessConnection to facilitate arbitration.

Drive-by fix: AudioSessionRoutingArbitrator is a supplement to WebProcess, and as such it's created
at WebProcess creation time. However, it also causes an AudioSession to be created by attempting to
add itself as a client. This is bad on iOS, where it could cause hangs due to AVAudioSession calls.
So, add a mechanism to be notified when an AudioSession eventually does get created, and add the
arbitrator as a client then.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):

  • GPUProcess/mac/LocalAudioSessionRoutingArbitrator.cpp:

(WebKit::LocalAudioSessionRoutingArbitrator::create):
(WebKit::LocalAudioSessionRoutingArbitrator::LocalAudioSessionRoutingArbitrator):
(WebKit::LocalAudioSessionRoutingArbitrator::processDidTerminate):
(WebKit::LocalAudioSessionRoutingArbitrator::beginRoutingArbitrationWithCategory):
(WebKit::LocalAudioSessionRoutingArbitrator::leaveRoutingAbritration):

  • GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h:
  • GPUProcess/media/RemoteAudioSessionProxyManager.h:

(WebKit::RemoteAudioSessionProxyManager::session):

  • UIProcess/GPU/GPUProcessProxy.h:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::beginRoutingArbitrationWithCategory):
(WebKit::GPUProcessConnection::endRoutingArbitration):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/GPUProcessConnection.messages.in:
  • WebProcess/cocoa/AudioSessionRoutingArbitrator.cpp:

(WebKit::AudioSessionRoutingArbitrator::AudioSessionRoutingArbitrator):

  • WebProcess/cocoa/AudioSessionRoutingArbitrator.h:
2:33 PM Changeset in webkit [278373] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION(r277217?): ASSERTION FAILED: Unhandled message RemoteLegacyCDMSession_SendError to 10 assertionFailureDueToUnreachableCode
https://bugs.webkit.org/show_bug.cgi?id=226545
<rdar://78001450>

Reviewed by Eric Carlson.

Add message handlers for RemoteLegacyCDMProxy and RemoteLegacyCDMSessionProxy.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):

2:09 PM Changeset in webkit [278372] by Chris Dumez
  • 11 edits in trunk/Source/WebCore

Drop legacy ActiveDOMObject::setPendingActivity() / unsetPendingActivity()
https://bugs.webkit.org/show_bug.cgi?id=226544

Reviewed by Darin Adler.

Drop legacy ActiveDOMObject::setPendingActivity() / unsetPendingActivity(). They are too leak-prone. The modern
way to do this is to either override ActiveDOMObject::virtualHasPendingActivity() or use
ActiveDOMObject::makePendingActivity().

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::begin):
(WebCore::ApplePaySession::abort):
(WebCore::ApplePaySession::completePayment):
(WebCore::ApplePaySession::didCancelPaymentSession):
(WebCore::ApplePaySession::stop):
(WebCore::ApplePaySession::suspend):
(WebCore::ApplePaySession::virtualHasPendingActivity const):
(WebCore::ApplePaySession::didReachFinalState): Deleted.

  • Modules/applepay/ApplePaySession.h:
  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::addedToRegistry):
(WebCore::MediaSource::removedFromRegistry):
(WebCore::MediaSource::virtualHasPendingActivity const):

  • Modules/mediasource/MediaSource.h:
  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::create):
(WebCore::RTCDataChannel::close):
(WebCore::RTCDataChannel::virtualHasPendingActivity const):

  • Modules/mediastream/RTCDataChannel.h:
  • dom/ActiveDOMObject.h:
  • page/EventSource.cpp:

(WebCore::EventSource::create):
(WebCore::EventSource::networkRequestEnded):
(WebCore::EventSource::close):
(WebCore::EventSource::abortConnectionAttempt):
(WebCore::EventSource::virtualHasPendingActivity const):

  • page/EventSource.h:
  • workers/Worker.cpp:

(WebCore::Worker::create):
(WebCore::Worker::virtualHasPendingActivity const):
(WebCore::Worker::notifyFinished):

1:45 PM Changeset in webkit [278371] by rmorisset@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

We should drop B3 values while running Air
https://bugs.webkit.org/show_bug.cgi?id=226187

Reviewed by Saam Barati.

We must keep the following values:

  • WasmBoundsCheck, to know whether it is Pinned or Maximum, and if it is pinned find its argument.
  • CCall/Patch/Check/CheckAdd/CheckSub/CheckMul and all of their children, because all of these are lowered to Air::Patchpoint, which needs to know the type of its arguments, and does so by looking at the children of its origin.

I intend to fix these in later patches if possible.

Finally we must preserve all B3 values in the following cases:

  • if we dump the disassembly or the Air graph: because otherwise we cannot print the origins
  • if we are using the sampling profiler, because it relies on PCToCodeOriginMap which we cannot accurately fill without these origins.

We must also keep m_tuples alive, as it is used by Patchpoints in Air to understand the types of their arguments.
We also don't touch StackSlots (in this patch), because one of them is captured by FTL::State.

Also now PCToOriginMap has a Vector with no inline capacity, since it is either quite large (if needed) or empty (otherwise).

The performance impact of this is a progression on various RAMification subtests on Mac, but is more mitigated on iPhone7, with various regressions.
I suspect these to be noise, and will monitor the performance bots post-landing to make sure of it.

  • b3/B3LowerToAir.cpp:

(JSC::B3::lowerToAir):

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::freeUnneededB3ValuesAfterLowering):

  • b3/B3Procedure.h:

(JSC::B3::Procedure::releasePCToOriginMap):
(JSC::B3::Procedure::setNeedsPCToOriginMap):
(JSC::B3::Procedure::needsPCToOriginMap):

  • b3/B3SparseCollection.h:

(JSC::B3::SparseCollection::clearAll):
(JSC::B3::SparseCollection::filterAndTransfer):

  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::Code):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::shouldPreserveB3Origins const):

  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::generateWithAlreadyAllocatedRegisters):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLState.cpp:

(JSC::FTL::State::State):

1:34 PM Changeset in webkit [278370] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] Fix IOKit sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=226546
<rdar://78523469>

Reviewed by Tim Horton.

Fix IOKit sandbox violations in the WebContent process on iOS.

  • Configurations/SandboxProfiles.xcconfig:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:
  • WebKit.xcodeproj/project.pbxproj:
12:02 PM Changeset in webkit [278369] by Chris Dumez
  • 13 edits in trunk

Drop Checked::safeGet()
https://bugs.webkit.org/show_bug.cgi?id=226537

Reviewed by Geoffrey Garen.

Drop Checked::safeGet() and replace with uses of Checked::operator T() or Checked::value().
safeGet() is a bit akward, having both a return value and an out-parameter.

Source/JavaScriptCore:

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • runtime/JSArray.cpp:

(JSC::JSArray::appendMemcpy):
(JSC::JSArray::unshiftCountWithAnyIndexingType):

  • runtime/JSStringJoiner.cpp:

(JSC::JSStringJoiner::joinedLength const):

  • wasm/WasmFormat.cpp:

(JSC::Wasm::Segment::create):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::grow):

Source/WebKit:

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::updateSpellingUIWithGrammarString):

Source/WTF:

  • wtf/CheckedArithmetic.h:

(WTF::Checked::value const):
(WTF::operator+):
(WTF::operator-):
(WTF::operator*):
(WTF::operator/):

Tools:

  • TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:

(TestWebKitAPI::CheckedArithmeticTester::run):

11:42 AM Changeset in webkit [278368] by Alan Coon
  • 8 edits in branches/safari-612.1.16-branch/Source

Versioning.

WebKit-7612.1.16.2

11:26 AM Changeset in webkit [278367] by Alan Coon
  • 1 copy in tags/Safari-612.1.16.1

Tag Safari-612.1.16.1.

11:14 AM Changeset in webkit [278366] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add globalObject API set property test
https://bugs.webkit.org/show_bug.cgi?id=226542
<rdar://78287979>

Reviewed by Alexey Shvayka.

  • API/tests/testapi.cpp:

(TestAPI::testJSObjectSetOnGlobalObjectSubclassDefinition):
(testCAPIViaCpp):

10:40 AM Changeset in webkit [278365] by Alan Coon
  • 8 edits in branches/safari-612.1.16-branch/Source

Versioning.

WebKit-7612.1.16.1

10:38 AM Changeset in webkit [278364] by weinig@apple.com
  • 5 edits in trunk

Add support for "relative color syntax" for color()
https://bugs.webkit.org/show_bug.cgi?id=226513

Reviewed by Darin Adler.

Source/WebCore:

CSS Color 5 has recently been update to support relative color syntax for
the color() function in addition to the existing rgb(), hsl(), hwb(), lab()
and lch().

Took the opertunity to refactor other relative color syntax parsing to share
more code between relative and non-relative parsers using a shared function
with lambdas to differentiate the component consumers. This was done for all
the color types except rgb() and hsl(), which have notable differences in
parsing between the relative and non-relative version.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseNonRelativeRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRGBParameters):
(WebCore::CSSPropertyParserHelpers::colorByNormalizingHSLComponents):
(WebCore::CSSPropertyParserHelpers::parseRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLabParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseRelativeColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForXYZParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeColorFunctionForXYZParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeColorFunctionParameters):
(WebCore::CSSPropertyParserHelpers::parseNonRelativeColorFunctionParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):

LayoutTests:

Updated test and results now that we support relative color syntax
for color(srgb ...), color(a98-rgb ...), color(rec2020 ...),
color(prophoto-rgb ...) and color(xyz ...).

  • fast/css/parsing-relative-color-syntax-expected.txt:
  • fast/css/parsing-relative-color-syntax.html:
10:07 AM Changeset in webkit [278363] by Jean-Yves Avenard
  • 2 edits in trunk/Tools

MediaSessionCoordinator API test is failing,
https://bugs.webkit.org/show_bug.cgi?id=226460
rdar://78680005

Reviewed by Eric Carlson.

When leaving a MediaSessionCoordinator from the JS side; there's no callback
occurring from the MediaSessionCoordinatorPrivate to the MediaSessionCoordinator
(which is what this test was about). A state change callback should only occur
when it's the MediaSessionCoordinatorPrivate that leaves.

  • TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm:

(TestWebKitAPI::TEST_F):

10:01 AM Changeset in webkit [278362] by Kyle Piddington
  • 4 edits
    2 adds in trunk

Add 'mix' override with bool-vectors to MSL translator
https://bugs.webkit.org/show_bug.cgi?id=226366

Source/ThirdParty/ANGLE:

Reviewed by Dean Jackson.

Add in 'mix' overrides, and logic for selecting mix with bool when necessary.

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

(GetOperatorString):
(GenMetalTraverser::visitAggregate):

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

LayoutTests:

Add a short test to ensure bool-vectors can be used in mix.
Reviewed by Dean Jackson.

  • fast/canvas/webgl/shader-mix-with-bool-expected.txt: Added.
9:59 AM Changeset in webkit [278361] by Alan Coon
  • 1 copy in tags/Safari-612.1.16

Tag Safari-612.1.16.

9:53 AM Changeset in webkit [278360] by Alan Coon
  • 2 edits in branches/safari-612.1.16-branch/Source/WebKit

Cherry-pick r278317. rdar://problem/78768874

Resume WebIDBServer when it is about to be closed
https://bugs.webkit.org/show_bug.cgi?id=226502
rdar://78691498

Reviewed by Chris Dumez.

We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::~WebIDBServer): (WebKit::WebIDBServer::close):

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

9:44 AM Changeset in webkit [278359] by youenn@apple.com
  • 8 edits
    2 adds in trunk

HTMLMediaElement::virtualHasPendingActivity may keep objects alive unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=226529
<rdar://78726921>

Reviewed by Eric Carlson.

Source/WebCore:

In case a media element srcObject is set, its media player is no longer null, even if its srcObject is set back to null later on.
Its ended state is set to false so the media element is kept alive if an event listener is set on the element.
To prevent this, add a check to:

  • keep the media element alive if its resource selection queue is not empty
  • allow GC of a media element if its media player has no engine

A follow-up patch should allow GC a media element with an ended MediaStream.

Test: fast/mediastream/mediaElement-gc.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::virtualHasPendingActivity const):

  • html/HTMLMediaElement.h:
  • testing/Internals.cpp:

(WebCore::Internals::mediaElementCount const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • fast/mediastream/mediaElement-gc-expected.txt: Added.
  • fast/mediastream/mediaElement-gc.html: Added.
9:42 AM Changeset in webkit [278358] by commit-queue@webkit.org
  • 38 edits in trunk

[Cocoa] _WKAuthenticatorAssertionResponse should specify the attachment type used
https://bugs.webkit.org/show_bug.cgi?id=225519
<rdar://problem/76554090>

Source/WebCore:

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-06-02
Reviewed by Brent Fulgham.

Allow WebAuthn authenticators to pass back their attachment type and continue
plumbing through up to the authenticator coordinator.

Covered by manual tests.

  • Modules/webauthn/AuthenticatorAssertionResponse.cpp:

(WebCore::AuthenticatorAssertionResponse::create):
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse):

  • Modules/webauthn/AuthenticatorAssertionResponse.h:
  • Modules/webauthn/AuthenticatorAttestationResponse.cpp:

(WebCore::AuthenticatorAttestationResponse::create):
(WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse):

  • Modules/webauthn/AuthenticatorAttestationResponse.h:
  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):

  • Modules/webauthn/AuthenticatorCoordinatorClient.h:
  • Modules/webauthn/AuthenticatorResponse.cpp:

(WebCore::AuthenticatorResponse::tryCreate):
(WebCore::AuthenticatorResponse::attachment const):
(WebCore::AuthenticatorResponse::AuthenticatorResponse):

  • Modules/webauthn/AuthenticatorResponse.h:
  • Modules/webauthn/fido/DeviceResponseConverter.cpp:

(fido::readCTAPMakeCredentialResponse):
(fido::readCTAPGetAssertionResponse):

  • Modules/webauthn/fido/DeviceResponseConverter.h:
  • Modules/webauthn/fido/U2fResponseConverter.cpp:

(fido::readU2fRegisterResponse):
(fido::readU2fSignResponse):

  • Modules/webauthn/fido/U2fResponseConverter.h:

Source/WebKit:

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-06-02
Reviewed by Brent Fulgham.

Have WebAuthn authenticators start passing back their attachment type, and plumb
it up through to the calling process.

  • UIProcess/API/Cocoa/_WKAuthenticatorAssertionResponse.mm:

(-[_WKAuthenticatorAssertionResponse initWithClientDataJSON:rawId:extensions:authenticatorData:signature:userHandle:attachment:]):
(-[_WKAuthenticatorAssertionResponse initWithClientDataJSON:rawId:extensions:authenticatorData:signature:userHandle:]): Deleted.

  • UIProcess/API/Cocoa/_WKAuthenticatorAssertionResponseInternal.h:
  • UIProcess/API/Cocoa/_WKAuthenticatorAttestationResponse.mm:

(-[_WKAuthenticatorAttestationResponse initWithClientDataJSON:rawId:extensions:attestationObject:attachment:]):
(-[_WKAuthenticatorAttestationResponse initWithClientDataJSON:rawId:extensions:attestationObject:]): Deleted.

  • UIProcess/API/Cocoa/_WKAuthenticatorAttestationResponseInternal.h:
  • UIProcess/API/Cocoa/_WKAuthenticatorResponse.h:
  • UIProcess/API/Cocoa/_WKAuthenticatorResponse.mm:

(-[_WKAuthenticatorResponse initWithClientDataJSON:rawId:extensions:attachment:]):
(-[_WKAuthenticatorResponse initWithClientDataJSON:rawId:extensions:]): Deleted.

  • UIProcess/API/Cocoa/_WKAuthenticatorResponseInternal.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(authenticatorAttachmentToWKAuthenticatorAttachment):
(wkAuthenticatorAttestationResponse):
(-[_WKWebAuthenticationPanel makeCredentialWithChallenge:origin:options:completionHandler:]):
(wkAuthenticatorAssertionResponse):
(-[_WKWebAuthenticationPanel getAssertionWithChallenge:origin:options:completionHandler:]):

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::getExistingCredentials):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:

(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):

  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
  • UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
  • UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:

(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
(WebKit::CtapAuthenticator::continueGetNextAssertionAfterResponseReceived):

  • UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:

(WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived):
(WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived):

  • WebAuthnProcess/WebAuthnConnectionToWebProcess.cpp:

(WebKit::WebAuthnConnectionToWebProcess::handleRequest):

  • WebAuthnProcess/WebAuthnConnectionToWebProcess.h:
  • WebAuthnProcess/WebAuthnConnectionToWebProcess.messages.in:

Tools:

Patch by Garrett Davidson <davidson.garrettm@gmail.com> on 2021-06-02
Reviewed by Brent Fulgham.

Update the CTAP tests to specify the new attachment parameter. All of these tests
assume a cross platform authenticator.

  • TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:

(TestWebKitAPI::TEST):

9:34 AM WebKitFlatpakSDK/DebugWithRR edited by eocanha@igalia.com
(diff)
9:29 AM Changeset in webkit [278357] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Reduce logging in MediaElementSession::playbackStateChangePermitted
https://bugs.webkit.org/show_bug.cgi?id=226531

Reviewed by Eric Carlson.

Downgrade logging to INFO level for the regular code path.
Keep logging more rare case as before.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackStateChangePermitted const):

9:26 AM Changeset in webkit [278356] by keith_miller@apple.com
  • 7 edits in trunk

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

Source/JavaScriptCore:

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

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

Reviewed by Michael Saboff.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::numberOfDFGCompiles):

  • jit/ExecutableAllocationFuzz.cpp:

(JSC::doExecutableAllocationFuzzing):

  • jsc.cpp:

(runJSC):

Tools:

Reviewed by Michael Saboff.

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

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

  • Scripts/jsc-stress-test-helpers/js-executable-allocation-fuzz:
  • Scripts/run-jsc-stress-tests:
9:21 AM Changeset in webkit [278355] by Antti Koivisto
  • 5 edits in trunk/Source

Style::Scope should use CheckedPtr
https://bugs.webkit.org/show_bug.cgi?id=226530

Reviewed by Sam Weinig.

Source/WebCore:

Instead of WeakPtr.

  • style/StyleScope.cpp:

(WebCore::Style::Scope::collectResolverScopes):

  • style/StyleScope.h:

Source/WTF:

  • wtf/CMakeLists.txt:
9:20 AM Changeset in webkit [278354] by Antti Koivisto
  • 44 edits
    2 moves in trunk/Source/WebCore

Rename RootInlineBox to LegacyRootInlineBox
https://bugs.webkit.org/show_bug.cgi?id=226533

Reviewed by Sam Weinig.

More legacy line layout path renaming.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/ContainerNode.cpp:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::getNextSoftBreak):
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::LineIterator::LineIterator):
(WebCore::LayoutIntegration::PathLine::legacyRootInlineBox const):

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LineIteratorLegacyPath::LineIteratorLegacyPath):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::LineIteratorLegacyPath::legacyRootInlineBox const):

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::LineIteratorModernPath::legacyRootInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::RunIteratorLegacyPath):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::rootInlineBox const):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::markupBox const):
(WebCore::EllipsisBox::selectionRect):
(WebCore::EllipsisBox::paintSelection):

  • rendering/FloatingObjects.cpp:
  • rendering/FloatingObjects.h:

(WebCore::FloatingObject::originatingLine const):
(WebCore::FloatingObject::setOriginatingLine):

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::innerTextIfTruncated const):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::computeLogicalBoxHeights):
(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::constrainToLineTopAndBottomIfNeeded const):

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

(WebCore::InlineTextBox::paintMarkedTextBackground):

  • rendering/LegacyInlineBox.cpp:

(WebCore::LegacyInlineBox::root const):
(WebCore::LegacyInlineBox::root):

  • rendering/LegacyInlineBox.h:
  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::createRootInlineBox):
(WebCore::LegacyLineLayout::createAndAppendRootInlineBox):
(WebCore::LegacyLineLayout::constructLine):
(WebCore::setLogicalWidthForTextRun):
(WebCore::LegacyLineLayout::updateRubyForJustifiedText):
(WebCore::LegacyLineLayout::updateLogicalWidthForAlignment):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForLine):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::LegacyLineLayout::removeInlineBox const):
(WebCore::LegacyLineLayout::computeBlockDirectionPositionsForLine):
(WebCore::LegacyLineLayout::createLineBoxesFromBidiRuns):
(WebCore::deleteLineRange):
(WebCore::LegacyLineLayout::layoutRunsAndFloats):
(WebCore::LegacyLineLayout::layoutRunsAndFloatsInRange):
(WebCore::LegacyLineLayout::reattachCleanLineFloats):
(WebCore::LegacyLineLayout::checkFloatInCleanLine):
(WebCore::LegacyLineLayout::determineStartPosition):
(WebCore::LegacyLineLayout::determineEndPosition):
(WebCore::LegacyLineLayout::checkPaginationAndFloatsAtEndLine):
(WebCore::LegacyLineLayout::lineWidthForPaginatedLineChanged const):
(WebCore::LegacyLineLayout::matchedEndLine):
(WebCore::LegacyLineLayout::addOverflowFromInlineChildren):
(WebCore::LegacyLineLayout::lineCountUntil const):
(WebCore::LegacyLineLayout::deleteEllipsisLineBoxes):
(WebCore::LegacyLineLayout::checkLinesForTextOverflow):
(WebCore::LegacyLineLayout::updateFragmentForLine const):

  • rendering/LegacyLineLayout.h:

(WebCore::LegacyLineLayout::firstRootBox const):
(WebCore::LegacyLineLayout::lastRootBox const):

  • rendering/LegacyRootInlineBox.cpp: Renamed from Source/WebCore/rendering/RootInlineBox.cpp.

(WebCore::containingFragmentMap):
(WebCore::LegacyRootInlineBox::LegacyRootInlineBox):
(WebCore::LegacyRootInlineBox::~LegacyRootInlineBox):
(WebCore::LegacyRootInlineBox::detachEllipsisBox):
(WebCore::LegacyRootInlineBox::clearTruncation):
(WebCore::LegacyRootInlineBox::isHyphenated const):
(WebCore::LegacyRootInlineBox::baselinePosition const):
(WebCore::LegacyRootInlineBox::lineHeight const):
(WebCore::LegacyRootInlineBox::lineCanAccommodateEllipsis):
(WebCore::LegacyRootInlineBox::placeEllipsis):
(WebCore::LegacyRootInlineBox::placeEllipsisBox):
(WebCore::LegacyRootInlineBox::paintEllipsisBox const):
(WebCore::LegacyRootInlineBox::paint):
(WebCore::LegacyRootInlineBox::nodeAtPoint):
(WebCore::LegacyRootInlineBox::adjustPosition):
(WebCore::LegacyRootInlineBox::childRemoved):
(WebCore::LegacyRootInlineBox::containingFragment const):
(WebCore::LegacyRootInlineBox::clearContainingFragment):
(WebCore::LegacyRootInlineBox::setContainingFragment):
(WebCore::LegacyRootInlineBox::alignBoxesInBlockDirection):
(WebCore::LegacyRootInlineBox::beforeAnnotationsAdjustment const):
(WebCore::LegacyRootInlineBox::lineSnapAdjustment const):
(WebCore::LegacyRootInlineBox::lineSelectionGap):
(WebCore::LegacyRootInlineBox::selectionState):
(WebCore::LegacyRootInlineBox::firstSelectedBox):
(WebCore::LegacyRootInlineBox::lastSelectedBox):
(WebCore::LegacyRootInlineBox::selectionTop const):
(WebCore::blockBeforeWithinSelectionRoot):
(WebCore::LegacyRootInlineBox::selectionTopAdjustedForPrecedingBlock const):
(WebCore::LegacyRootInlineBox::selectionBottom const):
(WebCore::LegacyRootInlineBox::blockFlow const):
(WebCore::LegacyRootInlineBox::lineBreakBidiStatus const):
(WebCore::LegacyRootInlineBox::setLineBreakInfo):
(WebCore::LegacyRootInlineBox::ellipsisBox const):
(WebCore::LegacyRootInlineBox::removeLineBoxFromRenderObject):
(WebCore::LegacyRootInlineBox::extractLineBoxFromRenderObject):
(WebCore::LegacyRootInlineBox::attachLineBoxToRenderObject):
(WebCore::LegacyRootInlineBox::paddedLayoutOverflowRect const):
(WebCore::setAscentAndDescent):
(WebCore::LegacyRootInlineBox::ascentAndDescentForBox const):
(WebCore::LegacyRootInlineBox::verticalPositionForBox):
(WebCore::LegacyRootInlineBox::includeLeadingForBox const):
(WebCore::LegacyRootInlineBox::includeFontForBox const):
(WebCore::LegacyRootInlineBox::includeGlyphsForBox const):
(WebCore::LegacyRootInlineBox::includeInitialLetterForBox const):
(WebCore::LegacyRootInlineBox::includeMarginForBox const):
(WebCore::LegacyRootInlineBox::fitsToGlyphs const):
(WebCore::LegacyRootInlineBox::includesRootLineBoxFontOrLeading const):
(WebCore::LegacyRootInlineBox::outputLineBox const):
(WebCore::LegacyRootInlineBox::boxName const):

  • rendering/LegacyRootInlineBox.h: Renamed from Source/WebCore/rendering/RootInlineBox.h.

(WebCore::LegacyRootInlineBox::lineTop const):
(WebCore::LegacyRootInlineBox::lineBottom const):
(WebCore::LegacyRootInlineBox::lineBoxTop const):
(WebCore::LegacyRootInlineBox::lineBoxBottom const):
(WebCore::LegacyRootInlineBox::lineBoxHeight const):
(WebCore::LegacyRootInlineBox::paginationStrut const):
(WebCore::LegacyRootInlineBox::setPaginationStrut):
(WebCore::LegacyRootInlineBox::isFirstAfterPageBreak const):
(WebCore::LegacyRootInlineBox::setIsFirstAfterPageBreak):
(WebCore::LegacyRootInlineBox::paginatedLineWidth const):
(WebCore::LegacyRootInlineBox::setPaginatedLineWidth):
(WebCore::LegacyRootInlineBox::selectionHeight const):
(WebCore::LegacyRootInlineBox::selectionHeightAdjustedForPrecedingBlock const):
(WebCore::LegacyRootInlineBox::setLineTopBottomPositions):
(WebCore::LegacyRootInlineBox::lineBreakObj const):
(WebCore::LegacyRootInlineBox::lineBreakPos const):
(WebCore::LegacyRootInlineBox::setLineBreakPos):
(WebCore::LegacyRootInlineBox::appendFloat):
(WebCore::LegacyRootInlineBox::removeFloat):
(WebCore::LegacyRootInlineBox::floatsPtr):
(WebCore::LegacyRootInlineBox::baselineType const):
(WebCore::LegacyRootInlineBox::hasAnnotationsBefore const):
(WebCore::LegacyRootInlineBox::hasAnnotationsAfter const):
(WebCore::LegacyRootInlineBox::logicalTopVisualOverflow const):
(WebCore::LegacyRootInlineBox::logicalBottomVisualOverflow const):
(WebCore::LegacyRootInlineBox::logicalTopLayoutOverflow const):
(WebCore::LegacyRootInlineBox::logicalBottomLayoutOverflow const):
(WebCore::LegacyRootInlineBox::isTrailingFloatsRootInlineBox const):
(WebCore::LegacyRootInlineBox::nextRootBox const):
(WebCore::LegacyRootInlineBox::prevRootBox const):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::simplifiedNormalFlowLayout):

  • rendering/RenderBlockFlow.cpp:

(WebCore::calculateMinimumPageHeight):
(WebCore::needsAppleMailPaginationQuirk):
(WebCore::RenderBlockFlow::adjustLinePositionForPagination):
(WebCore::RenderBlockFlow::layoutLineGridBox):
(WebCore::RenderBlockFlow::markLinesDirtyInBlockRange):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::shouldIncludeLinesForParentLineCount):
(WebCore::RenderBlockFlow::lineCount const):
(WebCore::RenderBlockFlow::clearTruncation):
(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):
(WebCore::RenderBlockFlow::outputLineTreeAndMark const):
(WebCore::shouldCheckLines): Deleted.

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::lineGridBox const):
(WebCore::RenderBlockFlow::setLineGridBox):
(WebCore::RenderBlockFlow::firstRootBox const):
(WebCore::RenderBlockFlow::lastRootBox const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::positionLineBox):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::lineAtIndex):
(WebCore::getHeightForLineCount):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
(WebCore::shouldCheckLines): Deleted.

  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::checkLinesConsistency const):

  • rendering/RenderFragmentedFlow.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::generateCulledLineBoxRects const):
(WebCore::RenderInline::linesVisualOverflowBoundingBox const):
(WebCore::RenderInline::linesVisualOverflowBoundingBoxInFragment const):
(WebCore::RenderInline::paintOutline):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::anyLineIntersectsRect const):
(WebCore::RenderLineBoxList::lineIntersectsDirtyRect const):
(WebCore::RenderLineBoxList::paint const):
(WebCore::RenderLineBoxList::hitTest const):
(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/RenderLineBreak.cpp:
  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::localSelectionRect):
(WebCore::RenderListMarker::addOverflowFromListMarker):
(WebCore::RenderListMarker::selectionRectForRepaint):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::shouldPaint):
(WebCore::RenderReplaced::localSelectionRect const):

  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::layoutBlock):
(WebCore::RenderRubyRun::getOverhang const):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::dirtyRange):

  • rendering/TrailingFloatsRootInlineBox.h:
  • rendering/line/LineLayoutState.h:

(WebCore::LineLayoutState::endLine const):
(WebCore::LineLayoutState::setEndLine):
(WebCore::LineLayoutState::updateRepaintRangeFromBox):

  • rendering/mathml/RenderMathMLBlock.cpp:

(WebCore::RenderMathMLBlock::baselinePosition const):

  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::positionForPoint):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::SVGRootInlineBox):

  • rendering/svg/SVGRootInlineBox.h:
  • style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):

9:10 AM Changeset in webkit [278353] by Jonathan Bedard
  • 1 edit
    2 deletes in trunk/Tools

[GitHub] Delete unused scripts
https://bugs.webkit.org/show_bug.cgi?id=226519

Reviewed by Aakash Jain.

  • Scripts/configure-github-as-upstream: Removed.
  • Scripts/sync-master-with-upstream: Removed.
8:56 AM Changeset in webkit [278352] by youenn@apple.com
  • 334 edits
    7 copies
    2 moves
    32 adds
    11 deletes in trunk/Source/ThirdParty/libwebrtc

Update boringssl to M92
https://bugs.webkit.org/show_bug.cgi?id=226486

Reviewed by Alex Christensen.

  • CMakeLists.txt:
  • Source/third_party/boringssl/BUILD.generated.gni: Resynced.
  • libwebrtc.xcodeproj/project.pbxproj:
8:42 AM Changeset in webkit [278351] by Chris Dumez
  • 38 edits in trunk/Source

Use Checked aliases instead of Checked<T, RecordOverflow>
https://bugs.webkit.org/show_bug.cgi?id=226535

Reviewed by Keith Miller.

Source/JavaScriptCore:

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • runtime/JSArray.cpp:

(JSC::JSArray::appendMemcpy):
(JSC::JSArray::unshiftCountWithAnyIndexingType):

  • runtime/JSStringJoiner.cpp:

(JSC::JSStringJoiner::joinedLength const):

  • runtime/JSStringJoiner.h:
  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstringsWithSeparators):

  • wasm/WasmFormat.cpp:

(JSC::Wasm::Segment::create):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::grow):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::ByteCompiler::emitDisjunction):

  • yarr/YarrParser.h:

(JSC::Yarr::Parser::consumeNumber):

  • yarr/YarrPattern.cpp:

Source/WebCore:

  • html/ImageData.cpp:

(WebCore::computeDataSize):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::validateTexFuncData):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):

  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::computeImageSizeInBytes):

  • platform/graphics/IntRect.cpp:

(WebCore::IntRect::isValid const):

  • platform/graphics/PixelBuffer.cpp:

(WebCore::PixelBuffer::computeBufferSize):

  • platform/graphics/PixelBuffer.h:
  • platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.cpp:

(WebCore::ISOFairPlayStreamingKeyRequestInfoBox::parse):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateBackdropFilters):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::calculateSafeBackendSize):

  • platform/graphics/win/Direct2DUtilities.cpp:

(WebCore::Direct2D::createDirect2DImageSurfaceWithData):

  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::copyNativeImage const):
(WebCore::ImageBufferDirect2DBackend::compatibleBitmap):

Source/WebKit:

  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::numBytesForSize):

  • Shared/ShareableBitmap.h:
  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::calculateBytesPerPixel):

  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::calculateBytesPerPixel):

  • Shared/win/ShareableBitmapDirect2D.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::calculateBytesPerPixel):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::updateSpellingUIWithGrammarString):

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::calculateSafeBackendSize):

Source/WTF:

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::userVisibleURL):

  • wtf/URLParser.cpp:

(WTF::URLParser::parseIPv4Piece):

  • wtf/cocoa/NSURLExtras.mm:

(WTF::dataWithUserTypedString):

  • wtf/glib/SocketConnection.cpp:

(WTF::SocketConnection::sendMessage):

5:37 AM Changeset in webkit [278350] by commit-queue@webkit.org
  • 15 edits
    1 delete in trunk

[css-scroll-snap] Scroll snap is broken with non-horizontal writing modes
https://bugs.webkit.org/show_bug.cgi?id=226010

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-06-02
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Update expectations to mark tests as passing.
  • web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt: Ditto.

Source/WebCore:

Fix issues related to vertical writing modes and scroll snap.

This change fixes three existing WPT tests.

imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element.html
imported/w3c/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
imported/w3c/web-platform-tests/css/css-scroll-snap/snap-inline-block.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForScrollSnapAlignment): Update to reflect new member names of ScrollSnapAlign.

  • page/FrameView.cpp:

(WebCore::FrameView::updateSnapOffsets): Pass in the text direction and writing mode of the
container, allowing the values specified on the body to override those specified on the root
element.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::updateSnapOffsetsForScrollableArea): Properly handle the writing mode and the
text direction of the container.

  • page/scrolling/ScrollSnapOffsetsInfo.h: Update function signature.
  • rendering/RenderLayerModelObject.cpp:

(WebCore::scrollSnapContainerRequiresUpdateForStyleUpdate): Pass in the writing mode and
text direction of the scrolling container.

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::updateSnapOffsets): Update to reflect new member names
of ScrollSnapAlign.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hasSnapPosition const): Ditto.

  • rendering/style/StyleScrollSnapPoints.h: Change the name of the members of ScrollSnapAlign

to match what is described in the specification. The values provided are for block and
inline directions, but depending on the scroll container.
(WebCore::operator==): Ditto.

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertScrollSnapAlign): Ditto.

LayoutTests:

  • TestExpectations: Mark one test as passing.
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-snap-type-on-root-element-expected.txt: Removed.
  • platform/ios/imported/w3c/web-platform-tests/css/css-scroll-snap/snap-inline-block-expected.txt:
5:17 AM Changeset in webkit [278349] by youenn@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

Update pffft to M92
https://bugs.webkit.org/show_bug.cgi?id=226491

Reviewed by Alex Christensen.

  • Source/third_party/pffft/BUILD.gn:
  • Source/third_party/pffft/DIR_METADATA: Added.
5:17 AM Changeset in webkit [278348] by youenn@apple.com
  • 48 edits
    5 moves
    19 adds
    1 delete in trunk/Source/ThirdParty/libwebrtc

Update opus to M92
https://bugs.webkit.org/show_bug.cgi?id=226490

Reviewed by Alex Christensen.

  • Source/third_party: Resynced.
5:08 AM Changeset in webkit [278347] by youenn@apple.com
  • 2 edits
    1 add in trunk/Source/ThirdParty/libwebrtc

Update to rnnoise to M92
https://bugs.webkit.org/show_bug.cgi?id=226492

Reviewed by Alex Christensen.

  • Source/third_party/rnnoise/DIR_METADATA: Added.
  • Source/third_party/rnnoise/OWNERS:
2:41 AM Changeset in webkit [278346] by Antti Koivisto
  • 7 edits in trunk

REGRESSION(r276882): Style not invalidated correctly for media queries in shadow trees that share style
https://bugs.webkit.org/show_bug.cgi?id=226369
<rdar://problem/78684562>

Reviewed by Sam Weinig.

Source/WebCore:

Style resolvers are stateful in respect to media queries. We would only invalidate in the first shadow tree
because that evaluation flipped the state and the second evaluation would see nothing changing in media query
state.

  • style/StyleScope.cpp:

(WebCore::Style::Scope::collectResolverScopes):

Add a helper to collect all scopes associated with a resolver.

(WebCore::Style::Scope::evaluateMediaQueries):

Only evaluate each resolver once, then invalidate all associated scopes if needed.

  • style/StyleScope.h:

LayoutTests:

Expand the existing test to have multiple shadow trees sharing style.

  • fast/shadow-dom/media-query-in-shadow-style-expected.html:
  • fast/shadow-dom/media-query-in-shadow-style.html:
  • fast/shadow-dom/resources/media-query-in-shadow-style-frame.html:
2:07 AM Changeset in webkit [278345] by youenn@apple.com
  • 2 edits in trunk/LayoutTests

Fix race condition in binary_wsh.py
https://bugs.webkit.org/show_bug.cgi?id=226464
<rdar://77356905>

Reviewed by Alex Christensen.

The web socket server was implemented to send 4 messages as soon as connection is opened and close the connection.
The client expects to correctly send a message before the connection is closed.
This is not guaranteed by the web socket server, in case the server is very fast closing the connection and the client very slow at sending its message.
Given the focus of the test is to validate binary data, change the web socket server to remove the potential race.

  • http/tests/websocket/tests/hybi/inspector/binary_wsh.py:

(web_socket_transfer_data):

1:43 AM Changeset in webkit [278344] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Add CheckedPtr
https://bugs.webkit.org/show_bug.cgi?id=226158

Reviewed by Antti Koivisto.

Source/WTF:

This patch introduces a new type of smart pointer, CheckedPtr, which behaves like RefPtr and
let each object keep track of pointers pointing to the object. Unlike CheckedPtr, the purpose of
this internal counter is to release assert that there is no outstanding pointer at the time
of destruction instead of keeping the object alive when there is one.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CheckedPtr.h: Added.

(WTF::CheckedPtr): Added.
(WTF::CheckedPtr::CheckedPtr): Added.
(WTF::CheckedPtr::~CheckedPtr): Added.
(WTF::CheckedPtr::isHashTableDeletedValue const): Added.
(WTF::CheckedPtr::operator UnspecifiedBoolType const): Added.
(WTF::CheckedPtr::operator! const): Added.
(WTF::CheckedPtr::get const): Added.
(WTF::CheckedPtr::get): Added.
(WTF::CheckedPtr::operator* const): Added.
(WTF::CheckedPtr::operator*): Added.
(WTF::CheckedPtr::operator-> const): Added.
(WTF::CheckedPtr::operator->): Added.
(WTF::CheckedPtr::operator== const): Added.
(WTF::CheckedPtr::operator=): Added.
(WTF::CheckedPtr::unspecifiedBoolTypeInstance const): Added.
(WTF::CheckedPtr::refIfNotNull): Added.
(WTF::CheckedPtr::derefIfNotNull): Added.
(WTF::makeCheckedPtr): Added.
(WTF::is): Added.
(WTF::CanMakeCheckedPtr): Added.
(WTF::CanMakeCheckedPtr::~CanMakeCheckedPtr): Added. Release assert that m_ptrCount is 0.
(WTF::CanMakeCheckedPtr::ptrCount const): Added.
(WTF::CanMakeCheckedPtr::incrementPtrCount): Added.
(WTF::CanMakeCheckedPtr::decrementPtrCount): Added. Note that we don't do anything when m_ptrCount
becomes 0 unlike RefPtr.
(WTF::HashTraits<CheckedPtr<P>>): Added.
(WTF::HashTraits<CheckedPtr<P>>::emptyValue): Added.
(WTF::HashTraits<CheckedPtr<P>>::peek): Added.
(WTF::HashTraits<CheckedPtr<P>>::customDeleteBucket): Added.

Tools:

Added basic tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/CheckedPtr.cpp: Added.

(TestWebKitAPI::CheckedObject): Added.
(TestWebKitAPI::DerivedCheckedObject): Added.
(WTF_CheckedPtr.Basic):
(WTF_CheckedPtr.DerivedClass):
(WTF_CheckedPtr.HashSet):

1:28 AM Changeset in webkit [278343] by graouts@webkit.org
  • 5 edits
    4 adds in trunk

Hit-testing does not account for clip-path on <iframe>
https://bugs.webkit.org/show_bug.cgi?id=226380
<rdar://problem/78621486>

Reviewed by Antti Koivisto.

Source/WebCore:

The logic to account for the clip-path property during hit-testing was only found in RenderBlock::nodeAtPoint()
although other types of RenderBox objects may need this, such as RenderIFrame. So we move some of the logic
from RenderBlock::nodeAtPoint() to dedicated methods on RenderBox such that RenderBox::nodeAtPoint() may call them
but also allow for RenderBlock::nodeAtPoint() to call them.

Test: css3/masking/clip-path-hit-test-iframe.html

css3/masking/clip-path-hit-test-img.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::nodeAtPoint):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::hitTestVisualOverflow const):
(WebCore::RenderBox::hitTestClipPath const):
(WebCore::RenderBox::hitTestBorderRadius const):
(WebCore::RenderBox::nodeAtPoint):

  • rendering/RenderBox.h:

LayoutTests:

Add a new test which checks that we hit-test correctly in part of an
<iframe> or <img> clipped by the clip-path property.

  • css3/masking/clip-path-hit-test-iframe-expected.txt: Added.
  • css3/masking/clip-path-hit-test-iframe.html: Added.
  • css3/masking/clip-path-hit-test-img-expected.txt: Added.
  • css3/masking/clip-path-hit-test-img.html: Added.
1:11 AM Changeset in webkit [278342] by youenn@apple.com
  • 890 edits
    2 copies
    1 move
    55 adds
    7 deletes in trunk/Source/ThirdParty/libwebrtc

Update abseil-cpp to M92
https://bugs.webkit.org/show_bug.cgi?id=226485

Reviewed by Alex Christensen.

  • Source/third_party/abseil-cpp: Resynced.
1:01 AM Changeset in webkit [278341] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Improve AudioMediaStreamTrackRendererUnit logging to know which source is being played
https://bugs.webkit.org/show_bug.cgi?id=226466

Reviewed by Eric Carlson.

Log AudioSampleDataSource identifier when using it with the render unit.
Set AudioSampleDataSource identifier to its MediaStreamTrack/RealtimeMediaSource identifier.
This allows identifying which tracks are being played.

No change of behavior.

  • platform/mediastream/AudioTrackPrivateMediaStream.cpp:

(WebCore::AudioTrackPrivateMediaStream::createRenderer):
(WebCore::AudioTrackPrivateMediaStream::setLogger): Deleted.

  • platform/mediastream/AudioTrackPrivateMediaStream.h:
  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:

(WebCore::AudioMediaStreamTrackRendererCocoa::pushSamples):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:

(WebCore::AudioMediaStreamTrackRendererUnit::addSource):
(WebCore::AudioMediaStreamTrackRendererUnit::removeSource):

Jun 1, 2021:

11:45 PM Changeset in webkit [278340] by Darin Adler
  • 489 edits in trunk

Remove <wtf/Optional.h>
https://bugs.webkit.org/show_bug.cgi?id=226437

Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • <many files>: Remove include of <wtf/Optional.h>.
  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:

(CppBackendDispatcherHeaderGenerator._generate_secondary_header_includes): Don't generate
an include of wtf/Optional.h; including WTFString.h takes care of this anyway.

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py:

(CppFrontendDispatcherHeaderGenerator._generate_secondary_header_includes): Ditto.

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator._generate_secondary_header_includes): Ditto.

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator.generate_output): Generate an include of <optional>
instead of <wtf/Optional.h>.

  • inspector/scripts/tests/expected/*: Regenerate.

Source/WebCore:

  • <many files>: Removed include of <wtf/Optional.h>.
  • platform/graphics/Font.h: Tweaked style a bit.
  • Modules/geolocation/GeolocationClient.h: Added include of <optional>.
  • Modules/mediastream/DoubleRange.h: Ditto.
  • Modules/mediastream/LongRange.h: Ditto.
  • Modules/webauthn/AuthenticationExtensionsClientOutputs.h: Ditto.
  • css/CSSToLengthConversionData.h: Ditto.
  • css/DOMMatrix2DInit.h: Ditto.
  • dom/AddEventListenerOptions.h: Ditto.
  • dom/DeviceMotionData.h: Ditto.
  • dom/DeviceOrientationData.h: Ditto.
  • dom/SuccessOr.h: Ditto.
  • html/DateTimeFieldsState.h: Ditto.
  • html/ImageBitmapOptions.h: Ditto.
  • html/canvas/PredefinedColorSpace.h: Ditto.
  • layout/LayoutPhase.h: Ditto.
  • layout/MarginTypes.h: Ditto.
  • loader/ResourceLoadNotifier.h: Ditto.
  • page/RuntimeEnabledFeatures.h: Ditto.
  • page/ScrollOptions.h: Ditto.
  • platform/MediaCapabilitiesInfo.h: Ditto.
  • platform/cocoa/SystemBattery.h: Ditto.
  • platform/graphics/DecodingOptions.h: Ditto.
  • platform/graphics/DestinationColorSpace.h: Ditto.
  • platform/graphics/DisplayRefreshMonitorClient.h: Ditto.
  • platform/graphics/FloatLine.h: Ditto.
  • platform/graphics/gpu/GPURequestAdapterOptions.h: Ditto.
  • platform/graphics/x11/PlatformDisplayX11.h: Ditto.
  • platform/ios/SelectionGeometry.h: Ditto.
  • platform/mac/NSScrollerImpDetails.h: Ditto.
  • platform/network/DNS.h: Ditto.
  • platform/text/EncodingTables.h: Ditto.
  • platform/text/TextCodecCJK.h: Ditto.
  • platform/text/TextCodecUTF16.h: Ditto.
  • platform/text/TextFlags.h: Ditto.

Source/WebCore/PAL:

  • pal/SessionID.h: Include <optional>.
  • pal/crypto/gcrypt/Utilities.h: Ditto.
  • pal/crypto/tasn1/Utilities.cpp: Removed include of <wtf/Optional.h>.

Source/WebDriver:

  • SessionHost.h: Removed include of <wtf/Optional.h>.

Source/WebKit:

  • <many files>: Removed include of <wtf/Optional.h>.

Source/WebKitLegacy/mac:

  • DOM/DOMRangeInternal.h: Added import of <optional>.
  • WebView/WebGeolocationPosition.mm: Removed import of <wtf/Optional.h>.
  • WebView/WebGeolocationPositionInternal.h: Added import of <optional>.

Source/WTF:

  • <many files>: Removed include of <wtf/Optional.h>.
  • WTF.xcodeproj/project.pbxproj: Removed Optional.h.
  • wtf/Markable.h: Added include of <optional>.
  • wtf/OptionSet.h: Ditto.
  • wtf/Optional.h: Emptied this file. On the Windows build system, we can't

seem to build successfully without an empty file here. The copied forwarding
header seems to linger even if we remove the original. Until we fix the
Windows build system, if we want to support incremental builds, we need
to keep this empty file around.

  • wtf/PrintStream.h: Added include of <optional>.
  • wtf/Seconds.h: Ditto.
  • wtf/StackTrace.h: Ditto.
  • wtf/StdLibExtras.h: Moved the valueOrCompute function here from Optional.h.

Re-sorted the "using" at the bottom of the file.

  • wtf/URLHelpers.h: Added include of <optional>.
  • wtf/Vector.h: Ditto.

Tools:

  • <many files>: Removed include of <wtf/Optional.h>.
11:45 PM Changeset in webkit [278339] by Ryan Haddad
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r273486. rdar://problem/75902605

Unreviewed. GLib debug buildfix after r273477

  • dom/EventContext.cpp: (WebCore::EventContext::handleLocalEvents const):

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

10:21 PM Changeset in webkit [278338] by Chris Dumez
  • 134 edits in trunk

Rename Checked::unsafeGet() to Checked::value()
https://bugs.webkit.org/show_bug.cgi?id=226514

Reviewed by Darin Adler.

Rename Checked::unsafeGet() to Checked::value(). The "unsafeGet" naming is confusing as this
function isn't really unsafe since it will crash if the value has overflowed. Also add an
operator T() to implicitly convert a Checked to its underlying type without needing to
call value().

Source/JavaScriptCore:

  • b3/B3Const32Value.cpp:

(JSC::B3::Const32Value::checkAddConstant const):
(JSC::B3::Const32Value::checkSubConstant const):
(JSC::B3::Const32Value::checkMulConstant const):

  • b3/B3Const64Value.cpp:

(JSC::B3::Const64Value::checkAddConstant const):
(JSC::B3::Const64Value::checkSubConstant const):
(JSC::B3::Const64Value::checkMulConstant const):

  • bytecompiler/BytecodeGenerator.h:

(JSC::FinallyContext::numberOfBreaksOrContinues const):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargsWithSpread):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • heap/Heap.cpp:

(JSC::Heap::deprecatedReportExtraMemorySlowCase):
(JSC::Heap::extraMemorySize):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::reportExtraMemoryVisited):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::propagateExternalMemoryVisitedIfNecessary):

  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::slowEnsureCapacity):
(JSC::MarkedArgumentBuffer::expandCapacity):

  • runtime/ArrayPrototype.cpp:

(JSC::concatAppendOne):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/DirectArguments.h:
  • runtime/HashMapImpl.h:

(JSC::HashMapBuffer::allocationSize):
(JSC::HashMapImpl::HashMapImpl):

  • runtime/HashMapImplInlines.h:

(JSC::nextCapacity):
(JSC::HashMapImpl<HashMapBucketType>::finishCreation):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::parseInt):

  • runtime/JSImmutableButterfly.h:

(JSC::JSImmutableButterfly::tryCreate):

  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::offsetOfVariable):
(JSC::JSLexicalEnvironment::allocationSizeForScopeSize):

  • runtime/JSObject.h:
  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::create):

  • runtime/JSString.h:
  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::createUninitialized):

  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):

  • runtime/StructureChain.cpp:

(JSC::StructureChain::create):

  • runtime/VM.h:

(JSC::ScratchBuffer::allocationSize):

  • runtime/WeakMapImpl.h:

(JSC::WeakMapBuffer::allocationSize):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::emitCallPatchpoint):

  • wasm/WasmB3IRGenerator.cpp:

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

  • wasm/WasmInstance.cpp:
  • wasm/WasmInstance.h:

(JSC::Wasm::Instance::allocationSize):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::push):
(JSC::Wasm::LLIntGenerator::getDropKeepCount):
(JSC::Wasm::LLIntGenerator::walkExpressionStack):
(JSC::Wasm::LLIntGenerator::finalize):
(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::addLoop):
(JSC::Wasm::LLIntGenerator::addTopLevel):
(JSC::Wasm::LLIntGenerator::addBlock):
(JSC::Wasm::LLIntGenerator::addIf):
(JSC::Wasm::LLIntGenerator::addElseToUnreachable):

  • wasm/WasmSignature.h:

(JSC::Wasm::Signature::allocatedSize):

  • wasm/WasmStreamingParser.cpp:

(JSC::Wasm::StreamingParser::addBytes):

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::Table):
(JSC::Wasm::Table::grow):
(JSC::Wasm::FuncRefTable::FuncRefTable):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::DisjunctionContext::allocationSize):
(JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::allocationSize):
(JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
(JSC::Yarr::ByteCompiler::atomCharacterClass):
(JSC::Yarr::ByteCompiler::atomBackReference):
(JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd):
(JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd):
(JSC::Yarr::ByteCompiler::emitDisjunction):

  • yarr/YarrInterpreter.h:

(JSC::Yarr::ByteTerm::ByteTerm):
(JSC::Yarr::ByteTerm::CheckInput):
(JSC::Yarr::ByteTerm::UncheckInput):

  • yarr/YarrJIT.cpp:
  • yarr/YarrParser.h:

(JSC::Yarr::Parser::consumeNumber):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::PatternTerm::dumpQuantifier):

Source/WebCore:

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneDeserializer::readTerminal):

  • dom/TextEncoderStreamEncoder.cpp:

(WebCore::TextEncoderStreamEncoder::encode):

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::takeResults):

  • html/FileInputType.cpp:

(WebCore::FileInputType::saveFormControlState const):

  • html/ImageData.cpp:

(WebCore::ImageData::create):
(WebCore::ImageData::createUninitialized):

  • html/MediaElementSession.cpp:

(WebCore::isElementRectMostlyInMainFrame):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::sliceArrayBufferView):
(WebCore::WebGL2RenderingContext::copyBufferSubData):
(WebCore::WebGL2RenderingContext::getBufferSubData):
(WebCore::WebGL2RenderingContext::validateClearBuffer):

  • html/canvas/WebGLBuffer.cpp:

(WebCore::WebGLBuffer::associateBufferSubDataImpl):
(WebCore::WebGLBuffer::associateCopyBufferSubData):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::clip2D):
(WebCore::WebGLRenderingContextBase::validateDrawArrays):
(WebCore::WebGLRenderingContextBase::validateDrawElements):
(WebCore::WebGLRenderingContextBase::validateTexFuncData):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::validateSimulatedVertexAttrib0):

  • html/canvas/WebGLRenderingContextBase.h:

(WebCore::WebGLRenderingContextBase::validateTexImageSubRectangle):
(WebCore::WebGLRenderingContextBase::checkedAddAndMultiply):

  • page/FrameView.h:

(WebCore::FrameView::incrementVisuallyNonEmptyPixelCount):

  • page/History.cpp:

(WebCore::History::stateObjectAdded):

  • platform/audio/AudioArray.h:

(WebCore::AudioArray::resize):

  • platform/audio/cocoa/AudioFileReaderCocoa.cpp:

(WebCore::tryCreateAudioBufferList):

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBuffer::adoptStorage):
(WebCore::CARingBuffer::initializeAfterAllocation):
(WebCore::CARingBuffer::allocate):

  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):

  • platform/graphics/FormatConverter.h:

(WebCore::FormatConverter::FormatConverter):

  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::computeImageSizeInBytes):

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::setSize):
(WebCore::ImageBackingStore::clear):

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::calculateMemoryCost):

  • platform/graphics/ImageFrame.h:

(WebCore::ImageFrame::frameBytes const):

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::maximumSubsamplingLevel):

  • platform/graphics/PixelBuffer.cpp:

(WebCore::PixelBuffer::tryCreateForDecoding):
(WebCore::PixelBuffer::tryCreate):

  • platform/graphics/PixelBuffer.h:

(WebCore::PixelBuffer::encode const):
(WebCore::PixelBuffer::decode):

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

(WebCore::ImageDecoderAVFObjC::frameBytesAtIndex const):

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

(WebCore::MediaSampleAVFObjC::setByteRangeOffset):
(WebCore::MediaSampleAVFObjC::byteRangeForAttachment const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateBackdropFilters):

  • platform/graphics/ca/LayerPool.cpp:

(WebCore::LayerPool::backingStoreBytesForSize):

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLImageExtractor::extractImage):

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::calculateBytesPerRow):

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoderCG::frameBytesAtIndex const):

  • platform/graphics/cocoa/SourceBufferParser.cpp:

(WebCore::SourceBufferParser::Segment::read const):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::effectApplyAccelerated):

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::copyPremultiplyingAlpha):
(WebCore::copyUnpremultiplyingAlpha):

  • platform/graphics/gpu/cocoa/GPUBindGroupAllocatorMetal.mm:

(WebCore::GPUBindGroupAllocator::allocateAndSetEncoders):
(WebCore::GPUBindGroupAllocator::reallocate):

  • platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:

(WebCore::GPUCommandBuffer::copyBufferToBuffer):

  • platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:

(WebCore::GPURenderPassEncoder::drawIndexed):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::frameBytesAtIndex const):

  • platform/graphics/nicosia/NicosiaBuffer.cpp:

(Nicosia::Buffer::Buffer):

  • platform/graphics/win/Direct2DUtilities.cpp:

(WebCore::Direct2D::createDirect2DImageSurfaceWithData):

  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::compatibleBitmap):

  • platform/graphics/win/ImageDecoderDirect2D.cpp:

(WebCore::ImageDecoderDirect2D::frameBytesAtIndex const):

  • platform/image-decoders/ScalableImageDecoder.cpp:

(WebCore::ScalableImageDecoder::frameBytesAtIndex const):

  • platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp:

(WebCore::sycc444ToRGB):
(WebCore::sycc422ToRGB):
(WebCore::sycc420ToRGB):

  • platform/ios/LegacyTileLayerPool.mm:

(WebCore::LegacyTileLayerPool::bytesBackingLayerWithPixelSize):

  • platform/text/TextCodecUTF16.cpp:

(WebCore::TextCodecUTF16::encode const):

  • platform/text/TextCodecUTF8.cpp:

(WebCore::TextCodecUTF8::encodeUTF8):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForCanvas const):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • storage/StorageMap.cpp:

(WebCore::StorageMap::setItem):

  • xml/XSLStyleSheetLibxslt.cpp:

(WebCore::XSLStyleSheet::parseString):

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::xsltParamArrayFromParameterMap):

  • xml/parser/CharacterReferenceParserInlines.h:

(WebCore::consumeCharacterReference):

Source/WebKit:

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::setItem):

  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::Cache::put):

  • Platform/IPC/ArgumentCoders.h:
  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::Connection::sendOutgoingMessage):
(IPC::createMessageDecoder):

  • Platform/IPC/cocoa/MachMessage.cpp:

(IPC::MachMessage::create):

  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::Handle::encode const):
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::createShareable):

  • Shared/ShareableBitmap.h:

(WebKit::ShareableBitmap::bytesPerRow const):
(WebKit::ShareableBitmap::sizeInBytes const):

  • Shared/ShareableResource.cpp:

(WebKit::ShareableResource::create):

  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::calculateBytesPerRow):
(WebKit::ShareableBitmap::createGraphicsContext):
(WebKit::ShareableBitmap::createCGImage const):

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::copyTrackArray):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:

(WebKit::MediaSampleCursor::copySampleLocation const):

  • WebProcess/GPU/graphics/DisplayListWriterHandle.cpp:

(WebKit::DisplayListWriterHandle::advance):

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::calculateBytesPerRow):

  • WebProcess/GPU/media/RemoteImageDecoderAVF.cpp:

(WebKit::RemoteImageDecoderAVF::frameBytesAtIndex const):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::increaseBufferedAmount):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestEvasionRectsAboveSelection):
(WebKit::WebPage::updateSelectionWithDelta):

Source/WTF:

  • wtf/CheckedArithmetic.h:

(WTF::Checked::operator! const):
(WTF::Checked::operator bool const):
(WTF::Checked::operator T const):
(WTF::Checked::value const):
(WTF::Checked::operator==):
(WTF::Checked::operator< const):
(WTF::Checked::operator<= const):
(WTF::Checked::operator> const):
(WTF::Checked::operator>= const):

  • wtf/ConcurrentBuffer.h:
  • wtf/FastMalloc.cpp:

(WTF::fastCalloc):
(WTF::tryFastCalloc):

  • wtf/Gigacage.cpp:

(Gigacage::tryMallocArray):

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::userVisibleURL):

  • wtf/URLParser.cpp:

(WTF::URLParser::parseIPv4Piece):

  • wtf/UniqueArray.h:
  • wtf/cocoa/NSURLExtras.mm:

(WTF::dataWithUserTypedString):

  • wtf/glib/SocketConnection.cpp:

(WTF::SocketConnection::readMessage):
(WTF::SocketConnection::sendMessage):

  • wtf/text/CString.cpp:

(WTF::CStringBuffer::createUninitialized):

  • wtf/text/StringBuffer.h:

(WTF::StringBuffer::StringBuffer):

  • wtf/text/StringBuilderJSON.cpp:

(WTF::StringBuilder::appendQuotedJSONString):

  • wtf/text/StringConcatenate.h:

(WTF::tryMakeStringFromAdapters):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::allocationSize):

  • wtf/text/StringToIntegerConversion.h:

(WTF::parseInteger):

Tools:

  • TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:

(TestWebKitAPI::CheckedArithmeticTester::run):
(TestWebKitAPI::AllowMixedSignednessTest::run):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/IntRectTests.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/IntSizeTests.cpp:

(TestWebKitAPI::TEST):

10:20 PM Changeset in webkit [278337] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Garden imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/source-media-outside-doc.html flakiness

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
6:20 PM Changeset in webkit [278336] by Jean-Yves Avenard
  • 20 edits in trunk

LayoutTests/imported/w3c:
MediaSession.coordinator should not be optional, relying on coordinator state change instead
https://bugs.webkit.org/show_bug.cgi?id=226328
rdar://77461335

Reviewed by Eric Carlson.

  • web-platform-tests/mediasession/idlharness.window-expected.txt:

Source/WebCore:
MediaSession.coordinator should not be optional, relying on coordinator state change instead
https://bugs.webkit.org/show_bug.cgi?id=226328
rdar://77461335

Reviewed by Eric Carlson.

The coordinator was a read-only optional attribute of the MediaSession element.
Testing if the attribute was to be used to determine if a MediaSessionCoordinator
was now available and for the MediaSession to join it. This made the use of an external
polyfill difficult and enforcing the validity of an user created custom
MediaSessionCoordinator due to IDL semantics limitations hard.
We instead always create a MediaSessionCoordinator which in its default state is Closed.
Once this state is changed to Waiting and an event is fire the MediaSession can now
join it.

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::MediaSession): MediaSession no longer needs to fire event.
Remove no longer necessary inheritance and async event queue.
(WebCore::MediaSession::create): Drive-by fix, don't call suspendIfNeeded() in the constructor.
(WebCore::MediaSession::createCoordinator): Make method private.

  • Modules/mediasession/MediaSession.h:

(WebCore::MediaSession::coordinator const): MediaSessionCoordinator always exists. Return reference instead.

  • Modules/mediasession/MediaSession.idl: Amend definition, remove EventHandler
  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::create):
(WebCore::MediaSessionCoordinator::MediaSessionCoordinator):
(WebCore::MediaSessionCoordinator::setMediaSessionCoordinatorPrivate):
(WebCore::MediaSessionCoordinator::virtualHasPendingActivity const):
(WebCore::MediaSessionCoordinator::join):
(WebCore::MediaSessionCoordinator::close):
(WebCore::MediaSessionCoordinator::coordinatorStateChanged):

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasession/MediaSessionCoordinator.idl: Added new EventHandler attribute.
  • Modules/mediasession/MediaSessionCoordinatorMixin.idl: Update for new API definition.
  • dom/EventNames.h:
  • dom/EventTargetFactory.in:
  • page/Page.cpp:

(WebCore::Page::setMediaSessionCoordinator):
(WebCore::Page::invalidateMediaSessionCoordinator):

  • testing/Internals.cpp:

(WebCore::Internals::registerMockMediaSessionCoordinator):

Tools:
MediaSession.coordinator should not be optional, relying on coordinator readyState change instead
https://bugs.webkit.org/show_bug.cgi?id=226328
rdar://77461335

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm:

(TestWebKitAPI::MediaSessionCoordinatorTest::createCoordinator): Change test to match new API,
using coordinatorstatechange event instead.

  • TestWebKitAPI/Tests/WebKitCocoa/media-remote.html:

LayoutTests:
MediaSession.coordinator should not be optional, relying on coordinator readyState change instead
https://bugs.webkit.org/show_bug.cgi?id=226328
rdar://77461335

Reviewed by Eric Carlson.

  • media/media-session/mock-coordinator-expected.txt:
  • media/media-session/mock-coordinator.html: Change test to match new API.
6:01 PM Changeset in webkit [278335] by Kyle Piddington
  • 4 edits in trunk/Source/ThirdParty/ANGLE

[Metal ANGLE] transformFeedback samples on webglsamples.org do not render correctly
https://bugs.webkit.org/show_bug.cgi?id=226285
<rdar://78524773>

Reviewed by Dean Jackson.

Metal ANGLE does not render these samples correctly, for a number of reasons.
For transform_feedback_interleaved and seperated, We need to start a new renderEncoder to get the results from the transform feedback.
for transform_feedback-seperated_2, we need to invalidate the current render pass descriptor in order to switch to the rasterizer-enabled version of the shader.
Testing: Ran all transform feedback tests from deqp suite to ensure no regressions are present.

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

(rx::ContextMtl::drawTriFanArraysWithBaseVertex):
(rx::ContextMtl::drawArraysImpl):
(rx::ContextMtl::drawTriFanElements):
(rx::ContextMtl::prepareForTransformFeedbackPassTwo):
(rx::ContextMtl::drawLineLoopElements):
(rx::ContextMtl::drawElementsImpl):
(rx::ContextMtl::onEndTransformFeedback):

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

(rx::TransformFeedbackMtl::end):

5:27 PM Changeset in webkit [278334] by Chris Fleizach
  • 2 edits in trunk/Tools

REGRESSION: (r277971) TestWebKitAPI.WebKit.AccessibilityReduceMotion is timing out
https://bugs.webkit.org/show_bug.cgi?id=226505
<rdar://problem/78721462>

Reviewed by Darin Adler.

The distributed notification for RM is no longer re-posted within WebKit, so we don't need to listen for it.

  • TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm:

(TEST):
(notificationCallback): Deleted.

5:14 PM Changeset in webkit [278333] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Drop unused AudioChannel::resizeSmaller()
https://bugs.webkit.org/show_bug.cgi?id=226516

Reviewed by Sam Weinig.

  • platform/audio/AudioBus.cpp:
  • platform/audio/AudioBus.h:
  • platform/audio/AudioChannel.cpp:
  • platform/audio/AudioChannel.h:
4:23 PM Changeset in webkit [278332] by Jonathan Bedard
  • 4 edits in trunk/Tools

[run-webkit-tests] Move helper out of Port instance
https://bugs.webkit.org/show_bug.cgi?id=226344
<rdar://problem/78575542>

Reviewed by Dewei Zhu.

The "helper" is a popen object, which are not pickleable, and cannot
belong to an instantiated port object.

  • Scripts/webkitpy/port/base.py:

(Port): Make helper class variable.
(Port.init):
(Port.stop_helper): All classes should share the same code to stop the helper process.

  • Scripts/webkitpy/port/mac.py:

(MacPort.start_helper): Use class variable.
(MacPort.stop_helper): Moved to base class..

3:36 PM Changeset in webkit [278331] by Wenson Hsieh
  • 8 edits in trunk/Source/WebCore

[macOS] Data detector highlights should appear when hovering inside image overlays
https://bugs.webkit.org/show_bug.cgi?id=226507

Reviewed by Tim Horton.

Refactor some logic in ImageOverlayController, such that the overlay is installed if _either_ selection painting
is required, or data detector highlights for the image overlay host element exist; additionally, add plumbing to
allow the ImageOverlayController to install a page overlay when the element under the mouse is inside an image
overlay.

  • dom/Document.cpp:

(WebCore::Document::willBeRemovedFromFrame):

Drive-by fix: use imageOverlayControllerIfExists instead of imageOverlayController to avoid unnecessarily
creating a new ImageOverlayController when detaching a Document.

  • page/EventHandler.cpp:

(WebCore::EventHandler::clear):

Refactor logic for clearing out m_elementUnderMouse into a separate helper, and call it from these two places.
This new helper clears out m_elementUnderMouse and additionally notifies the page's image overlay controller
(only if it has already been constructed).

(WebCore::EventHandler::updateMouseEventTargetNode):

Call out to the page's image overlay controller when changing m_elementUnderMouse.

(WebCore::EventHandler::clearElementUnderMouse):

  • page/EventHandler.h:
  • page/ImageOverlayController.cpp:

(WebCore::ImageOverlayController::selectionQuadsDidChange):

Refactor ImageOverlayController so that it only installs its page overlay if either:

  1. Selection painting is needed for selected text inside an image overlay, or...
  2. The cursor is over an image overlay host element with data detection results.

To achieve this, we maintain a weak pointer to the image overlay host that contains the selection separately
from the weak pointer to the image overlay host that contains data detectors, and is the element currently under
the mouse cursor.

Drive-by fix: also ignore selection updates due to temporary selections triggered as a result of gathering
dictionary popup info.

(WebCore::ImageOverlayController::documentDetached):
(WebCore::ImageOverlayController::uninstallPageOverlay):
(WebCore::ImageOverlayController::uninstallPageOverlayIfNeeded):

Split this into two functions: uninstallPageOverlayIfNeeded, which removes and destroys the PageOverlay if
it is no longer needed (i.e. the overlay is required for neither selection painting nor data detectors).

(WebCore::ImageOverlayController::willMoveToPage):
(WebCore::ImageOverlayController::drawRect):
(WebCore::ImageOverlayController::elementUnderMouseDidChange):

  • page/ImageOverlayController.h:

Rename m_imageOverlayBounds to m_selectionClipRect to make it clear that this is only used during selection
painting, and rename m_overlaySelectionQuads to just m_selectionQuads for conciseness.

  • page/Page.h:

(WebCore::Page::imageOverlayControllerIfExists):

Add a version of this getter that does not initialize the ImageOverlayController if it didn't already exist. See
call sites in EventHandler and Document.

  • page/mac/ImageOverlayControllerMac.mm:

(WebCore::ImageOverlayController::clearDataDetectorHighlights):

Additionally clear out m_hostElementForDataDetectors.

(WebCore::ImageOverlayController::elementUnderMouseDidChange):

Update data detector highlights whenever the element under the mouse is over content inside an image overlay.
Note that we effectively ignore this method call in the case where we're clearing out m_elementUnderMouse for
a different Document than the one containing m_hostElementForDataDetectors, which prevents us from erroneously
hiding data detectors when m_elementUnderMouse is removed or otherwise cleared out in a different Document.

3:36 PM Changeset in webkit [278330] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Adopt Reveal for phone numbers
https://bugs.webkit.org/show_bug.cgi?id=226383
rdar://78482517
Source/WebCore/PAL:

Patch by Dana Estra <destra@apple.com> on 2021-06-01
Reviewed by Tim Horton.

Add declaration for RVItem method initWithURL.

  • pal/spi/cocoa/RevealSPI.h:

Source/WebKit:

Patch by Dana Estra <destra@apple.com> on 2021-06-01
Reviewed by Tim Horton.

Manually tested by selecting text containing phone numbers in Safari and viewing dropdown menu.

Switch to Reveal framework to show a dropdown menu for telephone numbers with more options.

  • Platform/mac/MenuUtilities.mm:

(-[WKEmptyPresenterHighlightDelegate revealContext:rectsForItem:]):
(WebKit::menuForTelephoneNumber):

3:03 PM Changeset in webkit [278329] by Chris Dumez
  • 7 edits
    4 adds in trunk

Fix unsafe access to m_upload in XMLHttpRequest::virtualHasPendingActivity()
https://bugs.webkit.org/show_bug.cgi?id=226508

Reviewed by Geoffrey Garen.

Source/WebCore:

Fix unsafe access to m_upload in XMLHttpRequest::virtualHasPendingActivity() as virtualHasPendingActivity()
may get called off the main thread and m_upload gets initialized lazily on the main thread.

Tests: fast/xmlhttprequest/xmlhttprequest-upload-sameobject.html

http/tests/xmlhttprequest/upload-progress-events-gc.html

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::updateHasRelevantEventListener):
(WebCore::XMLHttpRequest::eventListenersDidChange):
(WebCore::XMLHttpRequest::virtualHasPendingActivity const):

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

(WebCore::XMLHttpRequestUpload::eventListenersDidChange):
(WebCore::XMLHttpRequestUpload::hasRelevantEventListener const):

  • xml/XMLHttpRequestUpload.h:

LayoutTests:

Improve layout test coverage to make sure that XMLHttpRequest.upload always returns
the same object and that progress events on XMLHttpRequest.upload still get fired
after GC.

  • fast/xmlhttprequest/xmlhttprequest-upload-sameobject-expected.txt: Added.
  • fast/xmlhttprequest/xmlhttprequest-upload-sameobject.html: Added.
  • http/tests/xmlhttprequest/upload-progress-events-gc-expected.txt: Added.
  • http/tests/xmlhttprequest/upload-progress-events-gc.html: Added.
2:04 PM Changeset in webkit [278328] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[Win] Remove unused GraphicsContext::hdc()
https://bugs.webkit.org/show_bug.cgi?id=226309

Reviewed by Anders Carlsson.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/win/GraphicsContextWin.cpp:

(WebCore::GraphicsContext::hdc const): Deleted.

2:04 PM Changeset in webkit [278327] by Ruben Turcios
  • 1 copy in tags/Safari-611.3.6.1.4

Tag Safari-611.3.6.1.4.

2:01 PM Changeset in webkit [278326] by Ruben Turcios
  • 8 edits in branches/safari-611.3.6.1-branch/Source

Versioning.

WebKit-7611.3.6.1.4

2:01 PM Changeset in webkit [278325] by Cameron McCormack
  • 2 edits in trunk/Source/WebCore

Remove duplicate "behavior for fixed" entry from scrolling state tree logging
https://bugs.webkit.org/show_bug.cgi?id=226479

Reviewed by Frédéric Wang.

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):

1:48 PM Changeset in webkit [278324] by Ruben Turcios
  • 2 edits in branches/safari-611.3.6.1-branch/Source/WTF

Cherry-pick r278321. rdar://problem/78718570

Unreviewed build fix after r277881.

Silence unused parameter warnings.

  • wtf/cocoa/FileSystemCocoa.mm: (WTF::FileSystemImpl::setAllowsMaterializingDatalessFiles): (WTF::FileSystemImpl::allowsMaterializingDatalessFiles): Deleted. (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath): Deleted. (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath): Deleted.

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

1:08 PM Changeset in webkit [278323] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[WinCairo] GraphicsContextCairo::GraphicsContextCairo(HDC, bool) leaks cairo_t
https://bugs.webkit.org/show_bug.cgi?id=226317

Reviewed by Don Olmstead.

  • platform/graphics/win/GraphicsContextCairoWin.cpp:

(WebCore::createCairoContextWithHDC): Changed the return type from cairo_t* to RefPtr<cairo_t>.
(WebCore::GraphicsContextCairo::GraphicsContextCairo):

1:04 PM Changeset in webkit [278322] by Fujii Hironori
  • 2 edits in trunk/Tools

Sync Tools/win/DLLLauncher/DLLLauncherMain.cpp with Source/JavaScriptCore/shell/DLLLauncherMain.cpp
https://bugs.webkit.org/show_bug.cgi?id=226451

Reviewed by Don Olmstead.

Tools/win/DLLLauncher/DLLLauncherMain.cpp and
Source/JavaScriptCore/shell/DLLLauncherMain.cpp should be same.
But, r231403 changed only JavaScriptCore's one. r178530 changed
only Tools's one.

r178530 added flags for Debug CRT Heap. However, WebKit isn't
using Debug CRT Heap nowadays. And, using _CRTDBG_CHECK_ALWAYS_DF
flag makes WebKit unbearably slow.

Just copied JavaScriptCore's one to overwrite Tools's one.

  • win/DLLLauncher/DLLLauncherMain.cpp:

(copyEnvironmentVariable):
(getStringValue):
(applePathFromRegistry):
(appleApplicationSupportDirectory):
(iTunesDirectory):
(prependPath):
(fatalError):
(directoryExists):
(modifyPath):
(getLastErrorString):
(wWinMain):

12:24 PM Changeset in webkit [278321] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Unreviewed build fix after r277881.

Silence unused parameter warnings.

  • wtf/cocoa/FileSystemCocoa.mm:

(WTF::FileSystemImpl::setAllowsMaterializingDatalessFiles):
(WTF::FileSystemImpl::allowsMaterializingDatalessFiles): Deleted.
(WTF::FileSystemImpl::isSafeToUseMemoryMapForPath): Deleted.
(WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath): Deleted.

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

Unreviewed build fix after r278253.

Revert changes to WebKitTests.swift as this is Swift's Optional<> not WTF's.

  • SwiftOverlay/Tests/WebKitTests.swift:

(WebKitTests.testWKPDFConfigurationRect):

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

Unreviewed build fix after r278253.

Revert changes to ObjectiveCBlockConversions.swift and this is Swift's Optional<> not WTF's.

  • SwiftOverlay/SwiftOverlay/ObjectiveCBlockConversions.swift:

(ObjCBlockConversion.boxingNilAsAnyForCompatibility(_:Error:Error:)):

12:02 PM Changeset in webkit [278318] by Chris Dumez
  • 6 edits in trunk

REGRESSION (iOS 14.5): Can't go back and render previous page properly after "location.href"
https://bugs.webkit.org/show_bug.cgi?id=226323
<rdar://problem/78623536>

Reviewed by Alex Christensen.

Source/WebKit:

A while back, we did an optimization to allow several WebPage objects associated with the
same WebPageProxy to live in the same WebProcess. This allowed us to reuse a process from
a SuspendedPageProxy for a forward navigation, without destroying the SuspendedPageProxy.
However, this added quite a bit of complexity and this broke some same-process back/forward
navigations like in this bug. In particular, it is really hard to get do our history
management right (with the current model) if there is more than more WebPage in a process
for the same WebPageProxy.

To address issues, we go back to the older model with one WebPage per WebProcess for a
given WebPageProxy. To achieve this, we make sure to destroy of SuspendedPageProxy objects
for the current page and destination process before we process-swap (like we used to do).

  • UIProcess/WebBackForwardCache.cpp:

(WebKit::WebBackForwardCache::removeEntriesForPageAndProcess):

  • UIProcess/WebBackForwardCache.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

Tools:

New API test written by Alex Christensen to cover this case.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
11:57 AM Changeset in webkit [278317] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Resume WebIDBServer when it is about to be closed
https://bugs.webkit.org/show_bug.cgi?id=226502
rdar://78691498

Reviewed by Chris Dumez.

We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::close):

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

[EME][Thunder] Build broken since r278244
https://bugs.webkit.org/show_bug.cgi?id=226498

Patch by Philippe Normand <pnormand@igalia.com> on 2021-06-01
Reviewed by Alex Christensen.

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

(WebCore::CDMInstanceSessionThunder::cdmInstanceThunder const): Cast raw pointer instead of
its smart pointer container.

11:14 AM Changeset in webkit [278315] by Chris Dumez
  • 10 edits in trunk/Source/WebKit

Enable WebPageProxy's release logging in ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=226342

Reviewed by Geoff Garen.

Enable WebPageProxy's release logging in ephemeral sessions. Our release logging doesn't
contain anything sensitive and not having this logging makes it hard to debug issues in
apps using ephemeral sessions.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::shouldStart):
(WebKit::SOAuthorizationSession::start):
(WebKit::SOAuthorizationSession::continueStartAfterGetAuthorizationHints):
(WebKit::SOAuthorizationSession::continueStartAfterDecidePolicy):
(WebKit::SOAuthorizationSession::fallBackToWebPath):
(WebKit::SOAuthorizationSession::abort):
(WebKit::SOAuthorizationSession::complete):
(WebKit::SOAuthorizationSession::presentViewController):
(WebKit::SOAuthorizationSession::dismissViewController):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::processDidTerminate):
(WebKit::ProvisionalPageProxy::cancel):
(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):
(WebKit::ProvisionalPageProxy::goToBackForwardItem):
(WebKit::ProvisionalPageProxy::didCreateMainFrame):
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
(WebKit::ProvisionalPageProxy::didCreateContextInWebProcessForVisibilityPropagation):
(WebKit::ProvisionalPageProxy::didCreateContextInGPUProcessForVisibilityPropagation):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::isAlwaysOnLoggingAllowed const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::launchProcess):
(WebKit::WebPageProxy::suspendCurrentPageIfPossible):
(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::tryClose):
(WebKit::WebPageProxy::tryCloseTimedOut):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadSimulatedRequest):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
(WebKit::WebPageProxy::stopLoading):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::tryRestoreScrollPosition):
(WebKit::WebPageProxy::updateActivityState):
(WebKit::WebPageProxy::updateThrottleState):
(WebKit::WebPageProxy::clearAudibleActivity):
(WebKit::WebPageProxy::stopMakingViewBlankDueToLackOfRenderingUpdate):
(WebKit::WebPageProxy::makeViewBlankIfUnpaintedSinceLastLoadCommit):
(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::suspend):
(WebKit::WebPageProxy::resume):
(WebKit::WebPageProxy::restoreFromSessionState):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didExplicitOpenForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::willPerformClientRedirectForFrame):
(WebKit::WebPageProxy::didCancelClientRedirectForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::didNavigateWithNavigationDataShared):
(WebKit::WebPageProxy::didPerformClientRedirectShared):
(WebKit::WebPageProxy::didPerformServerRedirectShared):
(WebKit::WebPageProxy::closePage):
(WebKit::WebPageProxy::processDidBecomeUnresponsive):
(WebKit::WebPageProxy::processDidBecomeResponsive):
(WebKit::WebPageProxy::resetStateAfterProcessTermination):
(WebKit::WebPageProxy::dispatchProcessDidTerminate):
(WebKit::WebPageProxy::tryReloadAfterProcessTermination):
(WebKit::WebPageProxy::requestStorageSpace):
(WebKit::WebPageProxy::updateReportedMediaCaptureState):
(WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
(WebKit::WebPageProxy::didExceedBackgroundCPULimitWhileInForeground):
(WebKit::WebPageProxy::logger):

  • UIProcess/WebPageProxy.h:
10:36 AM Changeset in webkit [278314] by Alan Coon
  • 1 copy in branches/safari-612.1.16-branch

New branch.

10:22 AM Changeset in webkit [278313] by Antti Koivisto
  • 39 edits
    2 moves in trunk/Source

Rename InlineBox to LegacyInlineBox
https://bugs.webkit.org/show_bug.cgi?id=226501

Reviewed by Alan Bujtas.

Source/WebCore:

More legacy line layout path renaming.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Position.h:
  • layout/Verification.cpp:

(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::collectFlowBoxSubtree):
(WebCore::Layout::collectInlineBoxes):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::firstTextRunInTextOrderFor):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathRun::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::RunIteratorLegacyPath::RunIteratorLegacyPath):
(WebCore::LayoutIntegration::RunIteratorLegacyPath::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::RunIteratorModernPath::legacyInlineBox const):

  • rendering/BidiRun.cpp:
  • rendering/BidiRun.h:

(WebCore::BidiRun::box):
(WebCore::BidiRun::setBox):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForInline):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::EllipsisBox):
(WebCore::EllipsisBox::markupBox const):
(WebCore::EllipsisBox::paintMarkupBox):
(WebCore::EllipsisBox::nodeAtPoint):

  • rendering/EllipsisBox.h:
  • rendering/InlineElementBox.h:

(WebCore::InlineElementBox::InlineElementBox):
(WebCore::InlineElementBox::renderer const):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::setHasBadChildList):
(WebCore::InlineFlowBox::getFlowSpacingLogicalWidth):
(WebCore::InlineFlowBox::addToLine):
(WebCore::InlineFlowBox::removeChild):
(WebCore::InlineFlowBox::deleteLine):
(WebCore::InlineFlowBox::extractLine):
(WebCore::InlineFlowBox::attachLine):
(WebCore::InlineFlowBox::adjustPosition):
(WebCore::InlineFlowBox::determineSpacingForFlowBoxes):
(WebCore::InlineFlowBox::placeBoxRangeInInlineDirection):
(WebCore::InlineFlowBox::requiresIdeographicBaseline const):
(WebCore::InlineFlowBox::adjustMaxAscentAndDescent):
(WebCore::InlineFlowBox::computeLogicalBoxHeights):
(WebCore::InlineFlowBox::placeBoxesInBlockDirection):
(WebCore::InlineFlowBox::maxLogicalBottomForTextDecorationLine const):
(WebCore::InlineFlowBox::minLogicalTopForTextDecorationLine const):
(WebCore::InlineFlowBox::flipLinesInBlockDirection):
(WebCore::InlineFlowBox::addReplacedChildOverflow):
(WebCore::InlineFlowBox::computeOverflow):
(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::paint):
(WebCore::InlineFlowBox::firstLeafDescendant const):
(WebCore::InlineFlowBox::lastLeafDescendant const):
(WebCore::InlineFlowBox::canAccommodateEllipsis const):
(WebCore::InlineFlowBox::placeEllipsisBox):
(WebCore::InlineFlowBox::clearTruncation):
(WebCore::InlineFlowBox::computeOverAnnotationAdjustment const):
(WebCore::InlineFlowBox::computeUnderAnnotationAdjustment const):
(WebCore::InlineFlowBox::collectLeafBoxesInLogicalOrder const):
(WebCore::InlineFlowBox::outputLineTreeAndMark const):
(WebCore::InlineFlowBox::checkConsistency const):

  • rendering/InlineFlowBox.h:

(WebCore::InlineFlowBox::InlineFlowBox):
(WebCore::InlineFlowBox::renderer const):
(WebCore::InlineFlowBox::firstChild const):
(WebCore::InlineFlowBox::lastChild const):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::markDirty):

  • rendering/InlineTextBox.h:

(WebCore::InlineTextBox::InlineTextBox):
(WebCore::InlineTextBox::renderer const):

  • rendering/LegacyInlineBox.cpp: Renamed from Source/WebCore/rendering/InlineBox.cpp.

(WebCore::LegacyInlineBox::assertNotDeleted const):
(WebCore::LegacyInlineBox::~LegacyInlineBox):
(WebCore::LegacyInlineBox::setHasBadParent):
(WebCore::LegacyInlineBox::invalidateParentChildList):
(WebCore::LegacyInlineBox::removeFromParent):
(WebCore::LegacyInlineBox::boxName const):
(WebCore::LegacyInlineBox::showNodeTreeForThis const):
(WebCore::LegacyInlineBox::showLineTreeForThis const):
(WebCore::LegacyInlineBox::outputLineTreeAndMark const):
(WebCore::LegacyInlineBox::outputLineBox const):
(WebCore::LegacyInlineBox::logicalHeight const):
(WebCore::LegacyInlineBox::baselinePosition const):
(WebCore::LegacyInlineBox::lineHeight const):
(WebCore::LegacyInlineBox::caretMinOffset const):
(WebCore::LegacyInlineBox::caretMaxOffset const):
(WebCore::LegacyInlineBox::dirtyLineBoxes):
(WebCore::LegacyInlineBox::adjustPosition):
(WebCore::LegacyInlineBox::root const):
(WebCore::LegacyInlineBox::root):
(WebCore::LegacyInlineBox::nextOnLineExists const):
(WebCore::LegacyInlineBox::previousOnLineExists const):
(WebCore::LegacyInlineBox::nextLeafOnLine const):
(WebCore::LegacyInlineBox::previousLeafOnLine const):
(WebCore::LegacyInlineBox::selectionState):
(WebCore::LegacyInlineBox::canAccommodateEllipsis const):
(WebCore::LegacyInlineBox::placeEllipsisBox):
(WebCore::LegacyInlineBox::clearKnownToHaveNoOverflow):
(WebCore::LegacyInlineBox::locationIncludingFlipping const):
(WebCore::LegacyInlineBox::flipForWritingMode const):
(showNodeTree):
(showLineTree):

  • rendering/LegacyInlineBox.h: Renamed from Source/WebCore/rendering/InlineBox.h.

(WebCore::LegacyInlineBox::nextOnLine const):
(WebCore::LegacyInlineBox::previousOnLine const):
(WebCore::LegacyInlineBox::setNextOnLine):
(WebCore::LegacyInlineBox::setPreviousOnLine):
(WebCore::LegacyInlineBox::LegacyInlineBox):
(WebCore::LegacyInlineBox::~LegacyInlineBox):
(WebCore::LegacyInlineBox::assertNotDeleted const):

  • rendering/LegacyLineLayout.cpp:

(WebCore::LegacyLineLayout::createInlineBoxForRenderer):
(WebCore::LegacyLineLayout::createLineBoxes):
(WebCore::LegacyLineLayout::constructLine):
(WebCore::inlineAncestorHasStartBorderPaddingOrMargin):
(WebCore::inlineAncestorHasEndBorderPaddingOrMargin):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::LegacyLineLayout::layoutRunsAndFloats):

  • rendering/LegacyLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::outputLineTreeAndMark const):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::offsetLeft const):
(WebCore::RenderInline::offsetTop const):
(WebCore::RenderInline::culledInlineFirstLineBox const):
(WebCore::RenderInline::culledInlineLastLineBox const):

  • rendering/RenderInline.h:

(WebCore::RenderInline::firstLineBoxIncludingCulling const):
(WebCore::RenderInline::lastLineBoxIncludingCulling const):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::localSelectionRect):

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

(WebCore::RootInlineBox::isHyphenated const):
(WebCore::RootInlineBox::placeEllipsis):
(WebCore::RootInlineBox::childRemoved):
(WebCore::RootInlineBox::lineSelectionGap):
(WebCore::RootInlineBox::selectionState):
(WebCore::RootInlineBox::firstSelectedBox):
(WebCore::RootInlineBox::lastSelectedBox):
(WebCore::RootInlineBox::ascentAndDescentForBox const):
(WebCore::RootInlineBox::verticalPositionForBox):
(WebCore::RootInlineBox::includeLeadingForBox const):
(WebCore::RootInlineBox::includeFontForBox const):
(WebCore::RootInlineBox::includeGlyphsForBox const):
(WebCore::RootInlineBox::includeInitialLetterForBox const):
(WebCore::RootInlineBox::includeMarginForBox const):
(WebCore::RootInlineBox::outputLineBox const):

  • rendering/RootInlineBox.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::positionForPoint):

  • rendering/svg/SVGInlineFlowBox.cpp:

(WebCore::SVGInlineFlowBox::paintSelectionBackground):
(WebCore::SVGInlineFlowBox::paint):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::paint):
(WebCore::SVGRootInlineBox::layoutCharactersInTextBoxes):
(WebCore::SVGRootInlineBox::layoutChildBoxes):
(WebCore::SVGRootInlineBox::layoutRootBox):
(WebCore::SVGRootInlineBox::closestLeafChildForPosition):
(WebCore::SVGRootInlineBox::nodeAtPoint):
(WebCore::reverseInlineBoxRangeAndValueListsIfNeeded):
(WebCore::SVGRootInlineBox::reorderValueLists):

  • rendering/svg/SVGRootInlineBox.h:
  • rendering/svg/SVGTextQuery.cpp:

(WebCore::SVGTextQuery::collectTextBoxesInFlowBox):

Source/WebKitLegacy/mac:

  • DOM/DOMUIKitExtensions.mm:
10:19 AM Changeset in webkit [278312] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

[WebXR] Attach IOSurface to WebXROpaqueFramebuffer
https://bugs.webkit.org/show_bug.cgi?id=225896
<rdar://problem/78128289>

Add a null check to fix a test crash.

  • Modules/webxr/WebXROpaqueFramebuffer.cpp:

(WebCore::WebXROpaqueFramebuffer::startFrame):

9:49 AM Changeset in webkit [278311] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Factor out token-type dependent CSS property parsing functions to allow more code sharing
https://bugs.webkit.org/show_bug.cgi?id=226473

Reviewed by Darin Adler.

As a step toward reducing duplicate code and making CSSPropertyParserHelpers a bit
easier to follow, this change extracts the token type specific parts of the primitive
consume functions (e.g. the part of consumeNumberRaw where the token is known to be
a FunctionToken) into their own functions. This allows sharing between functions that
both need that logic (e.g. consumeNumberRaw and consumeNumberRawOrPercentRaw can share)
without extra branches, rechecking the token type, or duplication. It also has the
benefit of creating a strict pattern for primitive consumers going forward.

The new names are rather long to make it very clear what they do, but they are unlikely
to stay for very long. Future changes will try to generalize through templates to allow
programatic combinations of the consumers without always haveing to write the boilerplate.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::shouldAcceptUnitlessValue):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRawWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::validatedNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawWithKnownTokenTypeIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeNumberCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::validatedPercentRaw):
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypePercentage):
(WebCore::CSSPropertyParserHelpers::consumePercentRawWithKnownTokenTypeIdent):
(WebCore::CSSPropertyParserHelpers::consumePercentCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumePercentCSSPrimitiveValueWithCalcWithKnownTokenTypePercentage):
(WebCore::CSSPropertyParserHelpers::validatedLengthRaw):
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeLengthCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeAngleRawWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeAngleCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeTimeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
(WebCore::CSSPropertyParserHelpers::consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension):
(WebCore::CSSPropertyParserHelpers::consumeIntegerTypeRaw):
(WebCore::CSSPropertyParserHelpers::consumeIntegerType):
(WebCore::CSSPropertyParserHelpers::consumeIntegerRaw):
(WebCore::CSSPropertyParserHelpers::consumeInteger):
(WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw):
(WebCore::CSSPropertyParserHelpers::consumePositiveInteger):
(WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeNumber):
(WebCore::CSSPropertyParserHelpers::consumeLengthRaw):
(WebCore::CSSPropertyParserHelpers::consumeLength):
(WebCore::CSSPropertyParserHelpers::consumePercentRaw):
(WebCore::CSSPropertyParserHelpers::consumePercent):
(WebCore::CSSPropertyParserHelpers::consumePercentWorkerSafe):
(WebCore::CSSPropertyParserHelpers::canConsumeCalcValue):
(WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngle):
(WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeTime):
(WebCore::CSSPropertyParserHelpers::consumeResolution):
(WebCore::CSSPropertyParserHelpers::consumeAngleOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeLengthOrPercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeLengthOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeNumberAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumePercentAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeAngleRawOrNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleRawOrNumberRawAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentRaw):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentDividedBy100Raw):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentRawAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberRawOrPercentDividedBy100RawAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::divisibleBy100):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumber):
(WebCore::CSSPropertyParserHelpers::consumeFontWeightNumberWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeIdentRaw):
(WebCore::CSSPropertyParserHelpers::consumeIdent):
(WebCore::CSSPropertyParserHelpers::consumeIdentWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeUrlAsStringView):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlpha):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlphaAllowingSymbolTableIdent):
(WebCore::CSSPropertyParserHelpers::normalizeRGBComponentNumber):
(WebCore::CSSPropertyParserHelpers::normalizeRGBComponentPercentage):
(WebCore::CSSPropertyParserHelpers::consumeRelativeRGBComponent):
(WebCore::CSSPropertyParserHelpers::clampRGBComponent):
(WebCore::CSSPropertyParserHelpers::consumeRGBOrHSLOptionalAlpha):
(WebCore::CSSPropertyParserHelpers::parseRelativeRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLabParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionForRGBTypes):
(WebCore::CSSPropertyParserHelpers::consumeDeprecatedGradientColorStop):
(WebCore::CSSPropertyParserHelpers::consumeCrossFade):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentDividedBy100Raw): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlphaOrIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeHue): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeHueOrIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberOrIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumePercentOrIdent): Deleted.
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentOrIdentNormalizedForRelativeRGB): Deleted.

9:28 AM Changeset in webkit [278310] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

Print bot configuration in build.webkit.org builds
https://bugs.webkit.org/show_bug.cgi?id=226353

Reviewed by Jonathan Bedard.

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

(Factory.init): Added PrintConfiguration step.

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

(PrintConfiguration): Copied from ews code, step to print configuration.
(PrintConfiguration.init):
(PrintConfiguration.run):
(PrintConfiguration.convert_build_to_os_name):
(PrintConfiguration.getResultSummary):

  • CISupport/build-webkit-org/steps_unittest.py: Added unit-tests.
8:34 AM Changeset in webkit [278309] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Fix thread safety issues in MediaStreamAudioSourceNode
https://bugs.webkit.org/show_bug.cgi?id=226476

Reviewed by Youenn Fablet.

Adopt thread safety analysis annotations in MediaStreamAudioSourceNode and fix
bugs found by clang. In particular, the following issues were fixed:

  • setFormat() could modify m_sourceNumberOfChannels before locking on the main thread.
  • process() was accessing m_sourceNumberOfChannels / m_sourceSampleRate on the rendering thread *before* locking.
  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):
(WebCore::MediaStreamAudioSourceNode::process):

  • Modules/webaudio/MediaStreamAudioSourceNode.h:
8:19 AM Changeset in webkit [278308] by pvollan@apple.com
  • 6 edits
    1 move in trunk/Source/WebKit

[iOS] Preprocess the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=226301
<rdar://problem/78575178>

Reviewed by Geoffrey Garen.

Run the WebContent sandbox through the preprocessor on iOS.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Removed.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in: Copied from Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.
  • WebKit.xcodeproj/project.pbxproj:
8:09 AM Changeset in webkit [278307] by Chris Dumez
  • 9 edits in trunk/Source/WebCore

Fix thread safety issues in WaveShaperProcessor
https://bugs.webkit.org/show_bug.cgi?id=226478

Reviewed by Youenn Fablet.

Adopt thread safety analysis annotations in WaveShaperProcessor and fix bugs
found by clang. In particular, the following issues were fixed:

  • WaveShaperDSPKernel::latencyTime() was failing to grab the lock before accessing the WaveShaperProcessor's oversample on the rendering thread, even though oversample gets modified on the main thread.
  • WaveShaperNode::propagatesSilence() was failing to grab the lock before accessing the WaveShaperProcessor's curve on the rendering thread, even though the curve gets modified on the main thread.
  • Modules/webaudio/AudioBasicProcessorNode.h:

(WebCore::AudioBasicProcessorNode::processor const):

  • Modules/webaudio/WaveShaperDSPKernel.cpp:

(WebCore::WaveShaperDSPKernel::process):
(WebCore::WaveShaperDSPKernel::processCurve):
(WebCore::WaveShaperDSPKernel::latencyTime const):

  • Modules/webaudio/WaveShaperDSPKernel.h:
  • Modules/webaudio/WaveShaperNode.cpp:

(WebCore::WaveShaperNode::create):
(WebCore::WaveShaperNode::setCurveForBindings):
(WebCore::WaveShaperNode::curveForBindings):
(WebCore::WaveShaperNode::setOversampleForBindings):
(WebCore::WaveShaperNode::oversampleForBindings const):
(WebCore::WaveShaperNode::propagatesSilence const):

  • Modules/webaudio/WaveShaperNode.h:
  • Modules/webaudio/WaveShaperNode.idl:
  • Modules/webaudio/WaveShaperProcessor.cpp:

(WebCore::WaveShaperProcessor::setCurveForBindings):
(WebCore::WaveShaperProcessor::setOversampleForBindings):
(WebCore::WaveShaperProcessor::process):

  • Modules/webaudio/WaveShaperProcessor.h:
7:56 AM Changeset in webkit [278306] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Fix thread safety issues in MediaElementAudioSourceNode
https://bugs.webkit.org/show_bug.cgi?id=226475

Reviewed by Youenn Fablet.

Adopt thread safety analysis annotations in MediaElementAudioSourceNode and fix
bugs found by clang. In particular, the following issues were fixed:

  • setFormat() was modifying m_muted / m_sourceNumberOfChannels / m_sourceSampleRate on the main thread without locking, even though those data members are accessed from the rendering thread.
  • process() was accessing m_muted / m_sourceNumberOfChannels / m_sourceSampleRate on the rendering thread *before* locking.
  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::setFormat):
(WebCore::MediaElementAudioSourceNode::process):

  • Modules/webaudio/MediaElementAudioSourceNode.h:
6:58 AM Changeset in webkit [278305] by Antti Koivisto
  • 13 edits
    2 moves in trunk/Source/WebCore

Rename ComplexLineLayout to LegacyLineLayout
https://bugs.webkit.org/show_bug.cgi?id=226482

Reviewed by Alan Bujtas.

Since we now handle most inline content with LFC, rename the legacy path as "legacy".

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/integration/LayoutIntegrationInlineContentBuilder.cpp:

(WebCore::LayoutIntegration::lineOverflowWidth):

  • rendering/InlineIterator.h:

(WebCore::IsolateTracker::addFakeRunIfNecessary):
(WebCore::InlineBidiResolver::appendRunInternal):

  • rendering/LegacyLineLayout.cpp: Renamed from Source/WebCore/rendering/ComplexLineLayout.cpp.

(WebCore::LegacyLineLayout::LegacyLineLayout):
(WebCore::LegacyLineLayout::~LegacyLineLayout):
(WebCore::determineDirectionality):
(WebCore::createRun):
(WebCore::LegacyLineLayout::appendRunsForObject):
(WebCore::LegacyLineLayout::createRootInlineBox):
(WebCore::LegacyLineLayout::createAndAppendRootInlineBox):
(WebCore::LegacyLineLayout::createInlineBoxForRenderer):
(WebCore::dirtyLineBoxesForRenderer):
(WebCore::parentIsConstructedOrHaveNext):
(WebCore::LegacyLineLayout::createLineBoxes):
(WebCore::endsWithHTMLSpaces):
(WebCore::reachedEndOfTextRenderer):
(WebCore::LegacyLineLayout::constructLine):
(WebCore::LegacyLineLayout::textAlignmentForLine const):
(WebCore::updateLogicalWidthForLeftAlignedBlock):
(WebCore::updateLogicalWidthForRightAlignedBlock):
(WebCore::updateLogicalWidthForCenterAlignedBlock):
(WebCore::LegacyLineLayout::setMarginsForRubyRun):
(WebCore::setLogicalWidthForTextRun):
(WebCore::LegacyLineLayout::updateRubyForJustifiedText):
(WebCore::LegacyLineLayout::computeExpansionForJustifiedText):
(WebCore::LegacyLineLayout::updateLogicalWidthForAlignment):
(WebCore::updateLogicalInlinePositions):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForLine):
(WebCore::expansionBehaviorForInlineTextBox):
(WebCore::applyExpansionBehavior):
(WebCore::inlineAncestorHasStartBorderPaddingOrMargin):
(WebCore::inlineAncestorHasEndBorderPaddingOrMargin):
(WebCore::isLastInFlowRun):
(WebCore::LegacyLineLayout::computeInlineDirectionPositionsForSegment):
(WebCore::LegacyLineLayout::removeInlineBox const):
(WebCore::LegacyLineLayout::computeBlockDirectionPositionsForLine):
(WebCore::isCollapsibleSpace):
(WebCore::findFirstTrailingSpace):
(WebCore::LegacyLineLayout::handleTrailingSpaces):
(WebCore::LegacyLineLayout::appendFloatingObjectToLastLine):
(WebCore::notifyResolverToResumeInIsolate):
(WebCore::setUpResolverToResumeInIsolate):
(WebCore::constructBidiRunsForSegment):
(WebCore::LegacyLineLayout::createLineBoxesFromBidiRuns):
(WebCore::deleteLineRange):
(WebCore::repaintDirtyFloats):
(WebCore::LegacyLineLayout::layoutRunsAndFloats):
(WebCore::LegacyLineLayout::restartLayoutRunsAndFloatsInRange):
(WebCore::LegacyLineLayout::layoutRunsAndFloatsInRange):
(WebCore::LegacyLineLayout::reattachCleanLineFloats):
(WebCore::LegacyLineLayout::linkToEndLineIfNeeded):
(WebCore::LegacyLineLayout::layoutLineBoxes):
(WebCore::LegacyLineLayout::checkFloatInCleanLine):
(WebCore::LegacyLineLayout::determineStartPosition):
(WebCore::LegacyLineLayout::determineEndPosition):
(WebCore::LegacyLineLayout::checkPaginationAndFloatsAtEndLine):
(WebCore::LegacyLineLayout::lineWidthForPaginatedLineChanged const):
(WebCore::LegacyLineLayout::matchedEndLine):
(WebCore::LegacyLineLayout::addOverflowFromInlineChildren):
(WebCore::LegacyLineLayout::lineCount const):
(WebCore::LegacyLineLayout::lineCountUntil const):
(WebCore::LegacyLineLayout::deleteEllipsisLineBoxes):
(WebCore::LegacyLineLayout::checkLinesForTextOverflow):
(WebCore::LegacyLineLayout::positionNewFloatOnLine):
(WebCore::LegacyLineLayout::updateFragmentForLine const):
(WebCore::LegacyLineLayout::style const):
(WebCore::LegacyLineLayout::layoutContext const):

  • rendering/LegacyLineLayout.h: Renamed from Source/WebCore/rendering/ComplexLineLayout.h.

(WebCore::LegacyLineLayout::lineBoxes):
(WebCore::LegacyLineLayout::lineBoxes const):
(WebCore::LegacyLineLayout::firstRootBox const):
(WebCore::LegacyLineLayout::lastRootBox const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::willBeDestroyed):
(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::startAlignedOffsetForLine):
(WebCore::RenderBlockFlow::adjustLinePositionForPagination):
(WebCore::RenderBlockFlow::styleDidChange):
(WebCore::RenderBlockFlow::hitTestInlineChildren):
(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):
(WebCore::RenderBlockFlow::inlineBlockBaseline const):
(WebCore::RenderBlockFlow::lineCount const):
(WebCore::RenderBlockFlow::paintInlineChildren):
(WebCore::RenderBlockFlow::hasLines const):
(WebCore::RenderBlockFlow::ensureLineBoxes):

  • rendering/RenderBlockFlow.h:

(WebCore::RenderBlockFlow::firstRootBox const):
(WebCore::RenderBlockFlow::lastRootBox const):
(WebCore::RenderBlockFlow::hasLegacyLineLayout const):
(WebCore::RenderBlockFlow::legacyLineLayout const):
(WebCore::RenderBlockFlow::legacyLineLayout):
(WebCore::RenderBlockFlow::hasComplexLineLayout const): Deleted.
(WebCore::RenderBlockFlow::complexLineLayout const): Deleted.
(WebCore::RenderBlockFlow::complexLineLayout): Deleted.

  • rendering/RenderText.cpp:

(WebCore::RenderText::usesLegacyLineLayoutPath const):
(WebCore::RenderText::usesComplexLineLayoutPath const): Deleted.

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

(WebCore::RootInlineBox::removeLineBoxFromRenderObject):
(WebCore::RootInlineBox::extractLineBoxFromRenderObject):
(WebCore::RootInlineBox::attachLineBoxToRenderObject):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::skipLeadingWhitespace):

  • rendering/line/LineBreaker.h:

(WebCore::LineBreaker::positionNewFloatOnLine):

6:50 AM Changeset in webkit [278304] by weinig@apple.com
  • 12 edits
    2 copies in trunk

Support calc() on components inside relative color syntax colors
https://bugs.webkit.org/show_bug.cgi?id=226272

Reviewed by Darin Adler.

Source/WebCore:

Added new and updated test cases to fast/css/parsing-relative-color-syntax.html.

Updates support for the CSS Color 5 "Relative Color Syntax" to support
both calc() on components and component permutations within the syntax.

This allows for things like:

background: lch(from var(--primary-color) 60% calc(c * 0.8) h);

or

background: lch(from rebeccapurple g b r);

To make this work, the calc() infrastructure now supports passing a CSSCalcSymbolTable
which allows the logic in the parser to lookup unknown identifiers when parsing a value.
The relative color syntax parsers can then build an appropriate CSSCalcSymbolTable filled
with the components of the origin color.

Since these calc() values are not serialized, this can all happen in the parser, but if
we to be able serialize them in the future, CSSCalcPrimitiveValueNode could be updated
to store the symbol name in addition to storing the value and type (or we could we could
add a new node for it).

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/calc/CSSCalcSymbolTable.cpp: Added.
  • css/calc/CSSCalcSymbolTable.h: Added.

Add CSSCalcSymbolTable which contains a mapping from CSSValueID to CSSUnitType/double pairs.

  • css/calc/CSSCalcExpressionNodeParser.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseValue):
When trying to construct a value node, if the token is a identifier, use the new
symbol table to look up a type/value to use instead. Use a switch to make things
a bit more clear that differentiation is being done based on token type.

  • css/calc/CSSCalcExpressionNodeParser.h:

Add reference to a CSSCalcSymbolTable to the parser. The parser should only ever be used
on the stack, so this works well and allows us to avoid copying the table.

  • css/calc/CSSCalcValue.cpp:

(WebCore::CSSCalcValue::create):

  • css/calc/CSSCalcValue.h:

Pass the CSSCalcSymbolTable to the parser if one is provided. An overload was used
to avoid #including CSSCalcSymbolTable.h in the header just to add a default value.

  • css/makevalues.pl:

Give a concrete base of uint16_t to allow it to be forward declared and add DefaultHash
and HashTraits to allow it to be used with HashTable. These match the definition of
CSSPropertyID.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
(WebCore::CSSPropertyParserHelpers::consumeNumberRaw):
(WebCore::CSSPropertyParserHelpers::consumePercentWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeAngleRaw):
(WebCore::CSSPropertyParserHelpers::consumeAngleWorkerSafe):
(WebCore::CSSPropertyParserHelpers::consumeAngleOrPercent):
(WebCore::CSSPropertyParserHelpers::consumeOptionalAlphaOrIdent):
(WebCore::CSSPropertyParserHelpers::consumeHueOrIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrIdent):
(WebCore::CSSPropertyParserHelpers::consumePercentOrIdent):
(WebCore::CSSPropertyParserHelpers::consumeNumberOrPercentOrIdentNormalizedForRelativeRGB):
(WebCore::CSSPropertyParserHelpers::parseRelativeRGBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHSLParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeHWBParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLabParameters):
(WebCore::CSSPropertyParserHelpers::parseRelativeLCHParameters):
(WebCore::CSSPropertyParserHelpers::extractChannelValue): Deleted.
(WebCore::CSSPropertyParserHelpers::resolveRelativeColorChannel): Deleted.
Rework relative color syntax parsing to allow permutation of channel symbols
and use of the calc() symbol table support to allow passing in the channels.
This makes the relatative color syntax variants much closer to the normal
variants (with the exception of passing the symbol table) and a subsequent
change will attempt to merge them further.

LayoutTests:

Updated test and results for update support including calc()
and compoment permutation.

  • fast/css/parsing-relative-color-syntax-expected.txt:
  • fast/css/parsing-relative-color-syntax.html:
6:43 AM Changeset in webkit [278303] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][TFC][Quirks] heightValueOfNearestContainingBlockWithFixedHeight should not need to cross formatting context boundary
https://bugs.webkit.org/show_bug.cgi?id=226470

Reviewed by Antti Koivisto.

Now that the incoming vertical constraint is applied properly for the cell layout, we don't need to cross
the formatting context boundary in heightValueOfNearestContainingBlockWithFixedHeight to check if the table
box has fixed height value.

  • layout/formattingContexts/table/TableFormattingQuirks.cpp:

(WebCore::Layout::TableFormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):

6:27 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
6:01 AM Changeset in webkit [278302] by Adrian Perez de Castro
  • 4 edits in trunk/Source

[WPE][GTK] Support building against uClibc
https://bugs.webkit.org/show_bug.cgi?id=226244

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

  • assembler/MacroAssemblerARM64.cpp:

(getauxval): Provide a fallback implementation of getauxval() for
systems which do not provide <sys/auxv.h>, like those using uClibc
as their C library.

Source/WTF:

  • wtf/PlatformRegisters.h: Use the <sys/ucontext.h> header instead of

<ucontext.h>, which is enough to gain access to the type definitions
for CPU registers and is available on every libc. On the other hand,
uClibc does not have <ucontext.h>, so this fixes the build in that
case.

5:28 AM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
4:59 AM Changeset in webkit [278301] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

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

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

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

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

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

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

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

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::viewSize):

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseGetViewSize):

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
3:52 AM Changeset in webkit [278300] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Improve if condition in RenderReplaced::computeReplacedLogicalWidth
https://bugs.webkit.org/show_bug.cgi?id=226325

Reviewed by Darin Adler.

Removed the check for intrinsicRatio as we're already inside a block in which intrinsicRatio
is true. Also switched the position of the two conditions in the OR clause as it allows us
to remove the check for computedHeightIsAuto. Last but not least, used a ternary operator
to initialize the value of boxSizing instead of the if clause.

No new tests as there is no change in functionality.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeReplacedLogicalWidth const):

1:42 AM Changeset in webkit [278299] by cathiechen
  • 7 edits in trunk/LayoutTests/imported/w3c

Update tests of mapping width and height attributes to aspect-ratio from WPT
https://bugs.webkit.org/show_bug.cgi?id=226472

Reviewed by Rob Buis.

Base commit: https://github.com/web-platform-tests/wpt/commit/da6406b38dae07a8a69c384b72ddd89b48d5194a

  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio-expected.txt:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio-expected.txt:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html:
  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/resources/aspect-ratio.js:

(test_computed_style_aspect_ratio):

  • web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html:
1:01 AM Changeset in webkit [278298] by commit-queue@webkit.org
  • 5 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal translator pre-rotation code is unused and it asserts when used
https://bugs.webkit.org/show_bug.cgi?id=226262

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-01
Reviewed by Dean Jackson.

Remove the pre-rotation code. It is Android specific and most likely it is useful
only when ANGLE is used as the drawing mechanism for the primary app window picture.
Thus most likely it is not useful in WebKit on Cocoa platforms where the window
server does the compositing.

  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

  • src/compiler/translator/TranslatorMetalDirect.h:
  • src/libANGLE/renderer/metal/ContextMtl.h:
  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::handleDirtyDriverUniforms):

May 31, 2021:

11:59 PM Changeset in webkit [278297] by Diego Pino Garcia
  • 5 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Update baselines after r277970.

  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt:
11:18 PM Changeset in webkit [278296] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Cherry-pick ANGLE: Add array bounds checks for WebGL shaders
https://bugs.webkit.org/show_bug.cgi?id=226397

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-05-31
Reviewed by Dean Jackson.

Cherry-pick ANGLE commit b0d39ba2aba218402ff2f32f6e16f18cf4975ff4
At the moment does not affect any WebKit client.
Makes the code consistent with OpenGL.
Makes it easier to understand same change in Metal backend.

Upstream description:
Add array bounds checks for WebGL shaders
WebGL shaders may contain OOB array accesses which in turn
cause undefined behavior, which may result in security
issues. This was detected as an UNKNOWN READ by UBSAN while
testing with SwANGLE.

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

(rx::ShaderVk::compile):

9:52 PM Changeset in webkit [278295] by dino@apple.com
  • 3 edits in trunk/Source/WebCore

[WebXR] Attach IOSurface to WebXROpaqueFramebuffer
https://bugs.webkit.org/show_bug.cgi?id=225896
<rdar://problem/78128289>

Reviewed by Sam Weinig.

Implement binding of incoming IOSurfaces (via FrameData)
into the WebGL framebuffer that the page will use as
a rendering target.

Currently only single-sample (non-antialiased) buffers
are supported and the canvas context must be WebGL 2.

  • Modules/webxr/WebXROpaqueFramebuffer.cpp:

(WebCore::WebXROpaqueFramebuffer::startFrame): Create a texture if necessary, then
bind its backing store to the incoming IOSurface, then hook it up to the framebuffer.
(WebCore::WebXROpaqueFramebuffer::endFrame): Release the Pbuffer we used in startFrame.
(WebCore::WebXROpaqueFramebuffer::setupFramebuffer): Add Cocoa+ANGLE specific implementation.

  • Modules/webxr/WebXROpaqueFramebuffer.h: Keep a member variable for the Pbuffer.
9:31 PM Changeset in webkit [278294] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][TFC] Decouple stretching and final cell layouts
https://bugs.webkit.org/show_bug.cgi?id=226452

Reviewed by Antti Koivisto.

Stretching layout is slightly different from the final cell layout.

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::computeAndDistributeExtraSpace):
(WebCore::Layout::TableFormattingContext::layoutCell): Deleted.

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::horizontalSpaceForCellContent const):
(WebCore::Layout::TableFormattingGeometry::verticalSpaceForCellContent const):

  • layout/formattingContexts/table/TableFormattingGeometry.h:
7:55 PM Changeset in webkit [278293] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, rebaseline web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html after r278233.

The test progressed slightly even though it still isn't fully passing.

  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https-expected.txt:
7:41 PM Changeset in webkit [278292] by Alan Bujtas
  • 20 edits
    2 adds in trunk/Source/WebCore

[LFC] Tighten the constraint classes (ConstraintsForInFlowContent/ConstraintsForOutOfFlowContent)
https://bugs.webkit.org/show_bug.cgi?id=226435

Reviewed by Antti Koivisto.

While logical height should always be available for out of flow content by design,
the base inflow layout can't necessarily provide it. This height constraint is not even required/used in most of the layout systems,
so let's move it to the derived class(es).

  • layout/LayoutContext.cpp:

(WebCore::Layout::LayoutContext::layoutFormattingContextSubtree):

  • layout/LayoutUnits.h:
  • layout/formattingContexts/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):

  • layout/formattingContexts/FormattingGeometry.cpp:

(WebCore::Layout::FormattingGeometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingGeometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingGeometry::inlineReplacedContentHeightAndMargin const):
(WebCore::Layout::FormattingGeometry::inlineReplacedContentWidthAndMargin const):
(WebCore::Layout::FormattingGeometry::constraintsForInFlowContent const):

  • layout/formattingContexts/block/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::computeStaticVerticalPosition):
(WebCore::Layout::BlockFormattingContext::precomputeVerticalPositionForBoxAndAncestors):
(WebCore::Layout::BlockFormattingContext::verticalPositionWithMargin const):

  • layout/formattingContexts/block/BlockFormattingContext.h:
  • layout/formattingContexts/block/BlockFormattingGeometry.cpp:

(WebCore::Layout::BlockFormattingGeometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingGeometry::staticPosition const): Deleted.

  • layout/formattingContexts/block/BlockFormattingGeometry.h:
  • layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:

(WebCore::Layout::TableWrapperBlockFormattingContext::layoutTableBox):
(WebCore::Layout::TableWrapperBlockFormattingContext::computeHeightAndMarginForTableBox):

  • layout/formattingContexts/flex/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutInFlowContent):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
(WebCore::Layout::TableFormattingContext::setUsedGeometryForSections):
(WebCore::Layout::TableFormattingContext::layoutCell):

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):

6:35 PM Changeset in webkit [278291] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r278261): Broke windows build - follow-up fix
https://bugs.webkit.org/show_bug.cgi?id=226477

Unreviewed build fix.

  • css/calc/CSSCalcValue.cpp:
6:17 PM Changeset in webkit [278290] by commit-queue@webkit.org
  • 12 edits
    2 deletes in trunk

Unreviewed, reverting r278261.
https://bugs.webkit.org/show_bug.cgi?id=226477

Broke windows build

Reverted changeset:

"Support calc() on components inside relative color syntax
colors"
https://bugs.webkit.org/show_bug.cgi?id=226272
https://trac.webkit.org/changeset/278261

5:09 PM Changeset in webkit [278289] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Fix thread safety issues in ConvolverNode
https://bugs.webkit.org/show_bug.cgi?id=226449

Reviewed by Darin Adler.

Adopt thread safety annotations in ConvolverNode and fix bugs found by clang.
In particular, the following issues were found and fixed:

  • tailTime() / latencyTime() were accessing m_reverb on the audio thread without locking even though m_reverb gets modified on the main thread.
  • checkNumberOfChannelsForInput() was accessing m_buffer on the audio thread without locking even though m_buffer gets modified on the main thread.
  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::create):
(WebCore::ConvolverNode::setBufferForBindings):
(WebCore::ConvolverNode::setNormalizeForBindings):
(WebCore::ConvolverNode::tailTime const):
(WebCore::ConvolverNode::latencyTime const):
(WebCore::ConvolverNode::checkNumberOfChannelsForInput):

  • Modules/webaudio/ConvolverNode.h:
  • Modules/webaudio/ConvolverNode.idl:
5:08 PM Changeset in webkit [278288] by Chris Dumez
  • 7 edits in trunk/Source/WebCore

Drop PendingActivity data member from BaseAudioContext
https://bugs.webkit.org/show_bug.cgi?id=226445

Reviewed by Darin Adler.

Drop PendingActivity data member from BaseAudioContext and instead have AudioContext / OfflineAudioContext
override virtualHasPendingActivity() to keep their JS wrapper alive. I find that PendingActivity data members
are too error prone and a frequent cause of leaks.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::startRendering):
(WebCore::AudioContext::mayResumePlayback):
(WebCore::AudioContext::suspendPlayback):
(WebCore::AudioContext::virtualHasPendingActivity const):

  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::clear):
(WebCore::BaseAudioContext::clearPendingActivity): Deleted.
(WebCore::BaseAudioContext::setPendingActivity): Deleted.

  • Modules/webaudio/BaseAudioContext.h:
  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::startRendering):
(WebCore::OfflineAudioContext::resumeRendering):
(WebCore::OfflineAudioContext::didSuspendRendering):
(WebCore::OfflineAudioContext::finishedRendering):
(WebCore::OfflineAudioContext::virtualHasPendingActivity const):
(WebCore::OfflineAudioContext::dispatchEvent): Deleted.

  • Modules/webaudio/OfflineAudioContext.h:
5:07 PM Changeset in webkit [278287] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Fix thread safety issues in AudioBufferSourceNode
https://bugs.webkit.org/show_bug.cgi?id=226448

Reviewed by Darin Adler.

Adopt thread safety analysis annotations in AudioBufferSourceNode and fix the bugs
that were found by clang:

  • We were failing to grab the processLock when setting the loop / loopStart / loopEnd attributes on the main thread (Those are set by JS at any time).
  • propagatesSilence() was failing to grab the lock when checking m_buffer on the audio thread.
  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::process):
(WebCore::AudioBufferSourceNode::renderSilenceAndFinishIfNotLooping):
(WebCore::AudioBufferSourceNode::renderFromBuffer):
(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::setLoop):
(WebCore::AudioBufferSourceNode::setLoopStart):
(WebCore::AudioBufferSourceNode::setLoopEnd):
(WebCore::AudioBufferSourceNode::adjustGrainParameters):
(WebCore::AudioBufferSourceNode::totalPitchRate):
(WebCore::AudioBufferSourceNode::propagatesSilence const):

  • Modules/webaudio/AudioBufferSourceNode.h:
5:04 PM Changeset in webkit [278286] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Stop using WTF_IGNORES_THREAD_SAFETY_ANALYSIS in MediaRecorderPrivateWriter code
https://bugs.webkit.org/show_bug.cgi?id=226446

Reviewed by Darin Adler.

Fold MediaRecorderPrivateWriter::clear() into the destructor since this is the
only place it is called. This allows us to stop using WTF_IGNORES_THREAD_SAFETY_ANALYSIS
since thread safety checks do not apply to destructors.

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

(WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter):
(): Deleted.

5:03 PM Changeset in webkit [278285] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Fix thread safety issues in OscillatorNode
https://bugs.webkit.org/show_bug.cgi?id=226450

Reviewed by Darin Adler.

Adopt thread safety annotations in OscillatorNode and fix bugs found by clang.
In particular, propagatesSilence() was failing to grab the lock before accessing
m_periodicWave, which gets modified on the main thread.

  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::create):
(WebCore::OscillatorNode::setTypeForBindings):
(WebCore::OscillatorNode::propagatesSilence const):

  • Modules/webaudio/OscillatorNode.h:
  • Modules/webaudio/OscillatorNode.idl:
5:03 PM Changeset in webkit [278284] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Fix thread safety issues in PannerNode
https://bugs.webkit.org/show_bug.cgi?id=226455

Reviewed by Darin Adler.

Adopt thread safety annotations in PannerNode and fix bugs found by clang.
In particular, the following issues were fixed:

  • tailTime() / latencyTime() were accessing m_panner on the audio thread without locking even though m_panner gets modified on the main thread.
  • process() was accessing panningModel and m_panner before locking, on the audio thread, even though those get modified on the main thread.
  • processOnlyAudioParams() was failing to grab the process lock.
  • requiresTailProcessing() may get called on the audio thread and was failing to grab the processLock before accessing m_panner, which gets modified on the main thread.
  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::create):
(WebCore::PannerNode::PannerNode):
(WebCore::PannerNode::process):
(WebCore::PannerNode::processOnlyAudioParams):
(WebCore::PannerNode::setPanningModelForBindings):
(WebCore::PannerNode::setDistanceModelForBindings):
(WebCore::PannerNode::setRefDistanceForBindings):
(WebCore::PannerNode::setMaxDistanceForBindings):
(WebCore::PannerNode::setRolloffFactorForBindings):
(WebCore::PannerNode::setConeOuterGainForBindings):
(WebCore::PannerNode::setConeOuterAngleForBindings):
(WebCore::PannerNode::setConeInnerAngleForBindings):
(WebCore::PannerNode::requiresTailProcessing const):
(WebCore::PannerNode::tailTime const):
(WebCore::PannerNode::latencyTime const):

  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/PannerNode.idl:
  • platform/audio/Distance.h:
2:14 PM Changeset in webkit [278283] by Adrian Perez de Castro
  • 7 edits in trunk/Source/WebCore

Non-unified build fixes, very early June 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=226471

Unreviewed non-unified build fixes.

No new tests needed.

  • css/calc/CSSCalcOperationNode.cpp: Add missing CSSCalcValua.h, CSSPrimitiveValue.h,

CSSUnits.h, and wtf/text/TextStream.h headers.

  • css/calc/CSSCalcOperationNode.h: Add missing CalcOperator.h header.
  • css/calc/CSSCalcValue.cpp: Add missing CSSCalcSymbolTable.h, CalcExpressionInversion.h,

CalcExpressionNumber.h, and CalcExpressionOperation.h headers.

  • platform/calc/CalcExpressionInversion.h: Add missing wtf/TypeCasts.h header, remove

unneeded <memory> header.

  • platform/calc/CalcExpressionNegation.h: Ditto.
  • platform/calc/CalcExpressionNumber.h: Add missing wtf/TypeCasts.h header.
11:28 AM Changeset in webkit [278282] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. The media/video-playsinline.html failure has been fixed
https://bugs.webkit.org/show_bug.cgi?id=226308

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-05-31

  • platform/glib/TestExpectations:
11:03 AM Changeset in webkit [278281] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening, skip a test that uses WebGL2
https://bugs.webkit.org/show_bug.cgi?id=226341

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-05-31

  • platform/glib/TestExpectations:
9:18 AM Changeset in webkit [278280] by svillar@igalia.com
  • 6 edits
    12 adds in trunk

Enable <summary> to be a flex container
https://bugs.webkit.org/show_bug.cgi?id=190065

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Imported several WPT tests adding coverage for <summary> as grid/flex.

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/html/rendering/the-details-element/details-blockification-expected.txt: Added.
  • web-platform-tests/html/rendering/the-details-element/details-blockification.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-flex-expected.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-flex.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-grid-expected.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-grid.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-inline-flex-expected.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-inline-flex.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-inline-grid-expected.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-display-inline-grid.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-in-ol-expected.html: Added.
  • web-platform-tests/html/rendering/the-details-element/summary-in-ol.html: Added.
  • web-platform-tests/html/rendering/the-details-element/w3c-import.log:

Source/WebCore:

Create grid or flex renderers for <summary> elements whenever display: {inline}-{grid|flex}
is specified. All vendors but WebKit allowed it so it should be good for interoperability.

  • html/HTMLSummaryElement.cpp:

(WebCore::HTMLSummaryElement::createElementRenderer): create the renderer specifying
RenderElement::OnlyCreateBlockAndFlexboxRenderers.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::createFor): do not create a RenderListItem for <summary> if display:list-item
is used because they're already list items. Let it fallthrough to RenderBlockFlow creation.

8:47 AM Changeset in webkit [278279] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][TFC] Move ensureTableGrid to TableFormattingState
https://bugs.webkit.org/show_bug.cgi?id=226424

Reviewed by Antti Koivisto.

We can certainly have this much logic in a formatting state class.

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::ensureTableGrid): Deleted.

  • layout/formattingContexts/table/TableFormattingContext.h:
  • layout/formattingContexts/table/TableFormattingState.cpp:

(WebCore::Layout::ensureTableGrid):
(WebCore::Layout::TableFormattingState::TableFormattingState):

8:04 AM Changeset in webkit [278278] by msaboff@apple.com
  • 14 edits in trunk/Source/bmalloc

[bmalloc] Make adaptive scavenging more precise
https://bugs.webkit.org/show_bug.cgi?id=226237

Reviewed by Geoffrey Garen.

This patch re-enables the adaptive scavenger for macOS.
It is much more precise when calling madvise() by keeping track of the
maximum extent of physically mapped memory in a LargeRange. For example,
in the prior code, we'd return a small range back to a Gigacage LargeRange
whithout any physical pages. When we scavenge that LargeRange, we madvise()
the whole Gigacage range. Although this didn't cause correctness issues,
it was quite wasteful.

In the tests I did with this patch compared to the earlier adaptive change,
the number of madvise calls we made drops by ~18% and the time spent in those
calls dropped ~13% on an Apple silicon mac and ~30% on an x86 mac.
This was measured using dtrace running JetStream2 from the command line.
RAMification results improved ~1% over the adptive change.

There is the possible future optimization where we also keep track of the
first address of physically mapped memory in a LargeRange. Since bmalloc
allocates memory from lower addresses first, it is thought that the change
in this patch is sufficient to reduce not only the number of madvise calls,
but the time it takes to make those calls.

  • bmalloc/BPlatform.h:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::decommitLargeRange):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::deallocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::tryAllocateLargeChunk):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::scavengeToHighWatermark): Deleted.

  • bmalloc/Heap.h:
  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark): Deleted.

  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark): Deleted.

  • bmalloc/LargeMap.cpp:

(bmalloc::LargeMap::add):

  • bmalloc/LargeRange.h:

(bmalloc::LargeRange::LargeRange):
(bmalloc::LargeRange::physicalExtent const):
(bmalloc::LargeRange::setPhysicalExtent):
(bmalloc::LargeRange::resetPhysicalExtent):
(bmalloc::LargeRange::setUsedSinceLastScavenge):
(bmalloc::merge):
(bmalloc::LargeRange::split const):
(): Deleted.

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::timeSinceLastPartialScavenge): Deleted.
(bmalloc::Scavenger::partialScavenge): Deleted.

  • bmalloc/Scavenger.h:
  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::setUsedSinceLastScavenge):

8:02 AM Changeset in webkit [278277] by Antti Koivisto
  • 88 edits in trunk/Source/WebCore

Rename presentationAttributeStyle to presentationalHintStyle to match spec language
https://bugs.webkit.org/show_bug.cgi?id=226467

Reviewed by Sam Weinig.

The HTML specification calls these "presentational hints", https://html.spec.whatwg.org/#presentational-hints.

  • dom/Attr.cpp:

(WebCore::Attr::style):

  • dom/Element.cpp:

(WebCore::Element::cloneAttributesFromElement):

  • dom/ElementData.cpp:

(WebCore::ShareableElementData::ShareableElementData):
(WebCore::UniqueElementData::UniqueElementData):

  • dom/ElementData.h:

(WebCore::ElementData::presentationalHintStyleIsDirty const):
(WebCore::ElementData::setPresentationalHintStyleIsDirty const):
(WebCore::ElementData::presentationalHintStyle const):
(WebCore::ElementData::presentationAttributeStyleIsDirty const): Deleted.
(WebCore::ElementData::setPresentationAttributeStyleIsDirty const): Deleted.
(WebCore::ElementData::presentationAttributeStyle const): Deleted.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::attributeChanged):
(WebCore::StyledElement::rebuildPresentationalHintStyle):
(WebCore::StyledElement::addPropertyToPresentationalHintStyle):
(WebCore::StyledElement::rebuildPresentationAttributeStyle): Deleted.
(WebCore::StyledElement::addPropertyToPresentationAttributeStyle): Deleted.

  • dom/StyledElement.h:

(WebCore::StyledElement::collectPresentationalHintsForAttribute):
(WebCore::StyledElement::additionalPresentationalHintStyle const):
(WebCore::StyledElement::hasPresentationalHintsForAttribute const):
(WebCore::StyledElement::presentationalHintStyle const):
(WebCore::StyledElement::additionalPresentationAttributeStyle const): Deleted.
(WebCore::StyledElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::StyledElement::isPresentationAttribute const): Deleted.
(WebCore::StyledElement::presentationAttributeStyle const): Deleted.

  • html/HTMLBRElement.cpp:

(WebCore::HTMLBRElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLBRElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLBRElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLBRElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLBRElement.h:
  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLBodyElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLBodyElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLBodyElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLBodyElement.h:
  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLButtonElement::isPresentationAttribute const): Deleted.

  • html/HTMLButtonElement.h:
  • html/HTMLDivElement.cpp:

(WebCore::HTMLDivElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLDivElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLDivElement.h:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::applyBorderAttributeToStyle):
(WebCore::HTMLElement::mapLanguageAttributeToLocale):
(WebCore::HTMLElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLElement::applyAlignmentAttributeToStyle):
(WebCore::HTMLElement::addHTMLLengthToStyle):
(WebCore::HTMLElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLElement.h:
  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLEmbedElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLEmbedElement.h:
  • html/HTMLFontElement.cpp:

(WebCore::HTMLFontElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLFontElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLFontElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLFontElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLFontElement.h:
  • html/HTMLFrameSetElement.cpp:

(WebCore::HTMLFrameSetElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLFrameSetElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLFrameSetElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLFrameSetElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLFrameSetElement.h:
  • html/HTMLHRElement.cpp:

(WebCore::HTMLHRElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLHRElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLHRElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLHRElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLHRElement.h:
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLIFrameElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLIFrameElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLIFrameElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLIFrameElement.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLImageElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLImageElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLImageElement::collectStyleForPresentationAttribute): Deleted.

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

(WebCore::HTMLInputElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLInputElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLInputElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLInputElement::collectStyleForPresentationAttribute): Deleted.

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

(WebCore::HTMLLIElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLLIElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLLIElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLLIElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLLIElement.h:
  • html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLMarqueeElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLMarqueeElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLMarqueeElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLMarqueeElement.h:
  • html/HTMLOListElement.cpp:

(WebCore::HTMLOListElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLOListElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLOListElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLOListElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLOListElement.h:
  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLObjectElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLObjectElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLObjectElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLObjectElement.h:
  • html/HTMLParagraphElement.cpp:

(WebCore::HTMLParagraphElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLParagraphElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLParagraphElement.h:
  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLPlugInElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLPlugInElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLPlugInElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLPlugInElement.h:
  • html/HTMLPreElement.cpp:

(WebCore::HTMLPreElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLPreElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLPreElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLPreElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLPreElement.h:
  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLSelectElement::isPresentationAttribute const): Deleted.

  • html/HTMLSelectElement.h:
  • html/HTMLTableCaptionElement.cpp:

(WebCore::HTMLTableCaptionElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTableCaptionElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLTableCaptionElement.h:
  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLTableCellElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTableCellElement::additionalPresentationalHintStyle const):
(WebCore::HTMLTableCellElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLTableCellElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::HTMLTableCellElement::additionalPresentationAttributeStyle const): Deleted.

  • html/HTMLTableCellElement.h:
  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLTableColElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTableColElement::additionalPresentationalHintStyle const):
(WebCore::HTMLTableColElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLTableColElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::HTMLTableColElement::additionalPresentationAttributeStyle const): Deleted.

  • html/HTMLTableColElement.h:
  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTableElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLTableElement::additionalPresentationalHintStyle const):
(WebCore::HTMLTableElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::HTMLTableElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLTableElement::additionalPresentationAttributeStyle const): Deleted.

  • html/HTMLTableElement.h:
  • html/HTMLTablePartElement.cpp:

(WebCore::HTMLTablePartElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLTablePartElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTablePartElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLTablePartElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLTablePartElement.h:
  • html/HTMLTableSectionElement.cpp:

(WebCore::HTMLTableSectionElement::additionalPresentationalHintStyle const):
(WebCore::HTMLTableSectionElement::additionalPresentationAttributeStyle const): Deleted.

  • html/HTMLTableSectionElement.h:
  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLTextAreaElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLTextAreaElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLTextAreaElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::adjustInnerTextStyle const):

  • html/HTMLUListElement.cpp:

(WebCore::HTMLUListElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLUListElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLUListElement::isPresentationAttribute const): Deleted.
(WebCore::HTMLUListElement::collectStyleForPresentationAttribute): Deleted.

  • html/HTMLUListElement.h:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::collectPresentationalHintsForAttribute):
(WebCore::HTMLVideoElement::hasPresentationalHintsForAttribute const):
(WebCore::HTMLVideoElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::HTMLVideoElement::isPresentationAttribute const): Deleted.

  • html/HTMLVideoElement.h:
  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::buildObjectForAttributesStyle):

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::hasPresentationalHintsForAttribute const):
(WebCore::MathMLElement::collectPresentationalHintsForAttribute):
(WebCore::MathMLElement::isPresentationAttribute const): Deleted.
(WebCore::MathMLElement::collectStyleForPresentationAttribute): Deleted.

  • mathml/MathMLElement.h:
  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::matchAllRules):

  • style/MatchedDeclarationsCache.cpp:

(WebCore::Style::MatchedDeclarationsCache::sweep):

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::canShareStyleWithElement const):
(WebCore::Style::SharingResolver::sharingCandidateHasIdenticalStyleAffectingAttributes const):

  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::svgAttributeChanged):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::hasPresentationalHintsForAttribute const):
(WebCore::SVGElement::collectPresentationalHintsForAttribute):
(WebCore::SVGElement::isPresentationAttribute const): Deleted.
(WebCore::SVGElement::collectStyleForPresentationAttribute): Deleted.

  • svg/SVGElement.h:

(WebCore::SVGElement::invalidateSVGPresentationalHintStyle):
(WebCore::SVGElement::invalidateSVGPresentationAttributeStyle): Deleted.

  • svg/SVGEllipseElement.cpp:

(WebCore::SVGEllipseElement::svgAttributeChanged):

  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::svgAttributeChanged):

  • svg/SVGForeignObjectElement.cpp:

(WebCore::SVGForeignObjectElement::svgAttributeChanged):

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::svgAttributeChanged):

  • svg/SVGMaskElement.cpp:

(WebCore::SVGMaskElement::svgAttributeChanged):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::svgAttributeChanged):

  • svg/SVGRectElement.cpp:

(WebCore::SVGRectElement::svgAttributeChanged):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::svgAttributeChanged):

  • svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::hasPresentationalHintsForAttribute const):
(WebCore::SVGTextContentElement::collectPresentationalHintsForAttribute):
(WebCore::SVGTextContentElement::isPresentationAttribute const): Deleted.
(WebCore::SVGTextContentElement::collectStyleForPresentationAttribute): Deleted.

  • svg/SVGTextContentElement.h:
  • svg/SVGTextPositioningElement.cpp:

(WebCore::SVGTextPositioningElement::collectPresentationalHintsForAttribute):
(WebCore::SVGTextPositioningElement::hasPresentationalHintsForAttribute const):
(WebCore::SVGTextPositioningElement::collectStyleForPresentationAttribute): Deleted.
(WebCore::SVGTextPositioningElement::isPresentationAttribute const): Deleted.

  • svg/SVGTextPositioningElement.h:
  • svg/properties/SVGAttributeAnimator.cpp:

(WebCore::SVGAttributeAnimator::invalidateStyle):

6:33 AM Changeset in webkit [278276] by magomez@igalia.com
  • 12 edits
    3 adds in trunk

[GStreamer] Incorrect rendering of VP9 with transparency
https://bugs.webkit.org/show_bug.cgi?id=225961

Reviewed by Žan Doberšek.

Source/WebCore:

Fix the rendering of videos with transparency. This is done both AC and non AC modes and
with and without GSTREAMER_GL enabled.

On AC mode and using GSTREAMER_GL, a new option is added to TextureMapperGL and TextureMapperShaderProgram
to support premultiplying the components of a pixel. This is required because GStreamer uses straight alpha,
and we need it premultiplied in order to perform the correct blending blending of the video frames. Then we
use that new option to render video frames. This new option is also used when copying the video frame into
an external texture if premultiplyAlpha is requested.

On non AC mode, or when GStreamer-gl is disabled, add support to ImageGStreamerCairo to premultiply the alpha
of the video frame before creating the cairo surface to paint, and pass the appropriate composite operator when
drawing with alpha.

Test: media/video-with-alpha.html

  • platform/graphics/gstreamer/GStreamerVideoFrameHolder.cpp:

(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):

  • platform/graphics/gstreamer/ImageGStreamerCairo.cpp:

(WebCore::ImageGStreamer::ImageGStreamer):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::paint): update the caps of the conversion to make them match the format
expected by cairo, so we can avoid a component swap.
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:

(WebCore::VideoTextureCopierGStreamer::copyVideoTextureToPlatformTexture):

  • platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:
  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::drawTexture):

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

(WebCore::TextureMapperShaderProgram::create):

  • platform/graphics/texmap/TextureMapperShaderProgram.h:

LayoutTests:

Add a test for the playback of transparent videos. This is initially skipped because it's not supported
on Apple ports and won't be working on GTK and WPE until GStreamer is bumped to 1.20.

  • TestExpectations:
  • media/content/video-with-alpha.webm: Added.
  • media/video-with-alpha-expected.html: Added.
  • media/video-with-alpha.html: Added.
2:22 AM Changeset in webkit [278275] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Source/WebCore:
Treat width: intrinsic as non definite
https://bugs.webkit.org/show_bug.cgi?id=226367

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-31
Reviewed by Darin Adler.

Treat width: intrinsic as non definite in
childMainSizeIsDefinite.

Test: fast/css/flex-box-intrinsic-width-crash.html

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childMainSizeIsDefinite):

LayoutTests:
Release assert in RenderFlexibleBox::computeInnerFlexBaseSizeForChild via RenderFlexibleBox::layoutFlexItems
https://bugs.webkit.org/show_bug.cgi?id=226367

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-31
Reviewed by Darin Adler.

Add test for this.

  • fast/css/flex-box-intrinsic-width-crash-expected.txt: Added.
  • fast/css/flex-box-intrinsic-width-crash.html: Added.
1:29 AM Changeset in webkit [278274] by youenn@apple.com
  • 8 edits
    3 adds in trunk

Go to network in case fetch event is not yet responded when being destroyed instead of failing the load
https://bugs.webkit.org/show_bug.cgi?id=226374
<rdar://78298472>

Reviewed by Alex Christensen.

Source/WebCore:

In case worker is terminated, instead of failing fetch events that are pending a response, we should go to the network.
This mirrors what is already done in ServiceWorkerFetchTask.

This can for instance happen in case a lot of fetches are done in parallel on the same service worker.
The service worker will do the fetch itself but given there are lots of fetches, some fetch might not start until other loads are complete.
This may trigger the fetch timeout which might then trigger terminating the worker.
We should probably revisit our fetch timeout policy now that we have added worker spin detection.

Test: http/wpt/service-workers/fetch-worker-terminate.https.html

  • testing/ServiceWorkerInternals.cpp:

(WebCore::ServiceWorkerInternals::terminate):
(WebCore::ServiceWorkerInternals::waitForFetchEventToFinish):

  • testing/ServiceWorkerInternals.h:
  • testing/ServiceWorkerInternals.idl:
  • workers/service/FetchEvent.cpp:

(WebCore::FetchEvent::~FetchEvent):
Update logging to only log the case where respondWith is called but fetch event is destroyed before processing the response.
Otherwise, we would log the case of respondWith being never called, which is happening often and leads to go to the network.
(WebCore::FetchEvent::processResponse):

  • workers/service/FetchEvent.h:
  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::processResponse):

LayoutTests:

  • http/wpt/service-workers/fetch-worker-terminate-worker.js: Added.

(doTest):

  • http/wpt/service-workers/fetch-worker-terminate.https-expected.txt: Added.
  • http/wpt/service-workers/fetch-worker-terminate.https.html: Added.
12:51 AM Changeset in webkit [278273] by commit-queue@webkit.org
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update to libsoup3 2.99.7
https://bugs.webkit.org/show_bug.cgi?id=226457

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-31
Reviewed by Philippe Normand.

  • elements/sdk/libsoup3.bst:
12:28 AM Changeset in webkit [278272] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Use tighter bitrate allocation rules for WebRTC H264 software encoder
https://bugs.webkit.org/show_bug.cgi?id=226319
<rdar://73150695>

Reviewed by Eric Carlson.

Software H264 encoder is sometimes overshooting target bitrate in which case WebRTC backend will start dropping frames.
The encoder might then think it is on target and will not try to increase compression.
This makes it possible to be locked in a very low frame rate but high quality image situation.
It is often better to preserve frame rate and lower quality, the application could always lower frame rate if desired.

To do so, we detect whether the encoder is using software code path or not.
If so, we compute the actual frame rate and compare it with the expected frame rate.
If the actual frame rate is twice smaller or even below, we enter in a low frame rate mode.
Otherwise, we are in a regular frame rate mode where we apply the normal bitrate rules.
In the low frame rate mode, we divide the target bitrate by 3 so as to quickly recover frame rate.

This works well in situations where motion increases from time to time.
It is still not perfect for instance in case the video is muted and gets unmuted or when the scene is completely still and suddenly large motion happens.
In those cases, frame rate is recovered after a minute or so according my testing.

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 encode:codecSpecificInfo:frameTypes:]):
(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):
(-[RTCVideoEncoderH264 setEncoderBitrateBps:frameRate:]):
(-[RTCVideoEncoderH264 updateBitRateAccordingActualFrameRate]):

Note: See TracTimeline for information about the timeline view.