Title: [283832] branches/safari-612-branch
Revision
283832
Author
[email protected]
Date
2021-10-08 12:44:59 -0700 (Fri, 08 Oct 2021)

Log Message

Cherry-pick r283531. rdar://problem/83956741

    Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
    https://bugs.webkit.org/show_bug.cgi?id=231062
    <rdar://problem/83752451>

    Reviewed by Simon Fraser.

    LayoutTests/imported/w3c:

    Add a test for drawImage() with an SVG image that has sRGB and Display
    P3 colors.

    Not adding tests for patterns pointing to SVG images for now, since
    WebKit currently always taints the canvas in that case, or for
    ImageBitmaps wrapping SVG images, since we always flatten them to sRGB
    (and we don't track what content is inside the SVG to make a better
    decision about what color space ImageBuffer to use).

    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added.
    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added.

    Source/WebCore:

    When GPUP canvas is enabled, drawImage() with an SVG image is handled
    by drawing into a NativeImage and then sending that to the GPUP. We
    need to choose a color space for the NativeImage's ImageBuffer that
    matches the canvas.

    Once full SVG rendering is supported by the GPU process, we can undo
    this code, as we'll no longer be using a NativeImage.

    Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html

    * html/canvas/CanvasRenderingContext2DBase.cpp:
    (WebCore::CanvasRenderingContext2DBase::drawImage):
    (WebCore::drawImageToContext):
    (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
    * platform/graphics/GraphicsContext.cpp:
    (WebCore::GraphicsContext::drawImageForCanvas):
    * platform/graphics/GraphicsContext.h:
    * platform/graphics/Image.cpp:
    (WebCore::Image::drawForCanvas):
    * platform/graphics/Image.h:
    * platform/graphics/MediaPlayer.h:
    * svg/graphics/SVGImage.cpp:
    (WebCore::SVGImage::drawForCanvasForContainer):
    (WebCore::SVGImage::drawForContainer):
    (WebCore::SVGImage::drawForContainerInternal):
    (WebCore::SVGImage::nativeImage):
    (WebCore::SVGImage::drawForCanvas):
    (WebCore::SVGImage::draw):
    (WebCore::SVGImage::drawInternal):
    (WebCore::SVGImage::drawAsNativeImage):
    * svg/graphics/SVGImage.h:
    * svg/graphics/SVGImageForContainer.cpp:
    (WebCore::SVGImageForContainer::drawForCanvas):
    * svg/graphics/SVGImageForContainer.h:

    LayoutTests:

    * TestExpectations:
    * platform/ios-14/TestExpectations:
    * platform/ios/TestExpectations:
    * platform/mac/TestExpectations:

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

Modified Paths

Added Paths

Removed Paths

Diff

Modified: branches/safari-612-branch/LayoutTests/ChangeLog (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/ChangeLog	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/ChangeLog	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,5 +1,93 @@
 2021-10-08  Russell Epstein  <[email protected]>
 
+        Cherry-pick r283531. rdar://problem/83956741
+
+    Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+    https://bugs.webkit.org/show_bug.cgi?id=231062
+    <rdar://problem/83752451>
+    
+    Reviewed by Simon Fraser.
+    
+    LayoutTests/imported/w3c:
+    
+    Add a test for drawImage() with an SVG image that has sRGB and Display
+    P3 colors.
+    
+    Not adding tests for patterns pointing to SVG images for now, since
+    WebKit currently always taints the canvas in that case, or for
+    ImageBitmaps wrapping SVG images, since we always flatten them to sRGB
+    (and we don't track what content is inside the SVG to make a better
+    decision about what color space ImageBuffer to use).
+    
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added.
+    
+    Source/WebCore:
+    
+    When GPUP canvas is enabled, drawImage() with an SVG image is handled
+    by drawing into a NativeImage and then sending that to the GPUP. We
+    need to choose a color space for the NativeImage's ImageBuffer that
+    matches the canvas.
+    
+    Once full SVG rendering is supported by the GPU process, we can undo
+    this code, as we'll no longer be using a NativeImage.
+    
+    Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
+    
+    * html/canvas/CanvasRenderingContext2DBase.cpp:
+    (WebCore::CanvasRenderingContext2DBase::drawImage):
+    (WebCore::drawImageToContext):
+    (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
+    * platform/graphics/GraphicsContext.cpp:
+    (WebCore::GraphicsContext::drawImageForCanvas):
+    * platform/graphics/GraphicsContext.h:
+    * platform/graphics/Image.cpp:
+    (WebCore::Image::drawForCanvas):
+    * platform/graphics/Image.h:
+    * platform/graphics/MediaPlayer.h:
+    * svg/graphics/SVGImage.cpp:
+    (WebCore::SVGImage::drawForCanvasForContainer):
+    (WebCore::SVGImage::drawForContainer):
+    (WebCore::SVGImage::drawForContainerInternal):
+    (WebCore::SVGImage::nativeImage):
+    (WebCore::SVGImage::drawForCanvas):
+    (WebCore::SVGImage::draw):
+    (WebCore::SVGImage::drawInternal):
+    (WebCore::SVGImage::drawAsNativeImage):
+    * svg/graphics/SVGImage.h:
+    * svg/graphics/SVGImageForContainer.cpp:
+    (WebCore::SVGImageForContainer::drawForCanvas):
+    * svg/graphics/SVGImageForContainer.h:
+    
+    LayoutTests:
+    
+    * TestExpectations:
+    * platform/ios-14/TestExpectations:
+    * platform/ios/TestExpectations:
+    * platform/mac/TestExpectations:
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-04  Cameron McCormack  <[email protected]>
+
+            Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+            https://bugs.webkit.org/show_bug.cgi?id=231062
+            <rdar://problem/83752451>
+
+            Reviewed by Simon Fraser.
+
+            * TestExpectations:
+            * platform/ios-14/TestExpectations:
+            * platform/ios/TestExpectations:
+            * platform/mac/TestExpectations:
+
+2021-10-08  Russell Epstein  <[email protected]>
+
         Cherry-pick r283193. rdar://problem/83954782
 
     Preserve color space when structured cloning ImageBitmaps

Modified: branches/safari-612-branch/LayoutTests/TestExpectations (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/TestExpectations	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/TestExpectations	2021-10-08 19:44:59 UTC (rev 283832)
@@ -5116,7 +5116,7 @@
 imported/w3c/web-platform-tests/css/css-color/predefined-013.html [ Skip ]
 
 # display-p3 canvas and ImageData are Cocoa only for now.
-imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageData.html [ Failure ]

Modified: branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/ChangeLog	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,5 +1,105 @@
 2021-10-08  Russell Epstein  <[email protected]>
 
+        Cherry-pick r283531. rdar://problem/83956741
+
+    Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+    https://bugs.webkit.org/show_bug.cgi?id=231062
+    <rdar://problem/83752451>
+    
+    Reviewed by Simon Fraser.
+    
+    LayoutTests/imported/w3c:
+    
+    Add a test for drawImage() with an SVG image that has sRGB and Display
+    P3 colors.
+    
+    Not adding tests for patterns pointing to SVG images for now, since
+    WebKit currently always taints the canvas in that case, or for
+    ImageBitmaps wrapping SVG images, since we always flatten them to sRGB
+    (and we don't track what content is inside the SVG to make a better
+    decision about what color space ImageBuffer to use).
+    
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added.
+    
+    Source/WebCore:
+    
+    When GPUP canvas is enabled, drawImage() with an SVG image is handled
+    by drawing into a NativeImage and then sending that to the GPUP. We
+    need to choose a color space for the NativeImage's ImageBuffer that
+    matches the canvas.
+    
+    Once full SVG rendering is supported by the GPU process, we can undo
+    this code, as we'll no longer be using a NativeImage.
+    
+    Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
+    
+    * html/canvas/CanvasRenderingContext2DBase.cpp:
+    (WebCore::CanvasRenderingContext2DBase::drawImage):
+    (WebCore::drawImageToContext):
+    (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
+    * platform/graphics/GraphicsContext.cpp:
+    (WebCore::GraphicsContext::drawImageForCanvas):
+    * platform/graphics/GraphicsContext.h:
+    * platform/graphics/Image.cpp:
+    (WebCore::Image::drawForCanvas):
+    * platform/graphics/Image.h:
+    * platform/graphics/MediaPlayer.h:
+    * svg/graphics/SVGImage.cpp:
+    (WebCore::SVGImage::drawForCanvasForContainer):
+    (WebCore::SVGImage::drawForContainer):
+    (WebCore::SVGImage::drawForContainerInternal):
+    (WebCore::SVGImage::nativeImage):
+    (WebCore::SVGImage::drawForCanvas):
+    (WebCore::SVGImage::draw):
+    (WebCore::SVGImage::drawInternal):
+    (WebCore::SVGImage::drawAsNativeImage):
+    * svg/graphics/SVGImage.h:
+    * svg/graphics/SVGImageForContainer.cpp:
+    (WebCore::SVGImageForContainer::drawForCanvas):
+    * svg/graphics/SVGImageForContainer.h:
+    
+    LayoutTests:
+    
+    * TestExpectations:
+    * platform/ios-14/TestExpectations:
+    * platform/ios/TestExpectations:
+    * platform/mac/TestExpectations:
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-04  Cameron McCormack  <[email protected]>
+
+            Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+            https://bugs.webkit.org/show_bug.cgi?id=231062
+            <rdar://problem/83752451>
+
+            Reviewed by Simon Fraser.
+
+            Add a test for drawImage() with an SVG image that has sRGB and Display
+            P3 colors.
+
+            Not adding tests for patterns pointing to SVG images for now, since
+            WebKit currently always taints the canvas in that case, or for
+            ImageBitmaps wrapping SVG images, since we always flatten them to sRGB
+            (and we don't track what content is inside the SVG to make a better
+            decision about what color space ImageBuffer to use).
+
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added.
+            * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added.
+
+2021-10-08  Russell Epstein  <[email protected]>
+
         Cherry-pick r283193. rdar://problem/83954782
 
     Preserve color space when structured cloning ImageBitmaps

Deleted: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,210 +0,0 @@
-
-PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, scaleImage=false
-PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, scaleImage=true
-PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, scaleImage=false
-PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, scaleImage=true
-PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, scaleImage=false
-PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, scaleImage=true
-PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, scaleImage=false
-PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, scaleImage=true
-PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, scaleImage=false
-PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, scaleImage=true
-PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, scaleImage=false
-PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, scaleImage=true
-PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
-PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
-

Deleted: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML>
-<script src=""
-<script src=""
-<script src=""
-<script>
-// Test that drawing images with different bit depths and color profiles into
-// sRGB and Display P3 canvases works, by reading pixels with getImageData()
-// as sRGB and Display P3 values.
-for (let [filename, expectedPixels] of Object.entries(imageTests)) {
-    for (let contextColorSpace of ["srgb", "display-p3"]) {
-        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
-            for (let scaleImage of [false, true]) {
-                async_test(function(t) {
-                    let image = new Image();
-                    image._onload_ = t.step_func_done(function() {
-
-                        let canvas = document.createElement("canvas");
-                        canvas.width = 2;
-                        canvas.height = 2;
-
-                        let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
-                        if (scaleImage)
-                            ctx.drawImage(image, 0, 0, 10, 10);
-                        else
-                            ctx.drawImage(image, 0, 0);
-
-                        let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace });
-
-                        let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
-                        assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
-
-                        t.done();
-
-                    });
-                    image.src = ""
-                }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, scaleImage=${scaleImage}`);
-            }
-        }
-    }
-}
-</script>

Copied: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt (from rev 283831, branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt) (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,242 @@
+
+PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, scaleImage=false
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, scaleImage=true
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, scaleImage=false
+PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, scaleImage=true
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, scaleImage=false
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, scaleImage=true
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, scaleImage=false
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, scaleImage=true
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, scaleImage=false
+PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, scaleImage=true
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, scaleImage=false
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, scaleImage=true
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, scaleImage=true
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=false
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, scaleImage=true
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-FF0000.svg, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000.svg, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000.svg, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000.svg, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-FF0000.svg, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-FF0000.svg, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-FF0000.svg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-FF0000.svg, Context display-p3, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000.svg, Context srgb, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000.svg, Context srgb, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000.svg, Context srgb, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000.svg, Context srgb, ImageData display-p3, scaleImage=true
+PASS sRGB-BB0000.svg, Context display-p3, ImageData srgb, scaleImage=false
+PASS sRGB-BB0000.svg, Context display-p3, ImageData srgb, scaleImage=true
+PASS sRGB-BB0000.svg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS sRGB-BB0000.svg, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-1-0-0.svg, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-1-0-0.svg, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-1-0-0.svg, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-1-0-0.svg, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-1-0-0.svg, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-1-0-0.svg, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-1-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-1-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=true
+PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData srgb, scaleImage=false
+PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData srgb, scaleImage=true
+PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData display-p3, scaleImage=false
+PASS Display-P3-0.7333-0-0.svg, Context srgb, ImageData display-p3, scaleImage=true
+PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData srgb, scaleImage=false
+PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData srgb, scaleImage=true
+PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=false
+PASS Display-P3-0.7333-0-0.svg, Context display-p3, ImageData display-p3, scaleImage=true
+

Copied: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html (from rev 283831, branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html) (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<script src=""
+<script src=""
+<script src=""
+<script>
+// Test that drawing images with different bit depths and color profiles into
+// sRGB and Display P3 canvases works, by reading pixels with getImageData()
+// as sRGB and Display P3 values.
+for (let [filename, expectedPixels] of Object.entries({...imageTests, ...svgImageTests})) {
+    for (let contextColorSpace of ["srgb", "display-p3"]) {
+        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
+            for (let scaleImage of [false, true]) {
+                async_test(function(t) {
+                    let image = new Image();
+                    image._onload_ = t.step_func_done(function() {
+
+                        let canvas = document.createElement("canvas");
+                        canvas.width = 2;
+                        canvas.height = 2;
+
+                        let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
+                        if (scaleImage)
+                            ctx.drawImage(image, 0, 0, 10, 10);
+                        else
+                            ctx.drawImage(image, 0, 0);
+
+                        let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace });
+
+                        let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
+                        assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
+
+                        t.done();
+
+                    });
+                    image.src = ""
+                }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, scaleImage=${scaleImage}`);
+            }
+        }
+    }
+}
+</script>

Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,4 +1,4 @@
-// Each image:
+// Each PNG:
 //  * is 2x2 and has a single color
 //  * has a filename that indicates its contents:
 //      <embedded-profile>-<8-or-16-bit-color-value>.png
@@ -177,6 +177,36 @@
     },
 };
 
+const svgImageTests = {
+    // SVG source images
+
+    "sRGB-FF0000.svg": {
+        "srgb srgb": [255, 0, 0, 255],
+        "srgb display-p3": [234, 51, 35, 255],
+        "display-p3 srgb": [255, 0, 0, 255],
+        "display-p3 display-p3": [234, 51, 35, 255],
+    },
+    "sRGB-BB0000.svg": {
+        "srgb srgb": [187, 0, 0, 255],
+        "srgb display-p3": [171, 35, 23, 255],
+        "display-p3 srgb": [187, 1, 0, 255],
+        "display-p3 display-p3": [171, 35, 23, 255],
+    },
+
+    "Display-P3-1-0-0.svg": {
+        "srgb srgb": [255, 0, 0, 255],
+        "srgb display-p3": [234, 51, 35, 255],
+        "display-p3 srgb": [255, 0, 0, 255],
+        "display-p3 display-p3": [255, 0, 0, 255],
+    },
+    "Display-P3-0.7333-0-0.svg": {
+        "srgb srgb": [205, 0, 0, 255],
+        "srgb display-p3": [188, 39, 26, 255],
+        "display-p3 srgb": [205, 0, 0, 255],
+        "display-p3 display-p3": [187, 0, 0, 255],
+    },
+};
+
 const fromSRGBToDisplayP3 = {
     "255,0,0,255": [234, 51, 35, 255],
     "255,0,0,204": [234, 51, 35, 204],

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="2" height="2">
+  <rect width="2" height="2" style="fill: color(display-p3 0.7333 0 0);"/>
+</svg>

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="2" height="2">
+  <rect width="2" height="2" style="fill: color(display-p3 1 0 0);"/>
+</svg>

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="2" height="2">
+  <rect width="2" height="2" style="fill: #BB0000;"/>
+</svg>

Added: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg (0 => 283832)


--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg	                        (rev 0)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg	2021-10-08 19:44:59 UTC (rev 283832)
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="2" height="2">
+  <rect width="2" height="2" style="fill: #FF0000;"/>
+</svg>

Modified: branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/platform/ios/TestExpectations	2021-10-08 19:44:59 UTC (rev 283832)
@@ -3473,7 +3473,7 @@
 webkit.org/b/228200 editing/selection/ios/scrolling-to-focused-element-inside-iframe.html [ Failure ]
 
 # display-p3 canvas and ImageData are Cocoa only for now.
-imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Pass ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Pass ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageData.html [ Pass ]

Modified: branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/platform/ios-14/TestExpectations	2021-10-08 19:44:59 UTC (rev 283832)
@@ -91,7 +91,7 @@
 http/tests/app-privacy-report/ [ Skip ]
 
 # display-p3 canvas and ImageData are iOS 15+.
-imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Failure ]
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Failure ]
 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageData.html [ Failure ]

Modified: branches/safari-612-branch/LayoutTests/platform/ios-simulator/TestExpectations (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/platform/ios-simulator/TestExpectations	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/platform/ios-simulator/TestExpectations	2021-10-08 19:44:59 UTC (rev 283832)
@@ -58,6 +58,9 @@
 imported/w3c/web-platform-tests/wasm/wasm_stream_instantiate_test.html  [ Skip ]
 imported/w3c/web-platform-tests/wasm/wasm_stream_compile_test.html  [ Skip ]
 
+# display-p3 canvas and ImageData are not working in the simulator.
+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Failure ]
+
 # Imported css-text test suite from WPT
 webkit.org/b/183258 imported/w3c/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-001.html [ ImageOnlyFailure ]
 webkit.org/b/183258 imported/w3c/web-platform-tests/css/css-text/white-space/textarea-pre-wrap-002.html [ ImageOnlyFailure ]

Modified: branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations (283831 => 283832)


--- branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/LayoutTests/platform/mac/TestExpectations	2021-10-08 19:44:59 UTC (rev 283832)
@@ -2322,7 +2322,7 @@
 webkit.org/b/228396 fast/speechsynthesis/speech-synthesis-speak-empty-string.html [ Pass Failure ]
 
 # display-p3 canvas and ImageData are Cocoa only for now.
-[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html [ Pass ]
+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageBitmap.html [ Pass ]
 [ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-ImageData.html [ Pass ]

Modified: branches/safari-612-branch/Source/WebCore/ChangeLog (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/ChangeLog	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/ChangeLog	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1,5 +1,123 @@
 2021-10-08  Russell Epstein  <[email protected]>
 
+        Cherry-pick r283531. rdar://problem/83956741
+
+    Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+    https://bugs.webkit.org/show_bug.cgi?id=231062
+    <rdar://problem/83752451>
+    
+    Reviewed by Simon Fraser.
+    
+    LayoutTests/imported/w3c:
+    
+    Add a test for drawImage() with an SVG image that has sRGB and Display
+    P3 colors.
+    
+    Not adding tests for patterns pointing to SVG images for now, since
+    WebKit currently always taints the canvas in that case, or for
+    ImageBitmaps wrapping SVG images, since we always flatten them to sRGB
+    (and we don't track what content is inside the SVG to make a better
+    decision about what color space ImageBuffer to use).
+    
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-0.7333-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-1-0-0.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.svg: Added.
+    * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000.svg: Added.
+    
+    Source/WebCore:
+    
+    When GPUP canvas is enabled, drawImage() with an SVG image is handled
+    by drawing into a NativeImage and then sending that to the GPUP. We
+    need to choose a color space for the NativeImage's ImageBuffer that
+    matches the canvas.
+    
+    Once full SVG rendering is supported by the GPU process, we can undo
+    this code, as we'll no longer be using a NativeImage.
+    
+    Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
+    
+    * html/canvas/CanvasRenderingContext2DBase.cpp:
+    (WebCore::CanvasRenderingContext2DBase::drawImage):
+    (WebCore::drawImageToContext):
+    (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
+    * platform/graphics/GraphicsContext.cpp:
+    (WebCore::GraphicsContext::drawImageForCanvas):
+    * platform/graphics/GraphicsContext.h:
+    * platform/graphics/Image.cpp:
+    (WebCore::Image::drawForCanvas):
+    * platform/graphics/Image.h:
+    * platform/graphics/MediaPlayer.h:
+    * svg/graphics/SVGImage.cpp:
+    (WebCore::SVGImage::drawForCanvasForContainer):
+    (WebCore::SVGImage::drawForContainer):
+    (WebCore::SVGImage::drawForContainerInternal):
+    (WebCore::SVGImage::nativeImage):
+    (WebCore::SVGImage::drawForCanvas):
+    (WebCore::SVGImage::draw):
+    (WebCore::SVGImage::drawInternal):
+    (WebCore::SVGImage::drawAsNativeImage):
+    * svg/graphics/SVGImage.h:
+    * svg/graphics/SVGImageForContainer.cpp:
+    (WebCore::SVGImageForContainer::drawForCanvas):
+    * svg/graphics/SVGImageForContainer.h:
+    
+    LayoutTests:
+    
+    * TestExpectations:
+    * platform/ios-14/TestExpectations:
+    * platform/ios/TestExpectations:
+    * platform/mac/TestExpectations:
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-04  Cameron McCormack  <[email protected]>
+
+            Choose an appropriate color space when converting an SVG image into a NativeImage for canvas drawImage
+            https://bugs.webkit.org/show_bug.cgi?id=231062
+            <rdar://problem/83752451>
+
+            Reviewed by Simon Fraser.
+
+            When GPUP canvas is enabled, drawImage() with an SVG image is handled
+            by drawing into a NativeImage and then sending that to the GPUP. We
+            need to choose a color space for the NativeImage's ImageBuffer that
+            matches the canvas.
+
+            Once full SVG rendering is supported by the GPU process, we can undo
+            this code, as we'll no longer be using a NativeImage.
+
+            Test: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
+
+            * html/canvas/CanvasRenderingContext2DBase.cpp:
+            (WebCore::CanvasRenderingContext2DBase::drawImage):
+            (WebCore::drawImageToContext):
+            (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):
+            * platform/graphics/GraphicsContext.cpp:
+            (WebCore::GraphicsContext::drawImageForCanvas):
+            * platform/graphics/GraphicsContext.h:
+            * platform/graphics/Image.cpp:
+            (WebCore::Image::drawForCanvas):
+            * platform/graphics/Image.h:
+            * platform/graphics/MediaPlayer.h:
+            * svg/graphics/SVGImage.cpp:
+            (WebCore::SVGImage::drawForCanvasForContainer):
+            (WebCore::SVGImage::drawForContainer):
+            (WebCore::SVGImage::drawForContainerInternal):
+            (WebCore::SVGImage::nativeImage):
+            (WebCore::SVGImage::drawForCanvas):
+            (WebCore::SVGImage::draw):
+            (WebCore::SVGImage::drawInternal):
+            (WebCore::SVGImage::drawAsNativeImage):
+            * svg/graphics/SVGImage.h:
+            * svg/graphics/SVGImageForContainer.cpp:
+            (WebCore::SVGImageForContainer::drawForCanvas):
+            * svg/graphics/SVGImageForContainer.h:
+
+2021-10-08  Russell Epstein  <[email protected]>
+
         Cherry-pick r283193. rdar://problem/83954782
 
     Preserve color space when structured cloning ImageBitmaps

Modified: branches/safari-612-branch/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2021-10-08 19:44:59 UTC (rev 283832)
@@ -1570,7 +1570,7 @@
 
     bool repaintEntireCanvas = false;
     if (rectContainsCanvas(normalizedDstRect)) {
-        c->drawImage(*image, normalizedDstRect, normalizedSrcRect, options);
+        c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace());
         repaintEntireCanvas = true;
     } else if (isFullCanvasCompositeMode(op)) {
         fullCanvasCompositedDrawImage(*image, normalizedDstRect, normalizedSrcRect, op);
@@ -1577,10 +1577,10 @@
         repaintEntireCanvas = true;
     } else if (op == CompositeOperator::Copy) {
         clearCanvas();
-        c->drawImage(*image, normalizedDstRect, normalizedSrcRect, options);
+        c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace());
         repaintEntireCanvas = true;
     } else
-        c->drawImage(*image, normalizedDstRect, normalizedSrcRect, options);
+        c->drawImageForCanvas(*image, normalizedDstRect, normalizedSrcRect, options, colorSpace());
 
     if (isEntireBackingStoreDirty())
         didDraw(std::nullopt);
@@ -1842,12 +1842,12 @@
     c->restore();
 }
 
-static void drawImageToContext(Image& image, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options)
+static void drawImageToContext(Image& image, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options, DestinationColorSpace colorSpace)
 {
-    context.drawImage(image, dest, src, options);
+    context.drawImageForCanvas(image, dest, src, options, colorSpace);
 }
 
-static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options)
+static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, const FloatRect& dest, const FloatRect& src, const ImagePaintingOptions& options, DestinationColorSpace)
 {
     context.drawImageBuffer(imageBuffer, dest, src, options);
 }
@@ -1878,7 +1878,7 @@
     buffer->context().translate(-transformedAdjustedRect.location());
     buffer->context().translate(croppedOffset);
     buffer->context().concatCTM(effectiveTransform);
-    drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver });
+    drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver }, colorSpace());
 
     compositeBuffer(*buffer, bufferRect, op);
 }

Modified: branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.cpp (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.cpp	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.cpp	2021-10-08 19:44:59 UTC (rev 283832)
@@ -545,6 +545,12 @@
     return image.draw(*this, destination, source, options);
 }
 
+ImageDrawResult GraphicsContext::drawImageForCanvas(Image& image, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace)
+{
+    InterpolationQualityMaintainer interpolationQualityForThisScope(*this, options.interpolationQuality());
+    return image.drawForCanvas(*this, destination, source, options, canvasColorSpace);
+}
+
 ImageDrawResult GraphicsContext::drawTiledImage(Image& image, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& options)
 {
     InterpolationQualityMaintainer interpolationQualityForThisScope(*this, options.interpolationQuality());

Modified: branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.h (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.h	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/platform/graphics/GraphicsContext.h	2021-10-08 19:44:59 UTC (rev 283832)
@@ -433,6 +433,8 @@
     WEBCORE_EXPORT virtual ImageDrawResult drawImage(Image&, const FloatRect& destination, const ImagePaintingOptions& = { ImageOrientation::FromImage });
     WEBCORE_EXPORT virtual ImageDrawResult drawImage(Image&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { ImageOrientation::FromImage });
 
+    virtual ImageDrawResult drawImageForCanvas(Image&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace canvasColorSpace);
+
     WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = { });
     WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor, Image::TileRule, Image::TileRule, const ImagePaintingOptions& = { });
 

Modified: branches/safari-612-branch/Source/WebCore/platform/graphics/Image.cpp (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/platform/graphics/Image.cpp	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/platform/graphics/Image.cpp	2021-10-08 19:44:59 UTC (rev 283832)
@@ -153,6 +153,11 @@
         imageObserver()->didDraw(*this);
 }
 
+ImageDrawResult Image::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace)
+{
+    return draw(context, dstRect, srcRect, options);
+}
+
 ImageDrawResult Image::drawTiled(GraphicsContext& ctxt, const FloatRect& destRect, const FloatPoint& srcPoint, const FloatSize& scaledTileSize, const FloatSize& spacing, const ImagePaintingOptions& options)
 {
     Color color = singlePixelSolidColor();

Modified: branches/safari-612-branch/Source/WebCore/platform/graphics/Image.h (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/platform/graphics/Image.h	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/platform/graphics/Image.h	2021-10-08 19:44:59 UTC (rev 283832)
@@ -201,6 +201,7 @@
     virtual void drawFrameMatchingSourceSize(GraphicsContext&, const FloatRect& dstRect, const IntSize& srcSize, CompositeOperator) { }
 #endif
     virtual ImageDrawResult draw(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& = { }) = 0;
+    virtual ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace canvasColorSpace);
     ImageDrawResult drawTiled(GraphicsContext&, const FloatRect& dstRect, const FloatPoint& srcPoint, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = { });
     ImageDrawResult drawTiled(GraphicsContext&, const FloatRect& dstRect, const FloatRect& srcRect, const FloatSize& tileScaleFactor, TileRule hRule, TileRule vRule, const ImagePaintingOptions& = { });
 

Modified: branches/safari-612-branch/Source/WebCore/platform/graphics/MediaPlayer.h (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/platform/graphics/MediaPlayer.h	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/platform/graphics/MediaPlayer.h	2021-10-08 19:44:59 UTC (rev 283832)
@@ -72,6 +72,7 @@
 class AudioSourceProvider;
 class CDMInstance;
 class CachedResourceLoader;
+class DestinationColorSpace;
 class GraphicsContextGL;
 class GraphicsContext;
 class InbandTextTrackPrivate;

Modified: branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.cpp (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.cpp	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.cpp	2021-10-08 19:44:59 UTC (rev 283832)
@@ -176,9 +176,18 @@
     return IntSize(currentSize);
 }
 
-ImageDrawResult SVGImage::drawForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect,
-    const FloatRect& srcRect, const ImagePaintingOptions& options)
+ImageDrawResult SVGImage::drawForCanvasForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace)
 {
+    return drawForContainerInternal(context, containerSize, containerZoom, initialFragmentURL, dstRect, srcRect, options, canvasColorSpace);
+}
+
+ImageDrawResult SVGImage::drawForContainer(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options)
+{
+    return drawForContainerInternal(context, containerSize, containerZoom, initialFragmentURL, dstRect, srcRect, options, DestinationColorSpace::SRGB());
+}
+
+ImageDrawResult SVGImage::drawForContainerInternal(GraphicsContext& context, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace intermediateColorSpace)
+{
     if (!m_page)
         return ImageDrawResult::DidNothing;
 
@@ -201,7 +210,7 @@
 
     frameView()->scrollToFragment(initialFragmentURL);
 
-    ImageDrawResult result = draw(context, dstRect, scaledSrc, options);
+    ImageDrawResult result = drawInternal(context, dstRect, scaledSrc, options, intermediateColorSpace);
 
     setImageObserver(observer);
     return result;
@@ -214,15 +223,15 @@
 
 RefPtr<NativeImage> SVGImage::nativeImage(const GraphicsContext*)
 {
-    return nativeImage(size(), FloatRect(FloatPoint(), size()));
+    return nativeImage(size(), FloatRect(FloatPoint(), size()), DestinationColorSpace::SRGB());
 }
 
-RefPtr<NativeImage> SVGImage::nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect)
+RefPtr<NativeImage> SVGImage::nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect, DestinationColorSpace colorSpace)
 {
     if (!m_page)
         return nullptr;
 
-    auto imageBuffer = ImageBuffer::create(imageSize, RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);
+    auto imageBuffer = ImageBuffer::create(imageSize, RenderingMode::Unaccelerated, 1, colorSpace, PixelFormat::BGRA8);
     if (!imageBuffer)
         return nullptr;
 
@@ -275,8 +284,18 @@
     image->drawPattern(context, dstRect, scaledSrcRect, unscaledPatternTransform, phase, spacing, options);
 }
 
+ImageDrawResult SVGImage::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace)
+{
+    return drawInternal(context, dstRect, srcRect, options, canvasColorSpace);
+}
+
 ImageDrawResult SVGImage::draw(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options)
 {
+    return drawInternal(context, dstRect, srcRect, options, DestinationColorSpace::SRGB());
+}
+
+ImageDrawResult SVGImage::drawInternal(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace intermediateColorSpace)
+{
     if (!m_page)
         return ImageDrawResult::DidNothing;
 
@@ -283,7 +302,7 @@
     if (!context.hasPlatformContext()) {
         // Display list drawing can't handle arbitrary DOM content.
         // FIXME https://bugs.webkit.org/show_bug.cgi?id=227748: Remove this when it can.
-        return drawAsNativeImage(context, dstRect, srcRect, options);
+        return drawAsNativeImage(context, dstRect, srcRect, options, intermediateColorSpace);
     }
 
     auto view = makeRefPtr(frameView());
@@ -336,12 +355,12 @@
 }
 
 
-ImageDrawResult SVGImage::drawAsNativeImage(GraphicsContext& context, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options)
+ImageDrawResult SVGImage::drawAsNativeImage(GraphicsContext& context, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& options, DestinationColorSpace colorSpace)
 {
     ASSERT(!context.hasPlatformContext());
 
     auto rectInNativeImage = FloatRect { { }, destination.size() };
-    auto nativeImage = this->nativeImage(rectInNativeImage.size(), source);
+    auto nativeImage = this->nativeImage(rectInNativeImage.size(), source, colorSpace);
     if (!nativeImage)
         return ImageDrawResult::DidNothing;
 

Modified: branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.h (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.h	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImage.h	2021-10-08 19:44:59 UTC (rev 283832)
@@ -88,14 +88,18 @@
 
     RefPtr<NativeImage> nativeImageForCurrentFrame(const GraphicsContext* = nullptr) final;
     RefPtr<NativeImage> nativeImage(const GraphicsContext* = nullptr) final;
-    RefPtr<NativeImage> nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect);
+    RefPtr<NativeImage> nativeImage(const FloatSize& imageSize, const FloatRect& sourceRect, DestinationColorSpace);
 
     void startAnimationTimerFired();
 
     WEBCORE_EXPORT explicit SVGImage(ImageObserver&);
     ImageDrawResult draw(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { }) final;
-    ImageDrawResult drawAsNativeImage(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = { });
+    ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace) final;
+    ImageDrawResult drawAsNativeImage(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace);
     ImageDrawResult drawForContainer(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& = { });
+    ImageDrawResult drawForContainerInternal(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace);
+    ImageDrawResult drawInternal(GraphicsContext&, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions&, DestinationColorSpace);
+    ImageDrawResult drawForCanvasForContainer(GraphicsContext&, const FloatSize containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions&, DestinationColorSpace);
     void drawPatternForContainer(GraphicsContext&, const FloatSize& containerSize, float containerZoom, const URL& initialFragmentURL, const FloatRect& srcRect, const AffineTransform&, const FloatPoint& phase, const FloatSize& spacing, const FloatRect&, const ImagePaintingOptions& = { });
 
     RefPtr<SVGSVGElement> rootElement() const;

Modified: branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.cpp (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.cpp	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.cpp	2021-10-08 19:44:59 UTC (rev 283832)
@@ -48,6 +48,11 @@
     return m_image->drawForContainer(context, m_containerSize, m_containerZoom, m_initialFragmentURL, dstRect, srcRect, options);
 }
 
+ImageDrawResult SVGImageForContainer::drawForCanvas(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const ImagePaintingOptions& options, DestinationColorSpace canvasColorSpace)
+{
+    return m_image->drawForCanvasForContainer(context, m_containerSize, m_containerZoom, m_initialFragmentURL, dstRect, srcRect, options, canvasColorSpace);
+}
+
 void SVGImageForContainer::drawPattern(GraphicsContext& context, const FloatRect& dstRect, const FloatRect& srcRect, const AffineTransform& patternTransform,
     const FloatPoint& phase, const FloatSize& spacing, const ImagePaintingOptions& options)
 {

Modified: branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.h (283831 => 283832)


--- branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.h	2021-10-08 19:44:52 UTC (rev 283831)
+++ branches/safari-612-branch/Source/WebCore/svg/graphics/SVGImageForContainer.h	2021-10-08 19:44:59 UTC (rev 283832)
@@ -54,6 +54,7 @@
     }
 
     ImageDrawResult draw(GraphicsContext&, const FloatRect&, const FloatRect&, const ImagePaintingOptions& = { }) final;
+    ImageDrawResult drawForCanvas(GraphicsContext&, const FloatRect&, const FloatRect&, const ImagePaintingOptions&, DestinationColorSpace) final;
 
     void drawPattern(GraphicsContext&, const FloatRect&, const FloatRect&, const AffineTransform&, const FloatPoint&, const FloatSize&, const ImagePaintingOptions& = { }) final;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to