Timeline



May 10, 2021:

9:46 PM Changeset in webkit [277317] by Chris Dumez
  • 3 edits in trunk/Tools

Use non-throwing std::filesystem API in TestRunner
https://bugs.webkit.org/show_bug.cgi?id=225632

Reviewed by Darin Adler.

  • TestRunnerShared/TestCommand.cpp:

(WTR::testPath):
(WTR::testURLString):

  • TestRunnerShared/TestFeatures.cpp:

(WTR::parseTestHeader):

9:31 PM Changeset in webkit [277316] by Wenson Hsieh
  • 10 edits
    1 add in trunk

[macOS] Allow immediate action gestures to begin when force clicking text inside image overlays
https://bugs.webkit.org/show_bug.cgi?id=225600
<rdar://problem/77792365>

Reviewed by Tim Horton.

Source/WebCore:

Allow immediate action hit-testing to descend into image overlay content. Currently, this uses the
DisallowsUserAgentShadowContent hit-testing option, causing us to ignore image overlays (which exist inside
the UA shadow root). To fix this, we introduce a DisallowsUserAgentShadowContentExceptForImageOverlays option
that behaves like the existing DisallowsUserAgentShadowContent option, with the exception that we allow hit-
testing to pierce the UA shadow root to find nodes inside image overlays.

Tests: ImmediateActionTests.ImmediateActionOverText

ImmediateActionTests.ImmediateActionOverBody
ImmediateActionTests.ImmediateActionOverImageOverlay

  • page/EventHandler.cpp:

(WebCore::EventHandler::hitTestResultAtPoint const):

  • rendering/HitTestRequest.h:

Add support for the new hit-test option, which allows hit-testing to descend into image overlays (and is
intended to be mutually exclusive with the existing DisallowsUserAgentShadowContent option). Specifying both
options will lead to an assertion on debug builds, and DisallowsUserAgentShadowContent takes precedence on
release builds.

(WebCore::HitTestRequest::disallowsUserAgentShadowContentExceptForImageOverlays const):

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::addNodeToListBasedTestResultCommon):

Source/WebCore/PAL:

  • pal/spi/mac/NSImmediateActionGestureRecognizerSPI.h:

Source/WebKit:

Adopt the new hit-test option. See WebCore/ChangeLog for more details.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performImmediateActionHitTestAtLocation):
(WebKit::WebPage::lookupTextAtLocation):

Tools:

Add new API tests to exercise these changes by grabbing the immediate action NSGestureRecognizer from
WKWebView and calling into its delegate. This patch adds two basic immediate action tests by simulating the
immediate action over text and the body element, and includes a third test that installs an image overlay using
an injected internals object, and verifies that the immediate action in an image overlay matches that of
regular text on the page.

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

(swizzledImmediateActionLocationInView):
(-[WKWebViewForTestingImmediateActions _immediateActionAnimationControllerForHitTestResult:withType:userData:]):
(-[WKWebViewForTestingImmediateActions immediateActionGesture]):
(-[WKWebViewForTestingImmediateActions simulateImmediateAction:]):
(TestWebKitAPI::TEST):

7:14 PM Changeset in webkit [277315] by Chris Dumez
  • 4 edits in trunk

[ macOS Release wk2 ] http/tests/cache-storage/cache-records-persistency.https.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=225522
<rdar://problem/77680019>

Reviewed by Darin Adler.

Source/WTF:

Pass ec parameter to std::filesystem::directory_iterator() so that it doesn't throw in case of the
path does not exist. Normally, the function would return early earlier if the path does not exist
or isn't a directory. However, in the context of the test, this function is getting called on a
background thread and another thread is deleting the directory in parallel.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::deleteEmptyDirectory):

LayoutTests:

Restore previous expectation for the test, now that it is no longer flaky crashing.

  • platform/mac-wk2/TestExpectations:
7:05 PM Changeset in webkit [277314] by Russell Epstein
  • 1 copy in tags/Safari-612.1.12.5

Tag Safari-612.1.12.5.

6:34 PM Changeset in webkit [277313] by weinig@apple.com
  • 88 edits in trunk/Source

Use PixelBuffer rather than ImageData in platform/ code to fix layering violation
https://bugs.webkit.org/show_bug.cgi?id=225584

Reviewed by Darin Adler.

Source/WebCore:

Replace use of the DOM layer & ref-counted ImageData class with the new
platform layer PixelBuffer class, which ImageData now uses internally.

Since PixelBuffer is not-reference counted or heap-allocated in most cases,
many uses of RefPtr<ImageData> to indicate a potentially null ImageData have
been replaced with Optional<PixelBuffer>. Generally, this allows us to remove
an unnecessary allocation that was only needed for the DOM object.

Additionally, to many functions with ImageData in their name now have
PixelBuffer in their name instead, e.g. ImageBuffer::getImageData is now
ImageBuffer::getPixelBuffer (though I think changing this in the future to
ImageBuffer::copyPixelBuffer is a good idea).

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpImageBitmap):
(WebCore::CloneDeserializer::readImageBitmap):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toDataURL):
(WebCore::HTMLCanvasElement::toBlob):
(WebCore::HTMLCanvasElement::getImageData):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

  • html/ImageData.cpp:

(WebCore::ImageData::create):

  • html/ImageData.h:

(WebCore::ImageData::pixelBuffer const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::CanvasRenderingContext2DBase::putImageData):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::paintRenderingResultsToPixelBuffer):
(WebCore::WebGLRenderingContextBase::texImageSourceHelper):
(WebCore::WebGLRenderingContextBase::paintRenderingResultsToImageData): Deleted.

  • html/canvas/WebGLRenderingContextBase.h:
  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::screenshot):

  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::putPixelBuffer):
(WebCore::ConcreteImageBuffer::putImageData): Deleted.

  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::extractPixelBuffer):
(WebCore::GraphicsContextGL::extractImageData): Deleted.

  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/ImageBuffer.cpp:
  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::putPixelBuffer):
(WebCore::ImageBuffer::putImageData): Deleted.

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::drawConsuming):
(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::toBGRAData const):
(WebCore::copyPremultipliedToPremultiplied):
(WebCore::copyPremultipliedToUnpremultiplied):
(WebCore::copyUnpremultipliedToPremultiplied):
(WebCore::copyUnpremultipliedToUnpremultiplied):
(WebCore::copyFunctor):
(WebCore::ImageBufferBackend::copyImagePixels const):
(WebCore::ImageBufferBackend::getPixelBuffer const):
(WebCore::ImageBufferBackend::putPixelBuffer):
(WebCore::ImageBufferBackend::getImageData const): Deleted.
(WebCore::ImageBufferBackend::putImageData): Deleted.

  • platform/graphics/ImageBufferBackend.h:
  • platform/graphics/PixelBuffer.cpp:

(WebCore::computeBufferSize):
(WebCore::PixelBuffer::tryCreateForDecoding):
(WebCore::PixelBuffer::tryCreate):
(WebCore::operator<<):

  • platform/graphics/PixelBuffer.h:

(WebCore::PixelBuffer::encode const):
(WebCore::PixelBuffer::decode):

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurShadowBuffer):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):
(WebCore::GraphicsContextGLOpenGL::readRenderingResults):

  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:

(WebCore::ImageBufferCairoSurfaceBackend::getPixelBuffer const):
(WebCore::ImageBufferCairoSurfaceBackend::putPixelBuffer):
(WebCore::ImageBufferCairoSurfaceBackend::getImageData const): Deleted.
(WebCore::ImageBufferCairoSurfaceBackend::putImageData): Deleted.

  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h:
  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::toCFData const):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::getPixelBuffer const):
(WebCore::ImageBufferCGBitmapBackend::putPixelBuffer):
(WebCore::ImageBufferCGBitmapBackend::getImageData const): Deleted.
(WebCore::ImageBufferCGBitmapBackend::putImageData): Deleted.

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h:
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::toCFData const):
(WebCore::ImageBufferIOSurfaceBackend::getPixelBuffer const):
(WebCore::ImageBufferIOSurfaceBackend::putPixelBuffer):
(WebCore::ImageBufferIOSurfaceBackend::getImageData const): Deleted.
(WebCore::ImageBufferIOSurfaceBackend::putImageData): Deleted.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::cfData):
(WebCore::dataURL):
(WebCore::data):

  • platform/graphics/cg/ImageBufferUtilitiesCG.h:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::readCompositedResults):

  • platform/graphics/cpu/arm/filters/FEBlendNEON.h:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/displaylists/DisplayList.cpp:

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

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

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

  • platform/graphics/displaylists/DisplayListItemType.cpp:

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

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

(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::PutPixelBuffer::PutPixelBuffer):
(WebCore::DisplayList::PutImageData::PutImageData): Deleted.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::GetPixelBuffer::GetPixelBuffer):
(WebCore::DisplayList::PutPixelBuffer::pixelBuffer const):
(WebCore::DisplayList::PutPixelBuffer::encode const):
(WebCore::DisplayList::PutPixelBuffer::decode):
(WebCore::DisplayList::GetImageData::GetImageData): Deleted.
(WebCore::DisplayList::GetImageData::outputFormat const): Deleted.
(WebCore::DisplayList::GetImageData::srcRect const): Deleted.
(WebCore::DisplayList::PutImageData::inputFormat const): Deleted.
(WebCore::DisplayList::PutImageData::imageData const): Deleted.
(WebCore::DisplayList::PutImageData::srcRect const): Deleted.
(WebCore::DisplayList::PutImageData::destPoint const): Deleted.
(WebCore::DisplayList::PutImageData::destFormat const): Deleted.
(WebCore::DisplayList::PutImageData::localBounds const): Deleted.
(WebCore::DisplayList::PutImageData::globalBounds const): Deleted.
(WebCore::DisplayList::PutImageData::encode const): Deleted.
(WebCore::DisplayList::PutImageData::decode): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::getPixelBuffer):
(WebCore::DisplayList::Recorder::putPixelBuffer):
(WebCore::DisplayList::Recorder::getImageData): Deleted.
(WebCore::DisplayList::Recorder::putImageData): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/displaylists/DisplayListReplayer.h:
  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):

  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::platformApplySoftware):

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::requestedRegionOfInputPixelBuffer const):
(WebCore::FilterEffect::clearResult):
(WebCore::FilterEffect::imageBufferResult):
(WebCore::FilterEffect::unmultipliedResult):
(WebCore::FilterEffect::premultipliedResult):
(WebCore::FilterEffect::convertPixelBufferToColorSpace):
(WebCore::FilterEffect::convertImageBufferToColorSpace):
(WebCore::FilterEffect::copyConvertedImageBufferToDestination):
(WebCore::FilterEffect::copyConvertedPixelBufferToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):
(WebCore::FilterEffect::requiresPixelBufferColorSpaceConversion):
(WebCore::FilterEffect::transformResultColorSpace):
(WebCore::FilterEffect::requestedRegionOfInputImageData const): Deleted.
(WebCore::FilterEffect::convertImageDataToColorSpace): Deleted.
(WebCore::FilterEffect::copyConvertedImageDataToDestination): Deleted.
(WebCore::FilterEffect::requiresImageDataColorSpaceConversion): Deleted.

  • platform/graphics/filters/FilterEffect.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintCompositedResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToPixelBuffer):
(WebCore::GraphicsContextGLOpenGL::readRenderingResultsForPainting):
(WebCore::GraphicsContextGLOpenGL::readCompositedResultsForPainting):
(WebCore::GraphicsContextGLOpenGL::readCompositedResults):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToImageData): Deleted.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::readRenderingResults):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::readnPixels):
(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::getPixelBuffer const):
(WebCore::ImageBufferDirect2DBackend::putPixelBuffer):
(WebCore::ImageBufferDirect2DBackend::getImageData const): Deleted.
(WebCore::ImageBufferDirect2DBackend::putImageData): Deleted.

  • platform/graphics/win/ImageBufferDirect2DBackend.h:
  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::outputRect const):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

Source/WebKit:

Replace all uses of the DOM layer object WebCore::ImageData with the new platform
layer WebCore::PixelBuffer, which fixes a layering violation WebCore and avoids
unnecessary allocations / reference counting.

  • Platform/IPC/ArgumentCoders.h:

(IPC::ArgumentCoder<Optional<T>>::encode):
(IPC::ArgumentCoder<Optional<T>>::decode):
Add templatized Encoder/Decoder to work with streaming encoder.

  • GPUProcess/graphics/RemoteGraphicsContextGL.cpp:

(WebKit::RemoteGraphicsContextGL::paintRenderingResultsToCanvas):
(WebKit::RemoteGraphicsContextGL::paintCompositedResultsToCanvas):
(WebKit::RemoteGraphicsContextGL::paintPixelBufferToImageBuffer):
(WebKit::RemoteGraphicsContextGL::paintImageDataToImageBuffer): Deleted.

  • GPUProcess/graphics/RemoteGraphicsContextGL.h:
  • GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
  • GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h:

(paintRenderingResultsToPixelBuffer):
(paintRenderingResultsToImageData): Deleted.

  • GPUProcess/graphics/RemoteImageBuffer.h:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetPixelBufferHelper):
(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetPixelBuffer):
(WebKit::RemoteRenderingBackend::semaphoreForGetPixelBuffer):
(WebKit::RemoteRenderingBackend::updateSharedMemoryAndSemaphoreForGetPixelBuffer):
(WebKit::RemoteRenderingBackend::destroyGetPixelBufferSharedMemory):
(WebKit::RemoteRenderingBackend::populateGetPixelBufferSharedMemory):
(WebKit::RemoteRenderingBackend::decodeItem):
(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageDataHelper): Deleted.
(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageData): Deleted.
(WebKit::RemoteRenderingBackend::semaphoreForGetImageData): Deleted.
(WebKit::RemoteRenderingBackend::updateSharedMemoryAndSemaphoreForGetImageData): Deleted.
(WebKit::RemoteRenderingBackend::destroyGetImageDataSharedMemory): Deleted.
(WebKit::RemoteRenderingBackend::populateGetImageDataSharedMemory): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:

(WebKit::CGDisplayListImageBufferBackend::getPixelBuffer const):
(WebKit::CGDisplayListImageBufferBackend::putPixelBuffer):
(WebKit::CGDisplayListImageBufferBackend::getImageData const): Deleted.
(WebKit::CGDisplayListImageBufferBackend::putImageData): Deleted.

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::encode): Deleted.
(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::decode): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::ImageData>>::encode): Deleted.
(IPC::ArgumentCoder<RefPtr<WebCore::ImageData>>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::getPixelBuffer const):
(WebKit::ImageBufferShareableBitmapBackend::putPixelBuffer):
(WebKit::ImageBufferShareableBitmapBackend::getImageData const): Deleted.
(WebKit::ImageBufferShareableBitmapBackend::putImageData): Deleted.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToCanvas):

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp:

(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToPixelBuffer):
(WebKit::RemoteGraphicsContextGLProxy::paintRenderingResultsToImageData): Deleted.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::putPixelBuffer):
(WebKit::RemoteImageBufferProxy::putImageData): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::sharedMemoryForGetPixelBuffer):
(WebKit::RemoteRenderingBackendProxy::waitForGetPixelBufferToComplete):
(WebKit::RemoteRenderingBackendProxy::destroyGetPixelBufferSharedMemory):
(WebKit::RemoteRenderingBackendProxy::sharedMemoryForGetImageData): Deleted.
(WebKit::RemoteRenderingBackendProxy::waitForGetImageDataToComplete): Deleted.
(WebKit::RemoteRenderingBackendProxy::destroyGetImageDataSharedMemory): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableIOSurfaceBackend::getPixelBuffer const):
(WebKit::ImageBufferShareableIOSurfaceBackend::putPixelBuffer):
(WebKit::ImageBufferShareableIOSurfaceBackend::getImageData const): Deleted.
(WebKit::ImageBufferShareableIOSurfaceBackend::putImageData): Deleted.

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:
5:44 PM Changeset in webkit [277312] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Removed unused CallRecord::bytecodeIndex field.
https://bugs.webkit.org/show_bug.cgi?id=225627

Reviewed by Yusuke Suzuki.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileExceptionHandlers):

  • jit/JIT.h:

(JSC::CallRecord::CallRecord):

  • jit/JITInlines.h:

(JSC::JIT::emitNakedNearCall):
(JSC::JIT::emitNakedNearTailCall):

5:41 PM Changeset in webkit [277311] by Chris Gambrell
  • 1 edit
    1 move
    2 deletes in trunk/LayoutTests

[LayoutTests] Decouple http/tests/media/resources/create-id3-db.php from webserver
https://bugs.webkit.org/show_bug.cgi?id=224561
<rdar://problem/76653054>

Reviewed by Jonathan Bedard.

Replacing the creation of metadata.db with JSON into a new file named metadata.json. This standalone script remains in PHP to be able to still use getid3.

  • http/tests/media/resources/create-id3-db.php: Removed.
  • http/tests/resources/dir-helpers.php: Removed.
  • http/tests/resources/portabilityLayer.php: Removed.
  • media/content/create-id3-db: Copied from LayoutTests/http/tests/media/resources/create-id3-db.php.
5:35 PM Changeset in webkit [277310] by Russell Epstein
  • 4 edits
    2 deletes in branches/safari-612.1.14-branch

Cherry-pick r277297. rdar://problem/77797456

Unreviewed, reverting r277222.
https://bugs.webkit.org/show_bug.cgi?id=225618

WebContent process crashes while visiting
<http://ign.com|ign.com> (RenderFlexibleBox::layoutFlexItems)

Reverted changeset:

"[css-flexbox] Flex item construction may affect sibling flex
item height computation"
https://bugs.webkit.org/show_bug.cgi?id=225489
https://trac.webkit.org/changeset/277222

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

5:25 PM Changeset in webkit [277309] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[Cocoa] Extend Network Process sandbox to access more Network Extension databases
https://bugs.webkit.org/show_bug.cgi?id=225614
<rdar://problem/77696566>

Reviewed by Per Arne Vollan.

We don't allow the Network Process to directly memory-map files used by the network extensions
feature. We can improve memory performance by allowing the process to mmap these files, rather
than forcing a series of XPC operations to build the same database in memory.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
5:19 PM Changeset in webkit [277308] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Wk1 Release] imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-filter-order.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=225625

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:54 PM Changeset in webkit [277307] by commit-queue@webkit.org
  • 42 edits in trunk/Source/WebCore

Unreviewed, reverting r277281.
https://bugs.webkit.org/show_bug.cgi?id=225622

Broke multiple debug tests

Reverted changeset:

"Use HashSet<RefPtr<Node>> instead of HashSet<Node*>"
https://bugs.webkit.org/show_bug.cgi?id=220464
https://trac.webkit.org/changeset/277281

4:52 PM Changeset in webkit [277306] by Kate Cheney
  • 6 edits
    4 adds in trunk

Speculative revalidation requests not properly attributed as app-bound
https://bugs.webkit.org/show_bug.cgi?id=225613
<rdar://problem/77664358>

Reviewed by Brent Fulgham.

Source/WebKit:

Speculative revalidation requests make network connections and should
be attributed as app-bound based on the initiating navigation.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):
(WebKit::NetworkCache::SpeculativeLoadManager::registerLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::isAppBound const):
(WebKit::NetworkCache::SubresourceInfo::setIsAppBound):
(WebKit::NetworkCache::SubresourcesEntry::subresources):
(WebKit::NetworkCache::SubresourcesEntry::subresources const): Deleted.
Remove const qualifier for the SubresourcesEntry::subresources()
function now that we need to store the app-bound value.

LayoutTests:

Layout test coverage.

  • http/tests/in-app-browser-privacy/app-bound-attribution-speculative-revalidation-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-speculative-revalidation.html: Added.
  • http/tests/in-app-browser-privacy/resources/frame-with-authenticated-resource.py: Added.
  • http/tests/in-app-browser-privacy/resources/resource-with-auth.py: Added.
  • platform/ios-wk2/TestExpectations:

Essentially copied http/tests/cache/disk-cache/speculative-validation/http-auth.html
to hit the speculative revalidation code path, and added in a check
for app-bound load data at the end to confirm all requests are marked
correctly.

4:21 PM Changeset in webkit [277305] by mark.lam@apple.com
  • 36 edits in trunk/Source

Add support to collect stats on cumulative LinkBuffer linked sizes based on profiles.
https://bugs.webkit.org/show_bug.cgi?id=225617

Reviewed by Saam Barati.

Source/JavaScriptCore:

There are 2 ways to dump the stats:

  1. Specify --dumpLinkBufferStats as an argument to the jsc shell.
  2. Call $vm.dumpLinkBufferStats() from your JS script to get the stats as a string. e.g.

$vm.print($vm.dumpLinkBufferStats());

Here's an example of what the dump looks like:

Cummulative LinkBuffer profile sizes:

BaselineJIT: 79480320 (75.798340 MB)

DFG: 36108672 (34.435913 MB)

Thunk: 22495360 (21.453247 MB)

InlineCache: 19538521 (18.633386 MB)

FTL: 5186240 (4.945984 MB)

Wasm: 1998272 (1.905701 MB)

YarrJIT: 1331072 (1.269409 MB)

CSSJIT: 0

Uncategorized: 0

The stats are currently grouped into some coarse profiles. If needed, we can
break these down into more fine grain profiles later.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::performFinalization):
(JSC::LinkBuffer::dumpProfileStatistics):

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::LinkBuffer):

  • bytecode/InlineAccess.cpp:

(JSC::linkCodeInline):
(JSC::InlineAccess::rewireStubAsJump):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitGenerationThunkGenerator):
(JSC::DFG::osrEntryThunkGenerator):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

  • ftl/FTLLazySlowPath.cpp:

(JSC::FTL::LazySlowPath::generate):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileStub):

  • ftl/FTLThunks.cpp:

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

  • jit/ExecutableAllocator.cpp:

(JSC::jitWriteThunkGenerator):

  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):

  • jit/JITMathIC.h:

(JSC::JITMathIC::generateOutOfLine):

  • jit/JITOpcodes.cpp:

(JSC::JIT::privateCompileHasIndexedProperty):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::privateCompileHasIndexedProperty):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::finalize):

  • jit/ThunkGenerators.cpp:

(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::linkCallThunkGenerator):
(JSC::linkPolymorphicCallThunkGenerator):
(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
(JSC::unreachableGenerator):
(JSC::stringGetByValGenerator):
(JSC::boundFunctionCallGenerator):

  • jsc.cpp:

(CommandLine::parseArguments):
(jscmain):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::generateThunkWithJumpToPrologue):
(JSC::LLInt::generateThunkWithJumpToLLIntReturnPoint):
(JSC::LLInt::getHostCallReturnValueThunk):
(JSC::LLInt::createJSGateThunk):
(JSC::LLInt::createWasmGateThunk):
(JSC::LLInt::createTailCallGate):
(JSC::LLInt::loopOSREntryGateThunk):
(JSC::LLInt::entryOSREntryGateThunk):
(JSC::LLInt::wasmOSREntryGateThunk):
(JSC::LLInt::exceptionHandlerGateThunk):
(JSC::LLInt::returnFromLLIntGateThunk):
(JSC::LLInt::tagGateThunk):
(JSC::LLInt::untagGateThunk):
(JSC::LLInt::jitCagePtrThunk):

  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSDollarVM::finishCreation):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::didCompleteCompilation):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::didCompleteCompilation):

  • wasm/WasmOMGForOSREntryPlan.cpp:

(JSC::Wasm::OMGForOSREntryPlan::work):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmThunks.cpp:

(JSC::Wasm::throwExceptionFromWasmThunkGenerator):
(JSC::Wasm::throwStackOverflowFromWasmThunkGenerator):
(JSC::Wasm::triggerOMGEntryTierUpThunkGenerator):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

  • yarr/YarrJIT.cpp:

Source/WebCore:

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::compile):

4:16 PM Changeset in webkit [277304] by Devin Rousso
  • 2 edits in trunk/Source/WTF

SLEEP_THREAD_FOR_DEBUGGER should print the PID before sleeping
https://bugs.webkit.org/show_bug.cgi?id=225619

Reviewed by Tim Horton.

  • wtf/DebugUtilities.h:
4:05 PM Changeset in webkit [277303] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 ARM64 ] mathml/scripts-removeChild.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=225533

Unreviewed test gardening.

Updating test expectations to Pass ImageOnlyFailure for BigSur Release wk2 arm64 only.

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

[ BigSur Debug wk2 ARM64 ] imported/w3c/web-platform-tests/webrtc-encoded-transform/sframe-transform-readable.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=225534

Unrviewed test gardening.

Updating test expectation to Pass Crash for BigSur Debug wk2 arm64 only.

  • platform/mac-wk2/TestExpectations:
3:41 PM Changeset in webkit [277301] by Kate Cheney
  • 18 edits
    4 adds in trunk

Preflight requests not properly attributed as app-bound
https://bugs.webkit.org/show_bug.cgi?id=225596
<rdar://problem/77664272>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: http/tests/in-app-browser-privacy/app-bound-attribution-preflight-async.html

http/tests/in-app-browser-privacy/app-bound-attribution-preflight-sync.html

A preflight request initiated by a main navigation that was app-bound
should also be app-bound. Testing sync preflight requests revealed
that we also need to mark this when loading a synchronous resource.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createAccessControlPreflightRequest):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):

Source/WebKit:

Testing SPI to request load data to check if preflight requests
were properly marked.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didLoadAppBoundRequest:]):
(-[WKWebView _didLoadNonAppBoundRequest:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Tools:

Add test infrastructure.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::didLoadAppBoundRequest):
(WTR::TestRunner::didLoadNonAppBoundRequest):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didLoadAppBoundRequest):
(WTR::TestController::didLoadNonAppBoundRequest):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::didLoadAppBoundRequest):
(WTR::TestController::didLoadNonAppBoundRequest):

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

(-[TestRunnerWKWebView _didLoadAppBoundRequest:]):
(-[TestRunnerWKWebView _didLoadNonAppBoundRequest:]):

LayoutTests:

Add two tests for sync and async preflight requests.

  • http/tests/in-app-browser-privacy/app-bound-attribution-preflight-async-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-preflight-async.html: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-preflight-sync-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-preflight-sync.html: Added.
  • platform/ios-wk2/TestExpectations:

These tests rely on internal additions, we should skip them in open
source expectations.

3:34 PM Changeset in webkit [277300] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur ARM64] http/wpt/fetch/fetch-response-body-stop-in-worker.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=225528

Unreviewed test gardening.

Updating expectations to Pass Crash for arm64 only.

  • platform/mac/TestExpectations:
3:27 PM Changeset in webkit [277299] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 arm64 ] scrollingcoordinator/mac/fixed-backgrounds/fixed-background-in-overflow-in-iframe.html is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225529

Uneviewed test gardening.

Updating expectations to Pass Failure for BigSur Release wk2 arm64 only.

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

[ macOS Release wk2 ] http/tests/cache-storage/cache-records-persistency.https.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=225522

Unreviewed test gardening.

Updating expectations to Pass Crash while test is reviewed.

  • platform/mac-wk2/TestExpectations:
3:01 PM Changeset in webkit [277297] by commit-queue@webkit.org
  • 4 edits
    2 deletes in trunk

Unreviewed, reverting r277222.
https://bugs.webkit.org/show_bug.cgi?id=225618

WebContent process crashes while visiting
<http://ign.com|ign.com> (RenderFlexibleBox::layoutFlexItems)

Reverted changeset:

"[css-flexbox] Flex item construction may affect sibling flex
item height computation"
https://bugs.webkit.org/show_bug.cgi?id=225489
https://trac.webkit.org/changeset/277222

2:39 PM Changeset in webkit [277296] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the build with recent SDKs.

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectMultiplePicker configurePresentation]):

2:31 PM Changeset in webkit [277295] by Wenson Hsieh
  • 44 edits in trunk/Source

Make WebCore::HitTestRequest::RequestType an enum class
https://bugs.webkit.org/show_bug.cgi?id=225597

Reviewed by Sam Weinig.

Source/WebCore:

Rename HitTestRequest::RequestType to HitTestRequest::Type, and make it an enum class. I also noticed that
the first request type, ReadOnly, starts at a value of 2 (1 << 1) instead of 1 (which seems to have been an
unintentional change in <https://trac.webkit.org/r60761>).

No change in behavior.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::press):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::visiblePositionForPoint const):
(WebCore::AccessibilityRenderObject::accessibilityHitTest const):

  • dom/Document.cpp:

(WebCore::isValidPageSampleLocation):

  • dom/TreeScope.cpp:

(WebCore::TreeScope::elementsFromPoint):

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::isReplacementObscured):

  • html/MediaElementSession.cpp:

(WebCore::isElementMainContentForPurposesOfAutoplay):

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::updateAutoscrollRenderer):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::handleContextMenuEvent):
(WebCore::ContextMenuController::showContextMenu):
(WebCore::ContextMenuController::maybeCreateContextMenu):

  • page/ContextMenuController.h:
  • page/DragController.cpp:

(WebCore::DragController::canProcessDrag):
(WebCore::DragController::hitTestResultForDragStart const):

  • page/EventHandler.cpp:

(WebCore::EventHandler::eventMayStartDrag const):
(WebCore::EventHandler::updateSelectionForMouseDrag):
(WebCore::EventHandler::hitTestResultAtPoint const):
(WebCore::EventHandler::updateCursor):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::handleMouseDoubleClickEvent):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::handleMouseReleaseEvent):
(WebCore::EventHandler::handleMouseForceEvent):
(WebCore::EventHandler::updateDragAndDrop):
(WebCore::EventHandler::isInsideScrollbar const):
(WebCore::EventHandler::sendContextMenuEvent):
(WebCore::EventHandler::sendContextMenuEventForKey):
(WebCore::EventHandler::hoverTimerFired):
(WebCore::EventHandler::dragSourceEndedAt):
(WebCore::EventHandler::handleDrag):
(WebCore::hitTestResultInFrame):
(WebCore::EventHandler::handleTouchEvent):
(WebCore::EventHandler::dispatchSyntheticTouchEventIfEnabled):

  • page/EventHandler.h:
  • page/FocusController.cpp:

(WebCore::updateFocusCandidateIfNeeded):

  • page/Frame.cpp:

(WebCore::Frame::visiblePositionForPoint const):
(WebCore::Frame::documentAtPoint):

  • page/Page.cpp:

(WebCore::Page::editableElementsInRect const):

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::cancelPointer):

  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::tryToBeginDragAtPoint):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::renderRectForPoint const):
(WebCore::Frame::betterApproximateNode):
(WebCore::Frame::hitTestResultAtViewportLocation):
(WebCore::Frame::qualifyingNodeAtViewportLocation):

  • rendering/HitTestRequest.h:

(WebCore::HitTestRequest::HitTestRequest):
(WebCore::HitTestRequest::readOnly const):
(WebCore::HitTestRequest::active const):
(WebCore::HitTestRequest::move const):
(WebCore::HitTestRequest::release const):
(WebCore::HitTestRequest::ignoreCSSPointerEventsProperty const):
(WebCore::HitTestRequest::ignoreClipping const):
(WebCore::HitTestRequest::svgClipContent const):
(WebCore::HitTestRequest::touchEvent const):
(WebCore::HitTestRequest::disallowsUserAgentShadowContent const):
(WebCore::HitTestRequest::allowsFrameScrollbars const):
(WebCore::HitTestRequest::allowsChildFrameContent const):
(WebCore::HitTestRequest::allowsVisibleChildFrameContent const):
(WebCore::HitTestRequest::isChildFrameHitTest const):
(WebCore::HitTestRequest::resultIsElementList const):
(WebCore::HitTestRequest::includesAllElementsUnderPoint const):
(WebCore::HitTestRequest::type const):
(): Deleted.

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::nodeAtPoint):

  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::nodeAtFloatPoint):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::hitTestClipContent):

  • testing/Internals.cpp:

(WebCore::Internals::nodesFromRect const):

  • testing/Internals.mm:

(WebCore::Internals::rangeForDictionaryLookupAtLocation):

Source/WebKit:

See WebCore/ChangeLog for more details.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(-[WKWebProcessPlugInFrame hitTest:options:]):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::performDictionaryLookupAtLocation):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::hitTest const):

  • WebProcess/WebPage/WebFrame.h:

(WebKit::WebFrame::defaultHitTestRequestTypes):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleContextMenuEvent):
(WebKit::WebPage::characterIndexForPointAsync):
(WebKit::WebPage::updateWithImageExtractionResult):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::rectForElementAtInteractionLocation const):
(WebKit::rangeForPointInRootViewCoordinates):
(WebKit::WebPage::setFocusedFrameBeforeSelectingTextAtLocation):
(WebKit::isObscuredElement):
(WebKit::selectionPositionInformation):
(WebKit::textInteractionPositionInformation):
(WebKit::WebPage::positionInformation):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::shouldDelayWindowOrderingEvent):
(WebKit::WebPage::acceptsFirstMouse):
(WebKit::WebPage::performImmediateActionHitTestAtLocation):
(WebKit::WebPage::lookupTextAtLocation):

Source/WebKitLegacy/ios:

See WebCore/ChangeLog for more details.

  • WebCoreSupport/WebFrameIOS.mm:

(-[WebFrame elementRectAtPoint:]):

Source/WebKitLegacy/mac:

See WebCore/ChangeLog for more details.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::actionDictionary const):

  • WebView/WebFrame.mm:

(-[WebFrame elementAtPoint:]):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView elementAtPoint:allowShadowContent:]):

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController performHitTestAtPoint:]):

Source/WebKitLegacy/win:

See WebCore/ChangeLog for more details.

  • WebActionPropertyBag.cpp:

(WebActionPropertyBag::Read):

  • WebView.cpp:

(WebView::handleContextMenuEvent):
(WebView::gestureNotify):
(WebView::elementAtPoint):

2:25 PM Changeset in webkit [277294] by Chris Dumez
  • 4 edits in trunk

[iOS] Pages with service workers do not suspend promptly
https://bugs.webkit.org/show_bug.cgi?id=225598
Source/WebKit:

Reviewed by Youenn Fablet.

WebProcessProxy::updateServiceWorkerProcessAssertion() was starting a foreground/background activity
if there is a service worker in-process and if any of the client processes are foreground/background.
The issue is that a common case is that one of the client process is the service worker process
itself (since we run the service worker in-process whenever possible nowadays). As a result, it would
create a process assertion cycle. We'd start a foreground activity due to the service worker but we
would not release it when the view is no longer foreground, because the process would stay "foreground"
due to the service worker process assertion.

To address this, updateServiceWorkerProcessAssertion() now only takes process assertions if there
are client processes other than the current process. This avoids the cycle and this is really the only
case we need to make sure the service worker process doesn't suspend. In the case where the service
worker and the client are in the same process, then the normal process assertions are sufficient.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::updateServiceWorkerProcessAssertion):

Tools:

<rdar://problem/77753717>

Reviewed by Youenn Fablet.

Update WebKit API test accordingly.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
2:21 PM Changeset in webkit [277293] by Andres Gonzalez
  • 3 edits in trunk/LayoutTests

[ Mac ] accessibility/mac/expanded-notification.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=205410
rdar://58056289

Reviewed by Chris Fleizach.

  • accessibility/mac/expanded-notification.html:

Replaced the setTimeout(..., 10) with the use of Promises to make it
time deterministic.

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

Add null check in CachedResource::clearLoader
https://bugs.webkit.org/show_bug.cgi?id=225605
<rdar://69912354>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-10
Reviewed by Geoffrey Garen.

As much as we would like it not to be the case, we have records that m_loader can be null.
If it's null, let's not crash.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::clearLoader):

1:53 PM Changeset in webkit [277291] by Russell Epstein
  • 1 copy in tags/Safari-611.2.7.1.5

Tag Safari-611.2.7.1.5.

1:35 PM Changeset in webkit [277290] by Russell Epstein
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.5

1:35 PM Changeset in webkit [277289] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Network: rename "XHR" to "XHR/Fetch"
https://bugs.webkit.org/show_bug.cgi?id=224900

Reviewed by Timothy Hatcher.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.addScopeBarItem): Added.
(WI.NetworkTableContentView.displayNameForResource):
(WI.NetworkTableContentView.shortDisplayNameForResourceType): Deleted.

  • Localizations/en.lproj/localizedStrings.js:
12:58 PM Changeset in webkit [277288] by Ruben Turcios
  • 2 edits in branches/safari-612.1.12-branch/Source/WebCore

Cherry-pick r277228. rdar://problem/77772960

Increase stored AppHighlight character limit to 500
https://bugs.webkit.org/show_bug.cgi?id=225558

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp:

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

12:56 PM Changeset in webkit [277287] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS] WPT css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225607

Unreviewed test gardening.

  • platform/ios/TestExpectations:
12:50 PM Changeset in webkit [277286] by Andres Gonzalez
  • 4 edits
    2 adds in trunk

Fix for assert crash in AXObjectCache::visiblePositionForTextMarkerData.
https://bugs.webkit.org/show_bug.cgi?id=225303
<rdar://problem/77453921>

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/mac/pseudo-element-text-markers.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::visiblePositionForTextMarkerData):
Added check for Node::isPseudoElement to avoid hitting the assertion during the creation of a Position.

LayoutTests:

  • accessibility/mac/pseudo-element-text-markers-expected.txt: Added.
  • accessibility/mac/pseudo-element-text-markers.html: Added.
12:49 PM Changeset in webkit [277285] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS] WPT css-fonts/font-feature-resolution-001.html and css-fonts/font-feature-resolution-002.html are failing
https://bugs.webkit.org/show_bug.cgi?id=225606

Unreviewed test gardening.

  • platform/ios/TestExpectations:
12:33 PM Changeset in webkit [277284] by Nikita Vasilyev
  • 6 edits
    1 copy in trunk/Source/WebInspectorUI

Web Inspector: Layout panel "Grid Overlays" main checkbox has dead space (no interaction) between checkbox and label text
https://bugs.webkit.org/show_bug.cgi?id=225433
<rdar://problem/77590883>

Reviewed by Devin Rousso.

Make the empty space between the checkbox and the label text clickable in:

  • Everywhere in Settings tab
  • Layout panel, Page Overlay Options
  • Grid Overlay header
  • UserInterface/Main.html:
  • UserInterface/Views/CSSGridSection.css:

(.css-grid-section .node-display-name):
(.css-grid-section .toggle-all):
(.css-grid-section :is(.setting-editor, .node-overlay-list-item-container, .heading) input[type="checkbox"]):
(.css-grid-section .setting-editor > input[type="checkbox"]):
(.css-grid-section .node-display-name,): Deleted.
Make all checkbox labels in the Grid section align vertically.

  • UserInterface/Views/CSSGridSection.js:

(WI.CSSGridSection.prototype.initialLayout):

  • UserInterface/Views/SettingEditor.css: Copied from Source/WebInspectorUI/UserInterface/Views/CSSGridSection.css.

(.setting-editor input):
(.setting-editor > input[type="checkbox"]):
(.setting-editor > label):

  • UserInterface/Views/SettingEditor.js:

(WI.SettingEditor):

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor:first-child > *):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="checkbox"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor select):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="number"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .setting-editor input[type="text"]):
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor select): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="number"]): Deleted.
(.content-view.tab.settings > .settings-view > .container > .editor-group > .editor input[type="text"]): Deleted.
Rename ".editor" to ".setting-editor" so it matches SettingEditor.css.

12:28 PM Changeset in webkit [277283] by Russell Epstein
  • 8 edits in branches/safari-611.2.7.1-branch/Source

Versioning.

WebKit-7611.2.7.1.5

12:20 PM Changeset in webkit [277282] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[iOS] imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-001.html is failing after WPT re-sync
https://bugs.webkit.org/show_bug.cgi?id=225604

Unreviewed test gardening.

Rebaseline test for iOS.

  • platform/ios/imported/w3c/web-platform-tests/css/css-flexbox/flex-item-compressible-001-expected.txt:
12:09 PM Changeset in webkit [277281] by commit-queue@webkit.org
  • 42 edits in trunk/Source/WebCore

Use HashSet<RefPtr<Node>> instead of HashSet<Node*>
https://bugs.webkit.org/show_bug.cgi?id=220464

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

This makes us more resistent to lifetime bugs.

  • accessibility/AXObjectCache.cpp:

(WebCore::conditionallyAddNodeToFilterList):
(WebCore::filterVectorPairForRemoval):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):

  • bindings/js/JSMutationObserverCustom.cpp:

(WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots):

  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::observedNodes const):
(WebCore:: const): Deleted.

  • dom/MutationObserver.h:
  • dom/MutationObserverRegistration.cpp:

(WebCore::MutationObserverRegistration::addRegistrationNodesToSet const):

  • dom/MutationObserverRegistration.h:
  • dom/Node.cpp:

(WebCore::liveNodeSet):
(WebCore::ignoreSet):

  • editing/AppendNodeCommand.cpp:

(WebCore::AppendNodeCommand::getNodesInCommand):

  • editing/AppendNodeCommand.h:
  • editing/CompositeEditCommand.cpp:

(WebCore::EditCommandComposition::getNodesInCommand):

  • editing/CompositeEditCommand.h:
  • editing/DeleteFromTextNodeCommand.cpp:

(WebCore::DeleteFromTextNodeCommand::getNodesInCommand):

  • editing/DeleteFromTextNodeCommand.h:
  • editing/EditCommand.cpp:

(WebCore::SimpleEditCommand::addNodeAndDescendants):

  • editing/EditCommand.h:
  • editing/InsertIntoTextNodeCommand.cpp:

(WebCore::InsertIntoTextNodeCommand::getNodesInCommand):

  • editing/InsertIntoTextNodeCommand.h:
  • editing/InsertNodeBeforeCommand.cpp:

(WebCore::InsertNodeBeforeCommand::getNodesInCommand):

  • editing/InsertNodeBeforeCommand.h:
  • editing/MergeIdenticalElementsCommand.cpp:

(WebCore::MergeIdenticalElementsCommand::getNodesInCommand):

  • editing/MergeIdenticalElementsCommand.h:
  • editing/RemoveNodeCommand.cpp:

(WebCore::RemoveNodeCommand::getNodesInCommand):

  • editing/RemoveNodeCommand.h:
  • editing/ReplaceNodeWithSpanCommand.cpp:

(WebCore::ReplaceNodeWithSpanCommand::getNodesInCommand):

  • editing/ReplaceNodeWithSpanCommand.h:
  • editing/SetNodeAttributeCommand.cpp:

(WebCore::SetNodeAttributeCommand::getNodesInCommand):

  • editing/SetNodeAttributeCommand.h:
  • editing/SetSelectionCommand.h:
  • editing/SpellingCorrectionCommand.cpp:
  • editing/SplitElementCommand.cpp:

(WebCore::SplitElementCommand::getNodesInCommand):

  • editing/SplitElementCommand.h:
  • editing/SplitTextNodeCommand.cpp:

(WebCore::SplitTextNodeCommand::getNodesInCommand):

  • editing/SplitTextNodeCommand.h:
  • editing/WrapContentsInDummySpanCommand.cpp:

(WebCore::WrapContentsInDummySpanCommand::getNodesInCommand):

  • editing/WrapContentsInDummySpanCommand.h:
  • editing/cocoa/HTMLConverter.mm:

(HTMLConverterCaches::cacheAncestorsOfStartToBeConverted):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::highlightSelector):

  • xml/XPathFunctions.cpp:

(WebCore::XPath::FunId::evaluate const):

  • xml/XPathNodeSet.cpp:

(WebCore::XPath::sortBlock):
(WebCore::XPath::NodeSet::traversalSort const):

  • xml/XPathPath.cpp:

(WebCore::XPath::LocationPath::evaluate const):

  • xml/XPathPredicate.cpp:

(WebCore::XPath::Union::evaluate const):

11:58 AM Changeset in webkit [277280] by achristensen@apple.com
  • 12 edits in trunk

Add ObjC API similar to WKBundlePageCopyGroupIdentifier
https://bugs.webkit.org/show_bug.cgi?id=225477

Reviewed by Chris Dumez.

Source/WebKit:

Once adopted this will allow us to remove WKWebProcessPlugInPageGroup

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroupInternal.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _groupIdentifier]):

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextControllerPrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:

(-[RemoteObjectRegistryPlugIn getGroupIdentifier:]):

11:43 AM Changeset in webkit [277279] by Devin Rousso
  • 7 edits
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: add support for panning/zooming on images
https://bugs.webkit.org/show_bug.cgi?id=224655

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/GestureController.js: Added.

(WI.GestureController):
(WI.GestureController.prototype.get scale):
(WI.GestureController.prototype.set scale):
(WI.GestureController.prototype.get translate):
(WI.GestureController.prototype.set translate):
(WI.GestureController.prototype.reset):
(WI.GestureController.prototype._startScaleInteraction):
(WI.GestureController.prototype._updateScaleInteraction):
(WI.GestureController.prototype._endScaleInteraction):
(WI.GestureController.prototype._handleWheel):
(WI.GestureController.prototype._handleGestureStart):
(WI.GestureController.prototype._handleGestureChange):
(WI.GestureController.prototype._handleGestureEnd):
(WI.GestureController.prototype._handleMouseDown):
(WI.GestureController.prototype._handleMouseMove):
(WI.GestureController.prototype._handleMouseUp):
Add a general controller class that takes a target (and optionally a container) and adds
event listeners to handle various gestures:

  • scale (both via trackpad and mouse wheel)
  • transform (mouse click and drag)
  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView):
(WI.ImageResourceContentView.prototype.get navigationItems):
(WI.ImageResourceContentView.prototype.contentAvailable):
(WI.ImageResourceContentView.prototype.gestureControllerDidScale): Added.
(WI.ImageResourceContentView.prototype.gestureControllerDidTranslate): Added.
(WI.ImageResourceContentView.prototype._updateResetGestureButtonNavigationItemLabel): Added.
(WI.ImageResourceContentView.prototype._handleResetGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomOutGestureButtonNavitationItemClicked): Added.
(WI.ImageResourceContentView.prototype._handleZoomInGestureButtonNavitationItemClicked): Added.

  • UserInterface/Views/ImageResourceContentView.css:

(.content-view.resource.image > .img-container):
(.navigation-bar > .item.image-gesture-reset): Added.
Add a WI.GestureController and manipulate the scale and transform of the <img>.
Add navigation items that show the current scale (clicking it will reset the gesture), zoom
in, and zoom out.

  • UserInterface/Views/LocalResourceOverrideLabelView.css:

(.local-resource-override-label-view):
Add a z-index so that zoomed images don't appear on top.

  • UserInterface/Views/ResourceCollectionContentView.js:

(WI.ResourceCollectionContentView.prototype.get contentViewConstructorOptions):
Don't create the WI.GestureController in collection views.

  • UserInterface/Main.html:
  • UserInterface/Images/ZoomIn.svg: Added.
  • UserInterface/Images/ZoomOut.svg: Added.
  • Localizations/en.lproj/localizedStrings.js:
11:37 AM Changeset in webkit [277278] by Russell Epstein
  • 8 edits in branches/safari-612.1.14-branch/Source

Versioning.

WebKit-7612.1.14

11:32 AM Changeset in webkit [277277] by Russell Epstein
  • 1 copy in branches/safari-612.1.14-branch

New branch.

11:29 AM Changeset in webkit [277276] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.15

11:10 AM Changeset in webkit [277275] by aakash_jain@apple.com
  • 2 edits
    1 move in trunk/Tools

[build.webkit.org] Rename master_buildbot2.cfg to master.cfg
https://bugs.webkit.org/show_bug.cgi?id=222600

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/buildbot.tac:
  • CISupport/build-webkit-org/master.cfg: Moved from Tools/CISupport/build-webkit-org/master_buildbot2.cfg.
  • CISupport/build-webkit-org/master_buildbot2.cfg: Removed.
11:10 AM Changeset in webkit [277274] by Wenson Hsieh
  • 14 edits
    2 moves
    2 adds in trunk

[macOS] ImageOverlayController should paint selection quads instead of bounding rects
https://bugs.webkit.org/show_bug.cgi?id=225585
<rdar://problem/77725745>

Reviewed by Tim Horton.

Source/WebCore:

Teach SelectionRectGatherer (now renamed to SelectionGeometryGatherer) to emit quads, rather than bounding
rects around each quad. We use these quads in ImageOverlayController to render selection quads via page
overlay (i.e., in the case where the image containing the overlay is transparent).

Test: fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html

  • Headers.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/SelectionGeometryGatherer.cpp: Renamed from Source/WebCore/editing/SelectionRectGatherer.cpp.

Rename SelectionRectGatherer to SelectionGeometryGatherer, to reflect the fact that this helper class now
aggregates both selection quads and gap rects.

(WebCore::SelectionGeometryGatherer::SelectionGeometryGatherer):
(WebCore::SelectionGeometryGatherer::addQuad):

Rename addRect to addQuad, and make it take a FloatQuad instead.

(WebCore::SelectionGeometryGatherer::addGapRects):
(WebCore::SelectionGeometryGatherer::Notifier::Notifier):
(WebCore::SelectionGeometryGatherer::Notifier::~Notifier):
(WebCore::SelectionGeometryGatherer::boundingRects const):
(WebCore::SelectionGeometryGatherer::clearAndCreateNotifier):

  • editing/SelectionGeometryGatherer.h: Renamed from Source/WebCore/editing/SelectionRectGatherer.h.

(WebCore::SelectionGeometryGatherer::setTextOnly):
(WebCore::SelectionGeometryGatherer::isTextOnly const):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::updateWithImageExtractionResult):

Minor tweak - don't add any margin around the word when the line only contains a single word.

  • page/ImageOverlayController.cpp:

(WebCore::ImageOverlayController::selectionQuadsDidChange):

Rename selectionRectsDidChange to selectionQuadsDidChange, and take a FloatQuad in absolute coordinates
instead of a LayoutRect. Store these quads in m_overlaySelectionQuads (also renamed from
m_overlaySelectionRects).

(WebCore::ImageOverlayController::uninstallPageOverlayIfNeeded):
(WebCore::ImageOverlayController::drawRect):

Make a few changes when painting selections using the ImageOverlayController:

  1. Instead of painting with fillRect(), coalesce all of the collected selection quads into a single Path

object, and pass that Path into fillPath(). This allows us to render each piece of selected content as a
quad instead of a bounding rect, and additionally prevents us from rendering overlapping selections
when using ImageOverlayController.

  1. Clip selections to the absolute bounds of the image overlay host element's renderer, which prevents the new

selection quads from spilling out of the host element.

(WebCore::ImageOverlayController::selectionRectsDidChange): Deleted.

  • page/ImageOverlayController.h:
  • rendering/RenderSelectionInfo.cpp:

(WebCore::RenderSelectionInfo::RenderSelectionInfo):

  • rendering/RenderSelectionInfo.h:

(WebCore::RenderSelectionInfo::collectedSelectionQuads const):
(WebCore::RenderSelectionInfo::collectedSelectionRects const): Deleted.

More minor refactoring: rename collectedSelectionRects to collectedSelectionQuads, and make it take the
original FloatQuad instead of the quad's bounding box.

  • rendering/RenderText.cpp:

(WebCore::RenderText::collectSelectionGeometriesForLineBoxes):

  • rendering/RenderText.h:
  • rendering/SelectionRangeData.cpp:

(WebCore::SelectionRangeData::SelectionRangeData):
(WebCore::SelectionRangeData::set):
(WebCore::SelectionRangeData::apply):

  • rendering/SelectionRangeData.h:

LayoutTests:

Add a new layout test to cover the change. Currently, the below test case renders a visible selection rect in
the image overlay since we render the bounding rect of the overlay text quad, which intersects with the image
overlay's bounds. However, the text quad is positioned outside of the image overlay, so there shouldn't be any
visible selection rect. As such, this test is expected to render the same content as a plain image (even without
an image overlay).

Unfortunately, I couldn't write a matching ref-test for the case where the selection rect is inside the bounds
of the image overlay, since doing so led to tiny subpixel differences between the transparent image case (using
ImageOverlayController) and the regular image overlay selection case.

  • fast/images/image-extraction/mac/select-rotated-transparent-image-overlay-expected.html: Added.
  • fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html: Added.
11:06 AM Changeset in webkit [277273] by graouts@webkit.org
  • 4 edits in trunk/Source/WebKit

Fix some unified build errors
https://bugs.webkit.org/show_bug.cgi?id=225594

Reviewed by Wenson Hsieh.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/ios/WKTextSelectionRect.mm:
  • UIProcess/mac/WKTextInputWindowController.mm:
10:46 AM Changeset in webkit [277272] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[GPUP-MSE] Implement time changed callback
https://bugs.webkit.org/show_bug.cgi?id=225485
<rdar://problem/77625992>

Reviewed by Jer Noble.

Implement MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback so
the GPU process doesn't have to poll currentTime.

No change in functionality.

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::~MediaPlayerPrivateMediaSourceAVFObjC):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCurrentTimeDidChangeCallback):

10:30 AM Changeset in webkit [277271] by achristensen@apple.com
  • 6 edits
    2 adds in trunk/Tools

Add unit test for r274129
https://bugs.webkit.org/show_bug.cgi?id=224021

Reviewed by Chris Dumez.

  • TestWebKitAPI/SourcesCocoa.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:
  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistryPlugIn.mm:

(-[RemoteObjectRegistryPlugIn sendAwakener:completionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/TestAwakener.h: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/TestAwakener.mm: Added.

(-[TestAwakener awakeAfterUsingCoder:]):
(-[TestAwakener initWithValue:]):
(-[TestAwakener value]):
(+[TestAwakener supportsSecureCoding]):
(-[TestAwakener encodeWithCoder:]):
(-[TestAwakener initWithCoder:]):

10:20 AM Changeset in webkit [277270] by Devin Rousso
  • 8 edits in trunk

Add support for a media attribute on <meta name="theme-color" content="...">
https://bugs.webkit.org/show_bug.cgi?id=224389
<rdar://problem/74991621>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Tests: WKWebViewThemeColor.MetaElementValidNameAndColorAndMedia

WKWebViewThemeColor.MetaElementInvalidName
WKWebViewThemeColor.MetaElementInvalidColor
WKWebViewThemeColor.MetaElementInvalidMedia
WKWebViewThemeColor.MetaElementMultipleValid
WKWebViewThemeColor.MetaElementValidSubframe
WKWebViewThemeColor.KVO

  • html/HTMLMetaElement.idl:
  • html/HTMLMetaElement.h:
  • html/HTMLMetaElement.cpp:

(WebCore::parseMedia): Added.
(WebCore::mediaMatches): Added.
(WebCore::HTMLMetaElement::mediaAttributeMatches): Added.
(WebCore::HTMLMetaElement::contentColor): Added.
(WebCore::HTMLMetaElement::attributeChanged):
(WebCore::HTMLMetaElement::parseAttribute):
(WebCore::HTMLMetaElement::removedFromAncestor):
(WebCore::HTMLMetaElement::process):
Add support for a reflected media attribute. Cache the most recently parsed media (which
becomes a Ref<MediaQuerySet>) and content (which can become a Color) to avoid doing
repeated work when determining the active theme color after media state changes. Notify the
Document whenever the name or content or media attribute changes if the new or old
value will be or would have been related to calculating the theme color.

  • dom/Document.h:

(WebCore::Document::themeColor const): Deleted.

  • dom/Document.cpp:

(WebCore::Document::themeColor): Added.
(WebCore::Document::metaElementThemeColorChanged): Added.
(WebCore::Document::determineActiveThemeColorMetaElement): Added.
(WebCore::Document::themeColorChanged):
(WebCore::Document::updateElementsAffectedByMediaQueries):
(WebCore::Document::processMetaElementThemeColor): Deleted.
Make calculating the theme color into a two stage process:

  1. find all <meta name="theme-color"> that have a valid CSS color content in tree order
  2. return the HTMLMetaElement::contentColor of the first item from step 1 that HTMLMetaElement::mediaAttributeMatches

This is done so that Document::updateElementsAffectedByMediaQueries doesn't have to repeat
step 1 each time it's run (which can be often) and instead only needs to iterate a (likely
very small) list in step 2. The actions/situations listed above would clear the cached data
from both steps, meaning that the next Document::themeColor will do a full recalculation.
Notify the UIProcess of a change in theme color if the result of step 2 is different from a
previously cached result (if set).

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewThemeColor.mm:

(TEST.WKWebViewThemeColor.MetaElementValidNameAndColor): Added.
(TEST.WKWebViewThemeColor.MetaElementValidNameAndColorAndMedia): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidName): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidColor): Added.
(TEST.WKWebViewThemeColor.MetaElementInvalidMedia): Added.
(TEST.WKWebViewThemeColor.MetaElementMultipleValid): Added.
(TEST.WKWebViewThemeColor.MetaElementValidSubframe): Added.
(-[WKWebViewThemeColorObserver observeValueForKeyPath:ofObject:change:context:]):
(TEST.WKWebViewThemeColor.KVO):
(TEST.WKWebViewThemeColor.MetaElementOnLoad): Deleted.
(TEST.WKWebViewThemeColor.MetaElementMultipleTags): Deleted.

9:57 AM Changeset in webkit [277269] by Darin Adler
  • 53 edits in trunk

Remove all remaining uses of the String::toInt family of functions
https://bugs.webkit.org/show_bug.cgi?id=225580

Reviewed by Sam Weinig.

Source/WebCore:

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
Use parseInteger<uint64_t> instead of String::toUInt64Strict.
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameAndVersionFromFile):
Ditto.

  • Modules/websockets/WebSocketDeflateFramer.cpp:

(WebCore::WebSocketExtensionDeflateFrame::WebSocketExtensionDeflateFrame):
Use a reference instead of a pointer.
(WebCore::WebSocketExtensionDeflateFrame::processResponse): Use
ASCIILiteral. Use parseIntegerAllowingTrailingJunk<int> instead of
String::toInt. Use auto. Use references instead of pointers.
(WebCore::DeflateResultHolder::DeflateResultHolder): Use a reference.
(WebCore::DeflateResultHolder::~DeflateResultHolder): Ditto.
(WebCore::InflateResultHolder::InflateResultHolder): Ditto.
(WebCore::InflateResultHolder::~InflateResultHolder): Ditto.
(WebCore::WebSocketDeflateFramer::WebSocketDeflateFramer): Deleted.
(WebCore::WebSocketDeflateFramer::createExtensionProcessor): Pass a reference.
(WebCore::WebSocketDeflateFramer::deflate): Ditto.
(WebCore::WebSocketDeflateFramer::inflate): Ditto.

  • Modules/websockets/WebSocketDeflateFramer.h: Use forward declarations

instead of includes, references instead of pointers, initialize data members
in the class definition, and remove an unnecessary explicit default constructor.

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::headerHasValidHTTPVersion): Use parseInteger<int> instead of
StringView::toIntStrict.
(WebCore::WebSocketHandshake::readStatusLine): Ditto.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::headingLevel const): Use
getIntegralAttribute instead of AtomString::toInt.
(WebCore::AccessibilityNodeObject::hierarchicalLevel const): Ditto.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::getIntegralAttribute const): Added.
Since AccessibilityObject has its own getAttribute function, we need to
re-implement Element::getIntegralAttribute here.
(WebCore::AccessibilityObject::setSize const): Use getIntegralAttribute
instead of AtomString::toInt.
(WebCore::AccessibilityObject::posInSet const): Ditto.

  • accessibility/AccessibilityObject.h: Added getIntegralAttribute.
  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::isDataTable const):Use getIntegralAttribute
instead of AtomString::toInt.
(WebCore::AccessibilityTable::axColumnCount const): Ditto.
(WebCore::AccessibilityTable::axRowCount const): Ditto.

  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::axColumnIndex const): Ditto.
(WebCore::AccessibilityTableCell::axRowIndex const): Ditto.
(WebCore::AccessibilityTableCell::axColumnSpan const): Ditto.
(WebCore::AccessibilityTableCell::axRowSpan const): Ditto.

  • accessibility/AccessibilityTableRow.cpp:

(WebCore::AccessibilityTableRow::axColumnIndex const): Ditto.
(WebCore::AccessibilityTableRow::axRowIndex const): Ditto.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::consumeANPlusB): Use parseInteger<int> instead of String::toIntStrict

  • css/parser/CSSTokenizer.cpp:

(WebCore::CSSTokenizer::consumeEscape): Use parseInteger<uint32_t> instead of
String::toUIntStrict.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::canPresentDataDetectorsUIForElement):
Use parseIntegerAllowingTrailingJunk<int> instead of String::toInt.
Also use StringView instead of String.
(WebCore::dataDetectorStringForPath): Use makeString instead of StringBuilder.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::computedAttributesForElement): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

  • html/HTMLFrameElement.cpp:

(WebCore::HTMLFrameElement::parseAttribute): Use parseHTMLInteger instead
of parseIntegerAllowingTrailingJunk<int>.

  • html/HTMLFrameSetElement.cpp:

(WebCore::HTMLFrameSetElement::parseAttribute): Ditto.

  • html/HTMLHRElement.cpp:

(WebCore::HTMLHRElement::collectStyleForPresentationAttribute): Ditto.

  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::collectStyleForPresentationAttribute): Ditto.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::parseAttribute): Ditto.

  • html/HTMLLIElement.cpp:

(WebCore::HTMLLIElement::parseValue): Ditto.

  • html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::loop const): Use getIntegralAttribute
instead of parseIntegerAllowingTrailingJunk<int>.

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::collectStyleForPresentationAttribute):
Use parseHTMLInteger instead of parseIntegerAllowingTrailingJunk<int>.

  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::parseAttribute): Ditto.

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::parseAttribute): Ditto.

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::restoreAttachedWindowHeight):
Use parseIntegerAllowingTrailingJunk<unsigned> instead of
String::toUInt.

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::nodeForPath): Use
parseIntegerAllowingTrailingJunk<unsigned> instead of String::toUInt.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox): Use parseHTMLInteger
instead of AtomString::toInt.

  • loader/CrossOriginPreflightResultCache.cpp:

(WebCore::parseAccessControlMaxAge): Use parseInteger<uint64_t> instead
of String::toUIntStrict.

  • loader/FTPDirectoryParser.cpp:

(WebCore::parseOneFTPLine): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::parseAttributionRequest): Use
parseInteger<uint64_t> instead of String::toUInt64Strict.

  • mathml/MathMLSelectElement.cpp:

(WebCore::MathMLSelectElement::getSelectedActionChildAndIndex):
Use getIntegralAttribute instead of parseIntegerAllowingTrailingJunk<int>.

  • page/EventSource.cpp:

(WebCore::EventSource::parseEventStreamLine): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of charactersToUInt64.

  • page/Location.cpp:

(WebCore::Location::setPort): Use parseInteger<uint16_t> instead of parseUInt16.

  • page/SecurityOriginData.cpp:

(WebCore::SecurityOriginData::fromDatabaseIdentifier): Use
parseIntegerAllowingTrailingJunk<uint16_t> instead of String::toInt, which
allows us to remove some range checking and type conversion.

  • page/WindowFeatures.cpp:

(WebCore::setWindowFeature): Use parseIntegerAllowingTrailingJunk<int>
instead of StringView::toInt.

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::parsePort): Use
parseInteger<uint16_t> instead of charactersToIntStrict.

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::collectCPUUsage): Use parseInteger<pid_t> instead of
String::toIntStrict. Also removed unneeded special cases for "." and
".." since both will fail to parse as an integer, and this no longer
need to put d_name into a WTF::String.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(CachedResourceStreamingClient::responseReceived): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

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

(WebCore::ParsedResponseMessage::ParsedResponseMessage): Use
parseInteger<int> instead of String::toInt to parse a single-digit.
Probably should write this another way.

  • platform/network/curl/CookieUtil.cpp:

(WebCore::CookieUtil::parseCookieAttributes): Use
parseIntegerAllowingTrailingJunk<int64_t> instead of String::toInt64.

  • platform/network/curl/CurlCacheEntry.cpp:

(WebCore::CurlCacheEntry::setResponseFromCachedHeaders): Use
parseIntegerAllowingTrailingJunk<long long> instead of String::toInt64.

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::appendOS2Table): Use parseHTMLInteger
instead of parseIntegerAllowingTrailingJunk<int>. Might be even better
to refactor to use getIntegralAttribute later.
(WebCore::SVGToOTFFontConverter::appendVORGTable): Ditto.

  • testing/Internals.cpp:

(WebCore::Internals::setSFrameCounter): Use parseInteger<uint64_t>
instead of StringView::toUInt64Strict.

Source/WebDriver:

  • WebDriverService.cpp:

(WebDriver::WebDriverService::run): Use
parseIntegerAllowingTrailingJunk<uint16_t> instead of String::toUInt.

  • glib/WebDriverServiceGLib.cpp:

(WebDriver::parseVersion): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead of String::toInt64,
and then assigning into a uint64_t.

  • socket/HTTPParser.cpp:

(WebDriver::HTTPParser::expectedBodyLength const): Use
parseIntegerAllowingTrailingJunk<size_t> instead of String::toInt.
Also use StringView instead of String::substringSharingImpl and
dropped an unneeded call to String::stripWhiteSpace.

Source/WebKitLegacy/win:

  • Plugins/PluginDatabaseWin.cpp:

(WebCore::parseVersionString): Use parseIntegerAllowinTrailingJunk<int>
isnstead of String::toInt.

  • Plugins/PluginView.cpp:

(WebCore::PluginView::handlePost): Use
parseIntegerAllowingTrailingJunk<unsigned> instead of String::toInt,
and then assigning to an unsigned.

Tools:

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::numberAttributeValue): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.
(WTR::AccessibilityUIElement::hierarchicalLevel const): Ditto.

9:56 AM Changeset in webkit [277268] by achristensen@apple.com
  • 4 edits in trunk

css-display-none actions from WKContentRuleList should apply to pages loaded with loadData and loadHTMLString
https://bugs.webkit.org/show_bug.cgi?id=225493
<rdar://77331789>

Reviewed by Darin Adler.

Source/WebCore:

Blocking and https upgrade don't really make sense on the url from loadData and loadHTMLString because blocking would be
incompatible with existing apps and because you're not really connecting to a server, you're just pretending you did.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::handleSubstituteDataLoadNow):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(TEST):

9:38 AM Changeset in webkit [277267] by Chris Dumez
  • 2 edits in trunk/Tools

Fix potential races in AppleLanguagesTest.UpdateAppleLanguages API test
https://bugs.webkit.org/show_bug.cgi?id=225429

Reviewed by Darin Adler.

Calling [TestWKWebView performAfterReceivingAnyMessage] registers a MessageHandler which sends an
async WebUserContentController::AddUserScriptMessageHandlers IPC to the WebProcess. We want to
make sure that that message handler is registered in the WebProcess before the JS on the page
calls webkit.messageHandlers.testHandler.postMessage(). To address this issue, I moved the
call to [TestWKWebView performAfterReceivingAnyMessage] before the call to evaluateJavaScript
that registers the event listener that may call webkit.messageHandlers.testHandler.postMessage().

Also make sure the PreferenceObserver has been allocated after sending the
"NSApplicationDidBecomeActiveNotification" and before proceeding with the test.

I am also adding an extra check at the end to make sure that the value of navigator.language is
correct and to make sure that WKPreferenceObserver.preferenceDidChange was called. This was done
to help diagnose flakiness issues on the bots that I cannot reproduce locally.

  • TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm:

(TEST_F):

9:35 AM Changeset in webkit [277266] by youenn@apple.com
  • 6 edits in trunk/Source/WebKit

Have IPC::Semaphore::wait return a state boolean
https://bugs.webkit.org/show_bug.cgi?id=225587

Reviewed by Alex Christensen.

Semaphore::wait might return early, in particular if its sempahore is destroyed.
To handle this case, return false in that case to allow specific handling by caller.
Use return state in RemoteCaptureSampleManager::RemoteAudio::startThread as a way to stop the capture thread.
Covered by existing tests.

  • Platform/IPC/IPCSemaphore.h:
  • Platform/IPC/darwin/IPCSemaphoreDarwin.cpp:

(IPC::Semaphore::wait):

  • Platform/IPC/unix/IPCSemaphoreUnix.cpp:

(IPC::Semaphore::wait):

  • Platform/IPC/win/IPCSemaphoreWin.cpp:

(IPC::Semaphore::wait):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::startThread):

9:26 AM Changeset in webkit [277265] by Aditya Keerthi
  • 7 edits
    2 adds in trunk

[iPadOS] Do not present custom input peripherals when switching back to a tab with a focused element
https://bugs.webkit.org/show_bug.cgi?id=225541
<rdar://problem/77537795>

Reviewed by Wenson Hsieh.

Source/WebKit:

With the introduction of desktop-class browing on iPad, form control
elements began to retain focus even after their input peripheral
(popover, menu, etc.) was dismissed. This behavior matches macOS - when
a <select> element is clicked, a menu is presented, and when a option
is selected, the menu is dismissed but the element retains focus.

Consequently, when a <select> menu is dismissed by choosing an option on
an iPad with a hardware keyboard, the element retains focus. Now, when
switching tabs and coming back to the tab with the focused <select>, an
activity state update is triggered. Upon recognizing that there is a
focused element, an ElementDidFocus message is sent to the UIProcess.

In [WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:],
the focus is given permission to present the input peripheral (menu)
when the hardware keyboard is attached. This is necessary when necessary
when focusing a text input, because the UCB needs to be displayed and
text selection needs to be set up. However, the behavior is undesirable
for elements that present a popover or a menu (select, color inputs, and
date inputs), since the user is unexpectedly shown an input peripheral.
Even worse, the user's scroll position will be changed to ensure the
focused element is visible.

To fix the undesirable behavior, and get closer to the macOS behavior,
custom input peripherals should not be displayed when switching back
to a tab with a focused element.

Test: fast/forms/ios/focus-select-and-switch-tabs.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

Only show the input peripheral if it is not a keyboard view.

Tools:

Updated a UIScriptController hook that simulates attaching a hardware
keyboard to also swizzle [UIKeyboard isInHardwareKeyboardMode].

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):

Moved the default swizzling behavior into this method so that it remains
consistent across tests.

Unfortunately, the default swizzling behavior contrasts with the default
value of GSEventSetHardwareKeyboardAttached. However, this is an existing
inconsistency, and should be looked at more carefully in a separate
investigation.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::returnYes):
(WTR::returnNo):
(WTR::UIScriptControllerIOS::setHardwareKeyboardAttached):

LayoutTests:

Added a test which simulates a tab switch by removing and re-adding the
webview to the window.

  • fast/forms/ios/focus-select-and-switch-tabs-expected.txt: Added.
  • fast/forms/ios/focus-select-and-switch-tabs.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.becomeFirstResponder):
(window.UIHelper.removeViewFromWindow):
(window.UIHelper.addViewToWindow):

9:08 AM Changeset in webkit [277264] by achristensen@apple.com
  • 29 edits
    2 deletes in trunk

Remove WKBundlePageGroupRef
https://bugs.webkit.org/show_bug.cgi?id=225471

Reviewed by Darin Adler.

Source/WebKit:

Its last use was removed in rdar://60987265

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h:

(API::InjectedBundle::Client::willDestroyPage):
(API::InjectedBundle::Client::didInitializePageGroup): Deleted.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:
  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetAsynchronousSpellCheckingEnabledForTesting):
(WKBundleGetLiveDocumentURLsForTesting):
(WKBundleSetUserStyleSheetLocationForTesting):
(WKBundleAddUserScript): Deleted.
(WKBundleAddUserStyleSheet): Deleted.
(WKBundleRemoveUserScript): Deleted.
(WKBundleRemoveUserStyleSheet): Deleted.
(WKBundleRemoveUserScripts): Deleted.
(WKBundleRemoveUserStyleSheets): Deleted.
(WKBundleRemoveAllUserContent): Deleted.
(WKBundleSetAsynchronousSpellCheckingEnabled): Deleted.
(WKBundleGetLiveDocumentURLs): Deleted.
(WKBundleSetUserStyleSheetLocation): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageGetPageGroup): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.h:
  • WebProcess/InjectedBundle/API/c/WKBundlePageGroup.cpp: Removed.
  • WebProcess/InjectedBundle/API/c/WKBundlePageGroup.h: Removed.
  • WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setAsynchronousSpellCheckingEnabled):
(WebKit::InjectedBundle::setUserStyleSheetLocation):
(WebKit::InjectedBundle::liveDocumentURLs):
(WebKit::InjectedBundle::didInitializePageGroup): Deleted.

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/InjectedBundle/InjectedBundleClient.cpp:

(WebKit::InjectedBundleClient::didInitializePageGroup): Deleted.

  • WebProcess/InjectedBundle/InjectedBundleClient.h:
  • WebProcess/WebPage/WebPageGroupProxy.cpp:

(WebKit::WebPageGroupProxy::create):

Tools:

Also use some smart pointers instead of raw pointers to keep things safe.

  • TestWebKitAPI/InjectedBundleController.cpp:

(TestWebKitAPI::InjectedBundleController::InjectedBundleController):
(TestWebKitAPI::InjectedBundleController::initialize):
(TestWebKitAPI::InjectedBundleController::didInitializePageGroup): Deleted.

  • TestWebKitAPI/InjectedBundleController.h:

(TestWebKitAPI::InjectedBundleController::bundle const):

  • TestWebKitAPI/InjectedBundleTest.h:

(TestWebKitAPI::InjectedBundleTest::willDestroyPage):
(TestWebKitAPI::InjectedBundleTest::Register::create):
(TestWebKitAPI::InjectedBundleTest::didInitializePageGroup): Deleted.

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic_Bundle.cpp:
  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionNoCache_Bundle.cpp:
  • TestWebKitAPI/Tests/WebKit/DocumentStartUserScriptAlertCrash_Bundle.cpp:
  • TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior_Bundle.cpp:
  • TestWebKitAPI/Tests/WebKit/InjectedBundleMakeAllShadowRootsOpen_Bundle.cpp:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::initialize):
(WTR::InjectedBundle::didCreatePage):
(WTR::InjectedBundle::didReceiveMessage):
(WTR::InjectedBundle::reportLiveDocuments):
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::beginTesting):
(WTR::InjectedBundle::statisticsNotifyObserver):
(WTR::InjectedBundle::didInitializePageGroup): Deleted.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:

(WTR::InjectedBundle::bundle const):
(WTR::InjectedBundle::pageGroup const): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setUserStyleSheetEnabled):
(WTR::TestRunner::setAsynchronousSpellCheckingEnabled):

8:41 AM Changeset in webkit [277263] by aboya@igalia.com
  • 1 edit
    1 delete in trunk/Source/WebCore

[MSE][GStreamer] Remove stale PlaybackPipeline.cpp
https://bugs.webkit.org/show_bug.cgi?id=225595

Reviewed by Adrian Perez de Castro.

The WebKitMediaSrc v2 patch removed PlaybackPipeline but accidentally
the .cpp file survived the rebases.

This patch introduces no behavior changes, the file was not being
compiled anymore.

  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp: Removed.
5:17 AM Changeset in webkit [277262] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

[GTK] Add picker UI for <input type=date> and <input type=datetime-local>
https://bugs.webkit.org/show_bug.cgi?id=224924

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-10
Reviewed by Adrian Perez de Castro.

Use a GtkPopover with a GtkCalendar.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSetFocus): Only notify the web process about focus changes when shouldNotifyFocusEvents is true.
(webkitWebViewBaseSetShouldNotifyFocusEvents): Set whether the web view should notify about focus changes to the
web process.

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/gtk/WebDateTimePickerGtk.cpp:

(WebKit::WebDateTimePickerGtk::~WebDateTimePickerGtk): Call invalidate instead of endPicker.
(WebKit::WebDateTimePickerGtk::invalidate): Destroy the popover and allow the web view to notify about focus
events again.
(WebKit::WebDateTimePickerGtk::endPicker): Invalidate and notify the parent.
(WebKit::timeToString): Helper to convert the time portions of a DateComponents to a string.
(WebKit::calendarDateToString): Helper to convert selected date to a string.
(WebKit::WebDateTimePickerGtk::didChooseDate): Notify the WebPageProxy about the selected date.
(WebKit::WebDateTimePickerGtk::showDateTimePicker): Create or update a GtkPopover with a calendar.
(WebKit::WebDateTimePickerGtk::update): Update the calendar and current date.

  • UIProcess/gtk/WebDateTimePickerGtk.h:
3:55 AM Changeset in webkit [277261] by commit-queue@webkit.org
  • 4 edits in trunk

[GStreamer] fast/mediastream/MediaStream-video-element-video-tracks-disabled.html fails
https://bugs.webkit.org/show_bug.cgi?id=225518

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

Source/WebCore:

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: Fix out-of-bounds memset().

LayoutTests:

  • platform/glib/TestExpectations: Unflag a couple more mediastream tests that are passing now.
3:08 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
3:02 AM Changeset in webkit [277260] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.32.1

WebKitGTK 2.32.1

3:01 AM Changeset in webkit [277259] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.32.1 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.32.1
2:13 AM Changeset in webkit [277258] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebKit

[GTK] Use always async scrolling in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=225512

Reviewed by Fujii Hironori.

We currently use async scrolling only when the hardware acceleration policy is set for always, but not when
entering accelerating compositing mode in ondemand policy. Since the GTK port still supports the non accelerated
compositing mode we need to add and remove the scrolling tree when entering and leaving the accelerated
compositing mode.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_set_hardware_acceleration_policy): Always enable async scrolling when accelerated compositing
is enabled.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore): Ditto.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::~DrawingAreaCoordinatedGraphics): Remove the scrolling tree if the
drawing area is destroyed in accelerated compositing mode.
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Add the scrolling tree.
(WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Remove the scrolling tree.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage): Do not add the scrolling tree from here for the GTK port.
(WebKit::WebPage::close): Do not remove the scrolling tree from here for the GTK port.

12:16 AM Changeset in webkit [277257] by commit-queue@webkit.org
  • 26 edits
    4 adds in trunk

Implement <form>.requestSubmit()
https://bugs.webkit.org/show_bug.cgi?id=197958

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-10
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test results and import requestSubmit tests.

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation.html: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus-expected.txt: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus.html: Added.
  • web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-expected.txt:
  • web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html:

Source/WebCore:

Implement the requestSubmit method as defined here [1].

Behavior matches Chrome and Firefox.

[1] https://html.spec.whatwg.org/multipage/forms.html#dom-form-requestsubmit

Tests: imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit.html

imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/request-submit-activation.html
imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-requestsubmit-autofocus.html

  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::defaultEventHandler):
(WebCore::HTMLButtonElement::isSubmitButton const):

  • html/HTMLButtonElement.h:
  • html/HTMLFormControlElement.h:

(WebCore::HTMLFormControlElement::isSubmitButton const):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submitImplicitly):
(WebCore::HTMLFormElement::submitIfPossible):
(WebCore::HTMLFormElement::requestSubmit):
(WebCore::HTMLFormElement::findSubmitButton):
(WebCore::HTMLFormElement::submit):
(WebCore::HTMLFormElement::effectiveTarget const):
(WebCore::HTMLFormElement::findSubmitter const):
(WebCore::HTMLFormElement::reportValidity):
(WebCore::HTMLFormElement::prepareForSubmission): Deleted.
(WebCore::HTMLFormElement::findSubmitButton const): Deleted.

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

(WebCore::ImageInputType::handleDOMActivateEvent):

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

(WebCore::InputType::isSubmitButton const):

  • html/SubmitInputType.cpp:

(WebCore::SubmitInputType::handleDOMActivateEvent):

  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::create):

  • loader/FormSubmission.h:

Source/WTF:

Add requestSubmit as experimental feature, disabled by default.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Update improved test results.

  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
12:10 AM Changeset in webkit [277256] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

Use IPC::Semaphore instead of sending an IPC message for every captured audio sample
https://bugs.webkit.org/show_bug.cgi?id=225452

Reviewed by Eric Carlson.

Previously, we were sending an IPC message from UIProcess or GPUProcess to WebProcess for every microphone audio sample chunk.
We are now using IPC::Semaphore to signal that a new chunk is to be processed.

We no longer send the chunk timestamp. Instead, we reconstruct it from the number of previously processed samples.
At audio storage change, we send the start time and we assume that there is continuous timing based on sample counts after that.
That is why we recreate a new audio storage change anytime we need to reset or the configuration changes, which should not happen often in practice.

We process fixed-size chunks on WebProcess side and signal it on GPUProcess/UIProcess side.
This size is sent through IPC at audio storage change time and is the max of 128 samples (WebAudio quantum) and AudioSession preferred size.
In case WebAudio is used, it should be 128 samples. In case WebAudio is not used, it should be 20 ms of audio data.

Covered by existing tests and manually tested.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::start):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::storageChanged):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::audioStorageChanged):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::RemoteAudio):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::~RemoteAudio):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::stopThread):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::startThread):
(WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):

  • WebProcess/cocoa/RemoteCaptureSampleManager.h:
  • WebProcess/cocoa/RemoteCaptureSampleManager.messages.in:

May 9, 2021:

6:48 PM Changeset in webkit [277255] by weinig@apple.com
  • 4 edits in trunk/Source/WebCore

Add back protection of the pixel buffer in ImageBufferCGBackend::toCFData removed in r277237
https://bugs.webkit.org/show_bug.cgi?id=225574

Reviewed by Darin Adler.

In r277237, I accidentally removed a RefPtr<Uint8ClampedArray> protectedPixelArray
in ImageBufferCGBackend::toCFData that was needed to avoided crashing in some cases
when running fast/canvas/canvas-toDataURL-jpeg-crash.html.

Since it wasn't super clear what it was doing, this switches to using the more idiomatic
method of keeping the data alive in a CGDataProviderRef by passing the leaked image data
as the context and derefing in the callback lambda.

Just to be consistent, I went to other callers of CGDataProviderCreateWithData and
updated them to be idiomatically consistent.

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):
(WebCore::releaseImageData): Deleted.

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::toCFData const):

  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::create):

5:26 PM Changeset in webkit [277254] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[WebXR] Remove reference cycle in WebXRSession
https://bugs.webkit.org/show_bug.cgi?id=225025
<rdar://problem/77111217>

Unreviewed WPE build fix.

  • Modules/webxr/WebXRInputSourceArray.h: Add missing namespace.
5:10 PM WebKitGTK/2.28.x edited by clopez@igalia.com
(diff)
2:21 PM Changeset in webkit [277253] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[WinCairo][Clang] lld-link: error: undefined symbol: public: static class GenericTypedArrayView<>::tryCreate() in CryptoKeyRSAOpenSSL.cpp
https://bugs.webkit.org/show_bug.cgi?id=225581

Unreviewed build for r277142.

  • crypto/openssl/CryptoKeyRSAOpenSSL.cpp: Include <JavaScriptCore/TypedArrayInlines.h>.
12:11 PM Changeset in webkit [277252] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Tools] Generate marshalling code without source reference
https://bugs.webkit.org/show_bug.cgi?id=225283

Patch by Khem Raj <raj.khem@gmail.com> on 2021-05-09
Reviewed by Carlos Alberto Lopez Perez.

  • MiniBrowser/gtk/CMakeLists.txt:
12:04 PM Changeset in webkit [277251] by dino@apple.com
  • 15 edits in trunk/Source/WebCore

[WebXR] Remove reference cycle in WebXRSession
https://bugs.webkit.org/show_bug.cgi?id=225025
<rdar://problem/77111217>

Reviewed by Sam Weinig.

Patch by Sam Weinig, who took my bad patch and made it better.

WebXRSession was attempting to create an WebXRInputSourceArray in
its constructor, which itself was trying to hold a strong reference
back to WebXRSession - causing a crash.

  • Modules/webxr/WebXRBoundedReferenceSpace.h: Fix small typo.
  • Modules/webxr/WebXRFrame.cpp: Use reference in constructor, since we

know the session exists.
(WebCore::WebXRFrame::create):
(WebCore::WebXRFrame::WebXRFrame):

  • Modules/webxr/WebXRFrame.h:
  • Modules/webxr/WebXRInputSource.cpp: Use a WeakPtr as a reference back

to the WebXRSession.
(WebCore::WebXRInputSource::create):
(WebCore::WebXRInputSource::WebXRInputSource):
(WebCore::WebXRInputSource::session): Add this getter.
(WebCore::WebXRInputSource::update): Check for null.
(WebCore::WebXRInputSource::pollEvents):
(WebCore::WebXRInputSource::createEvent): Deleted - moved to lambda.

  • Modules/webxr/WebXRInputSource.h:
  • Modules/webxr/WebXRInputSource.idl:
  • Modules/webxr/WebXRInputSourceArray.cpp: Add GenerateIsReachable.

(WebCore::WebXRInputSourceArray::create):
(WebCore::WebXRInputSourceArray::WebXRInputSourceArray):
(WebCore::WebXRInputSourceArray::ref):
(WebCore::WebXRInputSourceArray::deref):
(WebCore::WebXRInputSourceArray::update):
(WebCore::WebXRInputSourceArray::handleAddedOrUpdatedInputSources):

  • Modules/webxr/WebXRInputSourceArray.h:
  • Modules/webxr/WebXRInputSourceArray.idl:
  • Modules/webxr/WebXRInputSpace.cpp: Use reference in constructor.

(WebCore::WebXRInputSpace::create):
(WebCore::WebXRInputSpace::WebXRInputSpace):

  • Modules/webxr/WebXRInputSpace.h:
  • Modules/webxr/WebXRSession.cpp: Use a UniqueRef for input source array.

(WebCore::WebXRSession::onFrame):

  • Modules/webxr/WebXRSession.h:
  • bindings/scripts/CodeGeneratorJS.pm: Add ImplWebXRSessionRoot to GenerateIsReachable.

(GenerateImplementation):

11:57 AM Changeset in webkit [277250] by rniwa@webkit.org
  • 8 edits in trunk

IPC testing API should have the ability to send and receive shared memory
https://bugs.webkit.org/show_bug.cgi?id=225576

Reviewed by Wenson Hsieh.

Source/WebKit:

This patch adds the capability to send & receive shared memory for IPC testing purposes.
It adds IPC.createSharedMemory which creates a JavaScript object representing a newly
allocated IPC-sharable memory. It has readBytes and writeBytes methods. Both takes offset
and the number of bytes to read / write. readBytes will return a new ArrayBuffer and
writeBytes takes an ArrayBuffer or a typed array as the first argument.

IPC.sendMessage and IPC.sendSyncMessage now supprts encoding this SharedMemory JavaScript
object. It supports the type specific arguments of "protection" and "dataSize" in addition
to the regular "value" property for the SharedMemory object.

This patch also adds the support for sending Semaphore object over IPC created via
IPC.createSemaphore, which was supposed to be added in r277199.

Finally, this patch also exposes the VM page size via IPC.vmPageSize to facilitate
the allocation of a sharable memory of an interesting size for testing purposes.

Tests: TestWebKitAPI.IPCTestingAPI.CanReceiveSharedMemory

TestWebKitAPI.IPCTestingAPI.CanCreateSharedMemory
TestWebKitAPI.IPCTestingAPI.CanSendSemaphpre
TestWebKitAPI.IPCTestingAPI.CanSendSharedMemory

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageData): Use uint32_t instead
of size_t since the latter depends on the specific architecture (e.g. 32-bit vs 64-bit).
(WebKit::RemoteRenderingBackend::updateSharedMemoryAndSemaphoreForGetImageData): Ditto.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in: Ditto.
  • Platform/IPC/JSIPCBinding.h: Added a specialization for SharedMemory::IPCHandle.
  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSIPCSemaphore::encode const): Added.
(WebKit::IPCTestingAPI::JSSharedMemory): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::create): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::size): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::JSSharedMemory): Added.
(WebKit::IPCTestingAPI::convertToUint64): Moved up here.
(WebKit::IPCTestingAPI::JSIPCSemaphore::signal): Fixed a typo.
(WebKit::IPCTestingAPI::JSIPCSemaphore::waitFor): Ditto.
(WebKit::IPCTestingAPI::JSSharedMemory::createHandle): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::createJSWrapper): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::unwrap): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::toWrapped): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::initialize): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::finalize): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSSharedMemory::readBytes): Added.
(WebKit::IPCTestingAPI::arrayBufferDataFromValueRef): Extracted out of encodeTypedArray.
(WebKit::IPCTestingAPI::JSSharedMemory::writeBytes): Added.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added IPC.createSharedMemory.
(WebKit::IPCTestingAPI::JSIPC::staticValues): Added IPC.vmPageSize.
(WebKit::IPCTestingAPI::encodeTypedArray):
(WebKit::IPCTestingAPI::getObjectIdentifierFromProperty): Now uses convertToUint64.
(WebKit::IPCTestingAPI::encodeSharedMemory): Added.
(WebKit::IPCTestingAPI::encodeSemaphore): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added the support for encoding SharedMemory and
Semaphore.
(WebKit::IPCTestingAPI::JSIPC::createSharedMemory): Added.
(WebKit::IPCTestingAPI::JSIPC::vmPageSize): Added.
(IPC::jsValueForDecodedArgumentValue): Added. Creates a newly added SharedMemory JavaScript
object for SharedMemory::IPCHandle. It also exposes dataSize and protection value.
This decoder detects whether the shared memory is writable or not by attempting to map it
as Protection::ReadWrite and falling back to Protection::ReadOnly if the former fails.

Tools:

Added tests for sending and receiving shared memory in the IPC testing API.
Also added a test to send semaphore, which was missing in r277199.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(IPCTestingAPI.CanReceiveSharedMemory): Added.
(IPCTestingAPI.CanCreateSharedMemory): Added.
(IPCTestingAPI.CanSendSemaphpre): Added after r277199.
(IPCTestingAPI.CanSendSharedMemory): Added.

11:54 AM Changeset in webkit [277249] by Darin Adler
  • 6 edits in trunk/Source/WebCore

Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Second half.

Reviewed by Sam Weinig.

  • platform/mediastream/mac/ScreenDisplayCapturerMac.mm:

(WebCore::ScreenDisplayCapturerMac::create): Use parseInteger<uint32_t>
instead of String::toUIntStrict.
(WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID): Ditto.

  • platform/mediastream/mac/WindowDisplayCapturerMac.mm:

(WebCore::WindowDisplayCapturerMac::create): Ditto.
(WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID): Ditto.

  • platform/network/HTTPParsers.cpp:

(WebCore::parseRange): Use parseInteger<long long> instead of
String::toInt64Strict. Also use StringView so we don't allocate substrings on
the heap just to parse integers within an existing string. And removed unneeded
call to stripWhiteSpace in one place since parseInteger already allows leading
and trailing spaces, and in another case where we need to strip because of an
empty string check, used stripLeadingAndTrailingHTTPSpaces instead.

  • platform/network/ParsedContentRange.cpp:

(WebCore::parseContentRange): Use parseInteger<int64_t> instead of
StringView::toInt64Strict.

  • platform/network/ParsedRequestRange.cpp:

(WebCore::ParsedRequestRange::parse): Use parseInteger<uint64_t> instead of
StringView::toUInt64Strict.

11:39 AM ProjectsWorthDoing edited by weinig@apple.com
(diff)
11:39 AM Changeset in webkit [277248] by Darin Adler
  • 1 edit in trunk/Source/WebCore/ChangeLog

fixed ChangeLog

11:35 AM Changeset in webkit [277247] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Follow-up to: Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Reviewed by Sam Weinig.

  • html/FTPDirectoryDocument.cpp:

(WebCore::processFilesizeString): Change format to "1000.0" as we discussed.

11:31 AM Changeset in webkit [277246] by Darin Adler
  • 10 edits in trunk/Source/WebCore

Remove uses of the String::toInt family of functions from the WebCore/platform directory
https://bugs.webkit.org/show_bug.cgi?id=225575

Reviewed by Sam Weinig.

  • platform/DateComponents.cpp: Tweak a comment on the local parseInt function here

that should likely be consolidated with parseInteger at some point.

  • platform/Length.cpp:

(WebCore::parseLength): Use parseInteger<int> instead of charactersToIntStrict.

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::CDMPrivateClearKey::sanitizeSessionId const): Use parseInteger<uint32_t>
instead of String::toUIntStrict.

  • platform/graphics/HEVCUtilities.cpp:

(WebCore::parseHEVCCodecParameters): Use parseInteger<uint8/32_t> instead of
toIntegralType<uint8/32_t>.
(WebCore::parseDoViCodecParameters): Ditto.

  • platform/graphics/VP9Utilities.cpp:

(WebCore::parseVPCodecParameters): Ditto.

  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:

(WebCore::CDMPrivateMediaSourceAVFObjC::parseKeySystem): Use parseInteger<int>
instead of String::toInt. There's no need for the "allow trailing junk" here
because a regular expression is used to check format before we call parseInteger.
Also removed an unnecessary empty string check, since the regular expression
match check will fail on an empty string.

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

(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeSelected): Use
parseIntegerAllowingTrailingJunk<uint64_t> instead ot toUInt64.
(WebCore::SourceBufferPrivateAVFObjC::trackDidChangeEnabled): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::flush): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::canSetMinimumUpcomingPresentationTime const): Ditto.

  • platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:

(WebCore::parseStringArrayFromDictionaryToUInt16Vector): Use
parseInteger<uint16_t> instead of toIntegralType<uint16_t>. We could also
consider using -[NSString intValue] here with some range checking instead
of converting to WTF::String.

  • platform/mediastream/mac/ScreenDisplayCapturerMac.mm:

(WebCore::ScreenDisplayCapturerMac::create): Use parseInteger<uint32_t>
instead of String::toUIntStrict.
(WebCore::ScreenDisplayCapturerMac::screenCaptureDeviceWithPersistentID): Ditto.

  • platform/mediastream/mac/WindowDisplayCapturerMac.mm:

(WebCore::WindowDisplayCapturerMac::create): Ditto.
(WebCore::WindowDisplayCapturerMac::windowCaptureDeviceWithPersistentID): Ditto.

  • platform/network/HTTPParsers.cpp:

(WebCore::parseRange): Use parseInteger<long long> instead of
String::toInt64Strict. Also use StringView so we don't allocate substrings on
the heap just to parse integers within an existing string. And removed unneeded
call to stripWhiteSpace in one place since parseInteger already allows leading
and trailing spaces, and in another case where we need to strip because of an
empty string check, used stripLeadingAndTrailingHTTPSpaces instead.

  • platform/network/ParsedContentRange.cpp:

(WebCore::parseContentRange): Use parseInteger<int64_t> instead of
StringView::toInt64Strict.

  • platform/network/ParsedRequestRange.cpp:

(WebCore::ParsedRequestRange::parse): Use parseInteger<uint64_t> instead of
StringView::toUInt64Strict.

11:22 AM Changeset in webkit [277245] by Darin Adler
  • 35 edits
    1 copy
    1 add in trunk/Source

Remove uses of the String::toInt family of functions from WebCore/html and similar directories
https://bugs.webkit.org/show_bug.cgi?id=225577

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::createEvent): Fix spelling error.

  • html/FTPDirectoryDocument.cpp:

(WebCore::processFilesizeString): Use parseIntegerAllowingTrailingJunk<uint64_t>
instead of String::toUInt64.

  • html/FormController.cpp:

(WebCore::deserializeFormControlState): Use parseIntegerAllowingTrailingJunk<size_t>
instead of String::toUInt.
(WebCore::SavedFormState::deserialize): Ditto.

  • html/HTMLFontElement.cpp:

(WebCore::parseFontSize): Use parseInteger<int> instead of
charactersToIntStrict.

  • html/HTMLFrameElement.cpp:

(WebCore::HTMLFrameElement::parseAttribute): Use parseIntegerAllowingTrailingJunk<int>
instead of String::toInt.

  • html/HTMLFrameSetElement.cpp:

(WebCore::HTMLFrameSetElement::parseAttribute): Ditto.

  • html/HTMLHRElement.cpp:

(WebCore::HTMLHRElement::collectStyleForPresentationAttribute): Ditto.

  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::collectStyleForPresentationAttribute): Ditto.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::parseAttribute): Ditto.

  • html/HTMLLIElement.cpp:

(WebCore::HTMLLIElement::parseValue): Ditto.

  • html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::loop const): Ditto.

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::collectStyleForPresentationAttribute): Ditto.

  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::parseAttribute): Ditto.

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::parseAttribute): Ditto.

  • html/LinkIconCollector.cpp:

(WebCore::LinkIconCollector::iconsOfTypes): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt. Also removed unneeded call to stripWhiteSpace since the
integer parsing function already skips leading and trailing spaces.

  • html/MediaFragmentURIParser.cpp:

(WebCore::MediaFragmentURIParser::parseNPTTime): Use parseInteger<int> instead of
String::toInt. The strings passsed in are fixed size and all digits.

  • html/TypeAhead.cpp:

(WebCore::TypeAhead::handleEvent): Use parseIntegerAllowingTrailingJunk<int>
instead of String::toInt.

  • html/URLDecomposition.cpp:

(WebCore::URLDecomposition::setHost): Use parseInteger<uint16_t> instead of parseUInt16.
(WebCore::parsePort): Ditto.

  • html/shadow/DateTimeNumericFieldElement.cpp:

(WebCore::DateTimeNumericFieldElement::handleKeyboardEvent): Use
parseIntegerAllowingTrailingJunk<int> instead of String::toInt.

  • html/track/VTTScanner.cpp:

(WebCore::VTTScanner::scanDigits): Use parseInteger<int> instead of
charactersToIntStrict.

  • mathml/MathMLSelectElement.cpp:

(WebCore::MathMLSelectElement::getSelectedActionChildAndIndex): Use
parseIntegerAllowingTrailingJunk<int> instead of AtomString::toInt.

Source/WTF:

  • wtf/text/StringBuilder.h: Added conversion operator to make a StringView, built on the exiting

is8Bit, characters8, characters16 and length functions. Removed now-uneeded equal function and

and != operators since the StringView ones work for those same cases with the same syntax.

11:13 AM ProjectsWorthDoing created by weinig@apple.com
10:43 AM WikiStart edited by weinig@apple.com
(diff)
10:42 AM WikiStart edited by weinig@apple.com
(diff)
2:52 AM Changeset in webkit [277244] by mmaxfield@apple.com
  • 12 edits in trunk

[GPU Process] Simplify DisplayList::Iterator part 6: Migrate ItemBufferWritingClient from ItemHandle to a const Variant&
https://bugs.webkit.org/show_bug.cgi?id=224270

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch adds a new Variant that contains all the DisplayList item types, named DisplayListItem. It also migrates
ItemBufferWritingClient from ItemHandle to this new Variant.

There are two benefits to this:

  1. The templated overload of ItemBuffer::append() is way simpler now. Previously, we used to allocate a byte buffer

on the stack and run a placement new of the display list item type into it. Now, we can just run the DisplayListItem
constructor instead. Using the Variant does require more stack space, but we only will ever have one of these objects
on the stack at a time.

  1. The big table inside RemoteImageBufferProxy::encodeItemOutOfLine() is gone, and is replaced with just 7 lines. This is

one fewer place where we'll have to make sure the DisplayListItem types match a function in an entirely different
framework.

No new tests, because there is no behavior change.

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

(WebCore::DisplayList::copyInto):
(WebCore::DisplayList::safeCopyHelper):
(WebCore::DisplayList::safeCopy):
(WebCore::DisplayList::ItemBuffer::append):

  • platform/graphics/displaylists/DisplayListItemBuffer.h:

(WebCore::DisplayList::ItemBufferWritingClient::requiredSizeForItem const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemOutOfLine const):
(WebCore::DisplayList::ItemBufferWritingClient::encodeItemInline const):
(WebCore::DisplayList::ItemBuffer::append):

  • platform/graphics/displaylists/DisplayListItemType.cpp:

(WebCore::DisplayList::paddedSizeOfTypeAndItemInBytes):
(WebCore::DisplayList::displayListItemType):

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

(WebCore::DisplayList::InMemoryDisplayList::WritingClient::requiredSizeForItem const):
(WebCore::DisplayList::InMemoryDisplayList::WritingClient::encodeItemInline const):

  • platform/graphics/displaylists/InMemoryDisplayList.h:

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::encodeItemOutOfLineHelper):

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
12:17 AM Changeset in webkit [277243] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Unify last resort fallback font between all Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=225569

Reviewed by Darin Adler.

Just remove an unnecessary #if.

Covered by existing tests.

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontCache::lastResortFallbackFont):

May 8, 2021:

9:53 PM Changeset in webkit [277242] by Peng Liu
  • 14 edits in trunk/Source

[GPUP] A small video element enters fullscreen with strange animations
https://bugs.webkit.org/show_bug.cgi?id=225548

Reviewed by Eric Carlson.

Use FloatRect instead of IntRect to exchange video element location/size
information between WebContent processes and the UI process to avoid information
mismatch due to floating-point rounding.

Source/WebCore:

Manually tested.

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreen):
(VideoFullscreenInterfaceAVKit::preparedToReturnToInline):
(VideoFullscreenInterfaceAVKit::setInlineRect):

Source/WebKit:

Deal with the video element resizing differently for two cases:
1) Video is playing in the inline mode.
2) Video is entering fullscreen/picture-in-picture.
For the latter case, -[WKVideoLayerRemote layoutSublayers] will scale the layer
with the same factor in both X and Y direction.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::setVideoInlineSizeIfPossible):
(WebKit::RemoteMediaPlayerProxy::setVideoInlineSizeFenced):

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::VideoFullscreenManagerProxy::exitFullscreen):
(WebKit::VideoFullscreenManagerProxy::setInlineRect):
(WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::setVideoInlineSizeFenced):
(WebKit::MediaPlayerPrivateRemote::inVideoFullscreenOrPictureInPicture const):

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

(-[WKVideoLayerRemote layoutSublayers]):
(-[WKVideoLayerRemote resolveBounds]):

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::inlineVideoFrame):
(WebKit::VideoFullscreenManager::requestUpdateInlineRect):

9:31 PM Changeset in webkit [277241] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[WinCairo] Remove linker warning on ANGLE
https://bugs.webkit.org/show_bug.cgi?id=225501

Reviewed by Darin Adler.

libANGLE is statically linked to libGLESv2.dll so that declspec(dllimport) is not required here.

  • include/platform/PlatformMethods.h:
9:15 PM Changeset in webkit [277240] by Darin Adler
  • 4 edits in trunk/Source/JavaScriptCore

Remove calls to the String::toInt family of functions from JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=225571

Reviewed by Sam Weinig.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::parseLocation): Use parseIntegerAllowingTrailingJunk<JSC::SourceID>
instead of String::toIntPtr. There was no reason to parse the source ID as a
signed integer, and it's more elegant to parse the type we intend to store and
process, not a different but similar type.
(Inspector::InspectorDebuggerAgent::searchInContent): Ditto.
(Inspector::InspectorDebuggerAgent::getScriptSource): Ditto.

  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets): Use
parseInteger<uintptr_t> instead of String::toIntPtrStrict.
(Inspector::InspectorRuntimeAgent::getBasicBlocks): Use
parseIntegerAllowingTrailingJunk<uintptr_t> instead of String::toIntPtr.

  • runtime/FuzzerPredictions.cpp:

(JSC::FuzzerPredictions::FuzzerPredictions): Use parseInteger<uint64_t>
instead of String::toUInt64Strict.

9:09 PM Changeset in webkit [277239] by Darin Adler
  • 7 edits in trunk/Source/WebKit

Remove uses of the WTF::String::toInt family of functions from WebKit framework sources
https://bugs.webkit.org/show_bug.cgi?id=225570

Reviewed by Sam Weinig.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::readSizeFile): Use parseInteger<uint64_t>
instead of charactersToUIntStrict. Also simplified the code a bit by
reducing the mixing of integer types in the function.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::deleteOldVersions): Use parseInteger<unsigned>
instead of String::toUIntStrict. Also use StringView::substring so we don't
have to allocate a copy of a substring just to parse it.

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

(WebKit::XPCServiceInitializerDelegate::getClientSDKVersion): Use
parseInteger<uint32_t> instead of charactersToUIntStrict. Also let the
StringView constructor take care of converting the const char*
so we don't have to write explicit calls to std::strlen here.
(WebKit::XPCServiceInitializerDelegate::getProcessIdentifier): Use
parseInteger<uint64_t> instead of String::toUInt64Strict. Also pass the
const char* as a StringView rather than converting it to a String so we
don't have to allocate a copy of the string just to parse it.

  • Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:

(WebKit::PluginVersion::parse): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toUInt. Also use StringView::split instead of String::split
so we don't have to allocate memory for all the substrings and a range-based
for loop for simplicity.

  • UIProcess/API/Cocoa/WKWebView.mm:

(coreTextManipulationItemIdentifierFromString): Use -[NSString longLongValue]
instead of String::toUInt64. There's no need to parse this unsigned because
the values will fit in 63 bits just fine, and it's nice to use NSString
directly rather than copying the string just to parse the integer in it.
(coreTextManipulationTokenIdentifierFromString): Ditto.

  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:

(WebKit::parsePostBuffer): Use parseIntegerAllowingTrailingJunk<unsigned>
instead of String::toInt. The length can't be negative; it was not helpful
to parse negative numbers before and this is a small bug fix, but in a code
path that is probably not used for much of anything any more.

7:18 PM Changeset in webkit [277238] by Ross Kirsling
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Fix invalid exception checks after recent ErrorInstance changes
https://bugs.webkit.org/show_bug.cgi?id=225565

Reviewed by Alexey Shvayka.

r277221 and r277224 each introduced issues under validateExceptionChecks=1; this patch fixes them.

Of particular note:
The earlier patch sought to consolidate Error#cause logic under ErrorInstance::finishCreation.
This part must be undone as it is crucial that non-user-thrown errors be able to bypass that logic
(otherwise throwException itself would need to be exception-checked).

  • runtime/AggregateError.cpp:

(JSC::createAggregateError):

  • runtime/ArrayPrototype.cpp:

(JSC::getProperty):

  • runtime/Error.cpp:

(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createURIError):
(JSC::createGetterTypeError):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::create):
(JSC::ErrorInstance::finishCreation):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::create):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::getIfPropertyExists):

  • runtime/NullSetterFunction.cpp:

(JSC::NullSetterFunctionInternal::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/JSWebAssemblyCompileError.cpp:

(JSC::createJSWebAssemblyCompileError):

  • wasm/js/JSWebAssemblyLinkError.cpp:

(JSC::createJSWebAssemblyLinkError):

  • wasm/js/JSWebAssemblyRuntimeError.cpp:

(JSC::createJSWebAssemblyRuntimeError):

6:29 PM Changeset in webkit [277237] by weinig@apple.com
  • 39 edits
    2 adds in trunk/Source

Factor out pixel buffer from DOM specific ImageData class
https://bugs.webkit.org/show_bug.cgi?id=225554

Reviewed by Darin Adler.

Source/WebCore:

Prepare to fix layering violating use of DOM level ImageData being
used by platform code by factoring out the pixel storage into a new
PixelBuffer class. Since it will be a little more general that
ImageData is now (though ImageData will need to gain these soon)
PixelBuffer also captures the pixel format and color space the pixel
data represents.

While here, update ImageData::data() to return a reference rather than
a pointer to indicate it is never null and update all the callers.

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::dumpImageBitmap):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readTerminal):

  • html/ImageBitmap.cpp:

(WebCore::ImageBitmap::createPromise):

  • html/ImageData.cpp:

(WebCore::ImageData::create):
(WebCore::ImageData::ImageData):
(WebCore::ImageData::deepClone const):
(WebCore::operator<<):

  • html/ImageData.h:

(WebCore::ImageData::size const):
(WebCore::ImageData::width const):
(WebCore::ImageData::height const):
(WebCore::ImageData::data const):
(WebCore::ImageData::colorSpace const):
(WebCore::ImageData::format const):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::createEmptyImageData):
(WebCore::CanvasRenderingContext2DBase::putImageData):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::texImageSourceHelper):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildArrayForImageData):

  • platform/graphics/GraphicsContextGL.cpp:

(WebCore::GraphicsContextGL::extractImageData):

  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::convertToLuminanceMask):
(WebCore::ImageBufferBackend::getImageData const):
(WebCore::ImageBufferBackend::putImageData):

  • platform/graphics/PixelBuffer.cpp: Added.

(WebCore::PixelBuffer::PixelBuffer):
(WebCore::PixelBuffer::deepClone const):

  • platform/graphics/PixelBuffer.h: Added.

(WebCore::PixelBuffer::colorSpace const):
(WebCore::PixelBuffer::format const):
(WebCore::PixelBuffer::size const):
(WebCore::PixelBuffer::data const):

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurShadowBuffer):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsForPaintResults):

  • platform/graphics/cg/GraphicsContextGLCG.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::toCFData const):

  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::cfData):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::platformApplySoftware):

  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::platformApplySoftware):

  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::platformApplySoftware):

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::platformApplySoftware):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::forceValidPreMultipliedPixels):
(WebCore::FilterEffect::copyConvertedImageBufferToDestination):
(WebCore::FilterEffect::copyConvertedImageDataToDestination):
(WebCore::FilterEffect::copyUnmultipliedResult):
(WebCore::FilterEffect::copyPremultipliedResult):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

Source/WebKit:

Update for ImageData::data() returning a reference.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::populateGetImageDataSharedMemory):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<WebCore::ImageData>>::encode):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
6:26 PM Changeset in webkit [277236] by Darin Adler
  • 2 edits in trunk/Source/WebKitLegacy/mac

[Cocoa] Remove the one use of String::toInt from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=225568

Reviewed by Sam Weinig.

  • DOM/DOMHTMLInputElement.mm:

(-[DOMHTMLInputElement setSize:]): Use -[NSString intValue] instead of WTF::String::toInt.
Both functions ignore leading spaces, and both ignore trailing junk, so there is no
significant change in behavior.

6:17 PM Changeset in webkit [277235] by commit-queue@webkit.org
  • 16 edits
    2 deletes in trunk

REGRESSION (r276797?): [ macOS/iOS ] TestWebKitAPI.URLSchemeHandler.Exceptions is flakey crashing
https://bugs.webkit.org/show_bug.cgi?id=225373

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-08
Reviewed by Sam Weinig.

Source/WebKit:

This patch fixes three problems related to the lifetime of WKURLSchemeTasks:

  1. There was an unneeded abstraction API::URLSchemeTask which wrapped a WebURLSchemeTask, which could have a different lifetime than its owner. This is especially bad since at least one was used on multiple threads.
  2. We weren't explicitly keeping a strong reference to the task given to the API client in startURLSchemeTask: and stopURLSchemeTask: which could cause all our internal maps to release their references to the task after the first call to didFailWithError and there was a test that did multiple calls to didFailWithError and verifies it throws an NSException the second time.
  3. We were keeping a HashSet of raw WebURLSchemeHandler pointers, then using each of them without keeping it alive.

This is covered by at least the URLSchemeHandler.Exceptions API test which would crash in many exciting places before this but doesn't crash after this.

  • Sources.txt:
  • UIProcess/API/APIURLSchemeTask.cpp: Removed.
  • UIProcess/API/APIURLSchemeTask.h: Removed.
  • UIProcess/API/C/WKTestingSupport.cpp:

(WKGetAPIURLSchemeTaskInstanceCount): Deleted.

  • UIProcess/API/C/WKTestingSupport.h:
  • UIProcess/API/Cocoa/WKURLSchemeTask.mm:

(-[WKURLSchemeTaskImpl init]):
(-[WKURLSchemeTaskImpl dealloc]):
(-[WKURLSchemeTaskImpl request]):
(-[WKURLSchemeTaskImpl _requestOnlyIfCached]):
(-[WKURLSchemeTaskImpl _willPerformRedirection:newRequest:completionHandler:]):
(-[WKURLSchemeTaskImpl didReceiveResponse:]):
(-[WKURLSchemeTaskImpl didReceiveData:]):
(-[WKURLSchemeTaskImpl didFinish]):
(-[WKURLSchemeTaskImpl didFailWithError:]):
(-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:]):
(-[WKURLSchemeTaskImpl _frame]):

  • UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h:
  • UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
  • UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:

(WebKit::WebURLSchemeHandlerCocoa::platformStartTask):
(WebKit::WebURLSchemeHandlerCocoa::platformStopTask):
(WebKit::WebURLSchemeHandlerCocoa::platformTaskCompleted): Deleted.

  • UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.h:
  • UIProcess/Inspector/win/InspectorResourceURLSchemeHandler.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::stopAllURLSchemeTasks):

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::taskCompleted):

  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-leaks.mm:

(runUntilTasksInFlight):

5:59 PM Changeset in webkit [277234] by Darin Adler
  • 4 edits in trunk/Source/WTF

Rename toIntegralType to parseInteger and prepare to use it to replace all our integer-parsing functions
https://bugs.webkit.org/show_bug.cgi?id=225560

Reviewed by Sam Weinig.

I have a much larger patch that replaces all the many toInt functions with these parseInteger
function templates. The parseInteger ones take StringView, which means we can pass almost any
type of string or character/length pair including a substring without allocating a new string,
return Optional rather than using an out argument to report failure, take the integer type as
a template parameter so can be used for precisely the desired type at each call site, and make
the "allow trailing junk" feature explicit, rather than implicitly including it in the shortest
named functions, which I hope will discourage people from using that junk-ignoring mode
when it's not desirable.

Also includes adoption of parseInteger within WTF itself, outside the string classes.

My plan is to land the rest of adoption of this in chunks so we can review carefully and spot
mistakes as we go. Then return to files like WTFString.h and remove the many old functions
this replaces, including the String::toInt and charactersToInt families of functions.

  • wtf/URL.cpp:

(WTF::URL::port const): Use parseInteger<uint16_t>.
(WTF::URL::setHostAndPort): Ditto.

  • wtf/text/StringToIntegerConversion.h: Refactored the existing code to tighten things up

a bit, and got rid of overloads that take pointer and length and the the generic "any string
type" feature, since StringView already works well for that. Renamed toIntegralType to
parseInteger, leaving the old name behind to ease the transition while adopting parseInteger.

  • wtf/text/WTFString.cpp:

(WTF::toDoubleType): Use the TrailingJunkPolicy enumeration from the
StringToIntegerConversion.h header.
(WTF::charactersToDouble): Ditto.
(WTF::charactersToFloat): Ditto.

5:51 PM Changeset in webkit [277233] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Unify font collection handling between all Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=225566

Reviewed by Darin Adler.

Just remove an unnecessary #if.

Covered by existing tests.

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::createFontCustomPlatformData):

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

Add bounds checks around calls to GlyphBuffer::stringOffsetAt()
https://bugs.webkit.org/show_bug.cgi?id=225335
<rdar://problem/75663608>

Reviewed by Simon Fraser and Geoff Garen.

We're getting crash reports that look like they're from string offsets being out-of-bounds.
These string offsets round-trip through Core Text, which is allowed to modify them, which
can end up making them out-of-bounds.

No new tests because I don't have a reproducible test case; just crash reports.

  • platform/graphics/FontCascade.cpp:

(WebCore::computeUnderlineType):

  • platform/graphics/GlyphBuffer.h:

(WebCore::GlyphBuffer::uncheckedStringOffsetAt const):
(WebCore::GlyphBuffer::checkedStringOffsetAt const):
(WebCore::GlyphBuffer::stringOffsetAt const): Deleted.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::applyFontTransforms):
(WebCore::WidthIterator::applyExtraSpacingAfterShaping):

3:35 PM Changeset in webkit [277231] by Chris Dumez
  • 9 edits in trunk

Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225550

Reviewed by Darin Adler.

Source/JavaScriptCore:

Build fix.

  • Configurations/JavaScriptCore.xcconfig:

Source/WTF:

Port Filesystem::pathByAppendingComponent() & Filesystem:: pathByAppendingComponents() to std::filesystem
and get rid of platform-specific implementations.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::pathByAppendingComponent):
(WTF::FileSystemImpl::pathByAppendingComponents):

  • wtf/glib/FileSystemGlib.cpp:
  • wtf/posix/FileSystemPOSIX.cpp:
  • wtf/win/FileSystemWin.cpp:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

10:56 AM Changeset in webkit [277230] by commit-queue@webkit.org
  • 7 edits in trunk

Fix a typo
https://bugs.webkit.org/show_bug.cgi?id=225502

Patch by Ricky Mondello <Ricky Mondello> on 2021-05-08
Reviewed by Chris Dumez.

Source/WebCore:

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::preconnectIfNeeded):

LayoutTests:

Update test expectations.

  • http/tests/in-app-browser-privacy/context-string-preconnect-expected.txt:
  • http/tests/preconnect/link-header-rel-preconnect-http-expected.txt:
  • http/tests/preconnect/link-rel-preconnect-http-expected.txt:
  • http/tests/preconnect/link-rel-preconnect-https-expected.txt:
9:54 AM Changeset in webkit [277229] by Diego Pino Garcia
  • 3 edits in trunk/Source/WTF

[GLIB] REGRESSION(r277158) imported/w3c/web-platform-tests/xhr/FormData-append.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=225551

Reviewed by Chris Dumez.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::fileIsDirectory): Remove unnecessary path.isEmpty check.

  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::fileSystemRepresentation): Return empty CString if path is empty.

8:03 AM Changeset in webkit [277228] by Megan Gardner
  • 2 edits in trunk/Source/WebCore

Increase stored AppHighlight character limit to 500
https://bugs.webkit.org/show_bug.cgi?id=225558

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp:
7:12 AM Changeset in webkit [277227] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.32.1

WPE WebKit 2.32.1

7:11 AM Changeset in webkit [277226] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.32.1 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.32.1
3:43 AM Changeset in webkit [277225] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[SOUP] Use the new libsoup network metrics API
https://bugs.webkit.org/show_bug.cgi?id=225510

Reviewed by Michael Catanzaro.

Use the new API available in libsoup3. It provides more accurate information for time metrics and also size
metrics that were missing.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::didGetHeaders):
(WebKit::NetworkDataTaskSoup::wroteHeadersCallback):
(WebKit::NetworkDataTaskSoup::wroteBodyCallback):
(WebKit::NetworkDataTaskSoup::gotBodyCallback):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):

  • NetworkProcess/soup/NetworkDataTaskSoup.h:
12:32 AM Changeset in webkit [277224] by Ross Kirsling
  • 5 edits in trunk/Source/JavaScriptCore

Introduce JSObject::getIfPropertyExists helper
https://bugs.webkit.org/show_bug.cgi?id=225553

Reviewed by Alexey Shvayka.

Suggested by Alexey during review of r277221.
ArrayPrototype also has a "Has-guarded Get", so it's helpful for JSObject to house this functionality.

  • runtime/ArrayPrototype.cpp:

(JSC::getProperty):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::finishCreation):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::getIfPropertyExists):

May 7, 2021:

9:32 PM Changeset in webkit [277223] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Tentative gardening of crashes after last sdk update

Unreviewed test gardening.

Likely more crashes will appear from tests not run due to these
gardened.

  • platform/wpe/TestExpectations:
6:48 PM Changeset in webkit [277222] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[css-flexbox] Flex item construction may affect sibling flex item height computation
https://bugs.webkit.org/show_bug.cgi?id=225489

Reviewed by Sergio Villar Senin.

Source/WebCore:

Flex item construction triggers layout both on the flex item and on its descendants (see constructFlexItem).
During this layout a percent height descendant may indirectly set an incorrect value on the flex container's
m_hasDefiniteHeight (this is due to the odd way we choose to resolve percent height values on the ancestor chain,
see setOverridingContainingBlockContentLogicalHeight(WTF::nullopt)).
Now this incorrect m_hasDefiniteHeight value (Indefinite) causes the next sibling's (also) percent height
resolve fail as it tells the flex item that the flex container can't help with resolving the percent height value.
As the result we end up with an incorrect, 0px height value for this sibling.
e.g.
<div style="height: 100px; display: flex; flex-direction: column;">

<div id=flexItemA style="height: 50px;"><div style="height: 100%;"></div></div>
<div id=flexItemB style="height: 50%;"></div>

</div>
By the time we get to the construction of flexItemB, the RenderFlexibleBox's (flex container) m_hasDefiniteHeight
is already (and incorrectly) set to Indefinite as the result of us trying to resolve flexItemA's descendant height percentage.
This Indefinite value makes the flexItemB's height resolution fail as we believe that the flex container has indefinite height
e.g "height: auto", while it is clearly resolvable (50% of 100px).
Now if we flip the order and flexItemB comes first, the test case passes fine.
It is very unfortunate that some descendant height resolving process can trigger a state change on the ancestor RenderFlexibleBox, but
fixing it would certainly require some substantial architectural change (e.g. pushing down the constraints to the geometry functions instead of
walking the containing block chain).
In this patch, we just scope m_hasDefiniteHeight so that the RenderFlexibleBox's state is not effected by the flex item construction.

Test: fast/flexbox/flex-column-with-percent-height-descendants.html

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutFlexItems):

LayoutTests:

  • fast/flexbox/flex-column-with-percent-height-descendants-expected.html: Added.
  • fast/flexbox/flex-column-with-percent-height-descendants.html: Added.
6:26 PM Changeset in webkit [277221] by Ross Kirsling
  • 6 edits in trunk

[JSC] Error#cause must recognize explicit undefined
https://bugs.webkit.org/show_bug.cgi?id=225535

Reviewed by Alexey Shvayka.

JSTests:

  • test262/config.yaml:

Re-enable tests for this feature; they were all failing due to this quirk.

Source/JavaScriptCore:

Error#cause is specified such that new Error(message, {}) and new Error(message, { cause: undefined })
are not the same -- namely, the latter should create a property descriptor with an undefined value.

This would seem absurd, but the reason is because the cause field is meant to store a thrown object,
and throw undefined; is valid code.

In aligning our implementation with the spec, this patch also consolidates the relevant logic in one place
(ErrorInstance::finishCreation) to minimize confusion.

  • runtime/AggregateError.cpp:

(JSC::createAggregateError):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::create):
(JSC::ErrorInstance::finishCreation):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::create):

6:08 PM Changeset in webkit [277220] by zhifei_fang@apple.com
  • 2 edits in trunk/Websites/perf.webkit.org

Add support for syncing repo with commit revision label.
https://bugs.webkit.org/show_bug.cgi?id=221982

Reviewed by Ryosuke Niwa.

Add new syncing option reportRevisionIdentifier, which will let the script try to sync the commit revision identifier from the commit message.
Add new syncing option reportSVNRevision, which will let the script try to report SVN revision from a git-svn repo.

  • tools/sync-commits.py:

(main):
(load_repository):
(GitRepository.init):
(GitRepository.fetch_next_commit):
(GitRepository._git_hash_to_svn_revision):
(GitRepository._svn_revision_to_git_hash):
(GitRepository._revision_from_tokens):
(GitRepository._fetch_all_hashes):

6:05 PM Changeset in webkit [277219] by Chris Dumez
  • 7 edits in trunk

Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225524

Reviewed by Darin Adler.

Source/WTF:

Port FileSystem::pathGetFileName() & Filesystem::directoryName() to std::filesystem so
that we can get rid of platform-specific implementions.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::pathGetFileName):
(WTF::FileSystemImpl::directoryName):

  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.

  • wtf/posix/FileSystemPOSIX.cpp:

(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.

  • wtf/win/FileSystemWin.cpp:

(WTF::FileSystemImpl::pathGetFileName): Deleted.
(WTF::FileSystemImpl::directoryName): Deleted.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

6:04 PM Changeset in webkit [277218] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] [GPU] Silence warning about com.apple.audio.AudioComponentRegistrar in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=225547
<rdar://problem/77334436>

Reviewed by Per Arne Vollan.

We block access to various media things (like 'com.apple.audio.AudioComponentRegistrar') when the GPU Process is being used.
Some AudioToolbox code continues to try to connect even though we are not activating relevant parts of the audio subsystem.
AudioToolbox doesn't care about this blocked connection when running in this mode, but they have not had a chance to modify
the framework to avoid attempting to connect.

To avoid spurious logging and telemetry, silence the sandbox violation when the GPU Process is active.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
5:38 PM Changeset in webkit [277217] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] [GPU] Process is missing access to IOMobileFramebufferUserClient on Apple Silicon
https://bugs.webkit.org/show_bug.cgi?id=225545
<rdar://problem/77591664>

Reviewed by Jer Noble.

Apple Silicon GPU Process needs access to IOMobileFramebufferUserClient for certain types of media playback. We allow this
on iOS, and in the WebContent process, but missed it in the GPU Process.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
5:31 PM Changeset in webkit [277216] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Release Wk2 Arm64] imported/w3c/web-platform-tests/navigation-timing/test_performance_attributes.sub.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=224784

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:30 PM Changeset in webkit [277215] by James Savage
  • 13 edits in trunk/Source/WebKit

Validate Swift async imports.
https://bugs.webkit.org/show_bug.cgi?id=225134
<rdar://73620237>

Reviewed by Sam Weinig.

Audit our imported Objective-C API for correct translations to Swift's
upcoming concurrency feature. This mostly entails removing redundant
words, tagging methods which Swift's heuristics missed, and in some
cases disabling methods that do not follow Swift's async conventions.

  • Shared/API/Cocoa/WKFoundation.h: Because the Foundation macros used

for Swift async won't exist in all SDKs, provide our own wrapper around
them to avoid undefined macro errors.

  • SwiftOverlay/Configurations/WebKitSwiftOverlay.xcconfig: Passing these

flags to older tools will result in errors, so only so conditionally.

  • SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Added a

new source file reference for generated sources. These will be copied
from WebKitAdditions if available, or replaced with empty sources for
compatibility.

  • UIProcess/API/Cocoa/NSAttributedString.h: Adopt new attributes to

define an explicit Swift async name.

  • UIProcess/API/Cocoa/WKContentRuleListStore.h: Ditto.
  • UIProcess/API/Cocoa/WKDownloadDelegate.h: In this case I also apply

NS_SWIFT_NAME as the "decisionHandler" argument would otherwise not
import as async. Despite using a different macro, I'm just using
NS_SWIFT_ASYNC_NAME to check for these changes as all these annotations
should exist or not-exist at once.

  • UIProcess/API/Cocoa/WKHTTPCookieStore.h: Ditto.
  • UIProcess/API/Cocoa/WKNavigationDelegate.h: Ditto.
  • UIProcess/API/Cocoa/WKScriptMessageHandlerWithReply.h: Ditto.
  • UIProcess/API/Cocoa/WKUIDelegate.h: Ditto.
  • UIProcess/API/Cocoa/WKWebView.h: _Nullable_result is a new annotation

which specifies that the result and error are not mutually exclusive,
but rather than we can expect a nil result in cases where there are not
an error. For the same reason as above, we only want to refer to this
keyword conditionally.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.h: Ditto.
5:22 PM Changeset in webkit [277214] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur Release Wk2 Arm64] inspector/css/node-styles-refreshed.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=224788

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:01 PM Changeset in webkit [277213] by Patrick Angle
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Breakpoint action add/remove buttons are not vertically aligned with action dropdown
https://bugs.webkit.org/show_bug.cgi?id=225543

Reviewed by Devin Rousso.

Change the breakpoint action add/remove button's margin-top to margin-block-start, and adjust the value to
properly vertically center the buttons with the action type menu.

  • UserInterface/Views/BreakpointActionView.css:

(:matches(.breakpoint-action-append-button, .breakpoint-action-remove-button)):

4:59 PM Changeset in webkit [277212] by Patrick Angle
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Default source for new test cases is minified
https://bugs.webkit.org/show_bug.cgi?id=225546

Reviewed by Devin Rousso.

Move the placeholder test code to WI.DefaultAudits as part of the non-minified sources so that new audit test
cases do not have their default placeholder script minified. This also allows us to remove
WI.AuditTestCase.stringifyFunction as it is no longer needed.

  • UserInterface/Models/AuditTestCase.js:

(WI.AuditTestCase.stringifyFunction): Deleted.

  • UserInterface/NonMinified/DefaultAudits.js:

(WI.DefaultAudits.newAuditPlaceholder):

  • UserInterface/Views/CreateAuditPopover.js:

(WI.CreateAuditPopover.prototype.dismiss):
(WI.CreateAuditPopover.prototype.dismiss.const.placeholderTestFunction): Deleted.

4:49 PM Changeset in webkit [277211] by Ruben Turcios
  • 1 copy in tags/Safari-611.3.2

Tag Safari-611.3.2.

4:46 PM Changeset in webkit [277210] by timothy_horton@apple.com
  • 13 edits
    2 copies
    3 adds in trunk/Source

Add an experimental alternative display-list-based RemoteLayerBackingStore implementation
https://bugs.webkit.org/show_bug.cgi?id=225508

Reviewed by Sam Weinig.

Source/WebKit:

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp: Added.

(WebKit::CGDisplayListImageBufferBackend::calculateMemoryCost):
(WebKit::CGDisplayListImageBufferBackend::create):
(WebKit::CGDisplayListImageBufferBackend::CGDisplayListImageBufferBackend):
(WebKit::CGDisplayListImageBufferBackend::createImageBufferBackendHandle const):
(WebKit::CGDisplayListImageBufferBackend::context const):
(WebKit::CGDisplayListImageBufferBackend::backendSize const):
(WebKit::CGDisplayListImageBufferBackend::bytesPerRow const):
(WebKit::CGDisplayListImageBufferBackend::copyNativeImage const):
(WebKit::CGDisplayListImageBufferBackend::toBGRAData const):
(WebKit::CGDisplayListImageBufferBackend::getImageData const):
(WebKit::CGDisplayListImageBufferBackend::putImageData):

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h: Added.

Add an ImageBuffer backend backed by a CG display list.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:

Add a new RemoteLayerBackingStore type that uses CGDisplayListImageBufferBackend.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::encode const):
(WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer):
(WebKit::RemoteLayerBackingStore::supportsPartialRepaint):
Disable partial repaint if using display-list-based backing store,
because we don't currently have any way to mutate display lists.

(WebKit::RemoteLayerBackingStore::display):
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
When applying a display-list-based backing store to a layer, we just
pass the encodede data directly to the layer, and tell it to use the
display list to render.

  • SourcesCocoa.txt:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:

(WebKit::RemoteLayerTreeNode::createWithPlainLayer):
(-[WKPlainRemoteLayer description]): Deleted.
Move WKPlainRemoteLayer to RemoteLayerTreeLayers, and rename it to WKCompositingLayer.
It will now back all WKCompositingViews.

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

(-[WKCompositingLayer description]):
(-[WKCompositingLayer _setWKContentsDisplayList:]):
(-[WKCompositingLayer _wkContentsDisplayList]):
(-[WKCompositingLayer drawInContext:]):
Make WKCompositingLayer replay the given display list in drawRect
(just because we're currently missing API to actually directly pass
the encoded display list data to CA).

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(+[WKCompositingView layerClass]):
Use WKCompositingLayer as the layer class for all WKCompositingViews.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/ImageBufferBackendHandle.h:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::updateBackingStore):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:

(WebKit::RemoteLayerTreeContext::useCGDisplayListsForDOMRendering const):
(WebKit::RemoteLayerTreeContext::setUseCGDisplayListsForDOMRendering):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
Plumb the internal feature flag from WebPreferences to RemoteLayerTreeContext
to PlatformCALayerRemote to RemoteLayerBackingStore; if the preference is
on and the feature is available, we'll always prefer display-list backed
surfaces over either of the bitmap types.

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
4:03 PM Changeset in webkit [277209] by Brent Fulgham
  • 4 edits in trunk

[iOS] Make AccessibilityReduceMotion test case work on iOS
https://bugs.webkit.org/show_bug.cgi?id=225244
<rdar://problem/77589455>

Reviewed by Per Arne Vollan.

New tests for Accessibility-related features were added in Bug 215664, but only for macOS.
We support these same features on iOS, and should have test coverage.

Source/WebKit:

Tested by AccessibilityReduceMotion.mm.

  • Platform/spi/Cocoa/AccessibilitySupportSPI.h:

Tools:

  • TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm:

(notificationCallback):
(TEST):

3:55 PM Changeset in webkit [277208] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] [GPU] Silence warning about com.apple.fontservicesd
https://bugs.webkit.org/show_bug.cgi?id=225520
<rdar://problem/77536616>

Reviewed by Per Arne Vollan.

We silenced the warnings about blocked connections to 'com.apple.fontservicesd' in the WebContent process in Bug 220320. We should
have done the same to the GPU Process to avoid spurious reports and telemetry.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
3:33 PM Changeset in webkit [277207] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 ARM64 ] http/tests/workers/service/self_registration.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225527

Unreviewed test gardening.

Updating expectations to Pass Timeout for BigSur Release wk 2 on Apple Silicon.

  • platform/mac-wk2/TestExpectations:
3:23 PM Changeset in webkit [277206] by commit-queue@webkit.org
  • 5 edits in trunk

Unreviewed, reverting r277201.
https://bugs.webkit.org/show_bug.cgi?id=225542

Includes project file change.

Reverted changeset:

"[iOS] Make AccessibilityReduceMotion test case work on iOS"
https://bugs.webkit.org/show_bug.cgi?id=225244
https://trac.webkit.org/changeset/277201

3:05 PM Changeset in webkit [277205] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION (r277071): imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed test gardening.

  • platform/mac/TestExpectations: Resolve an issue with conflicting test expectations entries.
3:02 PM Changeset in webkit [277204] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Release wk2 ARM64 ] http/tests/misc/repeat-open-cancel.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225526

Unreviewed test gardening.

Updating test expectations to Pass Timeout for Bigsur wk2 Release arm64.

  • platform/mac-wk2/TestExpectations:
3:00 PM Changeset in webkit [277203] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

[iOS] fix inconsistency around the meaning of rate and defaultPlaybackRate between WebKit and AVKit
https://bugs.webkit.org/show_bug.cgi?id=225532
<rdar://problem/77629276>

Reviewed by Eric Carlson.

In AVKit, the defaultPlaybackRate is used when playback starts, such as resuming after
pausing. In WebKit, however, defaultPlaybackRate is only used when first loading and after
ending scanning, with the playbackRate being used in all other cases, including when
resuming after pausing. As such, WebKit should return the playbackRate instead of the
defaultPlaybackRate in these cases when communicating with AVKit.

  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController setRate:]):
Also setDefaultPlaybackRate: if not paused (i.e. rate != 0) since WebKit's definition of
playbackRate does not change when paused.

  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::rateChanged):
Make sure to setDefaultPlaybackRate: before setRate: as the latter can affect the former.

2:54 PM Changeset in webkit [277202] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

Do not try to remove and already removed node while deleting selection
https://bugs.webkit.org/show_bug.cgi?id=224893

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/inserting/insert-text-force-repaint-on-load-crash.html

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::removeNode): Return early if the given node doesn't have a parent anymore.

Tools:

Add new API to allow tests to trigger a force repaint on load finished.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::frameDidChangeLocation):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

(WTR::TestRunner::displayOnLoadFinish):
(WTR::TestRunner::shouldDisplayOnLoadFinish):

LayoutTests:

  • editing/inserting/insert-text-force-repaint-on-load-crash-expected.txt: Added.
  • editing/inserting/insert-text-force-repaint-on-load-crash.html: Added.
2:42 PM Changeset in webkit [277201] by Brent Fulgham
  • 5 edits in trunk

[iOS] Make AccessibilityReduceMotion test case work on iOS
https://bugs.webkit.org/show_bug.cgi?id=225244
<rdar://problem/77589455>

New tests for Accessibility-related features were added in Bug 215664, but only for macOS.
We support these same features on iOS, and should have test coverage.

Reviewed by Per Arne Vollan.

Source/WebKit:

Tested by AccessibilityReduceMotion.mm.

  • Platform/spi/Cocoa/AccessibilitySupportSPI.h:

Tools:

  • TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm:

(notificationCallback):
(TEST):

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

REGRESSION: [ BigSurE Release wk 2] webrtc/video-replace-muted-track.html is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225525

Unreviewed test gardening.

Updating test expectations to Pass Failure

  • platform/mac/TestExpectations:
2:32 PM Changeset in webkit [277199] by rniwa@webkit.org
  • 6 edits in trunk

IPC testing API should have the ability to create and receive IPC::Semaphore
https://bugs.webkit.org/show_bug.cgi?id=225537

Reviewed by Wenson Hsieh.

Source/WebKit:

This patch adds the capability to create IPC::Semaphore for IPC testing purposes.
It adds IPC.createSemaphore which creates a JavaScript object representing a semaphore
with signal and waitFor methods like IPC::Semaphore but waitFor taking milliseconds
to be consistent with other JavaScript APIs.

This patch also adds the support for encoding RemoteRenderingBackendCreationParameters
to facilitate creating a remote rendering backend during IPC testing.

Tests: TestWebKitAPI.IPCTestingAPI.CanReceiveIPCSemaphore

TestWebKitAPI.IPCTestingAPI.CanCreateIPCSemaphore

  • Platform/IPC/JSIPCBinding.cpp:

(IPC::jsValueForDecodedArgumentValue): Takes r-value reference since IPC::Semaphore
doesn't have a copy constructor.

  • Platform/IPC/JSIPCBinding.h:

(IPC::jsValueForDecodedArgumentValue): Ditto. Added a specialization for IPC::Semaphore.
(IPC::putJSValueForDecodeArgumentInArray):

  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::JSIPCSemaphore): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::create): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::exchange): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::JSIPCSemaphore): Added.
(WebKit::IPCTestingAPI::createTypeError): Moved up.
(WebKit::IPCTestingAPI::JSIPCSemaphore::createJSWrapper): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::unwrap): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::toWrapped): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::initialize): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::finalize): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::signal): Added.
(WebKit::IPCTestingAPI::JSIPCSemaphore::waitFor): Added.
(WebKit::IPCTestingAPI::JSIPC::wrapperClass):
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added IPC.createSemaphore.
(WebKit::IPCTestingAPI::getObjectIdentifierFromProperty): Added.
(WebKit::IPCTestingAPI::encodeRemoteRenderingBackendCreationParameters): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added the support for encoding
RemoteRenderingBackendCreationParameters as an IPC argument.
(WebKit::IPCTestingAPI::JSIPC::createSemaphore): Added.
(IPC::jsValueForDecodedArgumentValue): Defined the aforementioned specialization for
IPC::Semaphore with IPCTestingAPI .

Tools:

Added tests to make sure IPC testing API allows creation of a semaphore,
and receiving one as a reply to an IPC message.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(IPCTestingAPI.CanReceiveIPCSemaphore): Added.
(IPCTestingAPI.CanCreateIPCSemaphore): Added.

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

REGRESSION: [ BigSurE Release wk 2] webrtc/direction-change.html is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225523

Unreviewed test gardening.

Updating test expectation to Pass Failure.

  • platform/mac/TestExpectations:
2:14 PM Changeset in webkit [277197] by Ross Kirsling
  • 43 edits
    29 adds in trunk/JSTests

Update test262 (2021.05.07)
https://bugs.webkit.org/show_bug.cgi?id=225536

Reviewed by Alexey Shvayka.

  • test262/config.yaml:
  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/:
  • test262/test262-Revision.txt:
1:28 PM Changeset in webkit [277196] by Wenson Hsieh
  • 24 edits
    1 add in trunk/Source

[macOS] Set the -isSourceEditable property when presenting webpage translation popup
https://bugs.webkit.org/show_bug.cgi?id=225515
<rdar://problem/77658040>

Reviewed by Tim Horton.

Source/WebCore:

Set -[LTUITranslationViewController isSourceEditable] to YES when showing the context menu for editable
content. Instead of plumbing another boolean flag through ContextMenuClient and into the client layers through
handleTranslation(), we roll all of the webpage translation context menu parameters into a single object
(TranslationContextMenuInfo), including a new flag indicating whether or not the translation controller should
be shown in "editable" mode.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:
  • page/ContextMenuClient.h:
  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::contextMenuItemSelected):

  • page/TranslationContextMenuInfo.h: Added.

Pull the translated text string, selection bounds, menu location, and the new mode flag into a separate struct.

(WebCore::TranslationContextMenuInfo::encode const):
(WebCore::TranslationContextMenuInfo::decode):

Source/WebKit:

See WebCore/ChangeLog for more details.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::handleContextMenuTranslation):

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

(WebKit::WebViewImpl::handleContextMenuTranslation):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::handleContextMenuTranslation):

  • WebProcess/WebCoreSupport/WebContextMenuClient.h:
  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:

(WebKit::WebContextMenuClient::handleTranslation):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::handleContextMenuTranslation):

  • WebProcess/WebPage/WebPage.h:

Source/WebKitLegacy/mac:

See WebCore/ChangeLog for more details.

  • WebCoreSupport/WebContextMenuClient.h:
  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::handleTranslation):

  • WebView/WebView.mm:

(-[WebView _handleContextMenuTranslation:]):
(-[WebView _handleContextMenuTranslation:selectionBounds:menuLocation:]): Deleted.

  • WebView/WebViewInternal.h:
1:09 PM Changeset in webkit [277195] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.12.4

Tag Safari-612.1.12.4.

12:51 PM WebKitGTK/StableRelease edited by Adrian Perez de Castro
(diff)
11:56 AM Changeset in webkit [277194] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ Mac ] accessibility/mac/expanded-notification.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=205410

Unreviewed test gardening.

Updating test expectations to include all mac.

  • platform/mac/TestExpectations:
11:48 AM Changeset in webkit [277193] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r276739. rdar://problem/77581103

Don't create custom scrollbars for fullscreen placeholders.
https://bugs.webkit.org/show_bug.cgi?id=225141
Source/WebCore:

<rdar://64800098>

Reviewed by Darin Adler.

We can end up calling RenderScrollbar::createCustomScrollbar with
element = nullptr from RenderLayer::createScrollbar,
when the renderer is a RenderFullscreenPlaceholder.

We don't need to bother with scrollbars for the placeholder, so check to
make sure we have a valid element before creating custom scollbars.

Test: fullscreen/full-screen-crash-custom-scrollbars.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::createScrollbar):

LayoutTests:

Reviewed by Darin Adler.

  • fullscreen/full-screen-crash-custom-scrollbars-expected.txt: Added.
  • fullscreen/full-screen-crash-custom-scrollbars.html: Added.

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

11:48 AM Changeset in webkit [277192] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-611-branch

Cherry-pick r276627. rdar://problem/77580982

Create a containing block when relevant properties are set in the current element will-change
https://bugs.webkit.org/show_bug.cgi?id=167868

Patch by Tim Nguyen <ntim@apple.com> on 2021-04-26
Reviewed by Alan Bujtas.

Per spec, any CSS property that is susceptible to create a containing block should create one when put on the
current element's will-change.

Relevant WPT are enabled.

Test: fast/css/will-change/will-change-creates-containing-block.html

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-box/parsing/padding-computed-expected.txt:

Source/WebCore:

  • rendering/RenderElement.h: (WebCore::RenderElement::canContainFixedPositionObjects const): (WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):
  • rendering/style/WillChangeData.cpp: (WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
  • rendering/style/WillChangeData.h:

LayoutTests:

  • TestExpectations:
  • fast/css/will-change/will-change-creates-containing-block-expected.html: Added.
  • fast/css/will-change/will-change-creates-containing-block.html: Added.

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

11:48 AM Changeset in webkit [277191] by Russell Epstein
  • 24 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r276575. rdar://problem/77581037

Make more IndexedDB objects iso-heap'ed
https://bugs.webkit.org/show_bug.cgi?id=225029

Reviewed by Darin Adler.

Deployed IsoHeap on more IndexedDB objects.

  • Modules/indexeddb/IDBFactory.cpp:
  • Modules/indexeddb/IDBFactory.h:
  • Modules/indexeddb/IDBGetAllResult.cpp:
  • Modules/indexeddb/IDBGetAllResult.h:
  • Modules/indexeddb/IDBGetResult.cpp:
  • Modules/indexeddb/IDBGetResult.h:
  • Modules/indexeddb/IDBIndex.cpp:
  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBKey.cpp:
  • Modules/indexeddb/IDBKey.h:
  • Modules/indexeddb/IDBObjectStore.cpp:
  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBRecordIdentifier.h: Removed since it's not used anywhere.
  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/client/IDBConnectionProxy.cpp:
  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/indexeddb/client/IDBConnectionToServer.cpp:
  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/TransactionOperation.cpp:
  • Modules/indexeddb/client/TransactionOperation.h:
  • Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
  • Modules/indexeddb/shared/IDBDatabaseInfo.h:
  • WebCore.xcodeproj/project.pbxproj:

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

11:48 AM Changeset in webkit [277190] by Russell Epstein
  • 4 edits in branches/safari-611-branch

Cherry-pick r276983. rdar://problem/77581150

localStorage changes aren't reflected between WKWebViews using WKWebViewConfiguration._groupIdentifier
https://bugs.webkit.org/show_bug.cgi?id=225344
<rdar://77496721>

Reviewed by Brady Eidson.

Source/WebKit:

When we switched from using _pageGroup to _groupIdentifier, we also broke localStorage by making a new pageGroupID for each WKWebView.
This is the low-risk solution to this problem that remembers what pageGroupID we used for this same identifier, creating the effect of
using the same StorageNamespaceIdentifier for each _groupIdentifier like we did when we used _pageGroup.
See the comment in StorageAreaMap::dispatchLocalStorageEvent.

The higher-risk solution that needs to be done but probably shouldn't be merged to a branch at this point is to remove StorageNamespaceIdentifier.
I plan to do that in a follow-up patch.

  • UIProcess/WebPageGroup.cpp: (WebKit::pageGroupData):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm: (TEST):

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

11:48 AM Changeset in webkit [277189] by Russell Epstein
  • 3 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r276696. rdar://problem/77581076

Use a WeakHashSet for Document::m_mediaElements
https://bugs.webkit.org/show_bug.cgi?id=225082

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

Refactoring to use weak pointer instead of raw pointer.
No observable change of behavior.

  • dom/Document.cpp: (WebCore::Document::registerMediaElement): (WebCore::Document::unregisterMediaElement): (WebCore::Document::forEachMediaElement):
  • dom/Document.h:

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

11:48 AM Changeset in webkit [277188] by Russell Epstein
  • 3 edits
    2 adds in branches/safari-611-branch

Cherry-pick r276630. rdar://problem/77581089

[MathML] Assertion failure in RenderTreeNeedsLayoutChecker
https://bugs.webkit.org/show_bug.cgi?id=224903

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-27
Reviewed by Alan Bujtas.

Source/WebCore:

After r226180, RenderMathMLRow no longer performs layout of its "embellished operator"
children only its core <mo> descendant, which is causing dirty layout.

Test: mathml/vertical-embellished-op-dirty-layout.html

  • rendering/mathml/RenderMathMLRow.cpp: (WebCore::RenderMathMLRow::stretchVerticalOperatorsAndLayoutChildren): always layout the "embellished operator" child, after its core <mo>.

LayoutTests:

Add regression test with all vertical embellished operators (other than <mo>) supported
by WebKit.

  • mathml/vertical-embellished-op-dirty-layout-expected.txt: Added.
  • mathml/vertical-embellished-op-dirty-layout.html: Added.

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

11:48 AM Changeset in webkit [277187] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r276492. rdar://problem/77581017

Do not set synchronous scrolling for layers without relevant scrolling scopes
https://bugs.webkit.org/show_bug.cgi?id=221383

Reviewed by Simon Fraser.

Fixed backgrounds could force the layer compositor to set synchronous scrolling because they're slow
to repaint. However that cannot be done if the layer's boxScrollingScope hasn't been previously updated
in RenderLayer::updateLayerPosition.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateSynchronousScrollingNodes): Do not call setSynchronousScrollingReasons() if there is no scrollingScope.

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

11:48 AM Changeset in webkit [277186] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r275938. rdar://problem/77581120

Do not reset computed style for element children with display contents style
https://bugs.webkit.org/show_bug.cgi?id=223794

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-14
Reviewed by Antti Koivisto.

We were checking hasDisplayContents() was false before calling resetComputedStyle() on the parent, but we don't
check it when iterating the children.

  • dom/Element.cpp: (WebCore::Element::resetComputedStyle):
  • style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::resolveComposedTree):

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

11:48 AM Changeset in webkit [277185] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-611-branch

Cherry-pick r275607. rdar://problem/77581135

REGRESSION (r270849): Button content fails to render on apple.com "Blood Oxygen"/"ECG"
https://bugs.webkit.org/show_bug.cgi?id=224261

Reviewed by Simon Fraser.

Source/WebCore:

  1. The changeRequiresRecompositeLayer check in RenderStyle::diff should come after changeRequiresRepaintIfTextOrBorderOrOutline since RepaintIfTextOrBorderOrOutline is at a higher priority in StyleDifference.
  2. Ensure that we trigger setNeedsCompositingConfigurationUpdate on diff >= StyleDifference::RecompositeLayer.

Test: fast/text/text-repaint-when-pointer-event-property-changes.html

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::layerStyleChanged):
  • rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::diff const):

LayoutTests:

  • fast/text/text-repaint-when-pointer-event-property-changes-expected.html: Added.
  • fast/text/text-repaint-when-pointer-event-property-changes.html: Added.

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

11:47 AM Changeset in webkit [277184] by Russell Epstein
  • 5 edits
    2 adds in branches/safari-611-branch

Cherry-pick r271669. rdar://problem/77580999

Fix nullptr dereference introduced in r268228
https://bugs.webkit.org/show_bug.cgi?id=220776

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

Source/WebCore:

Instead of taking data from the FileReaderLoader, which it assumes it still has later,
only give the bytes to JavaScript that have been received since last time we called didReceiveData.
This makes blob.stream correct and not crash.

Test: fast/files/blob-stream-crash-2.html

  • fileapi/Blob.cpp: (WebCore::Blob::stream):
  • fileapi/FileReaderLoader.cpp: (WebCore::FileReaderLoader::takeRawData): Deleted.
  • fileapi/FileReaderLoader.h: (WebCore::FileReaderLoader::totalBytes const):

LayoutTests:

  • fast/files/blob-stream-crash-2-expected.txt: Added.
  • fast/files/blob-stream-crash-2.html: Added.

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

11:47 AM Changeset in webkit [277183] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r277114. rdar://problem/77638135

Fix crash when WebsiteDataStore is destroyed with outstanding getNetworkProcessConnection request
https://bugs.webkit.org/show_bug.cgi?id=225478
<rdar://77576148>

Reviewed by Chris Dumez.

In WebsiteDataStore::getNetworkProcessConnection if we don't get a connection the first time, we terminate the network process
and try again. This greatly increases our success rate. However, if we are cancelling the reply because of the destruction
of the WebsiteDataStore, we will end up doing bad things with partially destroyed objects, which ends up crashing.
In order to prevent this, use RunLoop::main.dispatch to retry on the next runloop iteration so that we will never be inside the
stack of WebsiteDataStore::~WebsiteDataStore when retrying. In that case, we will find that weakThis is null and send an empty
reply.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::getNetworkProcessConnection):

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

11:47 AM Changeset in webkit [277182] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r276671. rdar://problem/77620763

HashTableConstIterator's consistency assertion fails while closing m_webIDBServers in NetworkProcess::didClose since r275846
https://bugs.webkit.org/show_bug.cgi?id=225089

Reviewed by Chris Dumez.

The items of m_webIDBServers were removed while iterating
m_webIDBServers.

Move m_webIDBServers to a temporary HashMap before iterating.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::didClose):

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

11:08 AM Changeset in webkit [277181] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION (r277071): [Intel Mac] imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html is failing
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:06 AM Changeset in webkit [277180] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Use test-tube emoji for EWS status bubbles for tester queues
https://bugs.webkit.org/show_bug.cgi?id=225517

Reviewed by Alan Bujtas.

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

(StatusBubble):

10:24 AM Changeset in webkit [277179] by Russell Epstein
  • 11 edits in branches/safari-612.1.12-branch/Source/WebCore

Cherry-pick r277069. rdar://problem/77659420

AppHighlight scrolls should be smooth
https://bugs.webkit.org/show_bug.cgi?id=225395

Reviewed by Simon Fraser.

Leverage smooth scrolling experimental feature to allow AppHighlight scrolls
to be smooth.

  • Modules/highlight/AppHighlightStorage.cpp: (WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
  • editing/Editor.cpp: (WebCore::TemporarySelectionChange::setSelection):
  • editing/Editor.h:
  • editing/FrameSelection.cpp: (WebCore::FrameSelection::setSelection): (WebCore::FrameSelection::updateAndRevealSelection): (WebCore::FrameSelection::revealSelection):
  • editing/FrameSelection.h:
  • page/DOMWindow.cpp: (WebCore::DOMWindow::scrollTo const):
  • page/ScrollBehavior.cpp: (WebCore::useSmoothScrolling):
  • platform/ScrollTypes.h:

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

9:49 AM Changeset in webkit [277178] by Chris Dumez
  • 2 edits in trunk/Tools

Add API test for FileSystem::fileExists() and FileSystem::fileMetadata() when dealing with symlinks to symlinks
https://bugs.webkit.org/show_bug.cgi?id=225491

Reviewed by Sam Weinig.

Update FileSystemTest::SetUp() to use a valid path when constructing the test symlink
(tempFileSymlinkPath). Add API test for FileSystem::fileExists() and FileSystem::fileMetadata()
when dealing with symlinks to symlinks.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

9:42 AM Changeset in webkit [277177] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

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

Reviewed by Sam Weinig.

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

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::createProcessor):

9:21 AM Changeset in webkit [277176] by achristensen@apple.com
  • 14 edits in trunk/Source/ThirdParty/libwebrtc

Allow libwebrtc to build for Mac Catalyst
https://bugs.webkit.org/show_bug.cgi?id=225505

Reviewed by Youenn Fablet.

This is progress towards rdar://77568774

Changes necessary to get it to build and link were:

  1. kCVPixelBufferOpenGLESCompatibilityKey is unavailable on Catalyst, so use kCVPixelBufferOpenGLCompatibilityKey like we do on macOS.
  2. SSE4 and AVX seem to be unavailable in the Catalyst SDK like they are in the iOS simulator SDK, so disable them similarly.
  3. Link to UIKit and CoreGraphics in debug builds like we do with iOS family builds.
  4. Don't use @loader_path/../../../ for DYLIB_INSTALL_NAME_BASE like we do with relocatable Safari builds, similar to an ANGLE change I made in r276318
  5. Export the same symbols as iOS for now. This may need some tweaking when I get it to link with WebCore, but that's why this is only progress.
  • Configurations/DebugRelease.xcconfig:
  • Configurations/SDKVariant.xcconfig:
  • Configurations/libvpx.xcconfig:
  • Configurations/libwebrtc.xcconfig:
  • Configurations/opus.xcconfig:
  • Source/third_party/libvpx/source/config/mac/x64/vp8_rtcd.h:
  • Source/third_party/libvpx/source/config/mac/x64/vp9_rtcd.h:
  • Source/third_party/libvpx/source/config/mac/x64/vpx_dsp_rtcd.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm:

(-[RTCVideoDecoderH264 resetDecompressionSession]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH265.mm:

(-[RTCVideoDecoderH265 resetDecompressionSession]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderVTBVP9.mm:

(-[RTCVideoDecoderVTBVP9 resetDecompressionSession]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.mm:

(-[RTCVideoEncoderH265 resetCompressionSession]):

8:51 AM Changeset in webkit [277175] by Philippe Normand
  • 4 edits in trunk

[GStreamer][MediaStream] Emit black frames for disabled video tracks
https://bugs.webkit.org/show_bug.cgi?id=225511

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

In case the video track is disabled, emit a black I420 frame. For disabled audio tracks we
might need to silence the corresponding audio frames, this will be investigated in a
follow-up patch.

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

LayoutTests:

  • platform/glib/TestExpectations: Unflag mediastream test now passing.
8:23 AM Changeset in webkit [277174] by commit-queue@webkit.org
  • 3 edits
    3 adds in trunk

Crash in ApplyStyleCommand::applyRelativeFontStyleChange
https://bugs.webkit.org/show_bug.cgi?id=225235

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

Source/WebCore:

Test: editing/execCommand/font-size-delta-same-node-for-start-and-end-crash.html

In ApplyStyleCommand::applyRelativeFontStyleChange, when the selection start and end have the
same anchor node, the start node of the loop is obtained by calling Position::upstream on the
selection start while end node of the loop is obtained by calling NodeTraversal::next on the
anchor node. This can result in the former being after the latter. This patch fixes this by
moving the end of the loop after the anchor node (similar to what is already done when the
start anchor node is a strict descendant of the end anchor node).

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::applyRelativeFontStyleChange): Also include the case where
end.deprecatedNode() == start.deprecatedNode() in the conditional.

LayoutTests:

Add regression test.

  • editing/execCommand/font-size-delta-same-node-for-start-and-end-crash-expected.txt: Added.
  • editing/execCommand/font-size-delta-same-node-for-start-and-end-crash.html: Added.
  • platform/ios/editing/execCommand/font-size-delta-same-node-for-start-and-end-crash-expected.txt: Added.
8:05 AM Changeset in webkit [277173] by Philippe Normand
  • 2 edits in trunk/LayoutTests

Unreviewed, glib WebAudio gardening

  • platform/glib/TestExpectations: Unflag webaudio test now passing since r276978.
7:55 AM Changeset in webkit [277172] by commit-queue@webkit.org
  • 10 edits
    2 deletes in trunk/Source

[GTK4] Rewrite GTK gesture support to work for both 3.x and 4.x.
https://bugs.webkit.org/show_bug.cgi?id=212324

Patch by Carlos Garnacho <carlosg@gnome.org> on 2021-05-07
Reviewed by Carlos Garcia Campos.

Source/WebCore:

  • platform/gtk/GtkVersioning.h:

(gtk_event_controller_get_current_event_state):
(gtk_event_controller_get_current_event_time): New GTK4 portability
helper methods.

Source/WebKit:

Rewrite the touch gesture handling to avoid GdkEvent as an exchange
token, and not rely on the web view being able to hold and re-route
these at whim. This makes touch and touchpad gestures work on GTK3
and GTK4 in similar ways, and so that both work.

For this, touch event propagation got some substantial changes, it
used to work by first delivering the touch events to the web page,
and manually feeding the returned+unhandled ones to gesture controllers.
Now event delivery is delegated on GTK, and happens right away on
gesture controllers, it is the WebkitWebViewBase which chooses to make
them effective after the web page (maybe) handled the events. Gestures
are reset whenever the web page is considered to be handling touch
events.

Also fix some buglets accumulated along the way, web view zoom conflicted
with in-page zoom handling, and ViewGestureController page switching
conflicted with press-drag-release emulation on the web page. These now
work better and closer to GtkScrolledWindow behavior.

No new tests, the GTK touch tests that should catch this were disabled
in the past and need fixing. This patch will require manual testing.

  • PlatformGTK.cmake: Drop GTK4 conditionals around ViewGestureController
  • SourcesGTK.txt: Drop GestureController.cpp. Build ViewGestureController

code files unconditionally.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent): Delegate handling on
WebKitWebViewBase.
(WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): Use platform
independent struct to forward scroll to ViewGestureController.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSnapshot): Involve ViewGestureController in rendering.
(webkitWebViewBaseButtonPressEvent):
(webkitWebViewBaseButtonReleaseEvent):
(webkitWebViewBaseButtonPressed):
(webkitWebViewBaseButtonReleased):
(webkitWebViewBaseMotionNotifyEvent): Ignore pointer-emulated events from
touchscreens.
(webkitWebViewBaseHandleWheelEvent):
(webkitWebViewBaseScroll): Use platform independent struct
to forward scroll to ViewGestureController.
(appendTouchEvent):
(touchPointStateForEvents):
(webkitWebViewBaseGetTouchPointsForEvent):
(webkitWebViewBaseTouchEvent):
Generalized to work on both GTK3 and GTK4.
(webkitWebViewBaseZoomBegin):
(webkitWebViewBaseZoomChanged):
(webkitWebViewBaseTouchLongPress):
(webkitWebViewBaseTouchPress):
(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragBegin):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseTouchDragCancel):
(webkitWebViewBaseTouchSwipe): Newly added touch gesture implementation
callbacks. Not delegated anymore on GestureController.
(webkitWebViewBaseConstructed): Create touch gestures in the base view
widget, let them handle events automatically instead of relying on
manual event feeding via gtk_event_controller_handle_event(). Also add
a GtkEventControllerLegacy to handle forwarding of raw touch events to
the web page in GTK4.
(webkitWebViewBaseSetEnableBackForwardNavigationGesture):
(webkitWebViewBaseViewGestureController):
(webkitWebViewBaseBeginBackSwipeForTesting):
(webkitWebViewBaseCompleteBackSwipeForTesting):
(webkitWebViewBaseWillSwapWebProcess):
(webkitWebViewBaseDidExitWebProcess):
(webkitWebViewBaseDidRelaunchWebProcess):
(webkitWebViewBaseDidStartProvisionalLoadForMainFrame):
(webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame):
(webkitWebViewBaseDidFinishNavigation):
(webkitWebViewBaseDidFailNavigation):
(webkitWebViewBaseDidSameDocumentNavigationForMainFrame):
(webkitWebViewBaseDidRestoreScrollPosition): Remove conditionals around
ViewGestureController for GTK4.
(webkitWebViewBasePageGrabbedTouch): New method to tag touch events
altogether as handled by the web page, thus resetting any ongoing view-level
gesture handling. This inversion is necessary as gesture controllers are now
always fed input events parallel to web page touch event handling.
(webkitWebViewBaseGestureController): Deleted.
(webkit_web_view_base_class_init):
(webkitWebViewBaseEvent): Removed widget_class->event vfunc. Touchpad gesture
event forwarding to event controllers is delegated on GTK.

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/ViewGestureController.h:
  • UIProcess/gtk/GestureController.cpp: Removed. Gestures are implemented in

the base view.

  • UIProcess/gtk/GestureController.h: Removed.
  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::isEventStop):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanStartSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanEndSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
(WebKit::isTouchEvent):
(WebKit::createScrollEvent):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
(WebKit::ViewGestureController::handleScrollWheelEvent):
(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
(WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting): Declare
PlatformGtkScrollData, and use it as "platform scroll event" for both GTK3 and GTK4.
(WebKit::ViewGestureController::snapshot): New GTK4 specific method to render
the page switching gesture action.

5:31 AM Changeset in webkit [277171] by youenn@apple.com
  • 15 edits in trunk/Source

Add WebRTC logging control in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=225346

Reviewed by Eric Carlson.

Source/WebCore:

Migrate setEnableLogging to setLoggingLevel as a virtual method so that it can be implemented by WebKit to send logging level to GPUProcess.
Simplify WebCore::LibWebRTCProvider::setLoggingLevel to not differentiate debug from non debug builds.
Manually tested.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::create):

  • page/Page.cpp:

(WebCore::Page::configureLoggingChannel):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::computeLogLevel):
(WebCore::LibWebRTCProvider::setRTCLogging):
(WebCore::LibWebRTCProvider::setLoggingLevel):
(WebCore::setLogging): Deleted.
(WebCore::LibWebRTCProvider::setEnableLogging): Deleted.

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:

Source/WebKit:

Implement setting of WebRTC log level using LibWebRTCCodecs and LibWebRTCCodecsProxy.
This will help debugging issues with GPU-running webrtc codecs.

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::toWebRTCVideoRotation):
(WebKit::LibWebRTCCodecsProxy::setRTCLoggingLevel):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread):
(WebKit::LibWebRTCCodecs::setLoggingLevel):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::setLoggingLevel):

  • WebProcess/Network/webrtc/LibWebRTCProvider.h:
5:17 AM Changeset in webkit [277170] by commit-queue@webkit.org
  • 5 edits in trunk

[GTK][WPE] Bump libsoup3 version to 2.99.5
https://bugs.webkit.org/show_bug.cgi?id=225506

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Philippe Normand.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

LayoutTests:

Remove expectations for tests that should be passing now.

  • platform/gtk/TestExpectations:
5:05 AM Changeset in webkit [277169] by Wenson Hsieh
  • 5 edits in trunk/Source/WebKit

[iOS] Safari sometimes hangs underneath WebKit::UIDelegate::UIClient::createNewPage
https://bugs.webkit.org/show_bug.cgi?id=225481
rdar://77565282

Reviewed by Chris Dumez.

Consider the scenario where a webpage programmatically opens a window in a new tab on iOS while the keyboard is
visible. In certain configurations, Safari indirectly tells the WKWebView containing the original webpage to
-resignFirstResponder and then -becomeFirstResponder again, while creating a new web view and shuffling
around the view hierarchy under -webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:.

Since the keyboard is up, this causes UIKit to ask for an autocorrection context via `-[WKContentView
requestAutocorrectionContextWithCompletionHandler:]`, which blocks the main thread on a response from the web
process. Of course, since we're handling synchronous IPC, the web process isn't capable of sending a response
back to the UI process, so we deadlock until we exceed the IPC timeout, and then exit the call stack.

Instead, it's possible in this case to recognize that we're already handling a synchronous IPC message, and any
attempts to wait for a response will time out anyways. Instead of waiting for the entire timeout duration, we
can fail eagerly to avoid hanging the process that is waiting.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::dispatchSyncMessage):

  • Platform/IPC/Connection.h:

Add a new counter variable, m_inDispatchSyncMessageCount, that is incremented and decremented while we're
in the process of dispatching an incoming sync IPC message. If m_inDispatchSyncMessageCount is nonzero and
we have a non-infinite IPC timeout duration, then we should fail sooner inside Connection::waitForMessage,
instead of waiting to time out.

Drive-by refactoring: while we're here, let's also move initialization for some of the members on Connection
into the class declaration, instead of the constructor.

(IPC::Connection::WTF_GUARDED_BY_LOCK):

  • Platform/IPC/Timeout.h:

(IPC::Timeout::isInfinity const):

  • WebKit.xcodeproj/project.pbxproj:
4:46 AM Changeset in webkit [277168] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[GTK] Warnings about unused filesystem functions
https://bugs.webkit.org/show_bug.cgi?id=225507

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

Since r277158 these functions are no longer needed.

  • wtf/glib/FileSystemGlib.cpp:

(WTF::FileSystemImpl::getFileStat): Deleted.
(WTF::FileSystemImpl::getFileLStat): Deleted.

3:02 AM Changeset in webkit [277167] by Philippe Normand
  • 2 edits in trunk/Tools

Unreviewed, WPE gardening

  • TestWebKitAPI/glib/TestExpectations.json: Unflag test, wpebackend-fdo was downgraded in

the SDK revision r277166.

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

[Flatpak SDK] Update to libsoup3 2.99.5
https://bugs.webkit.org/show_bug.cgi?id=225504

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-05-07
Reviewed by Philippe Normand.

  • elements/sdk/libsoup3.bst:
1:47 AM Changeset in webkit [277165] by commit-queue@webkit.org
  • 2 edits in trunk/Tools/buildstream

[WPE] TestWebExtensions web-process-crashed is flaky failing after latest WPE libs update
https://bugs.webkit.org/show_bug.cgi?id=225503

Patch by Philippe Normand <pnormand@igalia.com> on 2021-05-07
Reviewed by Carlos Garcia Campos.

The update to 1.9.91 triggers critical warnings in tests. Might be fixed by
https://github.com/Igalia/WPEBackend-fdo/pull/158 which is not merged yet.

  • elements/sdk/wpebackend-fdo.bst: Downgrade to latest stable release until the bug is fixed.
1:46 AM Changeset in webkit [277164] by eocanha@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer] Layout test media/video-playsinline.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=186664

Reviewed by Philippe Normand.

The change to fullscreen takes a while on WebKitGTK and WPE platforms and can't be checked immediately.

  • media/video-playsinline.html: Added a setTimeout to the test in order to defer the check to the next main loop iteration.
1:08 AM Changeset in webkit [277163] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in InsertTextCommand::positionInsideTextNode
https://bugs.webkit.org/show_bug.cgi?id=223753

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

Source/WebCore:

Test: editing/deleting/selection-on-empty-table-row.html

This is a follow-up of bug 213514, where removePreviouslySelectedEmptyTableRows was
modified to ensure the selection is properly updated after deleting the last row. This
patch does the same for other rows.

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows): Update comment
about calling raw removeNode and move it to the top of the function. Replace all the calls
to CompositeEditCommand::removeNode with CompositeEditCommand::removeNodeUpdatingStates so
that the selection is adjusted.

LayoutTests:

Add regression test.

  • editing/deleting/selection-on-empty-table-row-expected.txt: Added.
  • editing/deleting/selection-on-empty-table-row.html: Added.
12:44 AM Changeset in webkit [277162] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

[GPU Process] Closing the GPU Process should clear all the back pointers from ItemBuffer to RemoteRenderingBackendProxy
https://bugs.webkit.org/show_bug.cgi?id=224744
<rdar://74592639>

Reviewed by Ryosuke Niwa.

RemoteRenderingBackendProxy::gpuProcessConnectionDidClose() clears the
the backends of all its RemoteImageBufferProxys. It also clears all the
SharedMemory which are referenced by the ItemBufferHandles.

So DisplayList::ImageBuffer::clearBackend() should clear all the
ItemBufferHandles of its DisplayList.

  • platform/graphics/displaylists/DisplayListImageBuffer.h:

May 6, 2021:

11:15 PM Changeset in webkit [277161] by Fujii Hironori
  • 3 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo/TestExpectations:
11:11 PM Changeset in webkit [277160] by ntim@apple.com
  • 4 edits
    2 deletes in trunk/LayoutTests

Re-import css/mediaqueries/test_media_queries.html WPT
https://bugs.webkit.org/show_bug.cgi?id=225469

Unreviewed. Test gardening.

Pulls in https://github.com/web-platform-tests/wpt/pull/28881 to fix device specific test failures.
Also removes platform-specific test expectations which were added to that issue.

LayoutTests/imported/w3c:

  • web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:
  • web-platform-tests/css/mediaqueries/test_media_queries.html:

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt: Removed.
10:38 PM Changeset in webkit [277159] by Lauro Moura
  • 4 edits
    2 adds
    2 deletes in trunk/LayoutTests

[WPE] Garden a few more failures

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
  • platform/wpe/fast/inline/crash-when-revert-has-trailing-line-break-expected.txt: Added to keep testing whether the crash happens instead of skipping.
  • platform/wpe/fonts/sans-serif-expected.txt: Rebaseline after r275515.
  • platform/wpe/fonts/serif-expected.txt: Ditto.
  • platform/wpe/http/tests/cache/network-error-during-revalidation-expected.txt: Removed. Using DumpJSConsoleLogInStdErr instead to reuse root baseline.
  • platform/wpe/http/tests/xmlhttprequest/state-after-network-error-expected.txt: Ditto.
  • platform/wpe/tables/mozilla/bugs/adforce_imgis_com-expected.txt: Added after r275515.
10:00 PM Changeset in webkit [277158] by Chris Dumez
  • 15 edits in trunk

Port Filesystem::fileMetadata() & Filesystem::getFileModificationTime() to std::filesystem
https://bugs.webkit.org/show_bug.cgi?id=225362

Reviewed by Darin Adler.

Source/JavaScriptCore:

Build fix.

  • Configurations/JavaScriptCore.xcconfig:

Source/WTF:

Port Filesystem::fileMetadata() & Filesystem::getFileModificationTime() to std::filesystem
and get rid of platform-specific implementations.

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::toWallTime):
(WTF::FileSystemImpl::getFileModificationTime):
(WTF::FileSystemImpl::fileMetadata):

  • wtf/FileSystem.h:
  • wtf/glib/FileSystemGlib.cpp:
  • wtf/posix/FileSystemPOSIX.cpp:
  • wtf/win/FileSystemWin.cpp:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::runGetFileModificationTimeTest):

LayoutTests:

Add 0 to the list of allowed values for the size of a directory in the data transfer API as the result
is implementation-specific. On macOS, we used to return 256 on apfs and 272 on HFS+. We now return 0,
which is what Firefox does.

  • editing/pasteboard/entries-api/datatransfer-items-drop-getAsEntry-expected.txt:
  • editing/pasteboard/entries-api/datatransfer-items-drop-getAsEntry.html:
  • fast/forms/file/entries-api/drag-folder-webkitEntries-expected.txt:
  • fast/forms/file/entries-api/drag-folder-webkitEntries.html:
9:41 PM Changeset in webkit [277157] by Lauro Moura
  • 2 edits in trunk/Tools

[WPE] Garden web-process-crashed API test flakiness after SDK update

Unreviewed test gardening.

  • TestWebKitAPI/glib/TestExpectations.json:
8:11 PM Changeset in webkit [277156] by Russell Epstein
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.2

7:38 PM Changeset in webkit [277155] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Allow file-read* and file-write-data for /dev/null and /dev/zero
https://bugs.webkit.org/show_bug.cgi?id=225482
<rdar://problem/77503594>

Reviewed by Per Arne Vollan.

Revise sandbox to allow read and write-data access to /dev/null and /dev/zero.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
7:14 PM Changeset in webkit [277154] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html (layout-test) is a flaky text failure
Nhttps://bugs.webkit.org/show_bug.cgi?id=225500

Unreviewed test gardening.

Marking test as flaky (Pass Failure) while test is reviewed.

  • platform/mac-wk2/TestExpectations:
7:13 PM Changeset in webkit [277153] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Removed the assertion m_numParameters >= 0, it is always true as
m_numParameters is unsigned.
https://bugs.webkit.org/show_bug.cgi?id=225457

Patch by Eleni Maria Stea <hikiko> on 2021-05-06
Reviewed by Yusuke Suzuki.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::numberOfArgumentValueProfiles):

6:56 PM Changeset in webkit [277152] by Robert Jenner
  • 1 edit
    6 adds in trunk/LayoutTests

REGRESSION (r272039): [Big Sur release WK2] imported/w3c/web-platform-t ests/media-source/mediasource-changetype-play-implicit.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=221143

Unreviewed test gardening.

Rebasing test for BigSur wk2.

  • platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-implicit-expected.txt: Added.
6:48 PM Changeset in webkit [277151] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Retry asynchronously in WebProcessPool::getGPUProcessConnection() in case of failure
https://bugs.webkit.org/show_bug.cgi?id=225486

Reviewed by Alex Christensen.

Retry asynchronously in WebProcessPool::getGPUProcessConnection(), similarly to what
we do in WebsiteDataStore::getNetworkProcessConnection(). As a result, we no longer
need to ref the WebProcessPool in the lambda and we avoid retrying unnecessarily
when the WebProcessPool is getting destroyed.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getGPUProcessConnection):

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

[ macOS iOS ] crypto/crypto-random-values-oom.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223949

Unreviewed test gardening.

Updating test expectations to slow.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
6:31 PM Changeset in webkit [277149] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS ] webgl/1.0.3/conformance/glsl/constructors/glsl-construct-ivec2.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224396

Unreviewed test gardening.

Updating expectations to slow.

  • platform/mac/TestExpectations:
6:12 PM Changeset in webkit [277148] by Jean-Yves Avenard
  • 2 edits in trunk/Source/WebCore

ArtworkImageLoader can call callback with null value.
https://bugs.webkit.org/show_bug.cgi?id=225496
rdar://problem/77631799

Reviewed by Eric Carlson.

The ArtworkImageLoader can call the callback with null to indicate an error.

  • Modules/mediasession/MediaMetadata.cpp:

(WebCore::MediaMetadata::refreshArtworkImage): Add null check

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

[MacOS] animations/keyframe-pseudo-shadow.html is flakey failing
https://bugs.webkit.org/show_bug.cgi?id=221491

Unreviewed test garending.

Updating test expectation. Was previously set as Pass Failure, but is an Image failure. Added ImageOnly to Failure expectation.

  • platform/mac/TestExpectations:
5:56 PM Changeset in webkit [277146] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] fast/scrolling/mac/overflow-scrollbars-toggle-dark-mode.html (layout-test) is a flaky
https://bugs.webkit.org/show_bug.cgi?id=225498

Unreviewed test gardening.

Updated expectations to flaky ( Pass ImageOnlyFailure ) while test is reviewed.

  • platform/mac-wk2/TestExpectations:
5:46 PM Changeset in webkit [277145] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Update test expectations after WPT re-imports in r277086 and r277091.

  • platform/glib/TestExpectations:
5:30 PM Changeset in webkit [277144] by dino@apple.com
  • 16 edits in trunk/LayoutTests

Rebaseline the following tests that now pass.
rdar://76714473

  • webgl/2.0.0/deqp/functional/gles3/fbomultisample.2_samples-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbomultisample.4_samples-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbomultisample.8_samples-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/06-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/primitiverestart/07-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturegrad-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_depth_stencil-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_depth_stencil-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_depth_stencil-expected.txt:
5:17 PM Changeset in webkit [277143] by Kyle Piddington
  • 3 edits in trunk/Source/ThirdParty/ANGLE

[Metal ANGLE] Only clear dirty state bits after all state has been successfully set
https://bugs.webkit.org/show_bug.cgi?id=225468
<rdar://77066752>

When running in release, if any ANGLE calls fail, we eventually return to this part of the code.
We can be left with an incomplete state, where we have an incomplete program or attachment,
but a 'clean' state. This can lead to errors such as setting nil render pipeline states, leading to
crashes.

To mitigate this, hold off on setting state bits until we've completly set up a program.

Reviewed by Dean Jackson.

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

(rx::ContextMtl::setupDraw):

  • src/libANGLE/renderer/metal/ProgramMtl.mm:
5:17 PM Changeset in webkit [277142] by yoshiaki.jitsukawa@sony.com
  • 18 edits
    2 copies
    4 adds in trunk

[OpenSSL] Implement CryptoAlgorithmRSA*
https://bugs.webkit.org/show_bug.cgi?id=225294

Reviewed by Don Olmstead.

Implement RSA for OpenSSL.

Implement CryptoAlgorithmRSA_OAEP, CryptoAlgorithmRSA_PSS,
CryptoAlgorithmRSAES_PKCS1_v1_5, CryptoAlgorithmRSASA_PKCS1_v1_5,
and CryptoKeyRSA for OpenSSL.

.:

Note that if such OpenSSL version that does not support RSA_OAEP or
RSA_PSS, the WebCrypto API for those algorithm will return a
NotSupportedError.

  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/WebCore:

Note that if such OpenSSL version that does not support RSA_OAEP or
RSA_PSS, the WebCrypto API for those algorithm will return a
NotSupportedError.

Also note that OpenSSL accepts RSA_PSS salt length longer than the hash
length. This makes the
crypto/subtle/rsa-pss-import-key-sign-large-salt.html test fail.

Test: Existing crypto/subtle tests

  • crypto/keys/CryptoKeyRSA.h: Use the EVP_PKEY struct for the platform

key.

  • crypto/openssl/CryptoAlgorithmHMACOpenSSL.cpp: Move HMACAlgorithm()

to OpenSSLUtilities as DigestAlgorithm().

  • crypto/openssl/CryptoAlgorithmRSAES_PKCS1_v1_5OpenSSL.cpp:

(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformEncrypt):
Implemented.
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::platformDecrypt):
Implemented.

  • crypto/openssl/CryptoAlgorithmRSASSA_PKCS1_v1_5OpenSSL.cpp:

(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign):
Implemented.
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify):
Implemented.

  • crypto/openssl/CryptoAlgorithmRSA_OAEPOpenSSL.cpp:

(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt): Implemented.
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt): Implemented.

  • crypto/openssl/CryptoAlgorithmRSA_PSSOpenSSL.cpp:

(WebCore::CryptoAlgorithmRSA_PSS::platformSign): Implemented.
(WebCore::CryptoAlgorithmRSA_PSS::platformVerify): Implemented.

  • crypto/openssl/CryptoAlgorithmRegistryOpenSSL.cpp:

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
Registered RSAES_PKCS1_v_1_5, RSASSA_PKCS1_v1_5, RSA_OAEP, and RSA_PSS.

  • crypto/openssl/CryptoKeyRSAOpenSSL.cpp:

(WebCore::getRSAModulusLength):
(WebCore::convertToBytes):
(WebCore::convertToBigNumber):
(WebCore::CryptoKeyRSA::create):
(WebCore::CryptoKeyRSA::CryptoKeyRSA):
(WebCore::CryptoKeyRSA::isRestrictedToHash const):
(WebCore::CryptoKeyRSA::keySizeInBits const):
(WebCore::exponentVectorToUInt32):
(WebCore::CryptoKeyRSA::generatePair):
(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportSpki const):
(WebCore::CryptoKeyRSA::exportPkcs8 const):
(WebCore::CryptoKeyRSA::algorithm const):
(WebCore::CryptoKeyRSA::exportData const):

  • crypto/openssl/OpenSSLCryptoUniquePtr.h:

(WebCore::OpenSSLCryptoPtrDeleter<EVP_PKEY_CTX>::operator() const):
Added.
(WebCore::OpenSSLCryptoPtrDeleter<RSA>::operator() const): Added.
(WebCore::OpenSSLCryptoPtrDeleter<PKCS8_PRIV_KEY_INFO>::operator() const): Added.
(WebCore::OpenSSLCryptoPtrDeleter<BIGNUM>::operator() const): Added.
(WebCore::OpenSSLCryptoPtrDeleter<BN_CTX>::operator() const): Added.

  • crypto/openssl/OpenSSLUtilities.cpp:

(WebCore::digestAlgorithm): Added.
(WebCore::calculateDigest): Added.

  • crypto/openssl/OpenSSLUtilities.h:
  • platform/OpenSSL.cmake:

Source/WTF:

Note that if such OpenSSL version that does not support RSA_OAEP or
RSA_PSS, the WebCrypto API for those algorithm will return a
NotSupportedError.

  • wtf/Platform.h: Set HAVE_RSA_PSS for USE(OPENSSL)

LayoutTests:

Add wincairo platform expectations for
rsa-generate/import-key-malformed-parameters, modifying RSA-PSS
related results from NotSupported to appropriate errors.

  • platform/wincairo/TestExpectations: Unskip tests that are now supported.
  • platform/wincairo/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt: Added.
  • platform/wincairo/crypto/subtle/rsa-import-key-malformed-parameters-expected.txt: Added.
5:14 PM Changeset in webkit [277141] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Debug ] webgl/1.0.3/conformance/glsl/misc/expression-list-in-declarator-initializer.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225425

Unreviewed test gardening.

Updating test expectations to flaky ( Pass Timeout ) while test is reviewed.

  • platform/mac/TestExpectations:
5:13 PM Changeset in webkit [277140] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

r277122 caused a crash in GPU Process
https://bugs.webkit.org/show_bug.cgi?id=225492
<rdar://problem/77630141>

Reviewed by Jer Noble.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Have the time observer
call back on the main queue.

4:39 PM Changeset in webkit [277139] by Russell Epstein
  • 1 copy in tags/Safari-611.2.7.1.4

Tag Safari-611.2.7.1.4.

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

N[ macOS wk2 ] fast/scrolling/mac/rubberband-overflow-in-wheel-region-root-jiggle.html (layout-test) is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=225488

Unreviewed test gardening.

Updating test expectations to flaky ( Pass Timeout ) while test is reviewed.

  • platform/mac-wk2/TestExpectations:
4:35 PM Changeset in webkit [277137] by Russell Epstein
  • 1 copy in tags/Safari-611.2.7.0.3

Tag Safari-611.2.7.0.3.

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

[ macOS ] imported/w3c/web-platform-tests/css/css-animations/translation-animation-subpixel-offset.html (layout-test) is a flakey ImageOnly failure
https://bugs.webkit.org/show_bug.cgi?id=225484

Unreviewed test gardening.

Marking test as flaky ( Pass ImageOnlyFailure ) while test is reviewed.

  • platform/mac/TestExpectations:
4:01 PM Changeset in webkit [277135] by Chris Dumez
  • 62 edits in trunk

Regression(r254389?) navigator.languages returns all lowercase languages for ports using CF
https://bugs.webkit.org/show_bug.cgi?id=225461

Reviewed by Darin Adler.

Source/WTF:

Stop lowercasing the languages returned by navigator.language / navigator.languages
as this does not match the specification [1][2] or other Web browsers. The proper format is
'en-US', not 'en-us'.

[1] https://html.spec.whatwg.org/#dom-navigator-language
[2] https://tools.ietf.org/html/bcp47

  • wtf/cf/LanguageCF.cpp:

(WTF::httpStyleLanguageCode):

Tools:

Update existing API tests to reflect behavior change.

  • TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm:

(TEST):
(TEST_F):

LayoutTests:

Update existing tests to reflect behavior change.

  • fast/text/international/system-language/navigator-language/navigator-language-en-GB-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-en-GB.html:
  • fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-en-US.html:
  • fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-en.html:
  • fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-es-ES.html:
  • fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-es-MX.html:
  • fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-es.html:
  • fast/text/international/system-language/navigator-language/navigator-language-fr-CA-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-fr-CA.html:
  • fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-fr.html:
  • fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-hi.html:
  • fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-pt-BR.html:
  • fast/text/international/system-language/navigator-language/navigator-language-pt-PT-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-pt-PT.html:
  • fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-ru.html:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-HK.html:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hans-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hans.html:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK.html:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-Hant.html:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-TW-expected.txt:
  • fast/text/international/system-language/navigator-language/navigator-language-zh-TW.html:
  • js/dom/navigator-language.html:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt:
  • platform/mac-catalina/fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-en-US-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-en-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-419-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-ES-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-MX-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-es-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-fr-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-hi-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-ja-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-pt-BR-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-ru-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-zh-HK-expected.txt:
  • platform/mac-mojave/fast/text/international/system-language/navigator-language/navigator-language-zh-Hant-HK-expected.txt:
3:31 PM Changeset in webkit [277134] by Russell Epstein
  • 1 copy in tags/Safari-612.1.13

Tag Safari-612.1.13.

3:30 PM Changeset in webkit [277133] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

Remove old and unused memory barrier abstractions
https://bugs.webkit.org/show_bug.cgi?id=225487

Reviewed by Mark Lam.

We don't use memoryBarrierBlahBlah anymore.

  • wtf/Atomics.h:

(WTF::memoryBarrierAfterLock): Deleted.
(WTF::memoryBarrierBeforeUnlock): Deleted.

2:59 PM Changeset in webkit [277132] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE] Garden accessibility failure and merge other expectations with glib one

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
2:56 PM Changeset in webkit [277131] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.11.10

Tag Safari-612.1.11.10.

2:56 PM Changeset in webkit [277130] by Ruben Turcios
  • 1 delete in tags/Safari-612.1.11.10

Delete tag.

2:49 PM Changeset in webkit [277129] by Russell Epstein
  • 2 edits in branches/safari-611.2.7.1-branch/Source/WebKit

Cherry-pick r276671. rdar://problem/77620890

HashTableConstIterator's consistency assertion fails while closing m_webIDBServers in NetworkProcess::didClose since r275846
https://bugs.webkit.org/show_bug.cgi?id=225089

Reviewed by Chris Dumez.

The items of m_webIDBServers were removed while iterating
m_webIDBServers.

Move m_webIDBServers to a temporary HashMap before iterating.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::didClose):

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

2:47 PM Changeset in webkit [277128] by Ruben Turcios
  • 8 edits in branches/safari-612.1.11-branch/Source

Versioning.

WebKit-7612.1.11.10

2:46 PM Changeset in webkit [277127] by Russell Epstein
  • 8 edits in branches/safari-611.2.7.1-branch/Source

Versioning.

WebKit-7611.2.7.1.4

2:39 PM Changeset in webkit [277126] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.11.10

Tag Safari-612.1.11.10.

2:32 PM Changeset in webkit [277125] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[WPE][WebXR] Gardening regressions after r277099

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
2:31 PM Changeset in webkit [277124] by Devin Rousso
  • 17 edits in trunk

Sampled Page Top Color: make hit tests consider elements with pointer-events: none
https://bugs.webkit.org/show_bug.cgi?id=225419

Reviewed by Tim Horton.

Source/WebCore:

Test: SampledPageTopColor.HitTestCSSPointerEventsNone

  • rendering/HitTestRequest.h:

(WebCore::HitTestRequest::ignoreCSSPointerEventsProperty const): Added.

  • rendering/InlineBox.h:

(WebCore::InlineBox::visibleToHitTesting const):

  • rendering/RenderElement.h:

(WebCore::RenderElement::visibleToHitTesting const):
Add RequestType::IgnoreCSSPointerEventsProperty that's used inside visibleToHitTesting
to control whether style().pointerEvents() == PointerEvents::None is checked.

  • dom/Document.cpp:

(WebCore::isValidPageSampleLocation):
Include the new RequestType::IgnoreCSSPointerEventsProperty since we're not hit testing
for interaction, rather we're hit testing in an attempt to see what will be painted.

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::nodeAtPoint):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::nodeAtPoint):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::nodeAtPoint):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::nodeAtPoint):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::nodeAtPoint):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::hitTestCulledInline):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::nodeAtPoint):

  • rendering/RenderWidget.cpp:

(WebCore::RenderWidget::nodeAtPoint):

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::nodeAtPoint):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::nodeAtPoint):
Pass the HitTestRequest to visibleToHitTesting.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm:

(TEST.SampledPageTopColor.HitTestCSSPointerEventsNone): Added.

2:26 PM Changeset in webkit [277123] by Devin Rousso
  • 4 edits in trunk

Sampled Page Top Color: don't snapshot if the hit test location is a canvas
https://bugs.webkit.org/show_bug.cgi?id=225418

Reviewed by Tim Horton.

Source/WebCore:

Tests: SampledPageTopColor.HitTestHTMLCanvasWithoutRenderingContext

SampledPageTopColor.HitTestHTMLCanvasWithRenderingContext

  • dom/Document.cpp:

(WebCore::isValidPageSampleLocation):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm:

(TEST.SampledPageTopColor.HitTestHTMLCanvasWithoutRenderingContext): Added.
(TEST.SampledPageTopColor.HitTestHTMLCanvasWithRenderingContext): Added.

2:16 PM Changeset in webkit [277122] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore
REGRESSION (r276870): ASSERTION FAILED: !m_impl
!m_shouldEnableAssertions m_impl->wasConstructedOnMainThread() == isMainThread() under WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer

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

Reviewed by Eric Carlson.

In WebKitLegacy, the weakPtr created by createAVPlayer() is constructed on the WebThread, and
dereferenced on the main thread. However, the reason we use a WeakPtr for this call is a long-
since fixed bug in AVFoundation. We can just remove the WeakPtr and rely on AVFoundation to
not call our block after the observer has been removed in the destructor.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):

2:14 PM Changeset in webkit [277121] by Russell Epstein
  • 2 edits in branches/safari-611.2.7.0-branch/Source/WebKit

Cherry-pick r277114. rdar://problem/77623232

Fix crash when WebsiteDataStore is destroyed with outstanding getNetworkProcessConnection request
https://bugs.webkit.org/show_bug.cgi?id=225478
<rdar://77576148>

Reviewed by Chris Dumez.

In WebsiteDataStore::getNetworkProcessConnection if we don't get a connection the first time, we terminate the network process
and try again. This greatly increases our success rate. However, if we are cancelling the reply because of the destruction
of the WebsiteDataStore, we will end up doing bad things with partially destroyed objects, which ends up crashing.
In order to prevent this, use RunLoop::main.dispatch to retry on the next runloop iteration so that we will never be inside the
stack of WebsiteDataStore::~WebsiteDataStore when retrying. In that case, we will find that weakThis is null and send an empty
reply.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::getNetworkProcessConnection):

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

2:14 PM Changeset in webkit [277120] by Russell Epstein
  • 2 edits in branches/safari-611.2.7.0-branch/Source/WebKit

Cherry-pick r276671. rdar://problem/77620826

HashTableConstIterator's consistency assertion fails while closing m_webIDBServers in NetworkProcess::didClose since r275846
https://bugs.webkit.org/show_bug.cgi?id=225089

Reviewed by Chris Dumez.

The items of m_webIDBServers were removed while iterating
m_webIDBServers.

Move m_webIDBServers to a temporary HashMap before iterating.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::didClose):

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

2:01 PM Changeset in webkit [277119] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

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

I'm adjusting the expectations to specify that
imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.https.html
doesn't resolve as a failure.

  • platform/glib/TestExpectations:
1:55 PM Changeset in webkit [277118] by fpizlo@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Make some things easier to dataLog in wasm
https://bugs.webkit.org/show_bug.cgi?id=225472

Reviewed by Yusuke Suzuki.

  • wasm/WasmMemoryMode.cpp:

(WTF::printInternal):

  • wasm/WasmMemoryMode.h:
  • wasm/WasmWorklist.cpp:

(JSC::Wasm::Worklist::dump const):

  • wasm/WasmWorklist.h:
1:54 PM Changeset in webkit [277117] by fpizlo@apple.com
  • 14 edits in trunk/Source

Reduce use of dmb ish on ARM64
https://bugs.webkit.org/show_bug.cgi?id=225465

Reviewed by Keith Miller.
Source/JavaScriptCore:


We use loadLoadFence a lot, often in situations like:

Foo* ptr = loadStuff;
loadLoadFence();
use ptr

On ARM64, we don't need a dmb ish here. This introduces a dependentLoadLoadFence() for these
cases; it's just a compiler fence on ARM64 and Intel.

We also used loadLoadFence in some places where I couldn't think of any good reason for the
fence other than paranoia. I got rid of those.

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFromCallLinkInfo):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::jitType const):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfileBase::structure):
(JSC::ObjectAllocationProfileWithPrototype::prototype):

  • bytecode/Watchpoint.h:

(JSC::WatchpointSet::state const):
(JSC::InlineWatchpointSet::state const):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnString):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):

  • runtime/GetterSetter.h:
  • runtime/InferredValue.h:

(JSC::InferredValue::state const):

  • runtime/Structure.h:

(JSC::Structure::tryRareData):

  • runtime/StructureInlines.h:

(JSC::Structure::propertyReplacementWatchpointSet):

Source/WTF:

  • wtf/Atomics.h:

(WTF::dependentLoadLoadFence):

1:49 PM Changeset in webkit [277116] by eric.carlson@apple.com
  • 13 edits in trunk/Source

[GPUP] Reduce MediaPlayer polling frequency when possible
https://bugs.webkit.org/show_bug.cgi?id=225396
<rdar://problem/77562643>

Reviewed by Jer Noble.

Source/WebCore:

Add a currentTime changed callback to MediaPlayerPrivateInterface so a client
doens't have to poll for time changes.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::setCurrentTimeDidChangeCallback):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::setCurrentTimeDidChangeCallback):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTimeDidChangeCallback):
(WebCore::MediaPlayerPrivateAVFoundationObjC::currentMediaTimeDidChange const):

Source/WebKit:

When the MediaPlayerPrivate supports the new "current time changed" callback, use it
know when currentTime changes instead of polling at a fixed frequency. Current time
changes much more frequently than the other state that needs to be pushed to the
web process periodically so split current time out of the "cached state" struct
and push it separately when it changes, which also allow us to reduce the polling
frequency significantly.

Some of the state we were updating every time the cached state timer fired only
changes at known times, so reduce the number of things updated every time state
is pushed.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::getConfiguration): Set the timeChanged callback.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerNetworkStateChanged): Update cached
readyState and networkState since they aren't updated by updateCachedState.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerReadyStateChanged): Ditto.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDurationChanged): Update cached duration.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerCharacteristicChanged): Update hasAudio
and hasVideo.
(WebKit::RemoteMediaPlayerProxy::startUpdateCachedStateMessageTimer): Decrease the
time frequency to 200ms when the player supports the time change callback. Decrease
it to 250ms even when it doesn't because we interpolate time in the WP anyway.
(WebKit::RemoteMediaPlayerProxy::currentTimeChanged): Send the time change.
(WebKit::RemoteMediaPlayerProxy::updateCachedState): Send CurrentTimeChanged if
the player doesn't support the new callback. Don't update properties that change
at predictable times.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::pause): Use m_cachedMediaTime and m_cachedMediaTimeQueryTime
instead of m_cachedState.currentTime and m_cachedState.timestamp.
(WebKit::MediaPlayerPrivateRemote::currentMediaTime const): Ditto.
(WebKit::MediaPlayerPrivateRemote::playbackStateChanged): Ditto.
(WebKit::MediaPlayerPrivateRemote::currentTimeChanged): Update time instance variables.
(WebKit::MediaPlayerPrivateRemote::updateCachedState):
(WebKit::MediaPlayerPrivateRemote::performTaskAtMediaTime): Use m_cachedMediaTime
and m_cachedMediaTimeQueryTime instead of m_cachedState.currentTime and m_cachedState.timestamp.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in:
  • WebProcess/GPU/media/RemoteMediaPlayerState.h:

(WebKit::RemoteMediaPlayerState::encode const): Remove currentTime and timestamp.
(WebKit::RemoteMediaPlayerState::decode): Ditto.

1:42 PM Changeset in webkit [277115] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkit-patch] setup-git-clone uses master instead of main
https://bugs.webkit.org/show_bug.cgi?id=225460
<rdar://problem/77616439>

Reviewed by Aakash Jain.

  • Scripts/webkitpy/tool/commands/setupgitclone.py:

(SetupGitClone.execute): Pair the remote branch ref with the Svn remote.

1:40 PM Changeset in webkit [277114] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix crash when WebsiteDataStore is destroyed with outstanding getNetworkProcessConnection request
https://bugs.webkit.org/show_bug.cgi?id=225478
<rdar://77576148>

Reviewed by Chris Dumez.

In WebsiteDataStore::getNetworkProcessConnection if we don't get a connection the first time, we terminate the network process
and try again. This greatly increases our success rate. However, if we are cancelling the reply because of the destruction
of the WebsiteDataStore, we will end up doing bad things with partially destroyed objects, which ends up crashing.
In order to prevent this, use RunLoop::main.dispatch to retry on the next runloop iteration so that we will never be inside the
stack of WebsiteDataStore::~WebsiteDataStore when retrying. In that case, we will find that weakThis is null and send an empty
reply.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::getNetworkProcessConnection):

1:26 PM Changeset in webkit [277113] by Chris Dumez
  • 2 edits in trunk/Tools

Add API test for FileSystem::fileExists() on a broken symbolic link
https://bugs.webkit.org/show_bug.cgi?id=225476

Reviewed by Darin Adler.

Add API test for FileSystem::fileExists() on a broken symbolic link since this is a special
case. FileSystem::fileExists() currently tries to follow symbolic links and will thus return
false. The behavior is a little odd but I have verified that this is what our access()-based
implementation was returning also before I ported FileSystem::fileExists() to std::filesystem.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):

1:11 PM Changeset in webkit [277112] by graouts@webkit.org
  • 14 edits
    2 adds in trunk

CSS custom properties on pseudo elements background gradients causes infinite layout and high CPU load
https://bugs.webkit.org/show_bug.cgi?id=194332
<rdar://problem/47873895>

Reviewed by Simon Fraser.

Source/WebCore:

When a background-image uses a CSS custom property the resulting StyleGeneratedImage may not be the same
object as during prior style updates. This caused transitions to be triggered for all style updates for
such background-image values. To fix this, we modify the == operator for StyleGeneratedImage to use
arePointingToEqualData() with the CSSImageGeneratorValue member and added an == operator for the
CSSImageGeneratorValue class to call into the existing equals() methods. These equals() methods
are now overrides of the virtual CSSImageGeneratorValue method.

This change in behavior required a change in RenderElement::updateFillImages() to not only check whether
the images were identical, but to also check whether the renderer was registered as a client on the new
images. To do this, we add a new virtual hasClient() method on StyleImage.

Test: webanimations/css-transition-element-with-gradient-background-image-and-css-custom-property.html

  • css/CSSImageGeneratorValue.cpp:

(WebCore::CSSImageGeneratorValue::operator== const):

  • css/CSSImageGeneratorValue.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::updateFillImages):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::imagesIdentical): Deleted.

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

(WebCore::StyleCachedImage::hasClient const):

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

(WebCore::StyleGeneratedImage::operator== const):
(WebCore::StyleGeneratedImage::hasClient const):

  • rendering/style/StyleGeneratedImage.h:
  • rendering/style/StyleImage.h:
  • rendering/style/StyleMultiImage.cpp:

(WebCore::StyleMultiImage::hasClient const):

  • rendering/style/StyleMultiImage.h:

LayoutTests:

Add a test where an element with a background-image set to a CSS gradient using a custom property as a color
stop changes another property targeted by a transition to check that there is no background-image transition
generated.

  • webanimations/css-transition-element-with-gradient-background-image-and-css-custom-property-expected.txt: Added.
  • webanimations/css-transition-element-with-gradient-background-image-and-css-custom-property.html: Added.
12:42 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
12:41 PM Changeset in webkit [277111] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r277100 - [WebAudio][GStreamer] socketpair leaks
https://bugs.webkit.org/show_bug.cgi?id=225463

Reviewed by Žan Doberšek.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): Properly dispose of
the GStreamer pipeline and the resources it has hold on.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcChangeState): The ref returned by gst_buffer_pool_new() is transfer-full,
so we need to adopt it here.

12:41 PM Changeset in webkit [277110] by fpizlo@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

It should be possible to --logJIT=true
https://bugs.webkit.org/show_bug.cgi?id=225464

Reviewed by Mark Lam.

This makes it easy to just log when JITing happens. It's like --dumpDisassembly=true but
without the disassembly.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::finalizeCodeWithDisassemblyImpl):

  • assembler/LinkBuffer.h:
  • runtime/Options.cpp:

(JSC::Options::recomputeDependentOptions):

  • runtime/OptionsList.h:
12:40 PM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
12:29 PM Changeset in webkit [277109] by Ruben Turcios
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.4

12:24 PM Changeset in webkit [277108] by Russell Epstein
  • 2 edits in branches/safari-611.2.7.0-branch/Source/WebKit

Apply patch. rdar://problem/77619719

12:21 PM Changeset in webkit [277107] by Russell Epstein
  • 8 edits in branches/safari-611.2.7.0-branch/Source

Versioning.

WebKit-7611.2.7.0.3

12:09 PM Changeset in webkit [277106] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebKit

Drop some unnecessary code in LocalStorageDatabase
https://bugs.webkit.org/show_bug.cgi?id=225435

Reviewed by Chris Dumez.

No behavior change.

  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::create):
(WebKit::LocalStorageDatabase::LocalStorageDatabase): Remove two paremeters that are no longer needed after
dropping code.
(WebKit::LocalStorageDatabase::openDatabase):
(WebKit::LocalStorageDatabase::migrateItemTableIfNeeded): SQLiteTransaction() by default sets readOnly to false,
and it will be rolled back for failure in ~SQLiteTransaction.
(WebKit::LocalStorageDatabase::close):
(WebKit::LocalStorageDatabase::tryToOpenDatabase): Deleted. Merged to openDatabase.

  • NetworkProcess/WebStorage/LocalStorageDatabase.h:
  • NetworkProcess/WebStorage/StorageArea.cpp:

(WebKit::StorageArea::ensureDatabase const):

11:58 AM Changeset in webkit [277105] by fpizlo@apple.com
  • 3 edits in trunk/Tools

Make it easy to pass XPC variables to run-benchmark
https://bugs.webkit.org/show_bug.cgi?id=225473

Reviewed by Stephanie Lewis.

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:

(OSXSafariDriver.launch_url):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py:

(config_argument_parser):

11:40 AM Changeset in webkit [277104] by pvollan@apple.com
  • 6 edits in trunk/Source

Add sandbox extension flag to specify that path contains no symlinks
https://bugs.webkit.org/show_bug.cgi?id=219428
<rdar://problem/66551986>

Reviewed by Brent Fulgham.

Source/WebKit:

In general, when SandboxExtension::createHandleWithoutResolvingPath is called, it is assumed that there are no symlinks
in the provided path. Add a 'canonical' flag, which can be used by platform APIs to verify that this is the case. This
patch also stops resolving symlinks with [NSString stringByResolvingSymlinksInPath] in favor of realpath, since realpath
correcly replaces /var with /private/var, which [NSString stringByResolvingSymlinksInPath] does not.

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtensionImpl::sandboxExtensionForType):
(WebKit::stringByResolvingSymlinksInPath):
(WebKit::SandboxExtension::createHandleWithoutResolvingPath):

  • Shared/SandboxExtension.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::webProcessDataStoreParameters):

Source/WTF:

Declare canonical sandbox flag.

  • wtf/spi/darwin/SandboxSPI.h:
11:34 AM Changeset in webkit [277103] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

EWS bubbles should show current status after pressing 'Retry failed builds' button
https://bugs.webkit.org/show_bug.cgi?id=225411

Reviewed by Jonathan Bedard.

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

(StatusBubble._build_bubble):

11:32 AM Changeset in webkit [277102] by Jonathan Bedard
  • 16 edits in trunk/Tools

[webkitcorepy] Add API to efficiently create a sequence of commits
https://bugs.webkit.org/show_bug.cgi?id=224890
<rdar://problem/76975733>

Rubber-stamped by Aakash Jain.

While it is possible to simple iterate through a range of commits to define them,
every API we use to define commits has much more efficient techniques.

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

(Contributor): Add revision to SVN_AUTHOR_RE and add regex without lines.
(Contributor.from_scm_log): Strip leading whitespace from author.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git._args_from_content):
(Git.commits): Use git log to efficiently compute a range of commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn._args_from_content):
(Svn.commits): Use svn log to efficiently compute a range of commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add git log mock.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:

(Svn.init): Add svn log mock and more explicit svn info mock.
(Svn._log_range):

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub._commits_response): Return all parent commits to provided ref.
(GitHub.request):

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py:

(Svn.range): More efficiently compute the range.
(Svn.request):

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:

(GitHub.request): Allow caller to disable pagination.
(GitHub.commit): Reduce number of requests required to compute order.
(GitHub.commits): Using the commits endpoint, more efficiently
compute a range of commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:

(Svn): Generalize HISTORY_RE to match any single-line SVN XML response.
(Svn._cache_revisions): Replace HISTORY_RE with DATA_RE.
(Svn.commits): Use svn/rvr to efficiently compute a range of commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:

(ScmBase._commit_range): Return a pair of commits representing the range
the caller is requesting, and preform some basic sanity checks.
(ScmBase.commits): Declare function implemented by decedents.

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

(TestGit.test_commits):
(TestGit.test_commits_branch):
(TestGitHub.test_commits):
(TestGitHub.test_commits_branch):

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

(TestLocalSvn.test_commits):
(TestLocalSvn.test_commits_branch):
(TestRemoteSvn.test_commits):
(TestRemoteSvn.test_commits_branch):

10:20 AM Changeset in webkit [277101] by Chris Dumez
  • 2 edits in trunk/Tools

REGRESSION (r272414?): [macOS] TestWebKitAPI.GPUProcess.CrashWhilePlayingVideo is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=221742
<rdar://problem/74220428>

Reviewed by Youenn Fablet.

Check that video.currentTime is changing to determine if the video is playing, instead of
relying on [webView _isPlayingAudio]. Also use a test page with a single video element instead
of multiple. I am hoping this will make the test more reliable or at least shade some light on
why this is flaky.

  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

10:13 AM Changeset in webkit [277100] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[WebAudio][GStreamer] socketpair leaks
https://bugs.webkit.org/show_bug.cgi?id=225463

Reviewed by Žan Doberšek.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): Properly dispose of
the GStreamer pipeline and the resources it has hold on.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcChangeState): The ref returned by gst_buffer_pool_new() is transfer-full,
so we need to adopt it here.

10:05 AM Changeset in webkit [277099] by dino@apple.com
  • 7 edits in trunk/Source

[WebXR] Add IOSurface to FrameData::LayerData
https://bugs.webkit.org/show_bug.cgi?id=225428
<rdar://problem/77586270>

Reviewed by Tim Horton.

Source/WebCore:

Original patch by Ada Chan.

Cocoa platforms will use IOSurfaces on FrameData::LayerData.
Add this member, allow it to be encoded and decoded, and fix up
some places where we were copying a FrameData unnecessarily, or
where we have to explicitly copy.

  • Modules/webxr/WebXRSession.cpp:

(WebCore::WebXRSession::onFrame): Use WTFMove instead of copying.

  • platform/graphics/cocoa/IOSurface.h: Export createFromSurface.
  • platform/xr/PlatformXR.h:

(PlatformXR::Device::FrameData::LayerData::encode const):
(PlatformXR::Device::FrameData::LayerData::decode):
(PlatformXR::Device::FrameData::decode):
(PlatformXR::Device::FrameData::copy const):

  • testing/WebFakeXRDevice.cpp:

(WebCore::SimulatedXRDevice::frameTimerFired):

Source/WTF:

Add USE(IOSURFACE_FOR_XR_LAYER_DATA) and make it true
for Cocoa platforms.

  • wtf/PlatformUse.h:
9:57 AM Changeset in webkit [277098] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Update expectations after WPT re-import in r277073 and r277077.

  • platform/glib/TestExpectations:
9:54 AM Changeset in webkit [277097] by Wenson Hsieh
  • 13 edits
    2 adds in trunk

[iOS] UI process hangs when showing a modal JavaScript dialog while focusing an input field
https://bugs.webkit.org/show_bug.cgi?id=225409
rdar://76792407

Reviewed by Darin Adler, Chris Dumez and Tim Horton.

Source/WebKit:

Consider the scenario where an input field has a focus event handler that shows a modal JavaScript dialog (e.g.
confirm, alert, prompt). We get the following sequence of events in this scenario:

(WEB) The text field is focused, and sends WebPageProxy::ElementDidFocus. A modal dialog is then triggered by

script inside the focus event handler, sending a message like WebPageProxy::RunJavaScriptAlert.

(UI) The UI process receives WebPageProxy::ElementDidFocus, and calls -reloadInputViews while showing the

keyboard. UIKit may then call back into -requestAutocorrectionContextWithCompletionHandler:, which
triggers sync IPC back to the web process. While waiting to receive a response message, we receive and
dispatch WebPageProxy::RunJavaScriptAlert.

At this point, the UI process is still waiting for a HandleAutocorrectionContext response IPC message, but the
web process is blocked on a response to the modal JavaScript dialog; since both processes are blocked on each
other, we're now in deadlock.

To mitigate this, we can preemptively send autocorrection context data right before we're about to synchronously
block in the web process on a modal dialog. In the UI process, we use this autocorrection context object to
immediately stop syncwaiting for a HandleAutocorrectionContext response. See below for more details.

Test: fast/events/ios/show-modal-alert-during-focus.html

  • Platform/IPC/Connection.cpp:

(IPC::Connection::SyncMessageState::dispatchMessages):
(IPC::Connection::waitForMessage):

Make a slight adjustment here so that waitForMessage bails if one of the messages we're dispatching underneath
SyncMessageState::dispatchMessages is the message we happen to be waiting for anyways. In this case, it's
necessary in order for the preemptive WebPageProxy::HandleAutocorrectionContext message sent by the web
process to unblock the UI process, which is waiting for a WebPageProxy::HandleAutocorrectionContext response.

  • UIProcess/PageClient.h:

(WebKit::PageClient::runModalJavaScriptDialog):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runModalJavaScriptDialog):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):

Wrap calls to runJavaScript(Alert|Confirm|Prompt) underneath a new page client method that takes a block,
runModalJavaScriptDialog. See -[WKContentView runModalJavaScriptDialog:] below for more details.

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

(WebKit::PageClientImpl::runModalJavaScriptDialog):

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

(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

Avoid blocking on the web process if it's waiting on a modal JavaScript dialog anyways; just use the last
autocorrection context we received from the web process (which we know must've been sent right before showing
the modal dialog anyways).

(-[WKContentView runModalJavaScriptDialog:]):

In the case where we're in the process of presenting the keyboard (or UCB) on iOS after focusing an input field,
avoid immediately allowing the client to show any modal UI until we're done managing keyboard logic in WebKit.
Without this adjustment, we'll end up trying to present the modal JavaScript dialog in the middle of UIKit's
call to -requestAutocorrectionContextWithCompletionHandler:, which then causes UIKit to throw an exception
underneath keyboard code.

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::prepareToRunModalJavaScriptDialog):

Add logic to preemptively compute and send WebAutocorrectionContext data to the UI process on iOS, in the case
where we're about to show a modal JavaScript dialog and there is an editable focused element. While the modal
dialog is shown, we'll use this information to immediately respond to UIKit's autocorrection context requests,
instead of trying to block on responses from the web process.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestAutocorrectionContext):
(WebKit::WebPage::prepareToRunModalJavaScriptDialog):

LayoutTests:

Add a layout test that exercises the deadlock. In the case where we fail, this test will time out.

  • fast/events/ios/show-modal-alert-during-focus-expected.txt: Added.
  • fast/events/ios/show-modal-alert-during-focus.html: Added.
9:35 AM Changeset in webkit [277096] by Diego Pino Garcia
  • 1 edit
    3 adds in trunk/LayoutTests

[GTK][WPE] Unreviewed test gardening. Emit platform baselines after r277071.

Platform baselines are needed because platforms have different values
for screen resolution sizes, which are referred in the test results.

  • platform/gtk/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt: Added.
9:23 AM Changeset in webkit [277095] by aboya@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE][GStreamer] Remove webKitMediaSrcFinalize
https://bugs.webkit.org/show_bug.cgi?id=225458

Reviewed by Philippe Normand.

webKitMediaSrcFinalize was no longer necessary after moving to
WEBKIT_DEFINE_TYPE as requested by the reviewers. This patch cleans
that up.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webkit_media_src_class_init):
(webKitMediaSrcFinalize): Deleted.

9:22 AM Changeset in webkit [277094] by mark.lam@apple.com
  • 8 edits
    1 add in trunk

Forbid further execution in jsc shell if execution is terminated.
https://bugs.webkit.org/show_bug.cgi?id=225410
rdar://77548608

Reviewed by Michael Saboff.

JSTests:

  • stress/jsc-shell-forbid-execution-after-termination.js: Added.

Source/JavaScriptCore:

  1. Introduce a VM::m_executionForbidden flag.
  2. In the jsc shell, forbid further execution if termination was encountered.
  • jsc.cpp:

(runWithOptions):

  • runtime/VM.cpp:

(JSC::VM::drainMicrotasks):

  • runtime/VM.h:

(JSC::VM::executionForbidden const):
(JSC::VM::setExecutionForbidden):

Source/WebCore:

Re-implement WorkerOrWorkletScriptController::forbidExecution() and
isExecutionForbidden() using the VM's notion of the flag

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::forbidExecution):
(WebCore::WorkerOrWorkletScriptController::isExecutionForbidden const):

  • workers/WorkerOrWorkletScriptController.h:
9:08 AM Changeset in webkit [277093] by Darin Adler
  • 22 edits in trunk

Streamline codec parsing, replacing uses of HashMap with SortedArrayMap
https://bugs.webkit.org/show_bug.cgi?id=225368

Reviewed by Sam Weinig.

Source/WebCore:

  • platform/ContentType.cpp:

(WebCore::ContentType::parameter const): Use early return instead of nesting.
Strip HTML spaces, not all whitespace, and do it only once rather than twice.
Fixed a small bug where we search for the second quotation mark in a way that
could find the same quotation mark twice if there is a space before the first
one. Added FIXME comments about a few obvious problems in the parsing algorithm.
Improved efficiency by using StringView, saving the allocation of one temporary
StringImpl in the case where we have some HTML spaces to strip.
(WebCore::ContentType::containerType const): Simplified the implemementation
by taking advantage of the fact that our notFound value is designed to be used
as an argument to functions like String::left, telling them to return the
entire string. Strip HTML spaces, not all whitespace.

  • platform/graphics/HEVCUtilities.cpp:

(WebCore::parseHEVCCodecParameters): Take a StringView instead of a String
for greater flexibility and efficiency. Don't store codecName, which is
never used after verifying that it is a legal value here. Don't store the
generalTierFlag, which is never used after verifying that it is a legal
value here. Don't store the constraint flags, which are never used after
verifying that they are legal values here.
(WebCore::makeOptionalFromPointer): Added to make code below cleaner.
(WebCore::parseDoViCodecType): Renamed from codecStringForDoViCodecType
since it now returns an enumeration value instead of a string. Also
take a StringView instead of a String for greater flexibility and efficiency.
Also use a SortedArrayMap instead of a MemoryCompactLookupOnlyRobinHoodHashMap.
(WebCore::profileIDForAlphabeticDoViProfile): Take a StringView instead of
a String for greater flexibility and efficiency. Use a SortedArrayMap instead
of a MemoryCompactLookupOnlyRobinHoodHashMap.
(WebCore::isValidProfileIDForCodec): Take a codec enumeration value parameter
instead of a string.
(WebCore::parseDoViCodecParameters): Take a StringView instead of a String
for greater flexibility and efficiency. Store the codec as an enumeration
instead of a String. Don't create a temporary String just so we can call the
profileIDForAlphabeticDoViProfile function.

  • platform/graphics/HEVCUtilities.h: Renamed HEVCParameterSet and

DoViParameterSet to HEVCParameters and DoViParameters. The word "set" is not
helpful in these names. Removed codecName, generalTierFlag, and constraintFlags
from HEVCParameterSet. Changed the parse functions to take StringView instead
of String. Replaced the string codecName in DoViParameterSet with an enumeration
since there are only a few valid values.

  • platform/graphics/cocoa/HEVCUtilitiesCocoa.h: Use Optional return value

instead of a bool and an out argument.

  • platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:

(WebCore::validateHEVCParameters): Updated to return Optional.
(WebCore::codecType): Updated to take an enumeration value and no longer
need to return an optional. Also renamed from codecTypeForDoViCodecString
since the type now makes this clear without a long function name.
(WebCore::parseStringArrayFromDictionaryToUInt16Vector): Renamed from
CFStringArrayToNumberVector, and moved the dictionary lookup in here.
The old name was a little vague; "NumberVector" doesn't say 16-bit unsigned.
Simplified code by using an Objective-C for loop instead of a block and
enumeration. This cut the size of the function down quite a bit.
(WebCore::validateDoViParameters): Updated to return Optional. Also
refactored to use the imrpoved helper functions above.

  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:

(WebCore::videoCodecTypeFromRFC4281Type): Take a StringView instead of a String
for greater flexibility and efficiency.
(WebCore::computeMediaCapabilitiesInfo): Factored out this helper function
so we don't have such complicated callback logic. Refactored to use the new
versions of validateHEVCParameters, validateDoViParameters, and
validateVPParameters.
(WebCore::createMediaPlayerDecodingConfigurationCocoa): Moved most of the
code into computeMediaCapabilitiesInfo; this mostly deals with the callback.

  • platform/graphics/cocoa/VP9UtilitiesCocoa.h: Removed extraneous use of extern.

Added const for input-only reference arguments. Changed validateVPParameters to
return Optional instead of a bool with an out argument.

  • platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::isVP9CodecConfigurationRecordSupported): Added const.
(WebCore::isVP8CodecConfigurationRecordSupported): Ditto.
(WebCore::isVPCodecConfigurationRecordSupported): Ditto.
(WebCore::validateVPParameters): Refactored to return Optional.

  • platform/network/HTTPHeaderMap.h: Removed unneeded includes.
  • platform/text/LocaleToScriptMapping.cpp: Moved PackedASCIILowerCodes from

here into the SortedArrayMap.h header.

  • testing/Internals.cpp:

(WebCore::Internals::parseHEVCCodecParameters): Tweaked since HEVCParameterSet
is now only the correct name here in the Internals class.
(WebCore::Internals::parseDoViCodecParameters): Ditto. Also added code to
expose the codec enumeration as a string. This is now a testing-only thing.
(WebCore::Internals::parseVPCodecParameters): Ditto.

  • testing/Internals.h: Tweaked the ParameterSet types since they now don't

exactly match the structures used in the real code.

  • testing/Internals.idl: Removed codecName, generalTierFlag, and

constraintFlags from HEVCParameterSet. Neither codecName nor constraintFlags
was used in any test. And the generalTierFlag test was something we can
do without; the parsed value isn't actually used in any WebKit code.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

Removed unneeded include.

  • Shared/WebsiteData/WebsiteData.h: Ditto.

Source/WTF:

  • wtf/SortedArrayMap.h: Moved PackedASCIILowerCodes here for reuse.

Slightly tweaked ComparableASCIISubsetLiteral to match better.

LayoutTests:

  • media/hevc-codec-parameters-expected.txt: Remove testing of generalTierFlag, which is ignored

by our actual media code after parsing.

  • media/hevc-codec-parameters.html: Ditto.
8:47 AM Changeset in webkit [277092] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix missing exception check in objectConstructorGetOwnPropertyDescriptors().
https://bugs.webkit.org/show_bug.cgi?id=225413
rdar://77551530

Reviewed by Michael Saboff.

Need to handle TerminationException.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptors):

8:34 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
8:30 AM Changeset in webkit [277091] by ntim@apple.com
  • 26 edits
    43 adds
    2 deletes in trunk/LayoutTests

Re-import css/css-fonts WPT
https://bugs.webkit.org/show_bug.cgi?id=225455

Reviewed by Simon Fraser.

Base commit: https://github.com/web-platform-tests/wpt/commit/c4c81d21b9d606bedd0adb8f72bd0ecf15740e3e

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-font-loading/fontface-override-descriptor-getter-setter.sub-expected.txt: Added.
  • web-platform-tests/css/css-fonts/ascent-descent-override-expected.html: Added.
  • web-platform-tests/css/css-fonts/ascent-descent-override.html: Added.
  • web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print-expected.html: Added.
  • web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print.html: Added.
  • web-platform-tests/css/css-fonts/downloadable-font-print-expected.html: Added.
  • web-platform-tests/css/css-fonts/downloadable-font-print.html: Added.
  • web-platform-tests/css/css-fonts/fallback-url-to-local-expected.txt: Added.
  • web-platform-tests/css/css-fonts/fallback-url-to-local.html: Added.
  • web-platform-tests/css/css-fonts/font-display/font-display-expected.html:
  • web-platform-tests/css/css-fonts/font-display/font-display.html:
  • web-platform-tests/css/css-fonts/font-face-range-order.html:
  • web-platform-tests/css/css-fonts/font-feature-resolution-001-expected.html:
  • web-platform-tests/css/css-fonts/font-feature-resolution-001.html:
  • web-platform-tests/css/css-fonts/font-feature-resolution-002-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-feature-resolution-002.html: Added.
  • web-platform-tests/css/css-fonts/font-size-adjust-zero-1-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-size-adjust-zero-1.html: Added.
  • web-platform-tests/css/css-fonts/font-size-adjust-zero-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-size-adjust-zero-2.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-1-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-1-notref.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-1-ref-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-1-ref.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-1.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-2-expected.html: Added.
  • web-platform-tests/css/css-fonts/font-size-zero-2.html: Added.
  • web-platform-tests/css/css-fonts/line-gap-override-expected.html: Added.
  • web-platform-tests/css/css-fonts/line-gap-override.html: Added.
  • web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html:
  • web-platform-tests/css/css-fonts/metrics-override-normal-keyword-expected.html: Added.
  • web-platform-tests/css/css-fonts/metrics-override-normal-keyword.html: Added.
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-computed-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-computed.html:
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-invalid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-invalid.html:
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-valid-expected.txt:
  • web-platform-tests/css/css-fonts/parsing/font-variation-settings-valid.html:
  • web-platform-tests/css/css-fonts/rem-in-monospace-expected.html: Added.
  • web-platform-tests/css/css-fonts/rem-in-monospace.html: Added.
  • web-platform-tests/css/css-fonts/resources/markA.ttf: Added.
  • web-platform-tests/css/css-fonts/resources/markB.ttf: Added.
  • web-platform-tests/css/css-fonts/resources/w3c-import.log: Added.
  • web-platform-tests/css/css-fonts/size-adjust-01-expected.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust-01.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust-02-expected.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust-02.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust-text-decoration.tentative-expected.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust-text-decoration.tentative.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust.tentative-expected.html: Added.
  • web-platform-tests/css/css-fonts/size-adjust.tentative.html: Added.
  • web-platform-tests/css/css-fonts/support/fonts/Lato-Medium-Liga.ttf: Added.
  • web-platform-tests/css/css-fonts/support/fonts/w3c-import.log:
  • web-platform-tests/css/css-fonts/variations/at-font-face-font-matching.html:
  • web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html:
  • web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing-expected.txt: Removed.
  • web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing.html: Removed.
  • web-platform-tests/css/css-fonts/variations/variable-opsz-size-adjust-expected.html: Added.
  • web-platform-tests/css/css-fonts/variations/variable-opsz-size-adjust.html: Added.
  • web-platform-tests/css/css-fonts/variations/w3c-import.log:
  • web-platform-tests/css/css-fonts/w3c-import.log:

LayoutTests:

  • TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative-expected.txt:
8:30 AM Changeset in webkit [277090] by Adrian Perez de Castro
  • 3 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r277088 - [GStreamer] Fallback to texture mapper video orientation handling when glvideoflip is not available
https://bugs.webkit.org/show_bug.cgi?id=225454

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

r275412 introduced a new runtime dependency on gst-plugins-good's glvideoflip element, which
is not desirable for the 2.32 branch. This patch let's the player handle rotation tags if
the glvideoflip element wasn't found at runtime. Ideally we should probably not rely on
glvideoflip in the first place as it might induce a performance impact, to be handled in a
follow-up patch.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

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

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

8:24 AM Changeset in webkit [277089] by Sam Sneddon
  • 5 edits in trunk/Tools

mark all SCM tests using SVN as slow, a couple as xfail; enable SCM
https://bugs.webkit.org/show_bug.cgi?id=225156

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SVNTest): Mark all tests with @slow
(GitSVNTest): Mark all tests with @slow

  • Scripts/webkitpy/conftest.py:

(pytest_configure): Define the "slow" marker
(pytest_addoption): Add --run-slow to opt-in
(pytest_collection_modifyitems): Implement --run-slow

  • Scripts/webkitpy/pytest.ini: remove "not scm_unitest"
  • Scripts/webkitpy/test/markers.py:

(slow): add our own wrapper around the pytest mark function

8:06 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
8:04 AM Changeset in webkit [277088] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer] Fallback to texture mapper video orientation handling when glvideoflip is not available
https://bugs.webkit.org/show_bug.cgi?id=225454

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

r275412 introduced a new runtime dependency on gst-plugins-good's glvideoflip element, which
is not desirable for the 2.32 branch. This patch let's the player handle rotation tags if
the glvideoflip element wasn't found at runtime. Ideally we should probably not rely on
glvideoflip in the first place as it might induce a performance impact, to be handled in a
follow-up patch.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

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

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

7:52 AM Changeset in webkit [277087] by Chris Dumez
  • 6 edits in trunk

imported/w3c/web-platform-tests/eventsource/format-utf-8.htm is failing on some platforms
https://bugs.webkit.org/show_bug.cgi?id=225416
<rdar://77529801>

Reviewed by Youenn Fablet.

Source/WebCore:

The HTML specification [1] states that EventSource streams should always be decoded as UTF-8.
However, we had logic in WebKit that was checking the charset of the response and aborting
when the charset is not UTF-8. It looks like we were lucky until now that we would fail to
determine the charset of the response and proceed anyway. However, due to underlying system
changes, in the context of this test, we are now properly detecting the response charset as
"windows-1252" and (incorrectly) aborting. To address the issue, I no longer abort the
connection if the charset is not "utf-8". We do still log a console warning but we proceed
decoding the stream as UTF-8 no matter the response's charset, as per the specification.

[1] https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation

No new tests, covered by existing test that is failing on some platforms.

  • page/EventSource.cpp:

(WebCore::EventSource::responseIsValid const):

LayoutTests:

Dump JS Console messages to stderr for this test as it will only get logged on some
platforms.

7:51 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
6:59 AM Changeset in webkit [277086] by ntim@apple.com
  • 66 edits
    7 copies
    29 adds in trunk/LayoutTests

Re-import css/css-flexbox WPT
https://bugs.webkit.org/show_bug.cgi?id=225450

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-flexbox/align-items-baseline-overflow-non-visible-expected.html:
  • web-platform-tests/css/css-flexbox/align-items-baseline-overflow-non-visible.html:
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-001-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-001.html: Added.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-002-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-002.html: Added.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-003-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-003.html: Added.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-004-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-004.html: Added.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-005-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-005.html: Added.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-006-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/aspect-ratio-intrinsic-size-006.html: Added.
  • web-platform-tests/css/css-flexbox/flex-item-compressible-001.html:
  • web-platform-tests/css/css-flexbox/flex-item-compressible-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-001a-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-001b-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-006-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-007-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-baseline-horiz-008-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-001-block-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-001-table-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-003-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-align-self-horiz-004-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-align-self-baseline-horiz-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-align-self-baseline-vert-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001a.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-horiz-001b.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001a.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-item-vert-001b.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-001.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-001-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-001.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003a.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-003b.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004a-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004a.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004b-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-flex-basis-content-004b.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-002-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-002.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-003-expected.html:
  • web-platform-tests/css/css-flexbox/flexbox-items-as-stacking-contexts-003.html:
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-horiz-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-justify-content-vert-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-mbp-horiz-004-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-mbp-horiz-004.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-overflow-padding-001-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/flexbox-overflow-padding-001.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox-overflow-padding-002-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/flexbox-overflow-padding-002.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox-paint-ordering-002-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-paint-ordering-002.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox-table-fixup-001-expected.xhtml:
  • web-platform-tests/css/css-flexbox/flexbox_align-items-center-3-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html.
  • web-platform-tests/css/css-flexbox/flexbox_align-items-center-3.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-001.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-002-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-left-002.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-001-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-001.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-002-expected.html: Added.
  • web-platform-tests/css/css-flexbox/flexbox_justifycontent-right-002.html: Added.
  • web-platform-tests/css/css-flexbox/negative-overflow-expected.txt:
  • web-platform-tests/css/css-flexbox/negative-overflow.html:
  • web-platform-tests/css/css-flexbox/overflow-auto-005-expected.html:
  • web-platform-tests/css/css-flexbox/overflow-auto-005.html:
  • web-platform-tests/css/css-flexbox/overflow-top-left-expected.html:
  • web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html:
  • web-platform-tests/css/css-flexbox/padding-overflow-crash.html:
  • web-platform-tests/css/css-flexbox/select-element-zero-height-001-expected.html:
  • web-platform-tests/css/css-flexbox/select-element-zero-height-001.html:
  • web-platform-tests/css/css-flexbox/table-as-item-min-content-height-1.tentative-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-min-content-height-1.tentative.html: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-min-content-height-2.tentative-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-min-content-height-2.tentative.html: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-min-height-1-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-min-height-1.html: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-stretch-cross-size-3.html:
  • web-platform-tests/css/css-flexbox/table-as-item-stretch-cross-size-4-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-stretch-cross-size-4.html: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-stretch-cross-size-5-expected.xht: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-stretch-cross-size-5.html: Added.
  • web-platform-tests/css/css-flexbox/w3c-import.log:

LayoutTests:

6:27 AM Changeset in webkit [277085] by ntim@apple.com
  • 5 edits
    14 adds in trunk/LayoutTests

Re-import css/css-display WPT
https://bugs.webkit.org/show_bug.cgi?id=225448

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-display/display-contents-dynamic-fieldset-legend-001-expected.html: Added.
  • web-platform-tests/css/css-display/display-contents-dynamic-fieldset-legend-001.html: Added.
  • web-platform-tests/css/css-display/display-contents-fieldset-002-expected.html: Added.
  • web-platform-tests/css/css-display/display-contents-fieldset-002.html: Added.
  • web-platform-tests/css/css-display/display-contents-slot-attach-whitespace-expected.html: Added.
  • web-platform-tests/css/css-display/display-contents-slot-attach-whitespace.html: Added.
  • web-platform-tests/css/css-display/display-first-line-001.html:
  • web-platform-tests/css/css-display/display-math-on-non-mathml-elements-expected.txt: Added.
  • web-platform-tests/css/css-display/display-math-on-non-mathml-elements.html: Added.
  • web-platform-tests/css/css-display/display-math-on-pseudo-elements-001-expected.txt: Added.
  • web-platform-tests/css/css-display/display-math-on-pseudo-elements-001.html: Added.
  • web-platform-tests/css/css-display/display-math-on-pseudo-elements-002-expected.html: Added.
  • web-platform-tests/css/css-display/display-math-on-pseudo-elements-002.html: Added.
  • web-platform-tests/css/css-display/textarea-display-expected.txt: Added.
  • web-platform-tests/css/css-display/textarea-display.html: Added.
  • web-platform-tests/css/css-display/w3c-import.log:

LayoutTests:

5:58 AM Changeset in webkit [277084] by ntim@apple.com
  • 8 edits
    7 adds in trunk/LayoutTests

Re-import css/css-contain WPT
https://bugs.webkit.org/show_bug.cgi?id=225445

Reviewed by Rob Buis.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-contain/content-visibility/animation-display-lock-expected.txt: Added.
  • web-platform-tests/css/css-contain/content-visibility/animation-display-lock.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-035.html:
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-044-expected.txt:
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-044.html:
  • web-platform-tests/css/css-contain/content-visibility/content-visibility-continuations-crash.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/element-reassigned-to-skipped-slot-expected.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/element-reassigned-to-skipped-slot.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/element-reassigned-to-slot-in-skipped-subtree-expected.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/element-reassigned-to-slot-in-skipped-subtree.html: Added.
  • web-platform-tests/css/css-contain/content-visibility/w3c-import.log:

LayoutTests:

5:11 AM Changeset in webkit [277083] by Martin Robinson
  • 15 edits in trunk/Source

[css-scroll-snap] Compute proximity information while snapping
https://bugs.webkit.org/show_bug.cgi?id=224326

Reviewed by Simon Fraser.

Source/WebCore:

Have ScrollSnapOffsetsInfo carry snap area rectangles instead of scroll offset
ranges. This allows proximity information to be handled during snap point selection.
The geometry will be used in a future patch to follow spec behavior for snap
areas that overflow the snapport and when handling masonry layouts.

No new tests. This is just a refactor. It should not change behavior at all.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::setStateScrollingNodeSnapOffsetsAsFloat): Pass in the new template argument.

  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::isNearEnoughToOffsetForProximity): Added.
(WebCore::closestSnapOffsetWithInfoAndAxis): Modified to take in the ScrollSnapOffsetsInfo data
structure and axis along with the viewport size. This function now explicitly determines if a
snap point is too far away to affect scrolling due to scroll-snap proximity.
(WebCore::updateSnapOffsetsForScrollableArea): Add snap areas and snap area indices to SnapOffset.
(WebCore::convertOffsetInfo): Instead of converting scroll offset ranges, convert the snap
area rectangles.
(WebCore::FloatScrollSnapOffsetsInfo::convertUnits const): Ditto.
(WebCore::LayoutScrollSnapOffsetsInfo::convertUnits const): Ditto.
(WebCore::LayoutScrollSnapOffsetsInfo::closestSnapOffset const): Updated to reflect new
internal function.
(WebCore::FloatScrollSnapOffsetsInfo::closestSnapOffset const): Ditto.

  • page/scrolling/ScrollSnapOffsetsInfo.h:

(WebCore::ScrollSnapOffsetsInfo::isEqual const): Update to reflect new mem ers.
(WebCore::ScrollSnapOffsetsInfo::offsetsForAxis const): Changed template parameter name.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::updateFromStateNode): ::convertUnits
takes a new template parameter.

  • page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp:

(WebCore::ScrollingTreeScrollingNodeDelegateNicosia::handleWheelEvent): Pass in viewport size.

  • platform/ScrollController.cpp:

(WebCore::ScrollController::setNearestScrollSnapIndexForAxisAndOffset): Ditto.
(WebCore::ScrollController::adjustScrollDestination): Ditto.

  • platform/ScrollSnapAnimatorState.cpp:

(WebCore::ScrollSnapAnimatorState::setupAnimationForState): Ditto.
(WebCore::ScrollSnapAnimatorState::targetOffsetForStartOffset const): Ditto.
(WebCore::operator<<): No longer print snap offset ranges.

  • platform/ScrollSnapAnimatorState.h: Remove references to snap offset ranges.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<SnapOffset<float>>::encode): Add the snap area index to the encoded arguments.
(ArgumentCoder<SnapOffset<float>>::decode): Add the snap area index to the decoded arguments.
(ArgumentCoder<FloatScrollSnapOffsetsInfo>::encode): No longer encode ranges, but encode snap areas.
(ArgumentCoder<FloatScrollSnapOffsetsInfo>::decode): Ditto for decode.

  • Shared/WebCoreArgumentCoders.cpp: Remove code dealing with scroll offset ranges.
  • Shared/WebCoreArgumentCoders.h: Ditto.
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::closestSnapOffsetForMainFrameScrolling const): Pass
in viewport size to closestSnapOffset which is necessary for calculating proximity.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(-[WKScrollingNodeScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset:]): Ditto.

5:07 AM Changeset in webkit [277082] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

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

This test was fixed by the WebKitMediaSrc rework in r277031,
rebaselined it.

  • platform/glib/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.https-expected.txt:
4:25 AM Changeset in webkit [277081] by ntim@apple.com
  • 4 edits
    2 moves
    50 adds
    4 deletes in trunk/LayoutTests

Re-import css/css-will-change WPTs
https://bugs.webkit.org/show_bug.cgi?id=225444

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-will-change/w3c-import.log:
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-contain-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-contain-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-filter-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-filter-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-height-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-height-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-offset-path-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-offset-path-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-perspective-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-perspective-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-position-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-position-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-transform-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-transform-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-transform-style-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-transform-style-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-translate-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-fixpos-cb-translate-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-001-expected.html: Removed.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-001.html: Removed.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-002-expected.html: Removed.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-003-expected.html: Removed.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-backdrop-filter-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-backdrop-filter-1.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-will-change/will-change-stacking-context-002.html.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-clip-path-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-clip-path-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-filter-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-filter-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-height-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-height-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-isolation-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-isolation-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-mask-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-mask-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-mix-blend-mode-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-mix-blend-mode-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-offset-path-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-offset-path-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-opacity-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-opacity-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-opacity-2-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-opacity-2.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-will-change/will-change-stacking-context-003.html.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-perspective-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-perspective-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-position-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-position-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-transform-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-transform-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-transform-style-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-transform-style-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-translate-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-translate-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-z-index-1-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-stacking-context-z-index-1.html: Added.
  • web-platform-tests/css/css-will-change/will-change-transform-huge-offset-scrolled-expected.html: Added.
  • web-platform-tests/css/css-will-change/will-change-transform-huge-offset-scrolled.html: Added.

LayoutTests:

4:11 AM Changeset in webkit [277080] by Philippe Normand
  • 9 edits in trunk

REGRESSION(r271341): media/media-fullscreen-inline.html times out on GTK
https://bugs.webkit.org/show_bug.cgi?id=220540

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

When the GStreamer player client is an <audio> tag it won't render any video, but setting no
explicit video sink on playbin will not prevent video rendering per-se. In that situation
playbin will use autovideosink which will end-up creating a standalone window through
glimagesink or whatever has the highest rank. For now with playbin2 we can use fakevideosink
for such situation. For the playbin3 case we might be able to entirely deactivate video
rendering through stream selection.

Internals::isChangingPresentationMode was enabled for ports not implementing
VIDEO_PRESENTATION_MODE yet, because this test makes use of it.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):

  • testing/Internals.cpp:

(WebCore::Internals::isChangingPresentationMode const):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Call webkitExitFullScreen() asynchronously to give time to the WebCore FullscreenManager to
notify the video element that it entered full-screen, and thus allowing the exitFullScreen()
call to go through.

  • media/media-fullscreen.js:

(fullscreenchange):
(async beginfullscreen):

  • platform/glib/TestExpectations:
  • platform/glib/media/media-fullscreen-inline-expected.txt:
3:55 AM Changeset in webkit [277079] by ntim@apple.com
  • 5 edits in trunk/LayoutTests/imported/w3c

Re-import css/css-counter-styles WPT

Unreviewed. Trivial WPT re-import.

  • web-platform-tests/css/css-counter-styles/counter-style-additive-symbols-syntax-expected.txt:
  • web-platform-tests/css/css-counter-styles/counter-style-additive-symbols-syntax.html:
  • web-platform-tests/css/css-counter-styles/counter-style-pad-syntax-expected.txt:
  • web-platform-tests/css/css-counter-styles/counter-style-pad-syntax.html:
3:35 AM Changeset in webkit [277078] by rniwa@webkit.org
  • 16 edits in trunk/Source/WebCore

Replace raw pointers in SVGElementRareData and SVGDocumentExtensions with WeakHashMap and WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=225440

Reviewed by Antti Koivisto.

Replaced the remaining use of raw pointers to Element in SVGElementRareData and SVGDocumentExtensions
with WeakHashSet and WeakPtr.

This patch also replaces SVGDocumentExtensions::m_elementDependencies with a new WeakHashMap
in SVGElementRareData for clarify & simplicity with a new terminology. When a SVG element A refers
to another element B via href, A's SVGElementRareData::m_referenceTarget is set to B, and A is added
to B's SVGElementRareData::m_referencingElements.

No new tests since there should be no observable behavior differences.

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::removeFromCacheAndInvalidateDependencies):

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::registerResource):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::applyResultsToTarget):

  • svg/SVGDocumentExtensions.cpp:

(WebCore::SVGDocumentExtensions::addPendingResource):
(WebCore::SVGDocumentExtensions::isElementWithPendingResources const):
(WebCore::SVGDocumentExtensions::isPendingResource const): Directly check the existence of
the id in m_pendingResources instead of calling isIdOfPendingResource.
(WebCore::SVGDocumentExtensions::removeElementFromPendingResources):
(WebCore::SVGDocumentExtensions::removePendingResource): Moved to the header to be inlined.
(WebCore::SVGDocumentExtensions::removePendingResourceForRemoval): Deleted. The code is
inlined in removeElementFromPendingResources instead.
(WebCore::SVGDocumentExtensions::markPendingResourcesForRemoval):
(WebCore::SVGDocumentExtensions::takeElementFromPendingResourcesForRemovalMap): Renamed
from removeElementFromPendingResourcesForRemovalMap.
(WebCore::SVGDocumentExtensions::addElementToRebuild): Added.
(WebCore::SVGDocumentExtensions::removeElementToRebuild): Added.
(WebCore::SVGDocumentExtensions::setOfElementsReferencingTarget): Deleted.
(WebCore::SVGDocumentExtensions::addElementReferencingTarget): Deleted.
(WebCore::SVGDocumentExtensions::removeAllTargetReferencesForElement): Deleted.
(WebCore::SVGDocumentExtensions::clearTargetDependencies):
(WebCore::SVGDocumentExtensions::rebuildAllElementReferencesForTarget):
(WebCore::SVGDocumentExtensions::removeAllElementReferencesForTarget): Deleted.

  • svg/SVGDocumentExtensions.h:

(WebCore::SVGDocumentExtensions::removePendingResource):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::~SVGElement):
(WebCore::SVGElement::removedFromAncestor): Moved the most of logic in SVGDocumentExtensions's
clearTargetDependencies and removeAllElementReferencesForTarget here.
(WebCore::SVGElement::instances const):
(WebCore::SVGElement::referencingElements const): Added.
(WebCore::SVGElement::addReferencingElement): Added.
(WebCore::SVGElement::removeReferencingElement): Added.
(WebCore::SVGElement::removeElementReference): Added.
(WebCore::SVGElement::setCorrespondingElement):
(WebCore::SVGElement::addEventListener):
(WebCore::SVGElement::removeEventListener):
(WebCore::SVGElement::createAnimator):
(WebCore::SVGElement::buildPendingResourcesIfNeeded):
(WebCore::SVGElement::updateRelativeLengthsInformation):
(WebCore::SVGElement::invalidateInstances):
(WebCore:: const): Deleted.

  • svg/SVGElement.h:

(WebCore::SVGElement::hasRelativeLengths const):
(WebCore::SVGElement::updateRelativeLengthsInformation):

  • svg/SVGElementRareData.h:

(WebCore::SVGElementRareData::addInstance):
(WebCore::SVGElementRareData::removeInstance):
(WebCore::SVGElementRareData::instances const):
(WebCore::SVGElementRareData::addReferencingElement):
(WebCore::SVGElementRareData::removeReferencingElement):
(WebCore::SVGElementRareData::referencingElements const):
(WebCore::SVGElementRareData::takeReferencingElements):
(WebCore::SVGElementRareData::referenceTarget const):
(WebCore::SVGElementRareData::setReferenceTarget):
(WebCore::SVGElementRareData::correspondingElement):
(WebCore::SVGElementRareData::setCorrespondingElement):
(): Deleted.
(WebCore::SVGElementRareData:: const): Deleted.

  • svg/SVGFEImageElement.cpp:

(WebCore::SVGFEImageElement::clearResourceReferences):
(WebCore::SVGFEImageElement::buildPendingResource):

  • svg/SVGMPathElement.cpp:

(WebCore::SVGMPathElement::buildPendingResource):
(WebCore::SVGMPathElement::clearResourceReferences):

  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::invalidateMPathDependencies):

  • svg/SVGTextPathElement.cpp:

(WebCore::SVGTextPathElement::clearResourceReferences):
(WebCore::SVGTextPathElement::buildPendingResource):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::invalidateDependentShadowTrees):

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::clearResourceReferences):
(WebCore::SVGSMILElement::buildPendingResource):

  • svg/properties/SVGAttributeAnimator.cpp:

(WebCore::SVGAttributeAnimator::applyAnimatedStylePropertyChange):
(WebCore::SVGAttributeAnimator::removeAnimatedStyleProperty):
(WebCore::SVGAttributeAnimator::applyAnimatedPropertyChange):

2:44 AM Changeset in webkit [277077] by ntim@apple.com
  • 9 edits
    7 adds
    4 deletes in trunk/LayoutTests

Re-import css/css-color & css/css-color-adjust WPT
https://bugs.webkit.org/show_bug.cgi?id=225438

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-color-adjust/META.yml: Added.
  • web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-opaque-cross-origin.sub-expected.html: Added.
  • web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-opaque-cross-origin.sub.html: Added.
  • web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors-expected.txt: Added.
  • web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors.html: Added.
  • web-platform-tests/css/css-color-adjust/rendering/dark-color-scheme/w3c-import.log:
  • web-platform-tests/css/css-color-adjust/w3c-import.log:
  • web-platform-tests/css/css-color/color-function-parsing.html:
  • web-platform-tests/css/css-color/color-function-parsing-expected.txt:
  • web-platform-tests/css/css-color/color-mix-basic-001.tentative-expected.txt: Added.
  • web-platform-tests/css/css-color/color-mix-basic-001.tentative.html: Added.
  • web-platform-tests/css/css-color/predefined-014-expected.html: Removed.
  • web-platform-tests/css/css-color/predefined-014.html: Removed.
  • web-platform-tests/css/css-color/predefined-015-expected.html: Removed.
  • web-platform-tests/css/css-color/predefined-015.html: Removed.
  • web-platform-tests/css/css-color/w3c-import.log:

LayoutTests:

2:17 AM Changeset in webkit [277076] by ntim@apple.com
  • 6 edits
    14 adds in trunk/LayoutTests/imported/w3c

Re-import css/css-cascade WPT
https://bugs.webkit.org/show_bug.cgi?id=225437

Reviewed by Youenn Fablet.

  • web-platform-tests/css/css-cascade/all-prop-001-expected.html:
  • web-platform-tests/css/css-cascade/all-prop-001.html:
  • web-platform-tests/css/css-cascade/all-prop-revert-visited-expected.html: Added.
  • web-platform-tests/css/css-cascade/all-prop-revert-visited.html: Added.
  • web-platform-tests/css/css-cascade/all-prop-unset-visited-expected.html: Added.
  • web-platform-tests/css/css-cascade/all-prop-unset-visited.html: Added.
  • web-platform-tests/css/css-cascade/import-conditional-001-expected.xht: Added.
  • web-platform-tests/css/css-cascade/import-conditional-001.html: Added.
  • web-platform-tests/css/css-cascade/important-prop.html:
  • web-platform-tests/css/css-cascade/initial-background-color-expected.html: Added.
  • web-platform-tests/css/css-cascade/initial-background-color.html: Added.
  • web-platform-tests/css/css-cascade/support/test-green.css: Added.

(.test):

  • web-platform-tests/css/css-cascade/support/test-red.css: Added.

(.test):

  • web-platform-tests/css/css-cascade/support/w3c-import.log: Added.
  • web-platform-tests/css/css-cascade/unset-val-001.html:
  • web-platform-tests/css/css-cascade/unset-value-storage.html: Added.
  • web-platform-tests/css/css-cascade/unset-value-storage-expected.txt: Added.
  • web-platform-tests/css/css-cascade/w3c-import.log:
1:52 AM Changeset in webkit [277075] by Cameron McCormack
  • 3 edits in trunk/Source/WebCore

Split context state change item appending out of DisplayList::Recorder::canAppendItemOfType.
https://bugs.webkit.org/show_bug.cgi?id=225424

Reviewed by Simon Fraser.

It's non-obvious from the name that canAppendItemOfType can also end
up appending an item. So let's split out the context state change
item out into a separate function.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::canAppendItemOfType):
(WebCore::DisplayList::Recorder::appendStateChangeItemIfNecessary):
Added.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::append):
(WebCore::DisplayList::Recorder::itemNeedsState): Added this as a
constexpr helper function, to ensure we make a decision about needing
to call appendStateChangeItemIfNecessary at compile time.

1:40 AM Changeset in webkit [277074] by ntim@apple.com
  • 1 edit
    39 adds in trunk/LayoutTests/imported/w3c

Re-sync css/css-break WPTs
https://bugs.webkit.org/show_bug.cgi?id=225436

Reviewed by Youenn Fablet.

  • web-platform-tests/css/css-break/animation/w3c-import.log: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/box-decoration-break-valid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-after-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-after-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/break-after-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-after-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-after-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-after-valid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-before-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-before-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/break-before-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-before-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-before-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-before-valid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/break-inside-valid.html: Added.
  • web-platform-tests/css/css-break/parsing/orphans-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/orphans-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/orphans-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/orphans-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/orphans-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/orphans-valid.html: Added.
  • web-platform-tests/css/css-break/parsing/w3c-import.log: Added.
  • web-platform-tests/css/css-break/parsing/widows-computed-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/widows-computed.html: Added.
  • web-platform-tests/css/css-break/parsing/widows-invalid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/widows-invalid.html: Added.
  • web-platform-tests/css/css-break/parsing/widows-valid-expected.txt: Added.
  • web-platform-tests/css/css-break/parsing/widows-valid.html: Added.
1:38 AM Changeset in webkit [277073] by ntim@apple.com
  • 33 edits
    223 adds
    3 deletes in trunk/LayoutTests

Re-import css/css-backgrounds WPTs
https://bugs.webkit.org/show_bug.cgi?id=225408

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • resources/resource-files.json:
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-element-not-visible-at-current-viewport-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-element-not-visible-at-current-viewport.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-additive-keyframe-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-additive-keyframe.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-missing-0-percent-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-missing-0-percent.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-missing-100-percent-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-missing-100-percent.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-replace-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fallback-replace.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fragmented-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-fragmented.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-in-body-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-in-body.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-non-zero-size-element-change-to-zero-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-non-zero-size-element-change-to-zero.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-single-keyframe-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-single-keyframe.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes1.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes2.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-three-keyframes3.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-images-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-images.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table1.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table2.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table3.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table4-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-table4.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-zero-playbackRate-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-with-zero-playbackRate.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-zero-size-element-change-to-non-zero-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-zero-size-element-change-to-non-zero.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-zero-size-element-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation-zero-size-element.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-animation.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-transition-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-transition.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-transparent-animation-in-body-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/background-color-transparent-animation-in-body.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-animation-with-zero-alpha-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-animation-with-zero-alpha.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-obscured-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-obscured.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-delay-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-delay.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/invalidation/w3c-import.log: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length1.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length2.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/two-background-color-animation-diff-length3.html: Added.
  • web-platform-tests/css/css-backgrounds/animations/w3c-import.log:
  • web-platform-tests/css/css-backgrounds/background-attachment-350.html:
  • web-platform-tests/css/css-backgrounds/background-attachment-353-expected.xht: Added.
  • web-platform-tests/css/css-backgrounds/background-attachment-353.html: Added.
  • web-platform-tests/css/css-backgrounds/background-attachment-fixed-inside-transform-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-attachment-fixed-inside-transform-1.html: Added.
  • web-platform-tests/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html:
  • web-platform-tests/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html:
  • web-platform-tests/css/css-backgrounds/background-clip-content-box-002-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-clip-content-box-002.html: Added.
  • web-platform-tests/css/css-backgrounds/background-margin-iframe-root.html:
  • web-platform-tests/css/css-backgrounds/background-margin-root.html:
  • web-platform-tests/css/css-backgrounds/background-margin-transformed-root.html:
  • web-platform-tests/css/css-backgrounds/background-margin-will-change-root.html:
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1a-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1a.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1b-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1b.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1c-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1c.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1d-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1d.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1e-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-1e.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-2.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-3.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-4-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-round-4.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-10-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-10.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1a-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1a.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1b-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1b.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1c-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-1c.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-2.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-3.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-4-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-4.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-5-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-5.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-6-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-6.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-7-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-7.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-8-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-8.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-9-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-repeat-space-9.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-006.html:
  • web-platform-tests/css/css-backgrounds/background-size-009.html:
  • web-platform-tests/css/css-backgrounds/background-size-014.html:
  • web-platform-tests/css/css-backgrounds/background-size-017.html:
  • web-platform-tests/css/css-backgrounds/background-size-041-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-041.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-042-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-042.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-043-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-043.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-044-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-044.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-percentage-root-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/background-size-percentage-root.html: Added.
  • web-platform-tests/css/css-backgrounds/bg-color-with-gradient-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/bg-color-with-gradient.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-displayed-with-transparent-border-color-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-displayed-with-transparent-border-color.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-image-type-003.htm:
  • web-platform-tests/css/css-backgrounds/border-image-repeat-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-1.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-round-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-round-1.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-round-2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-round-2.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-1.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-2-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-2.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-3-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-3.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-4-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-4-ref-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-4-ref-1.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-4.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-5-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-5-ref-1-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-5-ref-1.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-5.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-6-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-6.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-7-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-repeat-space-7.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-shorthand-002-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-shorthand-002.htm:
  • web-platform-tests/css/css-backgrounds/border-image-shorthand-003-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-shorthand-003.htm:
  • web-platform-tests/css/css-backgrounds/border-image-slice-005-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-slice-005.htm:
  • web-platform-tests/css/css-backgrounds/border-image-slice-007-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-image-slice-007.htm:
  • web-platform-tests/css/css-backgrounds/border-radius-012-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-012.html: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clip-001-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clip-001.htm: Removed.
  • web-platform-tests/css/css-backgrounds/border-radius-clip-001.html: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clip-002-expected.htm: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clip-002.htm:
  • web-platform-tests/css/css-backgrounds/border-radius-clipping-002-expected.xht: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clipping-002.html: Added.
  • web-platform-tests/css/css-backgrounds/border-radius-clipping-expected.html: Removed.
  • web-platform-tests/css/css-backgrounds/border-radius-clipping.html: Removed.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-a-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-a.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-b-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-b.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-c-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-c.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-d-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-d.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-e-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/border-width-small-values-001-e.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-029-expected.xht: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-029.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-039-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-039.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-040-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-040.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-041-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-041.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-042-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-042.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-currentcolor-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-currentcolor.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-001-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-001.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-002-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-002.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-003-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-003.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-004-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-overlapping-004.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-radius-000-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-radius-000.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-radius-001-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/box-shadow-radius-001.html: Added.
  • web-platform-tests/css/css-backgrounds/css3-border-image-repeat-repeat-expected.html:
  • web-platform-tests/css/css-backgrounds/css3-border-image-repeat-repeat.html:
  • web-platform-tests/css/css-backgrounds/css3-border-image-repeat-stretch-expected.html:
  • web-platform-tests/css/css-backgrounds/css3-border-image-repeat-stretch.html:
  • web-platform-tests/css/css-backgrounds/hidpi/simple-bg-color-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/hidpi/simple-bg-color.html: Added.
  • web-platform-tests/css/css-backgrounds/hidpi/w3c-import.log: Added.
  • web-platform-tests/css/css-backgrounds/inline-background-rtl-001-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/inline-background-rtl-001.html: Added.
  • web-platform-tests/css/css-backgrounds/linear-gradient-calc-crash.html: Added.
  • web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/linear-gradient-currentcolor-first-line.html: Added.
  • web-platform-tests/css/css-backgrounds/parsing/background-image-invalid-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html:
  • web-platform-tests/css/css-backgrounds/parsing/background-image-valid-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html:
  • web-platform-tests/css/css-backgrounds/simple-bg-color-expected.html: Added.
  • web-platform-tests/css/css-backgrounds/simple-bg-color.html: Added.
  • web-platform-tests/css/css-backgrounds/support/100x100-gr-rr.png: Added.
  • web-platform-tests/css/css-backgrounds/support/100x100-green-with-red-corners.png: Added.
  • web-platform-tests/css/css-backgrounds/support/9grid40-30-20-10-green.png: Added.
  • web-platform-tests/css/css-backgrounds/support/9grid40-30-20-10-red-old.png: Added.
  • web-platform-tests/css/css-backgrounds/support/9grid40-30-20-10-red.png: Added.
  • web-platform-tests/css/css-backgrounds/support/aqua-yellow-32x32.png: Added.
  • web-platform-tests/css/css-backgrounds/support/aqua-yellow-37x37.png: Added.
  • web-platform-tests/css/css-backgrounds/support/blue-diamond-27x27.png: Added.
  • web-platform-tests/css/css-backgrounds/support/new-red-diamond-27x27.png: Added.
  • web-platform-tests/css/css-backgrounds/support/orange-intrinsic-none.svg: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-bl.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-bo.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-br.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-ct.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-le.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-ri.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-tl.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-to.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule-tr.png: Added.
  • web-platform-tests/css/css-backgrounds/support/reticule.png: Added.
  • web-platform-tests/css/css-backgrounds/support/w3c-import.log:
  • web-platform-tests/css/css-backgrounds/support/y.png: Added.
  • web-platform-tests/css/css-backgrounds/w3c-import.log:

LayoutTests:

12:45 AM Changeset in webkit [277072] by Cameron McCormack
  • 3 edits in trunk/Source/WebCore

Make DisplayList::dump print out the display list contents
https://bugs.webkit.org/show_bug.cgi?id=225431

Reviewed by Simon Fraser.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::description const):
(WebCore::DisplayList::operator<<): This needs to move so that
argument-dependent lookup for the operator<< call in description()
works.

  • platform/graphics/displaylists/DisplayList.h:
12:36 AM Changeset in webkit [277071] by ntim@apple.com
  • 13 edits
    4 adds in trunk

[mediaqueries] Remove "on-demand" value for any-hover/hover & "forced" value for prefers-contrast
https://bugs.webkit.org/show_bug.cgi?id=225400

Reviewed by Antti Koivisto.

These were both removed from the spec and currently never evaluate to true. They also won't eval to true after this change.
Only change is serialization, since the values will become invalid.

Also:

  • Re-synced css/mediaqueries WPTs
  • Adjusted any-hover/hover parsing tests accordingly.

LayoutTests/imported/w3c:

  • web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt: Added.
  • web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html: Added.
  • web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt: Added.
  • web-platform-tests/css/mediaqueries/prefers-contrast.html: Added.
  • web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:
  • web-platform-tests/css/mediaqueries/test_media_queries.html:
  • web-platform-tests/css/mediaqueries/w3c-import.log:

Source/WebCore:

  • css/CSSValueKeywords.in:
  • css/MediaQueryEvaluator.cpp:

(WebCore::prefersContrastEvaluate):

  • css/MediaQueryExpression.cpp:

(WebCore::isValidValueForIdentMediaFeature):

LayoutTests:

  • fast/media/mq-any-hover-cssom.html:
  • fast/media/mq-any-hover-cssom-expected.txt:
  • fast/media/mq-hover-cssom.html:
  • fast/media/mq-hover-cssom-expected.txt:
12:14 AM Changeset in webkit [277070] by ntim@apple.com
  • 3 edits in trunk/LayoutTests/imported/w3c

Re-sync css/css-box/parsing/padding-valid.html WPT

Unreviewed. Trivial WPT sync on one single test.

  • web-platform-tests/css/css-box/parsing/padding-valid-expected.txt:
  • web-platform-tests/css/css-box/parsing/padding-valid.html:
Note: See TracTimeline for information about the timeline view.