WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch with squashed dependencies for EWS
bug-230209-20210913172446.patch (text/plain), 254.69 KB, created by
Cameron McCormack (:heycam)
on 2021-09-13 00:24:48 PDT
(
hide
)
Description:
Patch with squashed dependencies for EWS
Filename:
MIME Type:
Creator:
Cameron McCormack (:heycam)
Created:
2021-09-13 00:24:48 PDT
Size:
254.69 KB
patch
obsolete
>Subversion Revision: 282318 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index dc02fd6a58ccb82a36bad158f0e1b147496e4db8..117514ea2f963a8e66e5abafcae985557a19fd13 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,28 @@ >+2021-09-11 Cameron McCormack <heycam@apple.com> >+ >+ Disable display-p3 canvas and ImageData on platforms other than Monterey+ and iOS 15+ >+ https://bugs.webkit.org/show_bug.cgi?id=230139 >+ <rdar://81828819> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add HAVE(CORE_ANIMATION_FIX_FOR_RADAR_78402035) to represent whether >+ CoreAnimation has a fix for a bug that prevents Display P3 canvas >+ rendering operations from behaving correctly. >+ >+ Add ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) to represent whether the >+ "display-p3" values of the PredefinedColorSpace IDL enum is enabled. >+ This in turn controls whether Display P3 canvases and ImageData objects >+ can be created. We turn this on only for platforms where >+ ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3), since that is what the >+ canvas and ImageData backing stores use, and only if >+ HAVE(CORE_ANIMATION_FIX_FOR_RADAR_78402035). The result is that these >+ features are only enabled on macOS Monterey+ and iOS 15+. >+ >+ * wtf/PlatformEnable.h: >+ * wtf/PlatformEnableCocoa.h: >+ * wtf/PlatformHave.h: >+ > 2021-09-11 Philippe Normand <pnormand@igalia.com> > > [GLIB] MediaSession is not enabled >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 481302f26746cdc909a5eb52293b57d1b9476347..a31b36258a7c0ead6f2455ae1de497ef373b94dc 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,58 @@ >+2021-09-12 Cameron McCormack <heycam@apple.com> >+ >+ Preserve canvas color space when producing JPEGs from toDataURL/toBlob >+ https://bugs.webkit.org/show_bug.cgi?id=230209 >+ <rdar://82948457> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Test: imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html >+ >+ * platform/graphics/cg/ImageBufferCGBackend.cpp: >+ (WebCore::colorSpaceForBitmap): Return an appropriate color space for >+ performing any graphics operations on ImageBuffers (such as scaling or >+ cropping, or compositing on top of solid colors) becore encoding. >+ (WebCore::createBitmapImageAfterScalingIfNeeded): >+ (WebCore::ImageBufferCGBackend::copyCGImageForEncoding const): >+ >+2021-09-05 Cameron McCormack <heycam@apple.com> >+ >+ Support drawImage with a wide gamut image painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229021 >+ <rdar://problem/81828450> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Expose the color space of a NativeImage. >+ >+ Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html >+ imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html >+ >+ * platform/graphics/NativeImage.h: >+ * platform/graphics/cairo/NativeImageCairo.cpp: >+ (WebCore::NativeImage::colorSpace const): >+ * platform/graphics/cg/NativeImageCG.cpp: >+ (WebCore::NativeImage::colorSpace const): >+ * platform/graphics/win/NativeImageDirect2D.cpp: >+ (WebCore::NativeImage::colorSpace const): >+ >+2021-09-11 Cameron McCormack <heycam@apple.com> >+ >+ Disable display-p3 canvas and ImageData on platforms other than Monterey+ and iOS 15+ >+ https://bugs.webkit.org/show_bug.cgi?id=230139 >+ <rdar://81828819> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * bindings/js/SerializedScriptValue.cpp: >+ (WebCore::CloneSerializer::write): >+ (WebCore::CloneDeserializer::read): >+ * html/canvas/PredefinedColorSpace.cpp: >+ (WebCore::toDestinationColorSpace): >+ (WebCore::toPredefinedColorSpace): >+ * html/canvas/PredefinedColorSpace.h: >+ * html/canvas/PredefinedColorSpace.idl: >+ > 2021-09-12 Simon Fraser <simon.fraser@apple.com> > > Implement getClientRects() for SVG elements >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index d17be4fd7c424890e988902ee06e2bc797abe191..a0241a0c0e89f37bf9c3ec3ff1809fed9fe1fda5 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,53 @@ >+2021-09-12 Cameron McCormack <heycam@apple.com> >+ >+ Support patterns with a wide gamut source painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229023 >+ <rdar://problem/81828466> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Patterns are sent to the GPU process using ShareableBitmaps created >+ from ImageBuffers. Ensure we pass along the pattern source color space >+ to ShareableBitmap::create. >+ >+ Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html >+ imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html >+ >+ * GPUProcess/graphics/RemoteRenderingBackend.cpp: >+ (WebKit::RemoteRenderingBackend::getShareableBitmapForImageBuffer): >+ >+2021-09-05 Cameron McCormack <heycam@apple.com> >+ >+ Support drawImage with a wide gamut image painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229021 >+ <rdar://problem/81828450> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ ShareableBitmap is used to share image data used by drawImage() calls, >+ from the Web process to the GPU process. This change makes >+ ShareableBitmap create a CGBitmap with a color space matching the >+ source NativeImage, if that is an RGB-based color space, or extended >+ sRGB otherwise. This allows us to pass Adobe RGB, Display P3, etc. >+ images to the GPU process without needing to convert color space, >+ while still allowing for example CMYK JPEGs to be drawn correctly. >+ >+ * Shared/ShareableBitmap.cpp: >+ (WebKit::ShareableBitmap::create): >+ (WebKit::ShareableBitmap::createShareable): >+ * Shared/ShareableBitmap.h: >+ * Shared/cairo/ShareableBitmapCairo.cpp: >+ (WebKit::ShareableBitmap::validateConfiguration): >+ * Shared/cg/ShareableBitmapCG.cpp: >+ (WebKit::ShareableBitmap::validateConfiguration): Map the requested >+ color space into one appropriate for the CGBitmap. >+ (WebKit::colorSpace): >+ * Shared/win/ShareableBitmapDirect2D.cpp: >+ (WebKit::ShareableBitmap::validateConfiguration): >+ * WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp: >+ (WebKit::createShareableBitmapFromNativeImage): Pass in the color >+ space of the NativeImage. >+ > 2021-09-12 David Kilzer <ddkilzer@apple.com> > > REGRESSION (r280758): WebKit project won't open in Xcode 11.4 >diff --git a/Source/WTF/wtf/PlatformEnable.h b/Source/WTF/wtf/PlatformEnable.h >index 041a3e28ec958a17127c0b027785caafe2bbe246..70fae2a88c1003a866df7e5aabc74323729b69e0 100644 >--- a/Source/WTF/wtf/PlatformEnable.h >+++ b/Source/WTF/wtf/PlatformEnable.h >@@ -888,6 +888,10 @@ > #define ENABLE_LLINT_EMBEDDED_OPCODE_ID 1 > #endif > >+#if !defined(ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3) >+#define ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3 0 >+#endif >+ > > > >@@ -925,3 +929,7 @@ > #endif > > #endif >+ >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) && !ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#error "ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) requires ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3)" >+#endif >diff --git a/Source/WTF/wtf/PlatformEnableCocoa.h b/Source/WTF/wtf/PlatformEnableCocoa.h >index b80c84296f44f03075e9056c409d80b75281f37f..79a7fe8e5364ef99ebf137ce8cc722c71e304616 100644 >--- a/Source/WTF/wtf/PlatformEnableCocoa.h >+++ b/Source/WTF/wtf/PlatformEnableCocoa.h >@@ -718,3 +718,7 @@ > #if !defined(ENABLE_IMAGE_ANALYSIS_FOR_MACHINE_READABLE_CODES) && HAVE(VK_IMAGE_ANALYSIS_FOR_MACHINE_READABLE_CODES) > #define ENABLE_IMAGE_ANALYSIS_FOR_MACHINE_READABLE_CODES 1 > #endif >+ >+#if !defined(ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3) && HAVE(CORE_ANIMATION_FIX_FOR_RADAR_78402035) >+#define ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3 1 >+#endif >diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h >index 69cdb5eaece968f9d56b9ffb6de024781815bc9f..6bda365a15eb71758a2946dcf5084d14e95db859 100644 >--- a/Source/WTF/wtf/PlatformHave.h >+++ b/Source/WTF/wtf/PlatformHave.h >@@ -1110,3 +1110,10 @@ > #if (PLATFORM(IOS) && !PLATFORM(IOS_FAMILY_SIMULATOR)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000 > #define HAVE_SYSTEM_STATUS 1 > #endif >+ >+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000) \ >+ || (((PLATFORM(IOS) && !PLATFORM(IOS_FAMILY_SIMULATOR)) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000) \ >+ || (PLATFORM(WATCHOS) && !PLATFORM(IOS_FAMILY_SIMULATOR) && __WATCH_OS_VERSION_MIN_REQUIRED >= 80000) \ >+ || (PLATFORM(APPLETV) && !PLATFORM(IOS_FAMILY_SIMULATOR) && __TV_OS_VERSION_MIN_REQUIRED >= 150000) >+#define HAVE_CORE_ANIMATION_FIX_FOR_RADAR_78402035 1 >+#endif >diff --git a/Source/WebCore/bindings/js/SerializedScriptValue.cpp b/Source/WebCore/bindings/js/SerializedScriptValue.cpp >index 504785c96d8f5643a961826855954de0657d6cc5..27b9971d6f34824dfbaa35aa04cdc30f80a935ba 100644 >--- a/Source/WebCore/bindings/js/SerializedScriptValue.cpp >+++ b/Source/WebCore/bindings/js/SerializedScriptValue.cpp >@@ -237,7 +237,7 @@ static unsigned typedArrayElementSize(ArrayBufferViewSubtag tag) > > enum class PredefinedColorSpaceTag : uint8_t { > SRGB = 0 >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > , DisplayP3 = 1 > #endif > }; >@@ -1564,7 +1564,7 @@ private: > case PredefinedColorSpace::SRGB: > writeLittleEndian<uint8_t>(m_buffer, static_cast<uint8_t>(PredefinedColorSpaceTag::SRGB)); > break; >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > case PredefinedColorSpace::DisplayP3: > writeLittleEndian<uint8_t>(m_buffer, static_cast<uint8_t>(PredefinedColorSpaceTag::DisplayP3)); > break; >@@ -2561,7 +2561,7 @@ private: > case PredefinedColorSpaceTag::SRGB: > result = PredefinedColorSpace::SRGB; > return true; >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > case PredefinedColorSpaceTag::DisplayP3: > result = PredefinedColorSpace::DisplayP3; > return true; >diff --git a/Source/WebCore/html/canvas/PredefinedColorSpace.cpp b/Source/WebCore/html/canvas/PredefinedColorSpace.cpp >index c29f3b2503520ab474c4cf0e8f86cfe4c2c22518..3a259f3e5d098c474b4329cbb2a7603314470fa0 100644 >--- a/Source/WebCore/html/canvas/PredefinedColorSpace.cpp >+++ b/Source/WebCore/html/canvas/PredefinedColorSpace.cpp >@@ -35,7 +35,7 @@ DestinationColorSpace toDestinationColorSpace(PredefinedColorSpace colorSpace) > switch (colorSpace) { > case PredefinedColorSpace::SRGB: > return DestinationColorSpace::SRGB(); >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > case PredefinedColorSpace::DisplayP3: > return DestinationColorSpace::DisplayP3(); > #endif >@@ -49,7 +49,7 @@ std::optional<PredefinedColorSpace> toPredefinedColorSpace(const DestinationColo > { > if (colorSpace == DestinationColorSpace::SRGB()) > return PredefinedColorSpace::SRGB; >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > if (colorSpace == DestinationColorSpace::DisplayP3()) > return PredefinedColorSpace::DisplayP3; > #endif >diff --git a/Source/WebCore/html/canvas/PredefinedColorSpace.h b/Source/WebCore/html/canvas/PredefinedColorSpace.h >index 91c46c0371758509a917da8b1155daf135b8bae3..95607a8cae37287c47cdd82cbbda9ec3832b1d07 100644 >--- a/Source/WebCore/html/canvas/PredefinedColorSpace.h >+++ b/Source/WebCore/html/canvas/PredefinedColorSpace.h >@@ -34,7 +34,7 @@ class DestinationColorSpace; > > enum class PredefinedColorSpace { > SRGB >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > , DisplayP3 > #endif > }; >@@ -50,7 +50,7 @@ template<> struct EnumTraits<WebCore::PredefinedColorSpace> { > using values = EnumValues< > WebCore::PredefinedColorSpace, > WebCore::PredefinedColorSpace::SRGB >-#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3) >+#if ENABLE(PREDEFINED_COLOR_SPACE_DISPLAY_P3) > , WebCore::PredefinedColorSpace::DisplayP3 > #endif > >; >diff --git a/Source/WebCore/html/canvas/PredefinedColorSpace.idl b/Source/WebCore/html/canvas/PredefinedColorSpace.idl >index 55f78b56e47b7beccde3174635629b7384315a3a..98e478742608e4b93e304ce4d6d2bebe98e2213c 100644 >--- a/Source/WebCore/html/canvas/PredefinedColorSpace.idl >+++ b/Source/WebCore/html/canvas/PredefinedColorSpace.idl >@@ -26,7 +26,7 @@ > // https://html.spec.whatwg.org/multipage/canvas.html#predefinedcolorspace > enum PredefinedColorSpace { > "srgb" >-#if defined(ENABLE_DESTINATION_COLOR_SPACE_DISPLAY_P3) && ENABLE_DESTINATION_COLOR_SPACE_DISPLAY_P3 >+#if defined(ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3) && ENABLE_PREDEFINED_COLOR_SPACE_DISPLAY_P3 > , "display-p3" > #endif > }; >diff --git a/Source/WebCore/platform/graphics/NativeImage.h b/Source/WebCore/platform/graphics/NativeImage.h >index 945b8de98d4b988ced9a265d16e5940131d1380c..436b6a543dabe09754bfa060987845620b91b4aa 100644 >--- a/Source/WebCore/platform/graphics/NativeImage.h >+++ b/Source/WebCore/platform/graphics/NativeImage.h >@@ -59,6 +59,7 @@ public: > WEBCORE_EXPORT IntSize size() const; > bool hasAlpha() const; > Color singlePixelSolidColor() const; >+ WEBCORE_EXPORT DestinationColorSpace colorSpace() const; > > void addObserver(Observer& observer) { m_observers.add(&observer); } > void removeObserver(Observer& observer) { m_observers.remove(&observer); } >diff --git a/Source/WebCore/platform/graphics/cairo/NativeImageCairo.cpp b/Source/WebCore/platform/graphics/cairo/NativeImageCairo.cpp >index 731700fdcba3f157577b30bc440dc6ec806ceb84..f7843b12280b13519b2c33a0281626a5cd55d702 100644 >--- a/Source/WebCore/platform/graphics/cairo/NativeImageCairo.cpp >+++ b/Source/WebCore/platform/graphics/cairo/NativeImageCairo.cpp >@@ -30,6 +30,7 @@ > > #include "CairoOperations.h" > #include "CairoUtilities.h" >+#include "NotImplemented.h" > #include <cairo.h> > > namespace WebCore { >@@ -56,6 +57,12 @@ Color NativeImage::singlePixelSolidColor() const > return unpremultiplied(asSRGBA(PackedColor::ARGB { *pixel })); > } > >+DestinationColorSpace NativeImage::colorSpace() const >+{ >+ notImplemented(); >+ return DestinationColorSpace::SRGB(); >+} >+ > void NativeImage::clearSubimages() > { > } >diff --git a/Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp b/Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp >index 367434b12c9bfaa720e9b5d18eb4347c85d21f24..aa79a32740948bb4bc90f0bde83e91d8a56f06b8 100644 >--- a/Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp >+++ b/Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp >@@ -93,6 +93,13 @@ static RetainPtr<CGImageRef> createCroppedImageIfNecessary(CGImageRef image, con > return image; > } > >+static CGColorSpaceRef colorSpaceForBitmap(DestinationColorSpace imageBufferColorSpace) >+{ >+ if (CGColorSpaceGetModel(imageBufferColorSpace.platformColorSpace()) != kCGColorSpaceModelRGB) >+ return sRGBColorSpaceRef(); >+ return imageBufferColorSpace.platformColorSpace(); >+} >+ > static RefPtr<Image> createBitmapImageAfterScalingIfNeeded(RefPtr<NativeImage>&& image, const IntSize& logicalSize, const IntSize& backendSize, float resolutionScale, PreserveResolution preserveResolution) > { > if (!image) >@@ -101,7 +108,7 @@ static RefPtr<Image> createBitmapImageAfterScalingIfNeeded(RefPtr<NativeImage>&& > if (resolutionScale == 1 || preserveResolution == PreserveResolution::Yes) > image = NativeImage::create(createCroppedImageIfNecessary(image->platformImage().get(), backendSize)); > else { >- auto context = adoptCF(CGBitmapContextCreate(0, logicalSize.width(), logicalSize.height(), 8, 4 * logicalSize.width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); >+ auto context = adoptCF(CGBitmapContextCreate(0, logicalSize.width(), logicalSize.height(), 8, 4 * logicalSize.width(), colorSpaceForBitmap(image->colorSpace()), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); > CGContextSetBlendMode(context.get(), kCGBlendModeCopy); > CGContextClipToRect(context.get(), FloatRect(FloatPoint::zero(), logicalSize)); > FloatSize imageSizeInUserSpace = logicalSize; >@@ -177,7 +184,7 @@ RetainPtr<CGImageRef> ImageBufferCGBackend::copyCGImageForEncoding(CFStringRef d > // FIXME: Should this be using the same logic as ImageBufferUtilitiesCG? > > // JPEGs don't have an alpha channel, so we have to manually composite on top of black. >- PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, DestinationColorSpace::SRGB() }; >+ PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, DestinationColorSpace(colorSpaceForBitmap(colorSpace())) }; > auto pixelBuffer = getPixelBuffer(format, logicalRect()); > if (!pixelBuffer) > return nullptr; >@@ -209,7 +216,7 @@ RetainPtr<CGImageRef> ImageBufferCGBackend::copyCGImageForEncoding(CFStringRef d > if (!nativeImage) > return nullptr; > auto image = nativeImage->platformImage(); >- auto context = adoptCF(CGBitmapContextCreate(0, backendSize().width(), backendSize().height(), 8, 4 * backendSize().width(), sRGBColorSpaceRef(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); >+ auto context = adoptCF(CGBitmapContextCreate(0, backendSize().width(), backendSize().height(), 8, 4 * backendSize().width(), colorSpaceForBitmap(colorSpace()), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); > CGContextSetBlendMode(context.get(), kCGBlendModeCopy); > CGContextClipToRect(context.get(), CGRectMake(0, 0, backendSize().width(), backendSize().height())); > CGContextDrawImage(context.get(), CGRectMake(0, 0, backendSize().width(), backendSize().height()), image.get()); >diff --git a/Source/WebCore/platform/graphics/cg/NativeImageCG.cpp b/Source/WebCore/platform/graphics/cg/NativeImageCG.cpp >index bf465bab876a1b2e5ccffc22d1e941ea52b1d953..8824ff917a0c7b8afd20bee755128ad70d3ae22b 100644 >--- a/Source/WebCore/platform/graphics/cg/NativeImageCG.cpp >+++ b/Source/WebCore/platform/graphics/cg/NativeImageCG.cpp >@@ -64,6 +64,11 @@ Color NativeImage::singlePixelSolidColor() const > return makeFromComponentsClampingExceptAlpha<SRGBA<uint8_t>>(pixel[0] * 255 / pixel[3], pixel[1] * 255 / pixel[3], pixel[2] * 255 / pixel[3], pixel[3]); > } > >+DestinationColorSpace NativeImage::colorSpace() const >+{ >+ return DestinationColorSpace(CGImageGetColorSpace(m_platformImage.get())); >+} >+ > void NativeImage::clearSubimages() > { > #if CACHE_SUBIMAGES >diff --git a/Source/WebCore/platform/graphics/win/NativeImageDirect2D.cpp b/Source/WebCore/platform/graphics/win/NativeImageDirect2D.cpp >index a64b4568b7cc535748b0bd60c130f59d11d1d52a..c1df52d454804de9663f61a15e675fdd6d03420d 100644 >--- a/Source/WebCore/platform/graphics/win/NativeImageDirect2D.cpp >+++ b/Source/WebCore/platform/graphics/win/NativeImageDirect2D.cpp >@@ -66,6 +66,12 @@ Color NativeImage::singlePixelSolidColor() const > return Color(); > } > >+DestinationColorSpace NativeImage::colorSpace() const >+{ >+ notImplemented(); >+ return DestinationColorSpace::SRGB(); >+} >+ > void NativeImage::clearSubimages() > { > notImplemented(); >diff --git a/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp b/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp >index 193107987799a361afa95a22231f123ea26bd7d5..4693fc05c19eaf72bdc7e28573e3c8aa3f557a0b 100644 >--- a/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp >+++ b/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp >@@ -466,7 +466,7 @@ void RemoteRenderingBackend::getShareableBitmapForImageBuffer(WebCore::Rendering > return; > auto backendSize = imageBuffer->backendSize(); > auto resultSize = preserveResolution == WebCore::PreserveResolution::Yes ? backendSize : imageBuffer->logicalSize(); >- auto bitmap = ShareableBitmap::createShareable(resultSize, { }); >+ auto bitmap = ShareableBitmap::createShareable(resultSize, { imageBuffer->colorSpace() }); > if (!bitmap) > return; > auto context = bitmap->createGraphicsContext(); >diff --git a/Source/WebKit/Shared/ShareableBitmap.cpp b/Source/WebKit/Shared/ShareableBitmap.cpp >index 64a3505dcc6a7702b0c1a45eeca56d9909648fb5..c0552e9459d39a74abaaa29d6273e8076e08553a 100644 >--- a/Source/WebKit/Shared/ShareableBitmap.cpp >+++ b/Source/WebKit/Shared/ShareableBitmap.cpp >@@ -112,6 +112,7 @@ bool ShareableBitmap::Configuration::decode(IPC::Decoder& decoder, Configuration > > RefPtr<ShareableBitmap> ShareableBitmap::create(const IntSize& size, Configuration configuration) > { >+ validateConfiguration(configuration); > auto numBytes = numBytesForSize(size, configuration); > if (numBytes.hasOverflowed()) > return nullptr; >@@ -125,6 +126,7 @@ RefPtr<ShareableBitmap> ShareableBitmap::create(const IntSize& size, Configurati > > RefPtr<ShareableBitmap> ShareableBitmap::createShareable(const IntSize& size, Configuration configuration) > { >+ validateConfiguration(configuration); > auto numBytes = numBytesForSize(size, configuration); > if (numBytes.hasOverflowed()) > return nullptr; >@@ -140,6 +142,7 @@ RefPtr<ShareableBitmap> ShareableBitmap::create(const IntSize& size, Configurati > { > ASSERT(sharedMemory); > >+ validateConfiguration(configuration); > auto numBytes = numBytesForSize(size, configuration); > if (numBytes.hasOverflowed()) > return nullptr; >diff --git a/Source/WebKit/Shared/ShareableBitmap.h b/Source/WebKit/Shared/ShareableBitmap.h >index 301c8963ea29b1116b813bdea44dd4a5ad746891..e6b581404f196cac3e4349a91febbd7025d77edd 100644 >--- a/Source/WebKit/Shared/ShareableBitmap.h >+++ b/Source/WebKit/Shared/ShareableBitmap.h >@@ -84,6 +84,7 @@ public: > Configuration m_configuration; > }; > >+ static void validateConfiguration(Configuration&); > static CheckedUint32 numBytesForSize(WebCore::IntSize, const ShareableBitmap::Configuration&); > static CheckedUint32 calculateBytesPerRow(WebCore::IntSize, const Configuration&); > static CheckedUint32 calculateBytesPerPixel(const Configuration&); >diff --git a/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp b/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >index 66b580c98afe4f178935aae3036df5328491adaa..233f1d701f38d6601b9a832b308360ccd9d11e80 100644 >--- a/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >+++ b/Source/WebKit/Shared/cairo/ShareableBitmapCairo.cpp >@@ -39,6 +39,10 @@ using namespace WebCore; > > static const cairo_format_t cairoFormat = CAIRO_FORMAT_ARGB32; > >+void ShareableBitmap::validateConfiguration(Configuration&) >+{ >+} >+ > CheckedUint32 ShareableBitmap::calculateBytesPerRow(WebCore::IntSize size, const Configuration&) > { > return cairo_format_stride_for_width(cairoFormat, size.width()); >diff --git a/Source/WebKit/Shared/cg/ShareableBitmapCG.cpp b/Source/WebKit/Shared/cg/ShareableBitmapCG.cpp >index f65f1caff53d81ef1fa420a816387fdcc7b63087..52fd3fbfa81c45595ce60cb2b2b67937fb5e52ac 100644 >--- a/Source/WebKit/Shared/cg/ShareableBitmapCG.cpp >+++ b/Source/WebKit/Shared/cg/ShareableBitmapCG.cpp >@@ -37,10 +37,30 @@ > > namespace WebKit { > using namespace WebCore; >- >+ >+void ShareableBitmap::validateConfiguration(Configuration& configuration) >+{ >+ if (!configuration.colorSpace) >+ return; >+ >+ CGColorSpaceRef colorSpace = configuration.colorSpace->platformColorSpace(); >+ if (CGColorSpaceGetModel(colorSpace) == kCGColorSpaceModelIndexed) >+ colorSpace = CGColorSpaceGetBaseColorSpace(colorSpace); >+ >+ if (CGColorSpaceGetModel(colorSpace) != kCGColorSpaceModelRGB) { >+#if HAVE(CORE_GRAPHICS_EXTENDED_SRGB_COLOR_SPACE) >+ colorSpace = extendedSRGBColorSpaceRef(); >+#else >+ colorSpace = sRGBColorSpaceRef(); >+#endif >+ } >+ >+ configuration.colorSpace = DestinationColorSpace(colorSpace); >+} >+ > static CGColorSpaceRef colorSpace(const ShareableBitmap::Configuration& configuration) > { >- return configuration.colorSpace ? configuration.colorSpace->platformColorSpace() : WebCore::sRGBColorSpaceRef(); >+ return configuration.colorSpace ? configuration.colorSpace->platformColorSpace() : sRGBColorSpaceRef(); > } > > static bool wantsExtendedRange(const ShareableBitmap::Configuration& configuration) >diff --git a/Source/WebKit/Shared/win/ShareableBitmapDirect2D.cpp b/Source/WebKit/Shared/win/ShareableBitmapDirect2D.cpp >index 3b3f0fbe62f5ccfc517761d417d4b05992d9fe6b..7514f28746ecc8d42a6532d664be8497b5bb7c1b 100644 >--- a/Source/WebKit/Shared/win/ShareableBitmapDirect2D.cpp >+++ b/Source/WebKit/Shared/win/ShareableBitmapDirect2D.cpp >@@ -47,6 +47,10 @@ > namespace WebKit { > using namespace WebCore; > >+void ShareableBitmap::validateConfiguration(Configuration&) >+{ >+} >+ > static unsigned strideForWidth(unsigned width) > { > static unsigned bitsPerPixel = Direct2D::bitsPerPixel(Direct2D::wicBitmapFormat()); >diff --git a/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp b/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp >index e215f09919b3dd88fa800e1a7d988cfc33dd7ec8..94520a6c60dfbd04705674eedc1426df7498950d 100644 >--- a/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp >+++ b/Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp >@@ -72,7 +72,7 @@ inline static RefPtr<ShareableBitmap> createShareableBitmapFromNativeImage(Nativ > { > auto imageSize = image.size(); > >- auto bitmap = ShareableBitmap::createShareable(image.size(), { }); >+ auto bitmap = ShareableBitmap::createShareable(image.size(), { image.colorSpace() }); > if (!bitmap) > return nullptr; > >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 5553a589b1709acbe1fe5e65cb2c8f85478e5f12..07acf5429ea86f33185fd7b4f4b5d1216d4f40b8 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,46 @@ >+2021-09-13 Cameron McCormack <heycam@apple.com> >+ >+ Preserve canvas color space when producing JPEGs from toDataURL/toBlob >+ https://bugs.webkit.org/show_bug.cgi?id=230209 >+ <rdar://82948457> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestExpectations: >+ * platform/ios-14/TestExpectations: >+ * platform/ios/TestExpectations: >+ * platform/mac/TestExpectations: >+ >+2021-09-12 Cameron McCormack <heycam@apple.com> >+ >+ Support drawImage with a wide gamut image painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229021 >+ <rdar://problem/81828450> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestExpectations: >+ * platform/ios-14/TestExpectations: >+ * platform/ios/TestExpectations: >+ * platform/mac/TestExpectations: >+ >+2021-09-11 Cameron McCormack <heycam@apple.com> >+ >+ Disable display-p3 canvas and ImageData on platforms other than Monterey+ and iOS 15+ >+ https://bugs.webkit.org/show_bug.cgi?id=230139 >+ <rdar://81828819> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestExpectations: >+ * platform/glib/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt: Removed. >+ * platform/ios-14/TestExpectations: >+ * platform/ios/TestExpectations: >+ * platform/ios/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt: Removed. >+ * platform/mac-bigsur/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt: Removed. >+ * platform/mac-catalina/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt: Removed. >+ * platform/mac/TestExpectations: >+ > 2021-09-12 Fujii Hironori <Hironori.Fujii@sony.com> > > [WinCairo] Unreviewed test gardening >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 3c19d99e06dbb1d809083a9fc3104e6c3fed4bc3..12840db0de4462e1009547b429c4a8b6bbf7ac1f 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,86 @@ >+2021-09-12 Cameron McCormack <heycam@apple.com> >+ >+ Preserve canvas color space when producing JPEGs from toDataURL/toBlob >+ https://bugs.webkit.org/show_bug.cgi?id=230209 >+ <rdar://82948457> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas-expected.txt: Added. >+ * web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html. >+ * web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas-expected.txt: >+ * web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html: >+ * web-platform-tests/html/canvas/tools/yaml/element/color_space.yaml: >+ >+2021-09-12 Cameron McCormack <heycam@apple.com> >+ >+ Support patterns with a wide gamut source painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229023 >+ <rdar://problem/81828466> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add tests for wide gamut <img> and <canvas> sources for patterns. >+ >+ * 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-pattern-canvas-expected.txt: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js: >+ >+2021-09-07 Cameron McCormack <heycam@apple.com> >+ >+ Support drawImage with a wide gamut image painting into a display-p3 canvas >+ https://bugs.webkit.org/show_bug.cgi?id=229021 >+ <rdar://problem/81828450> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Adding a new WPT for drawImage() using images with various embedded >+ color profiles. >+ >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings-expected.txt: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js: Added. >+ (pixelsApproximatelyEqual): >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000FFFF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000FFFF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000FFFF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000FFFF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-BE000000.jpeg: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-FF000000.jpeg: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000FFFF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000CC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000FF.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000CCCC.png: Added. >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000FFFF.png: Added. >+ >+ * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt: >+ Results changing for an existing test. It's designed to test canvas >+ with a float16 backing store, which is (at the moment) non-standard, >+ and unsupported by us. The sub-tests changing from PASS to FAIL are >+ notable; they are drawing semi-transparent 16 bit wide gamut images >+ and comparing the results to drawing 8 bit equivalent images. Might >+ be accuracy issues due to pre-multiplied alpha? >+ > 2021-09-11 Simon Fraser <simon.fraser@apple.com> > > css/css-transforms/translate-getComputedStyle.html fails >diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations >index 761adec29955d1fbda8c4803fc1d576a502a43a4..e8d821a07fdff2e60b53705cce909a9bee33dd52 100644 >--- a/LayoutTests/TestExpectations >+++ b/LayoutTests/TestExpectations >@@ -5254,6 +5254,26 @@ webkit.org/b/227086 imported/w3c/web-platform-tests/webxr/xrWebGLLayer_construct > # Invalid test. Tests color(lab ...) which has been removed from the standard. > imported/w3c/web-platform-tests/css/css-color/predefined-013.html [ Skip ] > >+# display-p3 canvas and ImageData are Cocoa only for now. >+fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ] >+fast/canvas/canvas-color-space-display-p3.html [ Failure ] >+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-pattern-canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.shadow.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.strokeText.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.srgb.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.with.putImageData.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.with.putImageData.html [ Failure ] >+storage/indexeddb/structured-clone-image-data-display-p3.html [ Failure ] >+ > webkit.org/b/226942 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html [ Pass Failure ] > > webkit.org/b/227849 imported/w3c/web-platform-tests/css/css-overflow/overflow-body-propagation-007.html [ Skip ] >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..370f1775c9019e565c3fad659c1d645e74904dc2 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-expected.txt >@@ -0,0 +1,210 @@ >+ >+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.jpeg, Context srgb, ImageData srgb, scaleImage=false >+PASS Generic-CMYK-FF000000.jpeg, Context srgb, ImageData srgb, scaleImage=true >+PASS Generic-CMYK-FF000000.jpeg, Context srgb, ImageData display-p3, scaleImage=false >+PASS Generic-CMYK-FF000000.jpeg, Context srgb, ImageData display-p3, scaleImage=true >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData srgb, scaleImage=false >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData srgb, scaleImage=true >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData display-p3, scaleImage=false >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData display-p3, scaleImage=true >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData srgb, scaleImage=false >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData srgb, scaleImage=true >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData display-p3, scaleImage=false >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData display-p3, scaleImage=true >+PASS Generic-CMYK-BE000000.jpeg, Context display-p3, ImageData srgb, scaleImage=false >+PASS Generic-CMYK-BE000000.jpeg, Context display-p3, ImageData srgb, scaleImage=true >+PASS Generic-CMYK-BE000000.jpeg, Context display-p3, ImageData display-p3, scaleImage=false >+PASS Generic-CMYK-BE000000.jpeg, 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 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html >new file mode 100644 >index 0000000000000000000000000000000000000000..02547b82a234f0c329cabba3075e6434bbb6fe3a >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.html >@@ -0,0 +1,41 @@ >+<!DOCTYPE HTML> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="canvas-display-p3.js"></script> >+<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 = `resources/${filename}`; >+ }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, scaleImage=${scaleImage}`); >+ } >+ } >+ } >+} >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..f17ea5e1691e8a7f67682b4b290c3f0685df764a >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas-expected.txt >@@ -0,0 +1,10 @@ >+ >+PASS Source srgb, destination display-p3, color 255,0,0,255 >+PASS Source srgb, destination display-p3, color 255,0,0,204 >+PASS Source srgb, destination display-p3, color 187,0,0,255 >+PASS Source srgb, destination display-p3, color 187,0,0,204 >+PASS Source display-p3, destination srgb, color 255,0,0,255 >+PASS Source display-p3, destination srgb, color 255,0,0,204 >+PASS Source display-p3, destination srgb, color 187,0,0,255 >+PASS Source display-p3, destination srgb, color 187,0,0,204 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html >new file mode 100644 >index 0000000000000000000000000000000000000000..f5bb9d81a7717bb13333079aacfd09c3762470ec >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html >@@ -0,0 +1,44 @@ >+<!DOCTYPE HTML> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="canvas-display-p3.js"></script> >+<script> >+// Test that patterns created from canvas sources with different color spaces >+// can be drawn into sRGB and Display P3 canvases, by reading pixels with >+// getImageData() as sRGB and Display P3 values. >+function runTest(sourceColorSpace, destinationColorSpace, colors) { >+ for (let [sourceColorString, expectedColor] of Object.entries(colors)) { >+ test(function() { >+ let source = document.createElement("canvas"); >+ source.width = 2; >+ source.height = 2; >+ >+ let sourceContext = source.getContext("2d", { colorSpace: sourceColorSpace }); >+ >+ let sourceColor = sourceColorString.split(",").map(x => +x); >+ >+ let sourceImageData = new ImageData(2, 2, { colorSpace: sourceColorSpace }); >+ for (let i = 0; i < 2 * 2; i += 4) { >+ for (let c = 0; c < 4; ++c) >+ sourceImageData.data[i + c] = sourceColor[c]; >+ } >+ sourceContext.putImageData(sourceImageData, 0, 0); >+ >+ let destination = document.createElement("canvas"); >+ destination.width = 4; >+ destination.height = 4; >+ >+ let destinationContext = destination.getContext("2d", { colorSpace: destinationColorSpace }); >+ destinationContext.fillStyle = destinationContext.createPattern(source, "repeat"); >+ destinationContext.fillRect(0, 0, 4, 4); >+ >+ let destinationImageData = destinationContext.getImageData(2, 2, 1, 1); >+ >+ assert_true(pixelsApproximatelyEqual(destinationImageData.data, expectedColor), `Actual pixel value ${[...destinationImageData.data]} is approximately equal to ${expectedColor}.`); >+ }, `Source ${sourceColorSpace}, destination ${destinationColorSpace}, color ${sourceColorString}`); >+ } >+} >+ >+runTest("srgb", "display-p3", fromSRGBToDisplayP3); >+runTest("display-p3", "srgb", fromDisplayP3ToSRGB); >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..2b921289990401114695a218221e87566e830317 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image-expected.txt >@@ -0,0 +1,106 @@ >+ >+PASS sRGB-FF0000FF.png, Context srgb, ImageData srgb >+PASS sRGB-FF0000FF.png, Context srgb, ImageData display-p3 >+PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb >+PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3 >+PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb >+PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3 >+PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb >+PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3 >+PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb >+PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3 >+PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb >+PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3 >+PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb >+PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3 >+PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb >+PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb >+PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3 >+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb >+PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb >+PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3 >+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb >+PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb >+PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3 >+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb >+PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb >+PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3 >+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb >+PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3 >+PASS Generic-CMYK-FF000000.jpeg, Context srgb, ImageData srgb >+PASS Generic-CMYK-FF000000.jpeg, Context srgb, ImageData display-p3 >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData srgb >+PASS Generic-CMYK-FF000000.jpeg, Context display-p3, ImageData display-p3 >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData srgb >+PASS Generic-CMYK-BE000000.jpeg, Context srgb, ImageData display-p3 >+PASS Generic-CMYK-BE000000.jpeg, Context display-p3, ImageData srgb >+PASS Generic-CMYK-BE000000.jpeg, Context display-p3, ImageData display-p3 >+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb >+PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb >+PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb >+PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb >+PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3 >+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb >+PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb >+PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb >+PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb >+PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb >+PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb >+PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb >+PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb >+PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb >+PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb >+PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb >+PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb >+PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3 >+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb >+PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3 >+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb >+PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html >new file mode 100644 >index 0000000000000000000000000000000000000000..75a8392c0274c2c19a763805e23f05dc18f8825f >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html >@@ -0,0 +1,37 @@ >+<!DOCTYPE HTML> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="canvas-display-p3.js"></script> >+<script> >+// Test that patterns created from images with different bit depths and color >+// profiles into can be drawn into sRGB and Display P3 canvases, 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"]) { >+ async_test(function(t) { >+ let image = new Image(); >+ image.onload = t.step_func_done(function() { >+ >+ let canvas = document.createElement("canvas"); >+ canvas.width = 4; >+ canvas.height = 4; >+ >+ let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace }); >+ ctx.fillStyle = ctx.createPattern(image, "repeat"); >+ ctx.fillRect(0, 0, 4, 4); >+ >+ let imageData = ctx.getImageData(2, 2, 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 = `resources/${filename}`; >+ }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}`); >+ } >+ } >+} >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7c950c79fb9970d59eb73d709f57fca002b5380c >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings-expected.txt >@@ -0,0 +1,11 @@ >+ >+PASS Context undefined, ImageData undefined >+PASS Context undefined, ImageData srgb >+PASS Context undefined, ImageData display-p3 >+PASS Context srgb, ImageData undefined >+PASS Context srgb, ImageData srgb >+PASS Context srgb, ImageData display-p3 >+PASS Context display-p3, ImageData undefined >+PASS Context display-p3, ImageData srgb >+PASS Context display-p3, ImageData display-p3 >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html >new file mode 100644 >index 0000000000000000000000000000000000000000..2b1447437d4fdc46b8c9ef83790a6337eac22097 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html >@@ -0,0 +1,36 @@ >+<!DOCTYPE HTML> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script> >+// Test that creating canvas contexts and ImageData objects respect the >+// requested color space. >+ >+for (let contextColorSpace of [undefined, "srgb", "display-p3"]) { >+ for (let imageDataColorSpace of [undefined, "srgb", "display-p3"]) { >+ test(function() { >+ let contextSettings = { }; >+ if (contextColorSpace) >+ contextSettings.colorSpace = contextColorSpace; >+ let resolvedContextColorSpace = contextColorSpace || "srgb"; >+ >+ let canvas = document.createElement("canvas"); >+ let ctx = canvas.getContext("2d", contextSettings); >+ assert_equals(ctx.getContextAttributes().colorSpace, resolvedContextColorSpace, `CanvasRenderingContext2DSettings.colorSpace when set to ${contextColorSpace}`); >+ >+ let imageDataSettings = { }; >+ if (imageDataColorSpace) >+ imageDataSettings.colorSpace = imageDataColorSpace; >+ let resolvedImageDataColorSpace = imageDataColorSpace || resolvedContextColorSpace; >+ >+ let imageData = ctx.getImageData(0, 0, 1, 1, imageDataSettings); >+ assert_equals(imageData.colorSpace, resolvedImageDataColorSpace, `getImageData() colorSpace when set to ${imageDataColorSpace}`); >+ >+ imageData = ctx.createImageData(1, 1, imageDataSettings); >+ assert_equals(imageData.colorSpace, resolvedImageDataColorSpace, `createImageData() colorSpace when set to ${imageDataColorSpace}`); >+ >+ imageData = ctx.createImageData(imageData); >+ assert_equals(imageData.colorSpace, resolvedImageDataColorSpace, `Cloned ImageData colorSpace when set to ${imageDataColorSpace}`); >+ }, `Context ${contextColorSpace}, ImageData ${imageDataColorSpace}`); >+ } >+} >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js >new file mode 100644 >index 0000000000000000000000000000000000000000..f8278f64bfe95811b4b89c745e48524587618b95 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js >@@ -0,0 +1,200 @@ >+// Each image: >+// * is 2x2 and has a single color >+// * has a filename that indicates its contents: >+// <embedded-profile>-<8-or-16-bit-color-value>.png >+// * was generated using ImageMagick commands like: >+// convert -size 2x2 xc:'#BB0000FF' -profile Display-P3.icc Display-P3-BB0000FF.png >+// convert -size 2x2 xc:'#BBBC00000000FFFF' -profile Adobe-RGB.icc Adobe-RGB-BBBC00000000FFFF.png >+ >+// Top level key is the image filename. Second level key is the pair of >+// CanvasRenderingContext2DSettings.colorSpace and ImageDataSettings.colorSpace. >+const imageTests = { >+ // 8 bit source images >+ >+ "sRGB-FF0000FF.png": { >+ "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-FF0000CC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 0, 0, 204], >+ "display-p3 display-p3": [234, 51, 35, 204], >+ }, >+ "sRGB-BB0000FF.png": { >+ "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], >+ }, >+ "sRGB-BB0000CC.png": { >+ "srgb srgb": [187, 0, 0, 204], >+ "srgb display-p3": [171, 35, 23, 204], >+ "display-p3 srgb": [187, 1, 0, 204], >+ "display-p3 display-p3": [171, 35, 23, 204], >+ }, >+ >+ "Display-P3-FF0000FF.png": { >+ "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-FF0000CC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 0, 0, 204], >+ "display-p3 display-p3": [255, 0, 0, 204], >+ }, >+ "Display-P3-BB0000FF.png": { >+ "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], >+ }, >+ "Display-P3-BB0000CC.png": { >+ "srgb srgb": [205, 0, 0, 204], >+ "srgb display-p3": [188, 39, 26, 204], >+ "display-p3 srgb": [205, 0, 0, 204], >+ "display-p3 display-p3": [187, 0, 0, 204], >+ }, >+ >+ "Adobe-RGB-FF0000FF.png": { >+ "srgb srgb": [255, 0, 0, 255], >+ "srgb display-p3": [234, 51, 35, 255], >+ "display-p3 srgb": [255, 19, 11, 255], >+ "display-p3 display-p3": [255, 61, 43, 255], >+ }, >+ "Adobe-RGB-FF0000CC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 19, 11, 204], >+ "display-p3 display-p3": [255, 61, 43, 204], >+ }, >+ "Adobe-RGB-BB0000FF.png": { >+ "srgb srgb": [219, 0, 0, 255], >+ "srgb display-p3": [201, 42, 29, 255], >+ "display-p3 srgb": [219, 0, 1, 255], >+ "display-p3 display-p3": [201, 42, 29, 255], >+ }, >+ "Adobe-RGB-BB0000CC.png": { >+ "srgb srgb": [219, 0, 0, 204], >+ "srgb display-p3": [201, 42, 29, 204], >+ "display-p3 srgb": [219, 0, 1, 204], >+ "display-p3 display-p3": [201, 42, 29, 204], >+ }, >+ >+ "Generic-CMYK-FF000000.jpeg": { >+ "srgb srgb": [0, 163, 218, 255], >+ "srgb display-p3": [72, 161, 213, 255], >+ "display-p3 srgb": [0, 163, 218, 255], >+ "display-p3 display-p3": [0, 160, 213, 255], >+ }, >+ "Generic-CMYK-BE000000.jpeg": { >+ "srgb srgb": [0, 180, 223, 255], >+ "srgb display-p3": [80, 177, 219, 255], >+ "display-p3 srgb": [0, 180, 223, 255], >+ "display-p3 display-p3": [65, 177, 219, 255], >+ }, >+ >+ // 16 bit source images >+ >+ "sRGB-FFFF00000000FFFF.png": { >+ "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-FFFF00000000CCCC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 0, 0, 204], >+ "display-p3 display-p3": [234, 51, 35, 204], >+ }, >+ "sRGB-BBBC00000000FFFF.png": { >+ "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], >+ }, >+ "sRGB-BBBC00000000CCCC.png": { >+ "srgb srgb": [187, 0, 0, 204], >+ "srgb display-p3": [171, 35, 23, 204], >+ "display-p3 srgb": [187, 1, 0, 204], >+ "display-p3 display-p3": [171, 35, 23, 204], >+ }, >+ >+ "Display-P3-FFFF00000000FFFF.png": { >+ "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-FFFF00000000CCCC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 0, 0, 204], >+ "display-p3 display-p3": [255, 0, 0, 204], >+ }, >+ "Display-P3-BBBC00000000FFFF.png": { >+ "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], >+ }, >+ "Display-P3-BBBC00000000CCCC.png": { >+ "srgb srgb": [205, 0, 0, 204], >+ "srgb display-p3": [188, 39, 26, 204], >+ "display-p3 srgb": [205, 0, 0, 204], >+ "display-p3 display-p3": [187, 0, 0, 204], >+ }, >+ >+ "Adobe-RGB-FFFF00000000FFFF.png": { >+ "srgb srgb": [255, 0, 0, 255], >+ "srgb display-p3": [234, 51, 35, 255], >+ "display-p3 srgb": [255, 19, 11, 255], >+ "display-p3 display-p3": [255, 61, 43, 255], >+ }, >+ "Adobe-RGB-FFFF00000000CCCC.png": { >+ "srgb srgb": [255, 0, 0, 204], >+ "srgb display-p3": [234, 51, 35, 204], >+ "display-p3 srgb": [255, 19, 11, 204], >+ "display-p3 display-p3": [255, 61, 43, 204], >+ }, >+ "Adobe-RGB-BBBC00000000FFFF.png": { >+ "srgb srgb": [219, 0, 0, 255], >+ "srgb display-p3": [201, 42, 29, 255], >+ "display-p3 srgb": [219, 0, 1, 255], >+ "display-p3 display-p3": [201, 42, 29, 255], >+ }, >+ "Adobe-RGB-BBBC00000000CCCC.png": { >+ "srgb srgb": [219, 0, 0, 204], >+ "srgb display-p3": [201, 42, 29, 204], >+ "display-p3 srgb": [219, 0, 1, 204], >+ "display-p3 display-p3": [201, 42, 29, 204], >+ }, >+}; >+ >+const fromSRGBToDisplayP3 = { >+ "255,0,0,255": [234, 51, 35, 255], >+ "255,0,0,204": [234, 51, 35, 204], >+ "187,0,0,255": [171, 35, 23, 255], >+ "187,0,0,204": [171, 35, 23, 204], >+}; >+ >+const fromDisplayP3ToSRGB = { >+ "255,0,0,255": [255, 0, 0, 255], >+ "255,0,0,204": [255, 0, 0, 204], >+ "187,0,0,255": [205, 0, 0, 255], >+ "187,0,0,204": [205, 0, 0, 204], >+}; >+ >+function pixelsApproximatelyEqual(p1, p2) { >+ for (let i = 0; i < 4; ++i) { >+ if (Math.abs(p1[i] - p2[i]) > 2) >+ return false; >+ } >+ return true; >+} >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >index 6cde1dfb481d3d3ebf404b667b36dce3b754253c..b98839beb9d9f0c33a051ad70511b34687e87426 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >@@ -6,38 +6,38 @@ PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png >+FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 8, expected 23 +/- 8, expected 23 but got 10 >+FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 8, expected 23 +/- 8, expected 23 but got 10 > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png >+FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 14, expected 140 +/- 8, expected 140 but got 130 >+FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 14, expected 140 +/- 8, expected 140 but got 130 > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png > PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >+PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png >+FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 12, expected 115 +/- 8, expected 115 but got 125 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 132 +/- 0.05, expected 132 but got 128 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 > FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 2, expected 161 +/- 0.05, expected 161 but got 159 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 2, expected 161 +/- 0.05, expected 161 but got 159 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 132 +/- 0.05, expected 132 but got 134 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 132 +/- 0.05, expected 132 but got 134 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 4, expected 217 +/- 0.05, expected 217 but got 215 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 4, expected 217 +/- 0.05, expected 217 but got 215 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 12, expected 230 +/- 0.05, expected 230 but got 231 >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 12, expected 230 +/- 0.05, expected 230 but got 231 >+PASS Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png >+FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 12, expected 115 +/- 0.05, expected 115 but got 125 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..9b3db7e22e15152fa8bc528cbbe052211f504c0a >GIT binary patch >literal 575 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wFyBQe%|NnpWN=-IUgs~*ZFZj$Qld!)a >zPLj8~3*&z#-FrX|dx@v7EBjMUW;QiJ3u&V)pb(Fzi(?4Kbzqbv0C_A7jOr%ppomm0 >zag8WRNi0dVN-jzTQVd20MuxfumbwPUAqHkv#uiqF=Gq1ZRt5&=AH7jU(U6;;l9^VC >WTf@HnAv1v*7(8A5T-G@yGywokhq+n+ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BB0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..78237d5a9df4b97d2b8330b9ac5d07646bd3ee25 >GIT binary patch >literal 562 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wFyBQe%|NnpWN=-IUgfYq6-G%W#lkPnr >zhrPtp*OmP#Co`LxpoO$i7Ep-C)5S4_<2o=F5`a7w21a!gbx_=?mbgZgq$HN4S|t~y >z0x1R~10zFS14~^4;}8QgD`N{QLvw8d11kfA^N-%BqG-s?PsvQH#I0f9{*akK4Gf;H >KelF{r5}E)me6-B~ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..3fbe7cadc0980d1bcdf6d3a524df6dff827468fa >GIT binary patch >literal 560 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu@41|*f#E~YauFe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMNN#5=*|G|JW;`<$-2z!aAuPgggPG&YWK?`Z4 >zETE9Mr;B3<$Mxhpd)pfu8y}vLWYb7Ua$shNvSk*Qxp(U;P>E`ZYeY#(Vo9o1a#1Rf >zVlXl=GSoG&)HN^;F)*_-wy-iZ*ETS)GB7y*=#46hhTQy=%(P0}8uslEnF-Xu;OXk; >Jvd$@?2>?r?yQlyF > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-BBBC00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..ab9b1bf5b73761c1715b3f792ece23b000db88ed >GIT binary patch >literal 554 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO889#~DrP!62V^EEGcagOOioBJDkv!| >zN)<{-IB`~6ldGsasH3ANC}IDB0|yVBRXCGyCSmT3n3x9=0uK%|uvGr6T*)Kx;I=87 >zn?P-(c#7CEo45m0V*)~$mi%Yf80eK%XvECCm~q0~*tj4Dk@PvtDcvfm%{QeT-YlA+ >zkgo8XW5U_#e2MXl8z(EgQCBDvyddoGO?<+y5`)>D%sG55y39$_mxMLENi8_1ze4Af >z&v}hN10w^2fC8VB{$8OR>vZ%y&+3MKIOBazU+aXvmyV||<Eqvj{5&j*T#ky%5;HP0 >z7kVz*&&d>E;}9{Q`QXFT8f9#XZ44)ux~2xGDNi;`v^&&eDa6C`&s$O=;-A71pDIZS >zu@?pgAN*ZAR!SNfaJ(=!cr%-s;qdx^e4$Ha7lC1>kn9oU%fL{j#=y|f!octgDAe$R >zfuR%_kgpOL7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*EOFVsD*`IPUv#AMMNE>AV >zg#<la978y+C*RrI&d4`IVgdt$iXmh5+kdUCKuOgS*NBpo#FA92<f2p{#b9J$WT<Ok >zscT>yVqj)vY++?+u5DmoWnggr(Hm714Y~O#nQ4`{HSF6TG83qQ!PC{xWt~$(695?0 >BxTpXC > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..a83344933d5c42512f16b3c7d6a4e4a980bdca14 >GIT binary patch >literal 575 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wF{}~wm|NrkOYa$2~VJr#q3qEtnB<wGU >zljQC0!uX#__a2bLUgGKN%Kns-nN3Z=Uxw)qP>9FV#W95AIxtESfIJokMs*W)P(-Sh >zxJHzuB$lLFB^RXvDF!10BST#SOI-uw5CbzSV+$)oGi?I{D+7bfsm~{(Xvob^$xN%n >VtwG{Mye?1!gQu&X%Q~loCICMrw%z~$ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FF0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..3222c5e26f3259761fae589ae0c0df20289ecd1d >GIT binary patch >literal 562 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wF{}~wm|NrkOYa$2~VNCLNcVYa`q<as@ >zVK4FYb!C6b$;_rE;4j1U2Pnkj>Eal|aUB>72|ykT1Eac$Iw<Z`OI#yLQW8s2t&)pU >zffR$0fsvuEfu*j2afpGLm9d4Dp_#UUft7(l=G5mCQ8eV{r(~v8;?^K>B3>7$fx*+& >K&t;ucLK6Tqud-19 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..60f123994349335006f3a6164cfcacbe2e9208d3 >GIT binary patch >literal 575 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wF{}~wm|NrkOYa$2~VJr#q3qEtnB<wGU >zljQC0!uX#__a2bLUgGKN%Kns-nN3a5LfR+`D8%FG;uykl9T+7EKpqPNqq>PYC?Zu$ >zTq8<S5=&C8l8aJ-6oZk0k)f`ErLKW-h=G}vv4xePxwe6Um4U(eM{iV7H00)|WTsW( >V*067X$V{LH22WQ%mvv4FO#mX6x3K^K > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Adobe-RGB-FFFF00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..c558eb10b3c6b5894c504c9dbde8ca4e24e07db9 >GIT binary patch >literal 562 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-Fe+v`I|pPYCo?c;OiWHlFe)f1 >zEJ_thNH}p;Ta&A(JgB3iCn#b6fddB*oK-lJa3*2yjF^}Q5&{nnGq6<ttX#<>@!+;8 >zo0~vwq<D(hGMl&qQ)2=`n3nu!*cj-QRcOS_yqIyq+}OAv29fkR%qiU}sm(W~9o{UO >zppdTcn`6S+>3oUtj2kB_yir#u6TBeo@J)QeuM&gVoy<9WExOD})0c!byh$xMr@uny >zl+SsMKm#KKgMb2`lm1?z9P4!SJkRQeeK_NNPG9SUzL$=tFXO7#9sE2jid>G0%Mvp( >zGZ%U;+Rw=pVB-)mpZVa!(;8)Lifs%hm%63~s3}i2Otd@HV=2VL^UqsSBI2LI5uYka >z39%Oj1|R%gJ61{>8F0KXHh43enc?vIfPA4#Wfy^ArjYCr<jcTNrN+R}(89p*3n<j^ >zf`OsbfPvvv0t1893<d`Af;qbaZGaMN0X`wF{}~wm|NrkOYa$2~VNCLNcVYa`q<as@ >zVK4FYb!C6b$;_rEXd!Ks1r*}(ba4#fxDJek1R#%vfl=K=9Taz}C9V-ADTyViR>?)F >zK#IZ0z{pV7z*5)1IK;rr%Gkon&|KTVz{<ej{G&IjC>nC}Q!>*kackJOKV&9Q1B0il >KpUXO@geCwOAhRR@ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..2036aeae25ff79f0e9be1e1dfe3e249662f55ff6 >GIT binary patch >literal 620 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt+czU;w)B>Xn*opa^40kYDhbOD17|L7XIScNfP0 >zOuF}g9QG1VUsv|0oXl)$0{${ge}F<fo-U3d9M^%)N&xa$7#P(})IqVXTH+c}l9E`G >zYL#4+3Zxi}42%qQ4J>sHj6)2}tc)$J49&C+46F<cGN(SDh@v4kKP5A*61N746Y;u0 >O4Gf;HelF{r5}E)pp4bfl > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BB0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..35347a3055698adf17fb912f947789bd5254ec57 >GIT binary patch >literal 607 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt+czU;w)B>Xn*opa^4<x4R4De<s~~Kn{C}r>`sf >zQ%+_!H35GarawR-9#0p?5RU6Wmm~mrEDVh5ChDMwRxNRjC`m~yNwrEYN(E93Mg~TP >zx(1fI2F4)<W>&@)R)%KU1_o9J2ANZzPejp>o1c=IR*74K#EE!apaup{S3j3^P6<r_ >Dcc;^U > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..87f11b5d972d1035a9290d6642387eba4218af59 >GIT binary patch >literal 605 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu@41|*f#E~YauF#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Xq)ySso~_y0d<#P>Tu5%v;KUsv|0oXl)$0{${ge}F>b >zo-U3d9M_ZY>}_vsY<ze|l1(Ea$$^<6%9dGJ=H9KZKqaart`Q|Ei6yC4$wjF^iowXh >z$WYh7QrEyZ#K6qT*uu)tOxwV~%D^CV>hp;x8glbfGSez?Ymhh*uM5<`;OXk;vd$@? >F2>?;h+FJks > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-BBBC00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..ea2f84caa125d7ead625456119f32aedb944087b >GIT binary patch >literal 599 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO889#~`eiyh2V^EEGcagOOioA$^3>5d >zk(ii}aN?}CCRb5;P)A2kP(uBQ1AHxec#?RyI!_*D?PFxLb5P|mkP@xgee3|oBK_A* >zXRK6Bw|Z`kJ8(T|*@vs$>s@9WTwTntZpxKMDGGntJAx;3cX>%jNCY?JJpD9@Nnkhg >z2{BD3E3Omsn3I+}-;j2Aqr&l<Bf{5Xg7Jh}<`ZEa=R8<u9sI$3;+m(EkiUD9^IKNN >zyy<5iHO)EV)yj~}v`&?I%95}t4H?h>G@V*>=1Y$dt9ydRQmu+-s;^&aNJvV|GB#*9 >zB(vyOv4Vw;<k52qM`pb@Hn{QbKM>@#%(!01*4FDVH^y2pNlJ`|r|Aw4k9wJyikNCs >z>x{-3n!3G>4=)$7vEB1vV|&Q$V0-as<}tT~N;f%mHnwZk|NqyA0Rw9OnFAln5B>kY >zU;OX?|K)}OpJmzFm@64X6;t2+vUe5)2Czc1N02WALzNl>LqiJ#!!Mvv!wUw6QeddR >zN?>5Hn!&&zUNC1@pbb!hEy>&61?0N_|2ZSR-vNrSmw5WRvOncyW>XXJmtpz?6cY4w >zaSY+Oo_uF-J0sr=i3to0Du#^JZ~wKn0wq;TTq8<S5=&C8l8aJ-6oZk0k)f`ErLKW- >xh=G}vv4xePnYMv}m4QL#)aMgXH00)|WTsW()*x{rUKgl=!PC{xWt~$(698G@*INJp > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..8a0abc74dd5e25c7be7927fbe47074c8194bf1d4 >GIT binary patch >literal 620 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt-1^U;w($QPu>co3SLwFZj$Qld!)aPLj8~3*&z# >z-FrX|dx@v7EBjMUW;Qhee;KAfKp`Ga7sn8e>p*8E0C_A7jOr%ppjcNeag8WRNi0dV >zN-jzTQVd20MuxfumbwPUAqHkv#uiqFX4(b@Rt5%{Q=d;n(U6;;l9^VCTZ6=jcwL|d >N22WQ%mvv4FO#lV0)?@$x > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FF0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..7b6d4a6150d4bd909119c2ad01c51e6dce9d56f2 >GIT binary patch >literal 607 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt-1^U;w($QPu>cn=#4T-G%W#lkPnrhrPtp*OmP# >zCo`LxfWHjWAD|GAr;B3<$914f5`a7w21a!gbx=gBmbgZgq$HN4S|t~y0x1R~10zFS >z14~^4;}8QgD`N{QLo;my11kfA%&E^OqG-s?PsvQH#H~T%M7%Cg1B0ilpUXO@geCxC >COVQT= > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..8a0abc74dd5e25c7be7927fbe47074c8194bf1d4 >GIT binary patch >literal 620 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt-1^U;w($QPu>co3SLwFZj$Qld!)aPLj8~3*&z# >z-FrX|dx@v7EBjMUW;Qhee;KAfKp`Ga7sn8e>p*8E0C_A7jOr%ppjcNeag8WRNi0dV >zN-jzTQVd20MuxfumbwPUAqHkv#uiqFX4(b@Rt5%{Q=d;n(U6;;l9^VCTZ6=jcwL|d >N22WQ%mvv4FO#lV0)?@$x > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Display-P3-FFFF00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..7b6d4a6150d4bd909119c2ad01c51e6dce9d56f2 >GIT binary patch >literal 607 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BG0-F#2UWI|pPYCo?c;OiWHl2=dg? >zIFXo`kZ|IxwkB6mc~D13Pf$Yri35Bsdw7y~xH?ZBW$j~Rv~y79F_03i*?sH)$0GgL >zO=qlBO}Bb(jXQ8XY1xOX-RoUu8(dw?ux`qgM=1(_**k(Kb9Z@3NJs=X<UIW}iAi8L >z^9eCcCM&KJ^O%#CJKvCYc%#Dcn<K*4V}kL7TILgB9_Kt*W*z*&eBzp?laRlAlJi?u >z#=Plg9yQH5;?>HK%(PCGdCHQoDGeFV|1_OibmmKs5UYEF#!{_{XR5DXYDh>*%rZ7; >zI3%;^SFwVHj^xpE3P)zWH#WHO?mrOZwamC)$JW;CFgM0pFiA>`ho|Wd50848n2MNc >zQ|pYz8JfDijSnvuv9aCrU}Jm8?O=QHXy!4ugi1F#bvCwZ)&Kw3hXDg>{+R<G$`Aej >zzhC_C|NrHN0iR{r+L$XDL={ut{jzr!1O~7|vPY0F14ES>14Ba#1H&(%P{RubhEf9t >zhF1v;3|2E37{m+a><Y92O0Wg^gt-1^U;w($QPu>cn=#4T-G%W#lkPnrhrPtp*OmP# >zCo`LxfWHjWAD|GAr;B3<$914f5`a7w21a!gbx=gBmbgZgq$HN4S|t~y0x1R~10zFS >z14~^4;}8QgD`N{QLo;my11kfA%&E^OqG-s?PsvQH#H~T%M7%Cg1B0ilpUXO@geCxC >COVQT= > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-BE000000.jpeg b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-BE000000.jpeg >new file mode 100644 >index 0000000000000000000000000000000000000000..21eecaa25e9c84ddaecb3181f73ee32ce23b059f >GIT binary patch >literal 55590 >zcmeFYhkISgb>Mjs85?AGvzxI=Fy{nDFlQ1BAPIs2L=F$><#cn-@!gj*9x_0HId*Qf >zT2f1LkYve{<9Hm$_ISqYne}>hy))~*pd_1`Z@lvd>^yw9@4PyvPF0<%i~GZ=djIsh >z|Ma&&#mO#rhYjcgtXJ_r{ps%lHK$LvUaPx$uIBPtpr{A{e&_GnJswAKB>;GQ0pIB> >z4VNyrcT~>$F)$A(1?F3|=C^nHJtwbSyFBA!#&+iYS6~0|Gr;l$06*FOKi2=M^?&zi >zUYE_^2>?a2t#Wslztd^SFaVT&yVL3r0L(gKl^=uxo*CKt1s0vGI<?D^WdNvu_f*wM >zOK!{qz>UA}X?I%s$6)~2)MDA}{-up2SN&49?5*;j+gq|#{&V@~eR$oo_s-i~HeX+7 >z<xDIpuld~FeGc1e&Cf6YGyNN;|GMaO1g$Z@eyy^u^ZoW4m#p_K*4X)W-`Vq)yvdRu >zb+(_qVaXdT`Db9?t=eD6|J4&XRrhn7;x$40&6AeA&6?ng-M(`-E!px@4E6>u{8Ao5 >zd+Tpo<%_KHUvqWTUj0SgKkD?KzH7<r0HCD2*H$w#$CZ}6r7uuZZ^@RQl8Zif-Hg4} >zhmt^-?aWzA-eJjEyZh2iAC_41_x#|EnR2Vo#eanMo}THa)mF(L_qSiXX2~lo`R{Fx >z^E38VTcry<fos3$L+M_ZqjsiUtF6)|oB#EAEkC7u1HJVZta7W}QZeAG|7G0=-F@e3 >zeqsNkUf+e8@|n8-=yAMWqgLO_*7<^UGh?^fDyy@(ZqCHe@>vFUwV#=Zv*oj_0Ng5S >z2W)^F=&-JxfD8C<*4R%2SAYiKk|lWnpQY;t`T$4y+43{xCxOcHE#=kayUQ=m$p2zl >zzR}WFTi3I|HOrIl=XKt+0D7!)7w}h>uFq=e^vZD{Xz6=_|6rB&{)**k>vPa5?fF-I >zoqz4?uYcjoUAnk*SLq(>_i*Xu(xasZORIs((&MEkN{^MEu}Z5;55M96+P{p+D(wOO >z+G^?Np1fA8wqICY1ZshA0uCSmv|HCdv25Ic{|zs{5}WX{;HF>3g7vlbb^g%&JK*Pi >zoQXxBRnz`P-R*D26}b98kA2ynm;F`QPp#|kmHpuxek#lUpzIH=pWn0M^w0BT_4AE+ >z`9;)!-iuC4_on5)Zg<iev*UGLrxlStYxK5X8U6M*{d^byY{{E#{<QR?rk~9JF5c}5 >zFZ*RwW+GyfYX6}YV7I+#yX$v${l{HD-8H;xY}enE#7bV4d|vW#$tNYh0aTWJS@O-2 >zZ<Ksp^0?&FH){NUudaVy5x~p{W>(xx|7X_Szl`<G=-U8C#i@$r6>BTbRII94Uvc>j >zyUL2i6}u}gRBW_#%l~;c9dBB^83ij!4OW}KjMl%_qID-(mT#<$qPMKI(f2D}-?;05 >zn^xcZ0Lb#|vu0psExG{2vVPO%pT}0ZvUGQ8&40K456;{bZ}@+sZR<Y#=em~k=Gw5m >z(MKyvZ`i#VKS#g@ThAK+IPLZzzP_H`KxNggT?Z;pT8~IuWsR$I$F|CLhokbf%3tZT >z`E5SX*0lq;({Q(PrXB#i_%i_btP}tu|IXPRu%1iSU$K%o)}Q(r>5bR_=yOqVNoiU6 >ztl4ws&YS;M#e#)zzw_>*_ugN;Wa+ZyD?V7cs&e(3wd>Yz*tlu)maW^i@7TF(ch#P~ >z`}Q9=Sbga5k)y|spE!By^qI5g&R?jxc<J($+N;;D*WIYUdF!^-x5lRCme#iRj?OMy >zcTaC$zun<<xjkN=KM({V7(p?dASs$*IbIMYSy46J2$|tXG!{=JQ|U}Lmmeq$4h@ft >zj*U-D-kX}f|KQ=H$4{O<d;a3(s}Dc=_>)gR`}~V<eEH3<zV+?zeEr?;egD^f{WpH| >z2S5DLZ~gcuzx~sn{m$?H-tYgxAO4#^`nP}lCx7~9fBqN$?l1r9umAnu{D=SexBuJU >z{ipx@zyJOJ@elvy|NOuH@&Ep>|Ly<zC*XgL|9{Q@|Bu)IKhgA`Q1sUn{eYrl6pc}I >zJ4K(M=*2YsU&+v)kotEC^#LJA2?-^HHj+O<a*IjkAMx}b<B6~F=rm!52?HjyRzf*O >zi0_f?f5FE72pjqqmcNImO*{_ckrpC!lu+L#_<ukj{UJ8>6*e}34Ti8Bgr%DB=waM= >z2N(Yy{rLCMXJ4WZ#?eU~8xCUmCOmZ*55J8|{~7uA@1dW419>@yKGM*8L3E@M%T?pC >zg}Cx}$d7&p`TBF@^AY5giarXWla1I=HJ+@%)&GS2!OxH%e2RQ$82Ma5UIfvHjo8>h >zJX1kv|6ZYgOQt^(se(XBJn7-d+Z<WVQtvR-U&{IqMfF2LF7Tqj32u(R#j*z(<{g^; >z3o-EnA^MUx^PItRnu}F#veE&XUq~^3E)4z#pMTD!vuvDWBTmMwXY_rvyny8XRG9iT >zZtNL5lxFh`lXfui8+3RtrM*S+f6PDsKKJkmdoRU|(oCVB&eYNIJyd8uDgImj^Y3!6 >z9y3pp%rr%h_0xsxbh?U)%p;{g;=cDa`{g6%<2e14q^JAovFp^pZYn;Pl>ZI)<FDE8 >zKV-g)(H{}?lYVOIIyJPLO3opb-;Ge;G^uHWjA<mHlD!IfT_X1i<N}uZX;}F(Bv0#N >zOcij2?~%D{BD;rY7BJLro6&C=<~_}bC>ka!-I9D&6stJCf?<9V%73n>C)9)~M^P!< >zEgH3gwu_bK)9h~<<DY87<H|rt&cIT#ONd_K&7G_|kK%u1Jo-eN8dJs$X$TVYokHpo >zAKSqib1C5m#z!A(&qkC7nluTDBOQGHBA43Em~$xUH}$VRQa>G$U#jAxpfK6N4`1YR >z+nMNWO8yP~*FRLhH7tLoh%bV|gARV;5?9#9BxX~}ce2EjG?7aXQk3wAiPjKNqZ2!1 >zaz0OeD=R%tiMhBSML3_ywHWLLjoBg5^Ev9PjQKceWMi5bR=gp(Sr^Z%!Zwkc$I{<S >zrys@>nP^lnO?Sv>*0l?YvQ-r4FzlD9;Ro@7R3yWhNtY38)WYW!V~e27X1Fg>Q`7PB >zWMr5P4LJ48T{Uq=j%*h6*|hL^>e*E6VIq8w4vjhV!3H&ZT25>dLbGV`v*f2!v6u1i >z6Dl-q*Tx!@!f7eJiI2>prB4&zx)=RC9{!LBJ+^C84a&%ADZh!2l{4~-F?@Ik4-MdG >z2JcPcx8nH8FtJG^=ZMs^F>!c^59K*5&Gsai`WSP<q&I2w9D#Z|Y77l(MovLfa(6<! >z5fzSy_>C$%o2Q=+Ckq2HEgObYAzNI(5mAqa<PC~Ai({V*7X}8hY9<9G<6W^xUD!Nk >z=<8*<oaG)5jpql3mCOK`$aY3k*Tb<RhPh5w%UJ%=(4$;_O3sW06GI)*{53OmSdXoh >zjWSkvIP@x)e=4UR_!AQy(cx=m{;-~0E16}i_+aRZT<#+&{mhrR-yR*mW)2?FGHazs >zDJxAp#N$&qGlsc`@RmG&C4*PTi8Uc|mPCy`<YV_Zc9iuDGA%jga+*FEr`LoiOEvmH >zi%qJ`i0m#%%~|16ia!wJRvT=&NRLd%BNGv7B;*{>o3h%aq;eoCRq8^Sz>ZAk!sBUj >zIN=zGHfF*X6UP3Cwn~#qd2V=WBs^XqhjaFP`ffU2lZfn#gjQ;5DbEj0O`Bum#L%!k >zKhTiQ)Wj2e!;zJmUcw85Q_sz@hxpLFzWiuIx=<6(>^0*n)ldm97N$N4jlIAJANA%Y >z@1#a9#0K`7sSi}MgqPB<FzG24e1O>|v6~~<*#cgb!9R$SWeSyi#fwik@IGUkpzDX} >zGXwPQH1$D*vQ!D{?s=>Pr=_lO;l_|~I?wM)aVx@XsZ1wcM1@DDf6C|>)9MD*(>Zx( >zQe1BGB@z>Vp5Y%R{Zp~_u}Ixu=u}qUkx-YJQi;gLpAGR3^ZtA3_R-|^LhNKVydz;O >z4JpMUAA2^*Jsk1fE3}X1t`|}#GqLS)b7@E`7KG@t$J~P{-{e@^$k4Tc+{sL8dn~%t >zFp32+^6VA&;IVgdx^-mi+Q8t+bas0zvD63^i=y-;hJ1qcy}%kCV;85eBV*X+0{(uI >zDAp<IOAh&%?R&vAJfdsv(T7K=%>&f?394A5q;Dwj$5QWe@y<h`W|BWN!fnj6@5PxS >zm6kpa!ykrvp6RzAs23*W>LF=kPFxh@ixfuuJPCam>v<Zvec!w=Zd4Cx8?y4Es8}R( >z;%5WUt4z<+<n8JB`SHlX!O;4Q_HI-LWM2Gi40<)#^CWkBI(>dDesD0dJ`;L3q5`rY >ze0m>xIo|Vl==N0p!dSYx5Z{mvzZ=ntW>in17t=kD#&1szT^P+BDx@~1ql>~ukt|~0 >z$6Q}wt)HS-UtuSoVEd-9H6!@K3;~2_?E9SaE2iZ$`sz#i#A9mDJ*sk;T$rW+gF?S6 >zJHIJ4e=5|z;7>f{swUaWA?EEA1L!pNwdwqZ-u$t8<+*a=fwX&ETs0^xOmcw6V&6$P >zzlb(}WL|k@9KWya9#>Ws<OK-<P&xEFIp-It=8xjFPou}D&0S;q$^o?^Apt6netX#Y >zMZWpNOzo58@#)y^F>~dBUJ+MjRNtC(em2tbYT)YQ%!#RF)o8RbA6gJs0aZZ1_0aj* >zM9a(JYmf6M?`8ImCRXRe3t}3eihqlsKSi<6P;3~(6b$oWcms}C6T~|d`8SaG6Il2J >z;fE1UMp+-qHegIOPQOD^e+@={3krP<>w~Z=A+iUN?x4a!j9W-Be;LgG08GCE6L}~q >zz@{5EZlUUaOj>}me-W7Y&EUw3U?B%)cqr+Dqc;(AAF95E@qgxj`s;!F&jS<L;4lZ~ >zolv?Sj_pN_w=nTfeV_iC|K-!b<4kah3646zfg5mY4-%e_Nq^$|`uqMbp87vb1)k8s >zDLXiN1Ikw+vALN1$G#tZ-~Zhw{%<7wuc*KyJ9w`S8mdB)b8+SOSmfI*`j9~r3~Iqw >zKaJJV_&yq6NRz+A@Lw_91DZ|Hto2`#onq=K`T#}0OVdB2jc?N0G^NHU87HM)QoK&_ >zdr8hhk>94$UyzA=WHd~gC}DJy+Er4iBE<@l`!PB4IZ>D(vL=y2h?tECUm=WLgfgGt >ze?;8>l$aRDM?!c3#xq@b;xZoDN$B$k;fMIkPw>ZM*tCv~L)c&^p1p)8cHrh5Li{2A >z<tO;Zqu6r|djMkN9oWz%JhKCj%ps&7;NSlk|7ryLL_wbg(fb|P*d=UWJ071+$luf8 >zmkKf@Bi3vMMYKaeFY(we4zFOyuNC&W%nnM7BGN&DZs+OC9KD;RD;WA~S$ifa1yPm- >z(a#HQ9DkAJb~5Z+H1lmK@kET~_^`kkUQTai)eDTgofhU%>{nvpv5?F1DV~da*hn*D >zo@ex}v^<C8z9~#T;zu*wAjjt1Osa{Aouk8BC~Y<=d?`G6$lp)1lPojhVg?%N^jSK# >znKEXP;x~j(9&j&G>|=(x=cGp(>4CFUYBLp{MM~e`zjdGcJjuSI=tmBEvXLG>L*+J6 >z(Q;CL6^F*7a5M}PA=s`X4Jvv@#<qy~JdSu7qsJn2#H0y>>er|{3Uykdwg}WbmU<DD >zM@=bgh`28Fsr+r3J0-H4d1eknKMzNSLuN=fP*v+y)LW8#Qj|7w{A`+e7S0YCDMO1R >zYP3f-Z;HkVLEXSf<uv!i92qnQbu9-g>24`eFGh~@q4lg<PV<k=`vrYcQ%50r&?aSX >z2+3o7bRDagQNrWU%Yyz`Ri{CDyh|Lc6S7CS#5&e2rNqaf&j<7mRrP65n(h?G>V(2k >zF1?P4l+w~f0Ze8gJ_UIba9b3<Y9faXbe)3F5{U6UmB>(hlJv&Owg_1pA`j{0I+>i! >zQ{y=?krucF?}>3OVeX2-9@3aKGE>gcqggYSGMKpLj;PJ1d_|Y4RdKb%msyjPNkx-! >zIu><>!_6V%vaTIeluA)7W!T}&U?h>FV`*nN(PTs~Y32b%UnR<=3^$aXj3h>>=%B;Q >zH5#dlT7178UL|Oy3_p~95>DJFqZ4*>_^zJ6sHXSJu~mXm!U#j@55tLPWb{G5InkgG >z)u_4sQgRh<7BgaMBB+djZ~^McLATTJ`8cvCg09lBa*;@llkzYL7l@uLaVtffixGRm >z#44RE6Uo$=AP@1-0N0&iZzkEZQKrgdR%&#qKqp5HX;1@msx2+o$E7n7ad${qp>icW >zlNgDMg=jDv?n;H~<NBG1y33H4D?%~H#)tDlAsx&nJCm^+vGD0|Xs4kqm*rxPiw%zo >z1A~EVzB8GrizQBlqdWD`GFdI=_}I{Weqhp{8EsD#>Y~|GW^$(%StjX4oDds&&JR5D >zXYREnMy^K(PMMh<T6~#g6mz2bIEYV!&Izz-1iDgyk7eMk33RE6mCB_0h`^@_=Qz<c >zj9(cbj%J9habl@S6w9RYkjJMu#~9l*#9YoZM^em|7`-G!7fF<b|JbBzACd1Cq)S=x >zNK)7w<rf=lvB=2xqv%Aqe<XCbpkK<Uhm*>ti1fZL6bY;}ok1s({Ufov1Cfgv^Ke4n >z6j9&Tr6PforiYO6eBW@UVIX-i9Xk{cZwedlX$rve;?yKEKH4`tcqgB$Nv96QV;fEL >zJyip&bkx)%czmjNXzX@=uqKr|6iaO~qwlGD5iejL2VF0MZI8ig)6l7LXzw7rCX2ii >z!-_N#`<QS)$J-v^*QfAPWB8syd`$*_CrSV+iG9eqp0RBYnQQmxlOyz=0eW?sekVc! >z3WdE=Tu<cI`{LCJ;pDJTmFFu{+}mLmkZJT~*!d*Xa$mnXuAUrHs&Z0gQd}730f|Ll >zB%P0AEz^;!<K~G$y(*`!O2`XM5s*0aMc(;1(=wgBIu<)I7_Q2ORwcBBAsLW(<i)7- >z(O}C|zIHTyq7bjjL@MLP!jLkfdOq!VG~PTlR6CkGQAkx~;+3)RLPG;2!Sz+J^RwX1 >z55aR!!Rq_awsCk_0hyn~0E2XYg?E02-+YCge}Yv{V_V0tWdrzINdnMG_m^zvC(O;4 >z^tnfL^*w6q2(>g%RU{}tquk$+J3kidp9^On@&_lmEyLW>96LY804nYNBGmbjUjIxz >z`#?E3A#E8Fmt=+cF%D2z_vf*W4<q%@%yajRgX7wkA!SKMnimybt1=xQChMQZ&rL@T >zj)k@i>Ps@pyodxSocpt(j#v5mCz*58iGyR&tp#&wTAv@00fl#cHqrTNxc<q&xv6yZ >zXnb2CvMd#vA65ZH_@hAZdm#7}0y8kg!mtBD>QQt*jxC^wKlIUG2k0k3It@|`MA>1g >z9-;PO<N}iXeXsg$pZq8wrGg>_3jGj&1LpRkOa(#zt~>FSH+tV^#{C8v(E35O4w9=7 >zVLs0M%r*F>J2&M`M|}z0AMFjA*CBm3BG1FP-*!%Y;TpT=8H#xGm_OYeh+hT6yI^fD >zCj7+l{Bzf%N%vIPJBIoSHh-oznAi!2=3wHF9iM;h`f$SiG~~IDc*ku1!7IVcPAD=5 >zlYZ>@?q|*~$6X)m?x&D<+U6g<5**k8#b;ykuM_@{$iOHWG)NF8p)L}xC6V0}RzVZr >z$B0)rIf9c0PQo~8Bgm@+xrd|{($x1*@g*h>V}ge9AjWmz+!dVNO)wQC^EDiKj+h0+ >zkWnpws_mG3372-_!hDkb4wQWgr}J<^M4~<<+=?1Cn6@30=Mvnvz|kkrP!1Xp;EWee >zv>?$7XlNUz&LM=az=w~)sVp?kLqi@o*9@o5BeAWhF&h`Z8T{}O_$&iH<iJTcG~5j5 >z&mpNTXm}PbeKYvYN8qPv@C5@taDfv|(C|4Vy9JHTBIHj6-?ZRQ@j;dgx;U_zh0n9d >zb_Si#;2(4NJq}ND1j7<8hG=4l3k<P?A>U%Ck6C__<>L%zrLLVc+eowLXl5JD%%$lM >znb0_GL}`tn6+0z2P|_Jn+(PklDE1Yd8lw^sDuz?xJ~DKN)K8JhCQ_P3axbXCQF0(m >zW-&6^OU7;y;gh7XkyK`p{Bv?@gd8`CVU!r?B{H{�es@fzZoI;W_zin0yo>rVxCz >z2QS>jvnPnedLmRtiqFVThsjq4@dU!By7AGQc;N(|UQdL}NNGCc%^7}G3xI0SCWAL6 >z=!6Jw<k7htK4qX;E6t-~pn`Qt_ze+1F5nw^Vh&5*)7Xs4N(vK@nNE?Z6X;_+y@8`= >zG4!OWrDRo*6rU)y3(|F7Jk0UySgxFACX`rGit=LED}>s3{TinpX5}@EP)f7oaxNid >zI3ej3;;mfdDjPb)>T77Zl;*~yvA8(Q2?Y<IZRL`+Y^<6wSJP@KC5%cB<Kh%6jJvp@ >z7B+W<NmVnkO4=xyQN4_bPZ|D!lN)blhpsTWgG{oLHcKcmoAww99})H2BZ0f2;3XY8 >zpu($Vbe4c;lZYNi@hI9KMjH&QM#By$c%?*?^JFGYYcU#&(0wL-N2f2S^gfwdB~qmv >zm5wQDL`F=h#}IF8!UcujD{(6YwwPs7(XbLW;gHd->$g?)ysYezqz`zZgk_VFv}`6} >zBi^k=ZYkzDS+5e+4|u7B;gXRd$sB-;tW8VZRN`l)NR?o$;FJ=Ex3WW0XdKjsyVQYt >zIek`2>=q)+Ijxux65%Ie=s{4Q>{N$u$OC7@^ll-xoHHyGF@`*J-s{cy+ERgQ@!+Wl >zxHAN=(9m)bHwIxUk9aajTN1q%Lr;dW9U*MFikFI{K0r}f%9EyA6V%lxb;6{!>(nxZ >zDi$a$FOg}{l@wZH{M9gjJj89&*rhU4#M5dnM5GK?LTiqywPE?VA#K&fB@$o6F={q} >zr((`{q$z4%F^yxowpCS@h@yoeN+yq|vW|GFDH6XDiX7F=EsDNal#4jt$_`=4VSBvL >z7|vb}C68*+EsD8VP-j%>`&e?)9vi(IE?hFQN44Y@Ir6@s7qbF2<qnK_ZNt8s1^@YM >z;9wHm5QE+ip(Qdw-GlvOux$vwIe?tcAO{oZhA8&Fffrk<3DQ4Gb`6p@^W?cSc_2=% >zkC5-_q=h2XxZoQSx(4|AEO$1^9f+~(O!i%kDH3UNO!p0Goq6R(Mn0R6_D98artq%H >z0RlseM!kdKj=XszZJbGH`y<NQko2xHLn*{a#xt1e$i?f@(KB&#U&L5zsP8BeAaMA| >zkf$)vp37cOrB26U`@-S1y77*z00NH>PkIWY?YW`rsod#UYF{|ERyW^~H48<2&)nUQ >zJa?wOH52~B!+{<7;EFU<5k-qM!ut&Begxf_f-a83M~09cIb=l&t%zWNN_d|V-4BR6 >z_wbrg{78Y=o+VZ!h>9=?D5Uo>XPf43Pp}t8n8O3i_6)N;&b$?(Efn!QQfyQ5?Q!YC >zuy{BxY)|vcW8C}@3rLLTq1iPRx;3s}7}5^qlx-<#c~qQl%utHwL9**!{MK0H!k~F5 >zXKYKV%cIJCeTGsz5At32vbRQ4=L@kz+3>bxXn91Nug_45`@u-p<lwE*{JBD^IuqZX >zh%65qZ&}PH^4*`h8((>@Jo6rZ=&za#tRD_8%0qJ!C}0rXpMs6ApxUR<iTlu=33&Yw >zvM7hnjbngLbbo?3zQnIQ!A?x$Rb%-2L3~k$m>VMijqLu2z5ATG{D?k2MOTf|>k9O{ >zX?k{)wot_Op>+3|c=@4lY*MHi;nxjt@21#U5f)Gw+biSlQ|<Bt_4tHRH7u>mi|;0d >zS>YK<vAvAleHyv^z&t)-R1InCbIQ9(X_jeG3TJznx%(t_`F{M^c%;h89cA@*6Y3mO >z0%S`yc=vJs%5?hJSbVpYJIaO@#kDyWv&sAq-L6l)o^hYo4EWJtzy=1d!cY~4%%||* >zbf6!*(QyxI`Y^<gbp^1i5MG7g^9kZN?A%9AcGS&;ybR=HI{kDlNbf@Ec{usKUgM=* >z8+NL?TL!&Sr%${R6n4VgT#Wv1PwIJpe9#e9U1rd2w0pJ70c8gy&cWF4bPqr4D-76k >zvNPp($J#vMi+*D}sLV$BZ`-Dy^iJmcM@2`$=gPEt5;eZ)Hc+393g5Q9d}1ZV`tI}g >zaj$c*#htt0OKuCAvry?<U0*!u`6%1>jO)Meag4XP2QPRtTZ7SZO#U2pJV4wT#LJ^T >z59)8hf;Bj_gFxod_-7z|A41YF!ojE;L7Ne@2E%sZ#9I{kX@H&z(n*kJA=(AgO)zx< >zrMF}BJd*y{r%w8nctECtq5~8gA>katZ$-H|1oNRcHtvf?{b4d-*n?UFsGf!8EvPsf >z=U#g9W8Q4Umm>V}{y^kTFmxKyHzV?FoPXh-81;;Vy@R+f*XK{&4#ZA@;Z2A(3m0Cv >zo{V}PnBGa$JKXEb-wvctf$>dns2mqxxIP~7ya;(7A>PRz-|#K}z{y~0BOETnrAM@5 >zka8K62c^6{l>asrJVim9Xk-q9JtV*Z64FT+A(3tpxkaL<No+HP&!x!+IGM*O4X0p& >z?8eEP1a*p_Hj~sWike2HEGj9O7{r7wjIYP|<2bj0V9QBn3JGVdrx#-QQLO`2>rnX^ >zCauGTGLoHy(`h&*A_+ed?Lf@ysBsik*Wywc!A(HJDR@wT^FBD;4#%${kt1kmEvA+c >z`~-ME2~G0Qm=`Lv!P%>D@-PxzgXyJ&FabVKLXUZ9+6|4iLW5V~>|rFa8Vi*W;*e~Q >zN-kD#dj)SR@4LnYj&R^w4xY_o1u<xfAT2;{9&YB~S{6CXqU%^}7E289c!(!Ro^WzR >z6H8oX$ZCdM%aCOZmFEP56$qBMGh8FhU81@DG+RkCr8J#o44u(&TI;8kyR>|flJ?W$ >zDvB?mm<*H9=om&v`)IR)GHOU|Kc%ds#1e{2(*r7<L#a$JmAFGjFOcRw(pX6<B@~~c >z#uaK5p@zE2+-)Ltfr#%V!XJ=YF)1XehYB?flM^;#=oXQ`K&1B&u@$6YsUi_OZ#sj9 >z+opT!Ro^)!utx${if}oPnPz|u1^qhMsX;ds=!^_kiRcFcR>l*d5XS15Ps2M@yiUeX >zi^ML0SizIU9BJqrt#V$4ZIjvSB6~_;ck;|KjxJ(pT~jGV^~g%ABwZK8lf1Zt<Cn5r >zF~ewTgi^w8$!rmgYl3!?Q?_&RQdTHtSWU^0a>^won#Jf<K74{RwzJw&Mk=N`RT(Da >zL6?|s64JF?{5Tug#)OtIYB9|#@;zLdaEc>M{J<41bDT|VV<Jmvt%w%5Oh1%#^u=8b >zG0&y2_lV)&qJc{kxJ<;@v>!?adSk(c2zb$i4(sq{4OuLsrPdrKQ8147M$tQAtj53& >zYxpJwUn~(tJjukFV3g?&Gq*x?jZPm@>5Ve|o=5{6O~>RwM6#LEO+&n(35OJZgTyTo >zSb$@wnCTCPY$5%op`BNiYFXYOii>!QQdlyY^oQeJp=iAxKCgxj%Gw4|S;UJ)EJsEP >zzHqM7$kc0zb4v7}WNr}jMVws3@<e3Z8y@L23OCg3Svh%7imeyScRAHkfg}C)f}=U_ >zs?E4hB)xm0{?*~&J33q<W8kpQUhp^P0=4Pj$plyxfmWOFI~rOn;lV+qKaVtLklGY_ >zB8FClu}TAfTP2D_GB7~(W$C6AbvZ#Dk5W}8y-KGSC=?)2fxOt45gL=i<v4#l!tD-m >zt2B0j%m4!I&*{Bs?QT-N98->krQL?ON);AJ9KbWaT&yP@xtj=IiiVDv+AdvLrOFE= >z0pM9*Hrta<Hzbl5BhjO#xl1=zD%t{30(j1s9qLIH8WOpSk>t@(Y?l^ZDH{t!rHJSI >z@AtLbvtJu`o*H)V8}M#S`xYmHbHZ?uhWFn0woLl2kNHmz1@`5F8&lxoI6T)x0Tu6^ >zhMFhfYa{Tf0=zGaY)qo>N3ppf+(MC_NwR5-ygEdj93b|k$&GRH{RlZ*rvRDinc$j6 >zxY|MXWRBgNVm8K@_ruI=odG1edt7N6k!uUm$*j0HC2WlG@0<K=jk74Fd)#as4%HTn >z6IpF<QrQ@l-Vcd$R2~r7?y+RkaJ+UPdLm=)Nf;X=+WUqwTM+?~>mJQD4P|TdspIL` >zo_Kg;B=o+n%~oU!MOvTt-FRX@`@nJVo_p)4XJx@xkqMT@V8FneUU=)C_|Dz;RZsZ0 >z4F^^ZfE8(|G>QN^-t-Ktdjy@EhN{P*ZA0+N98!@)%Og0T5lv6<>ksfV_wWOw_|^ix >zGDB1($WoI8RI2GQbNxPZW|BEDLT??QSElKTI9+PefI>GulCDpSXC{OL!~E7fw=&ID >z#Mn{`%w(qVp?-ZzJ3Fo(7*e+8q?IYLA}W+xU?#JT52AJVB4@|U1B3cjD|eJsDk4&; >zE?6ki_#jm`nLIZd-(LuC%^Ftjs3NSC>NAw`Re$eehdt+ViXOMm=V|r(E`q@w2sDSp >zzU&D+>JMhEhpP+ndY~3Bd@+FRfUvnZ{)LTrVEymfPw)=H<06_p#05XO4I<}Y<fom| >zRJWMy<+*;|?c|!=>;)gY6=Y_k^vCVt$*xem$6)$2r(J1u$>+S{mLNY1Wj<=lOmwDV >zwglB1b@ZEeoyJ*@x;Y?~Bix5AqvIVz(XIiaCu8qRG&rJX+~%f$T8{9qS{{zIPer=M >z@$RAi-rOB~>a;ty$#0Y);;ZIYW9?7FoexmkL|^aF9eeJyE4k4hE<>cJzMkPgzZrC3 >zpsNq^+=hLpk-%0A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 >E2NWGZ#{d8T > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-FF000000.jpeg b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Generic-CMYK-FF000000.jpeg >new file mode 100644 >index 0000000000000000000000000000000000000000..32f3b691e2c896f8d0b9318e6e59810a48585e76 >GIT binary patch >literal 55590 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�es@fzZoI;W_zin0yo>rVxCz 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 >zpsNq^+=hLpk-%0A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 >C(m#d( > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..fe463486ef8c37742bd94880f8ed4c52d8ceb34e >GIT binary patch >literal 243 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuDcl+ >z{{R1f^-4`PNV+7*FZj$Qld!)aPLj8~3*&z#-FrX|dx@v7EBjMUW;Qhee;KAfKp`Ga >z7sn8e>&XcT2|ykT1Eac$I>>U>64!{5l*E!$tK_0oAjM#0U}UIkV5w_h9AaQ*Wo%(( >qXr^soU}a#CIraHO6b-rgDVb@NxHU+eh}Q*bVDNPHb6Mw<&;$S{l|0%2 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..be7009f61328e740138f5160789a86450c78605d >GIT binary patch >literal 230 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuDcl+ >z{{R1f^-4`PNIJ>e-G%W#lkPnrhrPtp*OmP#Co`LxfWHjWAD|GAr;B3<$Mxidgajau >zg@IAsL>*+GYKdz^NlIc#s#S7PDv)9@GB7gKHL%n*Fb**=vof}@GBndRFt9Q($ej9o >fB8rCG{FKbJO57SGPQ>d1H86O(`njxgN@xNAPpvpj > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..5220ccb7a9dbd00933d508d9a9d290b2ac299e31 >GIT binary patch >literal 228 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu@41|*f#E~W!1#^NA%Cx&(BWL^R}Y)RhkF8{%R >zGvfOlpa^@3r>`sfQ%+_!H35GarawR-aZeY=5RU7~clNe7Ha0#yBgv+bkmSJ35M|3O >zEOYPHSD+Hr64!{5l*E!$tK_0oAjM#0U}UIkV5w_h9AaQ*Wo%((Xr^soU}a#CIraHO >e6b-rgDVb@NxHU+eh}Q*bVDNPHb6Mw<&;$Ui-#;h- > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BBBC00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..416ef1298638a93e6f39419ace4f9b0c79f0c737 >GIT binary patch >literal 222 >zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO82~B9;vjb?hIQv;UIIC6N#5=*|G|JW >z;`<$-2z!aAuPgggPG&YW0e=~$KR_WtPZ!4!j_b*H_O>(f&5)SDz@TEtSpD{2Yb#Jv >zwZt`|BqgyV)hf9t6-Y4{85kMr8d&NY7>5{`Ss7bc8JcMu7+4t?WKMlP5k*68eoAIq >XC2kE8C*pO18W=oX{an^LB{Ts5gAzO_ > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000CC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000CC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..e86f64b71bfee27580fcabec08945c95edb9b8a7 >GIT binary patch >literal 243 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuKyVr >z{{R2)C~G1Jk}e7I3qEtnB<wGUljQC0!uX#__a2bLUgGKN%Kns-nN3Z=Uxw)qP>9FV >z#W95AdU8TS0+7eTz^HDb4zgUe#5JNMC9x#cD!C{XNHG{07#ZpsSn3)WhZvYy8CzHx >qnrRytSQ!{(PJKQRMMG|WN@iLmZVeJA;&p)<7(8A5T-G@yGywqnl{+y2 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000FF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0000FF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..22f33b14da2151a0c8ee58c07756dbb0985c7690 >GIT binary patch >literal 230 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuKyVr >z{{R2)C~G1Jl1}n=cVYa`q<as@VK4FYb!C6b$;_rE;4j1U2Pnkj>Eal|aXmR9Apyu^ >zVPI4@Q3u(lTH+c}l9E`GYL#4+3Zxi}42%qQ4J>sHj6)2}tc)$J49&C+46F<cGN(SD >eh@v4kKP5A*61N746Y;u04Gf;HelF{r5}E)xQ8uIi > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000CCCC.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000CCCC.png >new file mode 100644 >index 0000000000000000000000000000000000000000..e86f64b71bfee27580fcabec08945c95edb9b8a7 >GIT binary patch >literal 243 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuKyVr >z{{R2)C~G1Jk}e7I3qEtnB<wGUljQC0!uX#__a2bLUgGKN%Kns-nN3Z=Uxw)qP>9FV >z#W95AdU8TS0+7eTz^HDb4zgUe#5JNMC9x#cD!C{XNHG{07#ZpsSn3)WhZvYy8CzHx >qnrRytSQ!{(PJKQRMMG|WN@iLmZVeJA;&p)<7(8A5T-G@yGywqnl{+y2 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000FFFF.png b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FFFF00000000FFFF.png >new file mode 100644 >index 0000000000000000000000000000000000000000..22f33b14da2151a0c8ee58c07756dbb0985c7690 >GIT binary patch >literal 230 >zcmeAS@N?(olHy`uVBq!ia0vp^Od!n23?w}&=BEQG#^NA%Cx&(BWL^R}YymzYuKyVr >z{{R2)C~G1Jl1}n=cVYa`q<as@VK4FYb!C6b$;_rE;4j1U2Pnkj>Eal|aXmR9Apyu^ >zVPI4@Q3u(lTH+c}l9E`GYL#4+3Zxi}42%qQ4J>sHj6)2}tc)$J49&C+46F<cGN(SD >eh@v4kKP5A*61N746Y;u04Gf;HelF{r5}E)xQ8uIi > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..f9785ca70e56ab53b07a776f56df8566ecfe070e >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas-expected.txt >@@ -0,0 +1,6 @@ >+2d.color.space.p3.toDataURL.jpeg.p3.canvas >+test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space >+Actual output: >+ >+PASS test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html >new file mode 100644 >index 0000000000000000000000000000000000000000..b07a0d645d3271a6fa9720ea5931775f53425041 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html >@@ -0,0 +1,47 @@ >+<!DOCTYPE html> >+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> >+<title>Canvas test: 2d.color.space.p3.toDataURL.jpeg.p3.canvas</title> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<script src="/html/canvas/resources/canvas-tests.js"></script> >+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css"> >+<body class="show_output"> >+ >+<h1>2d.color.space.p3.toDataURL.jpeg.p3.canvas</h1> >+<p class="desc">test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space</p> >+ >+ >+<p class="output">Actual output:</p> >+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> >+ >+<ul id="d"></ul> >+<script> >+var t = async_test("test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space"); >+_addTest(function(canvas, ctx) { >+ >+ctx.fillStyle = "rgba(155, 27, 27, 1)"; >+ctx.fillRect(0, 0, 1, 1); >+ctx.fillStyle = "rgba(27, 155, 27, 0)"; >+ctx.fillRect(1, 0, 1, 1); >+ctx.fillStyle = "rgba(27, 27, 155, 0.5)"; >+ctx.fillRect(0, 1, 1, 1); >+ctx.fillStyle = "rgba(27, 27, 27, 0.5)"; >+ctx.fillRect(1, 1, 1, 1); >+expectedPixels = ctx.getImageData(0, 0, 2, 2, {colorSpace: "display-p3"}).data; >+ >+var image = new Image(); >+image.onload = t.step_func_done(function() { >+ var dstCanvas = document.createElement("canvas"); >+ dstCanvas.width = 2; >+ dstCanvas.height = 2; >+ var ctx = dstCanvas.getContext('2d', {colorSpace: "display-p3"}); >+ ctx.drawImage(image, 0, 0); >+ var actualPixels = ctx.getImageData(0, 0, 2, 2, {colorSpace: "display-p3"}).data; >+ assert_array_approx_equals(actualPixels, expectedPixels, 2); >+}); >+image.src = canvas.toDataURL("image/jpeg"); >+ >+ >+}, {colorSpace: "display-p3"}); >+</script> >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas-expected.txt >index 9cee7bdbc455961d5e1e3e5ee8d751f0c841024d..ed9b84f7fe88d147eaef3b1dfd845b6b556b8f75 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas-expected.txt >@@ -1,6 +1,6 @@ > 2d.color.space.p3.toDataURL.p3.canvas >-test if toblob returns p3 data from canvas with p3 color space >+test if toDataURL returns p3 data from canvas with p3 color space > Actual output: > >-PASS test if toblob returns p3 data from canvas with p3 color space >+PASS test if toDataURL returns p3 data from canvas with p3 color space > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html >index d587e9c5c44ebacc058ef91471104811d1168f13..38b6429831409cc85e519c97e087d68aa9f421f9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html >@@ -8,7 +8,7 @@ > <body class="show_output"> > > <h1>2d.color.space.p3.toDataURL.p3.canvas</h1> >-<p class="desc">test if toblob returns p3 data from canvas with p3 color space</p> >+<p class="desc">test if toDataURL returns p3 data from canvas with p3 color space</p> > > > <p class="output">Actual output:</p> >@@ -16,7 +16,7 @@ > > <ul id="d"></ul> > <script> >-var t = async_test("test if toblob returns p3 data from canvas with p3 color space"); >+var t = async_test("test if toDataURL returns p3 data from canvas with p3 color space"); > _addTest(function(canvas, ctx) { > > ctx.fillStyle = "rgba(155, 27, 27, 1)"; >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/tools/yaml/element/color_space.yaml b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/tools/yaml/element/color_space.yaml >index fcbb3a9f31cbc7c2eeb50bd8d9b1a8c74c3a534c..2709f95017369d719f885ceb8edc3e1b1e213715 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/tools/yaml/element/color_space.yaml >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/canvas/tools/yaml/element/color_space.yaml >@@ -75,7 +75,7 @@ > - name: 2d.color.space.p3.toDataURL.p3.canvas > testing: > - 2d.color.space.p3.and.uint8 >- desc: test if toblob returns p3 data from canvas with p3 color space >+ desc: test if toDataURL returns p3 data from canvas with p3 color space > attributes: | > {colorSpace: "display-p3"} > code: | >@@ -101,6 +101,35 @@ > }); > image.src = canvas.toDataURL(); > >+- name: 2d.color.space.p3.toDataURL.jpeg.p3.canvas >+ testing: >+ - 2d.color.space.p3.and.uint8 >+ desc: test if toDataURL('image/jpeg') returns p3 data from canvas with p3 color space >+ attributes: | >+ {colorSpace: "display-p3"} >+ code: | >+ ctx.fillStyle = "rgba(155, 27, 27, 1)"; >+ ctx.fillRect(0, 0, 1, 1); >+ ctx.fillStyle = "rgba(27, 155, 27, 0)"; >+ ctx.fillRect(1, 0, 1, 1); >+ ctx.fillStyle = "rgba(27, 27, 155, 0.5)"; >+ ctx.fillRect(0, 1, 1, 1); >+ ctx.fillStyle = "rgba(27, 27, 27, 0.5)"; >+ ctx.fillRect(1, 1, 1, 1); >+ expectedPixels = ctx.getImageData(0, 0, 2, 2, {colorSpace: "display-p3"}).data; >+ >+ var image = new Image(); >+ image.onload = t.step_func_done(function() { >+ var dstCanvas = document.createElement("canvas"); >+ dstCanvas.width = 2; >+ dstCanvas.height = 2; >+ var ctx = dstCanvas.getContext('2d', {colorSpace: "display-p3"}); >+ ctx.drawImage(image, 0, 0); >+ var actualPixels = ctx.getImageData(0, 0, 2, 2, {colorSpace: "display-p3"}).data; >+ assert_array_approx_equals(actualPixels, expectedPixels, 2); >+ }); >+ image.src = canvas.toDataURL("image/jpeg"); >+ > - name: 2d.color.space.p3.toBlob.with.putImageData > testing: > - 2d.color.space.p3.and.uint8 >diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >deleted file mode 100644 >index e868d6fa9f649963d977a75e769e4d41dacb041a..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >+++ /dev/null >@@ -1,43 +0,0 @@ >- >-PASS Overall test >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 2, expected 166 +/- 8, expected 166 but got 157 >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 2, expected 166 +/- 8, expected 166 but got 157 >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 158 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 158 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 0, expected 97 +/- 0.05, expected 97 but got 92 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 0, expected 97 +/- 0.05, expected 97 but got 92 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png assert_array_approx_equals: property 10, expected 250 +/- 0.05, expected 250 but got 249 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png assert_array_approx_equals: property 10, expected 250 +/- 0.05, expected 250 but got 249 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 158 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 158 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 132 +/- 0.05, expected 132 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 132 +/- 0.05, expected 132 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 31 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 31 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 10, expected 250 +/- 0.05, expected 250 but got 249 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 10, expected 250 +/- 0.05, expected 250 but got 249 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 5, expected 181 +/- 0.05, expected 181 but got 180 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 5, expected 181 +/- 0.05, expected 181 but got 180 >- >diff --git a/LayoutTests/platform/ios-14/TestExpectations b/LayoutTests/platform/ios-14/TestExpectations >index a733e4be37091c1baf2937d0aa4e259ebb1fd889..9454c2aae69e42f8671193fec839bce75438dbe6 100644 >--- a/LayoutTests/platform/ios-14/TestExpectations >+++ b/LayoutTests/platform/ios-14/TestExpectations >@@ -68,6 +68,26 @@ imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitma > # Privacy Transparency tests are iOS15 only. > http/tests/app-privacy-report/ [ Skip ] > >+# display-p3 canvas and ImageData are iOS 15+. >+fast/canvas/canvas-color-space-display-p3-ImageData.html [ Failure ] >+fast/canvas/canvas-color-space-display-p3.html [ Failure ] >+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-pattern-canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.shadow.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.strokeText.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.srgb.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.with.putImageData.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Failure ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.with.putImageData.html [ Failure ] >+storage/indexeddb/structured-clone-image-data-display-p3.html [ Failure ] >+ > #webkit.org/b/229573 > imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https.html [ Pass Failure ] > imported/w3c/web-platform-tests/service-workers/service-worker/register-default-scope.https.html [ Pass Failure ] >diff --git a/LayoutTests/platform/ios/TestExpectations b/LayoutTests/platform/ios/TestExpectations >index e211ec296c867f285b4ee269ccf34bab5c4bcc59..5dd5cc78476cfbec6f426488f437543cc3fd0531 100644 >--- a/LayoutTests/platform/ios/TestExpectations >+++ b/LayoutTests/platform/ios/TestExpectations >@@ -3486,6 +3486,26 @@ imported/w3c/web-platform-tests/css/css-typed-om/width-by-max-px-em.html [ Pass > webkit.org/b/228176 fast/text/variable-system-font.html [ ImageOnlyFailure ] > webkit.org/b/228176 fast/text/variable-system-font-2.html [ Pass ] > >+# display-p3 canvas and ImageData are Cocoa only for now. >+fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ] >+fast/canvas/canvas-color-space-display-p3.html [ Pass ] >+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-pattern-canvas.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.shadow.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.strokeText.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.srgb.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.p3.canvas.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.with.putImageData.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Pass ] >+imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.with.putImageData.html [ Pass ] >+storage/indexeddb/structured-clone-image-data-display-p3.html [ Pass ] >+ > # Show 1px diff in the result. Maybe hitting the background bleed avoidance code path. > webkit.org/b/229397 imported/w3c/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-vlr-109.xht [ ImageOnlyFailure ] > webkit.org/b/229397 imported/w3c/web-platform-tests/css/css-writing-modes/abs-pos-non-replaced-vlr-125.xht [ ImageOnlyFailure ] >diff --git a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt b/LayoutTests/platform/ios/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >deleted file mode 100644 >index 8be4804f7de3693ca62c9e9979771dd4479e1a12..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >+++ /dev/null >@@ -1,43 +0,0 @@ >- >-PASS Overall test >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >- >diff --git a/LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt b/LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >deleted file mode 100644 >index 8be4804f7de3693ca62c9e9979771dd4479e1a12..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >+++ /dev/null >@@ -1,43 +0,0 @@ >- >-PASS Overall test >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >- >diff --git a/LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt b/LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >deleted file mode 100644 >index 8be4804f7de3693ca62c9e9979771dd4479e1a12..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images-expected.txt >+++ /dev/null >@@ -1,43 +0,0 @@ >- >-PASS Overall test >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png >-PASS Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 8, expected 15 +/- 8, expected 15 but got 3 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png assert_array_approx_equals: property 2, expected 179 +/- 0.05, expected 179 but got 178 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png assert_array_approx_equals: property 2, expected 160 +/- 0.05, expected 160 but got 159 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png assert_array_approx_equals: property 0, expected 131 +/- 0.05, expected 131 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png assert_array_approx_equals: property 1, expected 123 +/- 0.05, expected 123 but got 121 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png assert_array_approx_equals: property 0, expected 127 +/- 0.05, expected 127 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png assert_array_approx_equals: property 0, expected 133 +/- 0.05, expected 133 but got 134 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png assert_array_approx_equals: property 0, expected 95 +/- 0.05, expected 95 but got 96 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png assert_array_approx_equals: property 0, expected 129 +/- 0.05, expected 129 but got 128 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >-FAIL Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png assert_array_approx_equals: property 6, expected 38 +/- 0.05, expected 38 but got 40 >- >diff --git a/LayoutTests/platform/mac/TestExpectations b/LayoutTests/platform/mac/TestExpectations >index 1a30983f6356b22f1c50f658458eaabcffc36099..2b3fd60e249ad10462d0fd33210f66feb4d6bf6f 100644 >--- a/LayoutTests/platform/mac/TestExpectations >+++ b/LayoutTests/platform/mac/TestExpectations >@@ -2347,6 +2347,26 @@ webkit.org/b/229517 imported/w3c/web-platform-tests/webrtc-extensions/RTCRtpSync > > webkit.org/b/230116 imported/w3c/web-platform-tests/webrtc-extensions/transfer-datachannel.html [ Pass Failure ] > >+# display-p3 canvas and ImageData are Cocoa only for now. >+[ Monterey+ ] fast/canvas/canvas-color-space-display-p3-ImageData.html [ Pass ] >+[ Monterey+ ] fast/canvas/canvas-color-space-display-p3.html [ Pass ] >+[ 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-pattern-canvas.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.shadow.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.strokeText.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.p3.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.to.srgb.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.p3.canvas.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toBlob.with.putImageData.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.p3.canvas.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.jpeg.p3.canvas.html [ Pass ] >+[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.toDataURL.with.putImageData.html [ Pass ] >+[ Monterey+ ] storage/indexeddb/structured-clone-image-data-display-p3.html [ Pass ] >+ > # rdar://82132196 (20 webkit imported/w3c/web-platform-tests/css/ layout tests failing) > [ Monterey ] imported/w3c/web-platform-tests/css/css-backgrounds/background-position/subpixel-position-center.tentative.html [ Pass ImageOnlyFailure ] > [ Monterey ] imported/w3c/web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-column-016.html [ Pass ImageOnlyFailure ]
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 230209
:
438017
|
438018
|
438441
|
438443