⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

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

Note: See TracTimeline for information about the timeline view.