Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 40c110f3827900735328b80bbd98d0a223583ce8
      
https://github.com/WebKit/WebKit/commit/40c110f3827900735328b80bbd98d0a223583ce8
  Author: Kimmo Kinnunen <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp
    M Source/WebCore/PlatformMac.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/SourcesCocoa.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/editing/cocoa/EditorCocoa.mm
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/html/OffscreenCanvas.cpp
    M Source/WebCore/inspector/InspectorCanvas.cpp
    M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp
    M Source/WebCore/inspector/agents/InspectorPageAgent.cpp
    M Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp
    M Source/WebCore/page/FrameConsoleClient.cpp
    M Source/WebCore/platform/MIMETypeRegistry.cpp
    M Source/WebCore/platform/SourcesCairo.txt
    M Source/WebCore/platform/SourcesSkia.txt
    M Source/WebCore/platform/graphics/ImageBuffer.cpp
    M Source/WebCore/platform/graphics/ImageBuffer.h
    A Source/WebCore/platform/graphics/ImageUtilities.cpp
    M Source/WebCore/platform/graphics/ImageUtilities.h
    M Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp
    R Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp
    R Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.h
    A Source/WebCore/platform/graphics/cairo/ImageUtilitiesCairo.cpp
    M Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp
    M Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp
    R Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.cpp
    R Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h
    M Source/WebCore/platform/graphics/cg/ImageUtilitiesCG.cpp
    M Source/WebCore/platform/graphics/cg/ShareableBitmapCG.mm
    M Source/WebCore/platform/graphics/cv/CVUtilities.mm
    M Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp
    R Source/WebCore/platform/graphics/skia/ImageBufferUtilitiesSkia.cpp
    R Source/WebCore/platform/graphics/skia/ImageBufferUtilitiesSkia.h
    A Source/WebCore/platform/graphics/skia/ImageUtilitiesSkia.cpp
    M Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp
    M Source/WebCore/workers/WorkerConsoleClient.cpp
    M Source/WebKit/Shared/API/c/cg/WKImageCG.cpp
    M 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  NativeImage should be encodable to blob and data url
https://bugs.webkit.org/show_bug.cgi?id=308706
rdar://171238751

Reviewed by Simon Fraser.

Move ImageBuffer::toData(...) to encodeData(const NativeImage&,...).
Add overloads for ImageBuffer.
NativeImage is the real object being encoded. Integrating the
functionality with ImageBuffer causes redundant conversions to
ImageBuffer that lose information as not all images are representable
in ImageBuffer.

This is work towards being able to use NativeImage as the representation
of canvas rendering context rendering. Future commits will change
various signatures of CanvasBase and related classes, to return
NativeImage instead of ImageBuffer. These functions are used to access
the canvas image for blob and data url encoding.

* Source/WebCore/Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:
(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):
* Source/WebCore/PlatformMac.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/editing/cocoa/EditorCocoa.mm:
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toDataURL):
(WebCore::HTMLCanvasElement::toBlob):
* Source/WebCore/html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::convertToBlob):
* Source/WebCore/inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::getContentAsDataURL):
(WebCore::InspectorCanvas::indexForData):
(WebCore::InspectorCanvas::buildArrayForCanvasPattern):
* Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::requestContent):
* Source/WebCore/inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):
* Source/WebCore/inspector/agents/page/PageTimelineAgent.cpp:
(WebCore::PageTimelineAgent::captureScreenshot):
* Source/WebCore/page/FrameConsoleClient.cpp:
(WebCore::FrameConsoleClient::screenshot):
* Source/WebCore/platform/MIMETypeRegistry.cpp:
* Source/WebCore/platform/SourcesCairo.txt:
* Source/WebCore/platform/SourcesSkia.txt:
* Source/WebCore/platform/graphics/ImageBuffer.cpp:
(WebCore::copyImageBufferToOpaqueNativeImage): Deleted.
(WebCore::ImageBuffer::toDataURL const): Deleted.
(WebCore::ImageBuffer::toData const): Deleted.
(WebCore::ImageBuffer::toDataURL): Deleted.
(WebCore::ImageBuffer::toData): Deleted.
* Source/WebCore/platform/graphics/ImageBuffer.h:
* Source/WebCore/platform/graphics/ImageUtilities.cpp: Added.
(WebCore::encodeData):
(WebCore::encodeDataURL):
* Source/WebCore/platform/graphics/ImageUtilities.h:
* Source/WebCore/platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:
* Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.h: Removed.
* Source/WebCore/platform/graphics/cairo/ImageUtilitiesCairo.cpp: Renamed from 
Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp.
(WebCore::platformEncodeData):
* Source/WebCore/platform/graphics/cg/GraphicsContextGLCG.cpp:
* Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:
* Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.cpp: Removed.
* Source/WebCore/platform/graphics/cg/ImageBufferUtilitiesCG.h: Removed.
* Source/WebCore/platform/graphics/cg/ImageUtilitiesCG.cpp:
(WebCore::transcodeImages):
(WebCore::verifyImageBufferIsBigEnough):
(WebCore::jpegUTI):
(WebCore::utiFromImageBufferMIMEType):
(WebCore::imagePropertiesForDestinationUTIAndQuality):
(WebCore::encode):
(WebCore::encodeToVector):
(WebCore::encodeData):
(WebCore::encodeDataURL):
(WebCore::platformEncodeData):
* Source/WebCore/platform/graphics/cg/ShareableBitmapCG.mm:
* Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:
* Source/WebCore/platform/graphics/skia/ImageBufferUtilitiesSkia.h: Removed.
* Source/WebCore/platform/graphics/skia/ImageUtilitiesSkia.cpp: Renamed from 
Source/WebCore/platform/graphics/skia/ImageBufferUtilitiesSkia.cpp.
(WebCore::platformEncodeData):
* Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::takePhotoInternal):
* Source/WebCore/workers/WorkerConsoleClient.cpp:
(WebCore::WorkerConsoleClient::screenshot):
* Source/WebKit/Shared/API/c/cg/WKImageCG.cpp:
(WKImageCreateDataURLFromImage):
* 
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm:
(WebKit::WebExtensionContext::tabsCaptureVisibleTab):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateAttachmentIcon):

Canonical link: https://commits.webkit.org/308505@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to