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;