| Differences between
and this patch
- a/Source/WebCore/ChangeLog +61 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2021-09-21  Cameron McCormack  <heycam@apple.com>
2
3
        Ensure canvas.drawImage(video) uses the right color space
4
        https://bugs.webkit.org/show_bug.cgi?id=229025
5
        <rdar://problem/81828490>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        The ImageBitmap::createPromise() overload that takes an
10
        HTMLVideoElement needs to create an ImageBuffer in an appropriate
11
        color space.
12
13
        Tests: imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html
14
               imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html
15
16
        * html/HTMLVideoElement.cpp:
17
        (WebCore::HTMLVideoElement::colorSpace const): New function that
18
        exposes the color space of the current frame of the video.
19
        * html/HTMLVideoElement.h:
20
        * html/ImageBitmap.cpp:
21
        (WebCore::ImageBitmap::createPromise): Create the ImageBuffer in a
22
        color space that matches the video, not always sRGB.
23
        * platform/cocoa/CoreVideoSoftLink.cpp:
24
        * platform/cocoa/CoreVideoSoftLink.h: Add soft linked constant that
25
        can be used to get the color space from a CVPixelBuffer.
26
        * platform/graphics/MediaPlayer.cpp:
27
        (WebCore::MediaPlayer::colorSpace):
28
        * platform/graphics/MediaPlayer.h:
29
        * platform/graphics/MediaPlayerPrivate.h:
30
        (WebCore::MediaPlayerPrivateInterface::colorSpace):
31
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
32
        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
33
        (WebCore::MediaPlayerPrivateAVFoundationObjC::colorSpace): Expose the
34
        color space of the current image. While we strictly only need the pixel
35
        buffer to be up to date, we call updateLastImage() since it has the
36
        UpdateSynchronously behavior, and the caller to colorSpace() will use
37
        the image soon anyway.
38
        * platform/graphics/cg/ColorSpaceCG.h:
39
        * platform/graphics/cv/PixelBufferConformerCV.cpp:
40
        (WebCore::PixelBufferConformerCV::createImageFromPixelBuffer): Create
41
        the RGB pixel buffer using the color space attached to the original
42
        format pixel buffer.
43
44
2021-09-19  Cameron McCormack  <heycam@apple.com>
45
46
        Preserve color space when structured cloning ImageBitmaps
47
        https://bugs.webkit.org/show_bug.cgi?id=230429
48
        <rdar://problem/83293533>
49
50
        Reviewed by NOBODY (OOPS!).
51
52
        The logic for serializing the CGColorSpace is copied and adpated from
53
        the ArgumentCoder<CGColorSpaceRef> specialization, which we cannot
54
        easily re-use.
55
56
        * bindings/js/SerializedScriptValue.cpp:
57
        (WebCore::CloneSerializer::dumpImageBitmap):
58
        (WebCore::CloneSerializer::write):
59
        (WebCore::CloneDeserializer::read):
60
        (WebCore::CloneDeserializer::readImageBitmap):
61
1
2021-09-17  Alan Bujtas  <zalan@apple.com>
62
2021-09-17  Alan Bujtas  <zalan@apple.com>
2
63
3
        [LFC][IFC] Enable content with synthetic bold for IFC
64
        [LFC][IFC] Enable content with synthetic bold for IFC
- a/Source/WebKit/ChangeLog +41 lines
Lines 1-3 a/Source/WebKit/ChangeLog_sec1
1
2021-09-21  Cameron McCormack  <heycam@apple.com>
2
3
        Ensure canvas.drawImage(video) uses the right color space
4
        https://bugs.webkit.org/show_bug.cgi?id=229025
5
        <rdar://problem/81828490>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        When GPU process media handling is enabled, canvas.drawImage(video)
10
        calls work by sending a NativeImageForCurrentTime message to the GPU
11
        process, which returns an IOSurface around which a CGImage is created.
12
        There's no good way to get the color space off the IOSurface, so we
13
        add a second return argument to NativeImageForCurrentTime to indicate
14
        the color space used.
15
16
        ImageBitmap creates an ImageBuffer for that image to be painted into,
17
        and for that we also need to know the color space of the video. The
18
        code that sends NativeImageForCurrentTime and then paints the
19
        resulting image into the GraphicsContext is further down. So we add
20
        a separate IPC message that gets the color space of the video's
21
        current frame. (It would be better if we could avoid a second
22
        synchronous IPC message call, but either ImageBitmap's scaling and
23
        cropping code, or the ImageBuffer creation call, would need to be moved
24
        down into MediaPlayerPrivateRemote::paintCurrentFrameInContext, which
25
        doesn't seem like the right place for it.)
26
27
        * GPUProcess/media/RemoteMediaPlayerProxy.h:
28
        * GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
29
        * GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:
30
        (WebKit::RemoteMediaPlayerProxy::nativeImageForCurrentTime):
31
        (WebKit::RemoteMediaPlayerProxy::colorSpace):
32
        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
33
        (WebKit::MediaPlayerPrivateRemote::colorSpace):
34
        * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
35
        * WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
36
        (WebKit::MediaPlayerPrivateRemote::nativeImageForCurrentTime): Add a
37
        second return argument to NativeImageForCurrentTime to indicate the
38
        color space of the returned IOSurface.
39
        (WebKit::MediaPlayerPrivateRemote::colorSpace): Add a new IPC message to
40
        get the color space of a video's current frame.
41
1
2021-09-17  Alex Christensen  <achristensen@webkit.org>
42
2021-09-17  Alex Christensen  <achristensen@webkit.org>
2
43
3
        Use ObjectIdentifier for ResourceLoader
44
        Use ObjectIdentifier for ResourceLoader
- a/Source/WebCore/bindings/js/SerializedScriptValue.cpp -7 / +206 lines
Lines 28-33 a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec1
28
#include "SerializedScriptValue.h"
28
#include "SerializedScriptValue.h"
29
29
30
#include "BlobRegistry.h"
30
#include "BlobRegistry.h"
31
#if PLATFORM(COCOA)
32
#include <CoreFoundation/CoreFoundation.h>
33
#endif
34
#if USE(CG)
35
#include <CoreGraphics/CoreGraphics.h>
36
#endif
31
#include "CryptoKeyAES.h"
37
#include "CryptoKeyAES.h"
32
#include "CryptoKeyEC.h"
38
#include "CryptoKeyEC.h"
33
#include "CryptoKeyHMAC.h"
39
#include "CryptoKeyHMAC.h"
Lines 242-247 enum class PredefinedColorSpaceTag : uint8_t { a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec2
242
#endif
248
#endif
243
};
249
};
244
250
251
enum DestinationColorSpaceTag {
252
#if USE(CG)
253
    DestinationColorSpaceCGColorSpaceNullTag = 0,
254
    DestinationColorSpaceCGColorSpaceNameTag = 1,
255
    DestinationColorSpaceCGColorSpacePropertyListTag = 2,
256
#else
257
    DestinationColorSpaceSRGBTag = 3,
258
    DestinationColorSpaceLinearSRGBTag = 4,
259
    DestinationColorSpaceDisplayP3Tag = 5,
260
#endif
261
};
262
245
#if ENABLE(WEB_CRYPTO)
263
#if ENABLE(WEB_CRYPTO)
246
264
247
const uint32_t currentKeyFormatVersion = 1;
265
const uint32_t currentKeyFormatVersion = 1;
Lines 321-328 static unsigned countUsages(CryptoKeyUsageBitmap usages) a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec3
321
 * Version 6. added support for 8-bit strings.
339
 * Version 6. added support for 8-bit strings.
322
 * Version 7. added support for File's lastModified attribute.
340
 * Version 7. added support for File's lastModified attribute.
323
 * Version 8. added support for ImageData's colorSpace attribute.
341
 * Version 8. added support for ImageData's colorSpace attribute.
342
 * Version 9. added support for ImageBitmap color space.
324
 */
343
 */
325
static const unsigned CurrentVersion = 8;
344
static const unsigned CurrentVersion = 9;
326
static const unsigned TerminatorTag = 0xFFFFFFFF;
345
static const unsigned TerminatorTag = 0xFFFFFFFF;
327
static const unsigned StringPoolTag = 0xFFFFFFFE;
346
static const unsigned StringPoolTag = 0xFFFFFFFE;
328
static const unsigned NonIndexPropertiesTag = 0xFFFFFFFD;
347
static const unsigned NonIndexPropertiesTag = 0xFFFFFFFD;
Lines 386-392 static const unsigned StringDataIs8BitFlag = 0x80000000; a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec4
386
 *    | DOMQuad
405
 *    | DOMQuad
387
 *    | ImageBitmapTransferTag <value:uint32_t>
406
 *    | ImageBitmapTransferTag <value:uint32_t>
388
 *    | RTCCertificateTag
407
 *    | RTCCertificateTag
389
 *    | ImageBitmapTag <originClean:uint8_t> <logicalWidth:int32_t> <logicalHeight:int32_t> <resolutionScale:double> <byteLength:uint32_t>(<imageByteData:uint8_t>)
408
 *    | ImageBitmapTag <originClean:uint8_t> <logicalWidth:int32_t> <logicalHeight:int32_t> <resolutionScale:double> DestinationColorSpace <byteLength:uint32_t>(<imageByteData:uint8_t>)
390
 *    | OffscreenCanvasTransferTag <value:uint32_t>
409
 *    | OffscreenCanvasTransferTag <value:uint32_t>
391
 *    | WasmMemoryTag <value:uint32_t>
410
 *    | WasmMemoryTag <value:uint32_t>
392
 *    | RTCDataChannelTransferTag <processIdentifier:uint64_t><rtcDataChannelIdentifier:uint64_t><label:String>
411
 *    | RTCDataChannelTransferTag <processIdentifier:uint64_t><rtcDataChannelIdentifier:uint64_t><label:String>
Lines 502-507 static const unsigned StringDataIs8BitFlag = 0x80000000; a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec5
502
 * DOMQuadData :-
521
 * DOMQuadData :-
503
 *      <p1:DOMPointData> <p2:DOMPointData> <p3:DOMPointData> <p4:DOMPointData>
522
 *      <p1:DOMPointData> <p2:DOMPointData> <p3:DOMPointData> <p4:DOMPointData>
504
 *
523
 *
524
 * DestinationColorSpace :-
525
 *        DestinationColorSpaceSRGBTag
526
 *      | DestinationColorSpaceLinearSRGBTag
527
 *      | DestinationColorSpaceDisplayP3Tag
528
 *      | DestinationColorSpaceCGColorSpaceNullTag
529
 *      | DestinationColorSpaceCGColorSpaceNameTag <nameDataLength:uint32_t> <nameData:uint8_t>{nameDataLength}
530
 *      | DestinationColorSpaceCGColorSpacePropertyListTag <propertyListDataLength:uint32_t> <propertyListData:uint8_t>{propertyListDataLength}
505
 */
531
 */
506
532
507
using DeserializationResult = std::pair<JSC::JSValue, SerializationReturnCode>;
533
using DeserializationResult = std::pair<JSC::JSValue, SerializationReturnCode>;
Lines 1082-1089 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec6
1082
            return;
1108
            return;
1083
        }
1109
        }
1084
1110
1085
        // FIXME: Cloned ImageBitmaps should preserve their color space.
1111
        PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, buffer->colorSpace() };
1086
        PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, DestinationColorSpace::SRGB() };
1087
        const IntSize& logicalSize = buffer->logicalSize();
1112
        const IntSize& logicalSize = buffer->logicalSize();
1088
        auto pixelBuffer = buffer->getPixelBuffer(format, { IntPoint::zero(), logicalSize });
1113
        auto pixelBuffer = buffer->getPixelBuffer(format, { IntPoint::zero(), logicalSize });
1089
        if (!pixelBuffer) {
1114
        if (!pixelBuffer) {
Lines 1102-1107 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec7
1102
        write(static_cast<int32_t>(logicalSize.width()));
1127
        write(static_cast<int32_t>(logicalSize.width()));
1103
        write(static_cast<int32_t>(logicalSize.height()));
1128
        write(static_cast<int32_t>(logicalSize.height()));
1104
        write(static_cast<double>(buffer->resolutionScale()));
1129
        write(static_cast<double>(buffer->resolutionScale()));
1130
        write(buffer->colorSpace());
1105
1131
1106
        write(static_cast<uint32_t>(arrayBuffer->byteLength()));
1132
        write(static_cast<uint32_t>(arrayBuffer->byteLength()));
1107
        write(static_cast<const uint8_t*>(arrayBuffer->data()), arrayBuffer->byteLength());
1133
        write(static_cast<const uint8_t*>(arrayBuffer->data()), arrayBuffer->byteLength());
Lines 1422-1427 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec8
1422
        writeLittleEndian<uint8_t>(m_buffer, static_cast<uint8_t>(tag));
1448
        writeLittleEndian<uint8_t>(m_buffer, static_cast<uint8_t>(tag));
1423
    }
1449
    }
1424
1450
1451
    void write(DestinationColorSpaceTag tag)
1452
    {
1453
        writeLittleEndian<uint8_t>(m_buffer, static_cast<uint8_t>(tag));
1454
    }
1455
1425
#if ENABLE(WEB_CRYPTO)
1456
#if ENABLE(WEB_CRYPTO)
1426
    void write(CryptoKeyClassSubtag tag)
1457
    void write(CryptoKeyClassSubtag tag)
1427
    {
1458
    {
Lines 1573-1578 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec9
1573
        }
1604
        }
1574
    }
1605
    }
1575
1606
1607
#if PLATFORM(COCOA)
1608
    void write(const RetainPtr<CFDataRef>& data)
1609
    {
1610
        uint32_t dataLength = CFDataGetLength(data.get());
1611
        write(dataLength);
1612
        write(CFDataGetBytePtr(data.get()), dataLength);
1613
    }
1614
#endif
1615
1616
    void write(DestinationColorSpace destinationColorSpace)
1617
    {
1618
#if USE(CG)
1619
#if PLATFORM(COCOA)
1620
        auto colorSpace = destinationColorSpace.platformColorSpace();
1621
        if (!colorSpace) {
1622
            write(DestinationColorSpaceCGColorSpaceNullTag);
1623
            return;
1624
        }
1625
1626
        if (auto name = CGColorSpaceGetName(colorSpace)) {
1627
            auto data = adoptCF(CFStringCreateExternalRepresentation(nullptr, name, kCFStringEncodingUTF8, 0));
1628
            if (!data) {
1629
                write(DestinationColorSpaceCGColorSpaceNullTag);
1630
                return;
1631
            }
1632
1633
            write(DestinationColorSpaceCGColorSpaceNameTag);
1634
            write(data);
1635
            return;
1636
        }
1637
1638
        if (auto propertyList = adoptCF(CGColorSpaceCopyPropertyList(colorSpace))) {
1639
            auto data = adoptCF(CFPropertyListCreateData(nullptr, propertyList.get(), kCFPropertyListBinaryFormat_v1_0, 0, nullptr));
1640
            if (!data) {
1641
                write(DestinationColorSpaceCGColorSpaceNullTag);
1642
                return;
1643
            }
1644
1645
            write(DestinationColorSpaceCGColorSpacePropertyListTag);
1646
            write(data);
1647
            return;
1648
        }
1649
1650
        ASSERT_NOT_REACHED();
1651
        write(DestinationColorSpaceCGColorSpaceNullTag);
1652
#endif
1653
#else
1654
        switch (destinationColorSpace.platformColorSpace()) {
1655
        case PlatformColorSpace::Name::SRGB:
1656
            write(DestinationColorSpaceSRGBTag);
1657
            break;
1658
#if ENABLE(DESTINATION_COLOR_SPACE_LINEAR_SRGB)
1659
        case PlatformColorSpace::Name::LinearSRGB:
1660
            write(DestinationColorSpaceLinearSRGBTag);
1661
            break;
1662
#endif
1663
#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3)
1664
        case PlatformColorSpace::Name::DisplayP3:
1665
            write(DestinationColorSpaceDisplayP3Tag);
1666
            break;
1667
#endif
1668
        }
1669
1670
        ASSERT_NOT_REACHED();
1671
        write(DestinationColorSpaceSRGBTag);
1672
#endif
1673
    }
1674
1576
#if ENABLE(WEB_CRYPTO)
1675
#if ENABLE(WEB_CRYPTO)
1577
    void write(CryptoAlgorithmIdentifier algorithm)
1676
    void write(CryptoAlgorithmIdentifier algorithm)
1578
    {
1677
    {
Lines 2572-2577 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec10
2572
        }
2671
        }
2573
    }
2672
    }
2574
2673
2674
    bool read(DestinationColorSpaceTag& tag)
2675
    {
2676
        if (m_ptr >= m_end)
2677
            return false;
2678
        tag = static_cast<DestinationColorSpaceTag>(*m_ptr++);
2679
        return true;
2680
    }
2681
2682
#if PLATFORM(COCOA)
2683
    bool read(RetainPtr<CFDataRef>& data)
2684
    {
2685
        uint32_t dataLength;
2686
        if (!read(dataLength) || static_cast<uint32_t>(m_end - m_ptr) < dataLength)
2687
            return false;
2688
2689
        data = adoptCF(CFDataCreateWithBytesNoCopy(nullptr, m_ptr, dataLength, kCFAllocatorNull));
2690
        if (!data)
2691
            return false;
2692
2693
        m_ptr += dataLength;
2694
        return true;
2695
    }
2696
#endif
2697
2698
    bool read(DestinationColorSpace& destinationColorSpace)
2699
    {
2700
#if PLATFORM(COCOA)
2701
        DestinationColorSpaceTag tag;
2702
        if (!read(tag))
2703
            return false;
2704
2705
        switch (tag) {
2706
        case DestinationColorSpaceCGColorSpaceNullTag:
2707
            destinationColorSpace = DestinationColorSpace(nullptr);
2708
            return true;
2709
        case DestinationColorSpaceCGColorSpaceNameTag: {
2710
            RetainPtr<CFDataRef> data;
2711
            if (!read(data))
2712
                return false;
2713
2714
            auto name = adoptCF(CFStringCreateFromExternalRepresentation(nullptr, data.get(), kCFStringEncodingUTF8));
2715
            if (!name)
2716
                return false;
2717
2718
            auto colorSpace = adoptCF(CGColorSpaceCreateWithName(name.get()));
2719
            if (!colorSpace)
2720
                return false;
2721
2722
            destinationColorSpace = DestinationColorSpace(colorSpace.get());
2723
            return true;
2724
        }
2725
        case DestinationColorSpaceCGColorSpacePropertyListTag: {
2726
            RetainPtr<CFDataRef> data;
2727
            if (!read(data))
2728
                return false;
2729
2730
            auto propertyList = adoptCF(CFPropertyListCreateWithData(nullptr, data.get(), kCFPropertyListImmutable, nullptr, nullptr));
2731
            if (!propertyList)
2732
                return false;
2733
2734
            auto colorSpace = adoptCF(CGColorSpaceCreateWithPropertyList(propertyList.get()));
2735
            if (!colorSpace)
2736
                return false;
2737
2738
            destinationColorSpace = DestinationColorSpace(colorSpace.get());
2739
            return true;
2740
        }
2741
        }
2742
2743
        ASSERT_NOT_REACHED();
2744
        return false;
2745
#elif USE(CG)
2746
        destinationColorSpace = DestinationColorSpace::SRGB();
2747
        return true;
2748
#else
2749
        DestinationColorSpaceTag tag;
2750
        if (!read(tag))
2751
            return false;
2752
2753
        switch (tag) {
2754
        case DestinationColorSpaceSRGBTag:
2755
            destinationColorSpace = DestinationColorSpace::SRGB();
2756
            return true;
2757
#if ENABLE(DESTINATION_COLOR_SPACE_LINEAR_SRGB)
2758
        case DestinationColorSpaceLinearSRGBTag:
2759
            destinationColorSpace = DestinationColorSpace::LinearSRGB();
2760
            return true;
2761
#endif
2762
#if ENABLE(DESTINATION_COLOR_SPACE_DISPLAY_P3)
2763
        case DestinationColorSpaceDisplayP3Tag:
2764
            destinationColorSpace = DestinationColorSpace::DisplayP3();
2765
            return true;
2766
#endif
2767
        }
2768
        ASSERT_NOT_REACHED();
2769
        return false;
2770
#endif
2771
    }
2772
2575
#if ENABLE(WEB_CRYPTO)
2773
#if ENABLE(WEB_CRYPTO)
2576
    bool read(CryptoAlgorithmIdentifier& result)
2774
    bool read(CryptoAlgorithmIdentifier& result)
2577
    {
2775
    {
Lines 3163-3171 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec11
3163
        int32_t logicalWidth;
3361
        int32_t logicalWidth;
3164
        int32_t logicalHeight;
3362
        int32_t logicalHeight;
3165
        double resolutionScale;
3363
        double resolutionScale;
3364
        auto colorSpace = DestinationColorSpace::SRGB();
3166
        RefPtr<ArrayBuffer> arrayBuffer;
3365
        RefPtr<ArrayBuffer> arrayBuffer;
3167
3366
3168
        if (!read(serializationState) || !read(logicalWidth) || !read(logicalHeight) || !read(resolutionScale) || !readArrayBuffer(arrayBuffer)) {
3367
        if (!read(serializationState) || !read(logicalWidth) || !read(logicalHeight) || !read(resolutionScale) || (m_version > 8 && !read(colorSpace)) || !readArrayBuffer(arrayBuffer)) {
3169
            fail();
3368
            fail();
3170
            return JSValue();
3369
            return JSValue();
3171
        }
3370
        }
Lines 3174-3186 private: a/Source/WebCore/bindings/js/SerializedScriptValue.cpp_sec12
3174
        auto imageDataSize = logicalSize;
3373
        auto imageDataSize = logicalSize;
3175
        imageDataSize.scale(resolutionScale);
3374
        imageDataSize.scale(resolutionScale);
3176
3375
3177
        auto buffer = ImageBitmap::createImageBuffer(*scriptExecutionContextFromExecState(m_lexicalGlobalObject), logicalSize, RenderingMode::Unaccelerated, DestinationColorSpace::SRGB(), resolutionScale);
3376
        auto buffer = ImageBitmap::createImageBuffer(*scriptExecutionContextFromExecState(m_lexicalGlobalObject), logicalSize, RenderingMode::Unaccelerated, colorSpace, resolutionScale);
3178
        if (!buffer) {
3377
        if (!buffer) {
3179
            fail();
3378
            fail();
3180
            return JSValue();
3379
            return JSValue();
3181
        }
3380
        }
3182
3381
3183
        PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, DestinationColorSpace::SRGB() };
3382
        PixelBufferFormat format { AlphaPremultiplication::Premultiplied, PixelFormat::RGBA8, colorSpace };
3184
        auto pixelBuffer = PixelBuffer::tryCreate(format, imageDataSize, arrayBuffer.releaseNonNull());
3383
        auto pixelBuffer = PixelBuffer::tryCreate(format, imageDataSize, arrayBuffer.releaseNonNull());
3185
        if (!pixelBuffer) {
3384
        if (!pixelBuffer) {
3186
            fail();
3385
            fail();
- a/Source/WebCore/html/HTMLVideoElement.cpp +9 lines
Lines 283-288 void HTMLVideoElement::mediaPlayerFirstVideoFrameAvailable() a/Source/WebCore/html/HTMLVideoElement.cpp_sec1
283
        renderer->updateFromElement();
283
        renderer->updateFromElement();
284
}
284
}
285
285
286
std::optional<DestinationColorSpace> HTMLVideoElement::colorSpace() const
287
{
288
    RefPtr<MediaPlayer> player = HTMLMediaElement::player();
289
    if (!player)
290
        return std::nullopt;
291
292
    return player->colorSpace();
293
}
294
286
RefPtr<ImageBuffer> HTMLVideoElement::createBufferForPainting(const FloatSize& size, RenderingMode renderingMode, const DestinationColorSpace& colorSpace, PixelFormat pixelFormat) const
295
RefPtr<ImageBuffer> HTMLVideoElement::createBufferForPainting(const FloatSize& size, RenderingMode renderingMode, const DestinationColorSpace& colorSpace, PixelFormat pixelFormat) const
287
{
296
{
288
    auto* hostWindow = document().view() && document().view()->root() ? document().view()->root()->hostWindow() : nullptr;
297
    auto* hostWindow = document().view() && document().view()->root() ? document().view()->root()->hostWindow() : nullptr;
- a/Source/WebCore/html/HTMLVideoElement.h +1 lines
Lines 78-83 public: a/Source/WebCore/html/HTMLVideoElement.h_sec1
78
    void paintCurrentFrameInContext(GraphicsContext&, const FloatRect&);
78
    void paintCurrentFrameInContext(GraphicsContext&, const FloatRect&);
79
79
80
    RefPtr<NativeImage> nativeImageForCurrentTime();
80
    RefPtr<NativeImage> nativeImageForCurrentTime();
81
    std::optional<DestinationColorSpace> colorSpace() const;
81
82
82
    WEBCORE_EXPORT bool shouldDisplayPosterImage() const;
83
    WEBCORE_EXPORT bool shouldDisplayPosterImage() const;
83
84
- a/Source/WebCore/html/ImageBitmap.cpp -2 / +6 lines
Lines 512-519 void ImageBitmap::createPromise(ScriptExecutionContext& scriptExecutionContext, a/Source/WebCore/html/ImageBitmap.cpp_sec1
512
512
513
    auto outputSize = outputSizeForSourceRectangle(sourceRectangle, options);
513
    auto outputSize = outputSizeForSourceRectangle(sourceRectangle, options);
514
514
515
    // FIXME: Add support for color spaces / pixel formats to ImageBitmap.
515
    auto colorSpace = video->colorSpace();
516
    auto bitmapData = video->createBufferForPainting(outputSize, bufferRenderingMode, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);
516
    if (!colorSpace)
517
        colorSpace = DestinationColorSpace::SRGB();
518
519
    // FIXME: Add support for pixel formats to ImageBitmap.
520
    auto bitmapData = video->createBufferForPainting(outputSize, bufferRenderingMode, *colorSpace, PixelFormat::BGRA8);
517
    if (!bitmapData) {
521
    if (!bitmapData) {
518
        resolveWithBlankImageBuffer(scriptExecutionContext, !taintsOrigin(scriptExecutionContext.securityOrigin(), *video), WTFMove(promise));
522
        resolveWithBlankImageBuffer(scriptExecutionContext, !taintsOrigin(scriptExecutionContext.securityOrigin(), *video), WTFMove(promise));
519
        return;
523
        return;
- a/Source/WebCore/platform/cocoa/CoreVideoSoftLink.cpp +1 lines
Lines 72-77 SOFT_LINK_CONSTANT_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferTransferFunction a/Source/WebCore/platform/cocoa/CoreVideoSoftLink.cpp_sec1
72
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_DCI_P3, CFStringRef)
72
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_DCI_P3, CFStringRef)
73
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_P3_D65, CFStringRef)
73
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_P3_D65, CFStringRef)
74
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_ITU_R_2020, CFStringRef)
74
SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferYCbCrMatrix_ITU_R_2020, CFStringRef)
75
SOFT_LINK_CONSTANT_FOR_SOURCE(WebCore, CoreVideo, kCVImageBufferCGColorSpaceKey, CFStringRef)
75
76
76
#if USE(OPENGL_ES)
77
#if USE(OPENGL_ES)
77
SOFT_LINK_FUNCTION_FOR_SOURCE(WebCore, CoreVideo, CVOpenGLESTextureCacheCreate, CVReturn, (CFAllocatorRef allocator, CFDictionaryRef cacheAttributes, CVEAGLContext eaglContext, CFDictionaryRef textureAttributes, CVOpenGLESTextureCacheRef* cacheOut), (allocator, cacheAttributes, eaglContext, textureAttributes, cacheOut))
78
SOFT_LINK_FUNCTION_FOR_SOURCE(WebCore, CoreVideo, CVOpenGLESTextureCacheCreate, CVReturn, (CFAllocatorRef allocator, CFDictionaryRef cacheAttributes, CVEAGLContext eaglContext, CFDictionaryRef textureAttributes, CVOpenGLESTextureCacheRef* cacheOut), (allocator, cacheAttributes, eaglContext, textureAttributes, cacheOut))
- a/Source/WebCore/platform/cocoa/CoreVideoSoftLink.h +2 lines
Lines 111-116 SOFT_LINK_CONSTANT_FOR_HEADER(WebCore, CoreVideo, kCVImageBufferTransferFunction a/Source/WebCore/platform/cocoa/CoreVideoSoftLink.h_sec1
111
#define kCVImageBufferTransferFunction_ITU_R_709_2 get_CoreVideo_kCVImageBufferTransferFunction_ITU_R_709_2()
111
#define kCVImageBufferTransferFunction_ITU_R_709_2 get_CoreVideo_kCVImageBufferTransferFunction_ITU_R_709_2()
112
SOFT_LINK_CONSTANT_FOR_HEADER(WebCore, CoreVideo, kCVImageBufferTransferFunction_SMPTE_240M_1995, CFStringRef)
112
SOFT_LINK_CONSTANT_FOR_HEADER(WebCore, CoreVideo, kCVImageBufferTransferFunction_SMPTE_240M_1995, CFStringRef)
113
#define kCVImageBufferTransferFunction_SMPTE_240M_1995 get_CoreVideo_kCVImageBufferTransferFunction_SMPTE_240M_1995()
113
#define kCVImageBufferTransferFunction_SMPTE_240M_1995 get_CoreVideo_kCVImageBufferTransferFunction_SMPTE_240M_1995()
114
SOFT_LINK_CONSTANT_FOR_HEADER(WebCore, CoreVideo, kCVImageBufferCGColorSpaceKey, CFStringRef)
115
#define kCVImageBufferCGColorSpaceKey get_CoreVideo_kCVImageBufferCGColorSpaceKey()
114
116
115
#if USE(OPENGL_ES)
117
#if USE(OPENGL_ES)
116
SOFT_LINK_FUNCTION_FOR_HEADER(WebCore, CoreVideo, CVOpenGLESTextureCacheCreate, CVReturn, (CFAllocatorRef allocator, CFDictionaryRef cacheAttributes, CVEAGLContext eaglContext, CFDictionaryRef textureAttributes, CVOpenGLESTextureCacheRef* cacheOut), (allocator, cacheAttributes, eaglContext, textureAttributes, cacheOut))
118
SOFT_LINK_FUNCTION_FOR_HEADER(WebCore, CoreVideo, CVOpenGLESTextureCacheCreate, CVReturn, (CFAllocatorRef allocator, CFDictionaryRef cacheAttributes, CVEAGLContext eaglContext, CFDictionaryRef textureAttributes, CVOpenGLESTextureCacheRef* cacheOut), (allocator, cacheAttributes, eaglContext, textureAttributes, cacheOut))
- a/Source/WebCore/platform/graphics/MediaPlayer.cpp +5 lines
Lines 1061-1066 RefPtr<NativeImage> MediaPlayer::nativeImageForCurrentTime() a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec1
1061
    return m_private->nativeImageForCurrentTime();
1061
    return m_private->nativeImageForCurrentTime();
1062
}
1062
}
1063
1063
1064
std::optional<DestinationColorSpace> MediaPlayer::colorSpace()
1065
{
1066
    return m_private->colorSpace();
1067
}
1068
1064
MediaPlayer::SupportsType MediaPlayer::supportsType(const MediaEngineSupportParameters& parameters)
1069
MediaPlayer::SupportsType MediaPlayer::supportsType(const MediaEngineSupportParameters& parameters)
1065
{
1070
{
1066
    // 4.8.10.3 MIME types - The canPlayType(type) method must return the empty string if type is a type that the 
1071
    // 4.8.10.3 MIME types - The canPlayType(type) method must return the empty string if type is a type that the 
- a/Source/WebCore/platform/graphics/MediaPlayer.h +1 lines
Lines 470-475 public: a/Source/WebCore/platform/graphics/MediaPlayer.h_sec1
470
#endif
470
#endif
471
471
472
    RefPtr<NativeImage> nativeImageForCurrentTime();
472
    RefPtr<NativeImage> nativeImageForCurrentTime();
473
    std::optional<DestinationColorSpace> colorSpace();
473
474
474
    using MediaPlayerEnums::NetworkState;
475
    using MediaPlayerEnums::NetworkState;
475
    NetworkState networkState();
476
    NetworkState networkState();
- a/Source/WebCore/platform/graphics/MediaPlayerPrivate.h +1 lines
Lines 177-182 public: a/Source/WebCore/platform/graphics/MediaPlayerPrivate.h_sec1
177
    virtual RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() { return nullptr; }
177
    virtual RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() { return nullptr; }
178
#endif
178
#endif
179
    virtual RefPtr<NativeImage> nativeImageForCurrentTime() { return nullptr; }
179
    virtual RefPtr<NativeImage> nativeImageForCurrentTime() { return nullptr; }
180
    virtual std::optional<DestinationColorSpace> colorSpace() { return std::nullopt; }
180
181
181
    virtual void setPreload(MediaPlayer::Preload) { }
182
    virtual void setPreload(MediaPlayer::Preload) { }
182
183
- a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h +1 lines
Lines 254-259 private: a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h_sec1
254
    bool videoOutputHasAvailableFrame();
254
    bool videoOutputHasAvailableFrame();
255
    void paintWithVideoOutput(GraphicsContext&, const FloatRect&);
255
    void paintWithVideoOutput(GraphicsContext&, const FloatRect&);
256
    RefPtr<NativeImage> nativeImageForCurrentTime() final;
256
    RefPtr<NativeImage> nativeImageForCurrentTime() final;
257
    std::optional<DestinationColorSpace> colorSpace() final;
257
    void waitForVideoOutputMediaDataWillChange();
258
    void waitForVideoOutputMediaDataWillChange();
258
259
259
    RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() final;
260
    RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() final;
- a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm +13 lines
Lines 2559-2564 RefPtr<NativeImage> MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTim a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm_sec1
2559
    return m_lastImage;
2559
    return m_lastImage;
2560
}
2560
}
2561
2561
2562
std::optional<DestinationColorSpace> MediaPlayerPrivateAVFoundationObjC::colorSpace()
2563
{
2564
    updateLastImage(UpdateType::UpdateSynchronously);
2565
    if (!m_lastPixelBuffer)
2566
        return std::nullopt;
2567
2568
    CGColorSpaceRef colorSpace = dynamic_cf_cast<CGColorSpaceRef>(CVBufferGetAttachment(m_lastPixelBuffer.get(), kCVImageBufferCGColorSpaceKey, nullptr));
2569
    if (!colorSpace)
2570
        return std::nullopt;
2571
2572
    return DestinationColorSpace(colorSpace);
2573
}
2574
2562
void MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange()
2575
void MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange()
2563
{
2576
{
2564
    [m_videoOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:0];
2577
    [m_videoOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:0];
- a/Source/WebCore/platform/graphics/cg/ColorSpaceCG.h -1 / +3 lines
Lines 26-34 a/Source/WebCore/platform/graphics/cg/ColorSpaceCG.h_sec1
26
#pragma once
26
#pragma once
27
27
28
#include "ColorSpace.h"
28
#include "ColorSpace.h"
29
#include <CoreGraphics/CoreGraphics.h>
29
#include <optional>
30
#include <optional>
31
#include <wtf/cf/TypeCastsCF.h>
30
32
31
typedef struct CGColorSpace *CGColorSpaceRef;
33
WTF_DECLARE_CF_TYPE_TRAIT(CGColorSpace);
32
34
33
namespace WebCore {
35
namespace WebCore {
34
36
- a/Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp -1 / +5 lines
Lines 165-170 RetainPtr<CGImageRef> PixelBufferConformerCV::createImageFromPixelBuffer(CVPixel a/Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp_sec1
165
    if (!byteLength)
165
    if (!byteLength)
166
        return nullptr;
166
        return nullptr;
167
167
168
    CGColorSpaceRef colorSpace = dynamic_cf_cast<CGColorSpaceRef>(CVBufferGetAttachment(rawBuffer, kCVImageBufferCGColorSpaceKey, nullptr));
169
    if (!colorSpace)
170
        colorSpace = sRGBColorSpaceRef();
171
168
    CVPixelBufferInfo* info = new CVPixelBufferInfo();
172
    CVPixelBufferInfo* info = new CVPixelBufferInfo();
169
    info->pixelBuffer = WTFMove(buffer);
173
    info->pixelBuffer = WTFMove(buffer);
170
    info->lockCount = 0;
174
    info->lockCount = 0;
Lines 172-178 RetainPtr<CGImageRef> PixelBufferConformerCV::createImageFromPixelBuffer(CVPixel a/Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp_sec2
172
    CGDataProviderDirectCallbacks providerCallbacks = { 0, CVPixelBufferGetBytePointerCallback, CVPixelBufferReleaseBytePointerCallback, 0, CVPixelBufferReleaseInfoCallback };
176
    CGDataProviderDirectCallbacks providerCallbacks = { 0, CVPixelBufferGetBytePointerCallback, CVPixelBufferReleaseBytePointerCallback, 0, CVPixelBufferReleaseInfoCallback };
173
    RetainPtr<CGDataProviderRef> provider = adoptCF(CGDataProviderCreateDirect(info, byteLength, &providerCallbacks));
177
    RetainPtr<CGDataProviderRef> provider = adoptCF(CGDataProviderCreateDirect(info, byteLength, &providerCallbacks));
174
178
175
    return adoptCF(CGImageCreate(width, height, 8, 32, bytesPerRow, sRGBColorSpaceRef(), bitmapInfo, provider.get(), nullptr, false, kCGRenderingIntentDefault));
179
    return adoptCF(CGImageCreate(width, height, 8, 32, bytesPerRow, colorSpace, bitmapInfo, provider.get(), nullptr, false, kCGRenderingIntentDefault));
176
}
180
}
177
181
178
}
182
}
- a/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h -1 / +2 lines
Lines 308-314 private: a/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h_sec1
308
    void currentTimeChanged(const MediaTime&);
308
    void currentTimeChanged(const MediaTime&);
309
309
310
#if PLATFORM(COCOA)
310
#if PLATFORM(COCOA)
311
    void nativeImageForCurrentTime(CompletionHandler<void(std::optional<WTF::MachSendRight>&&)>&&);
311
    void nativeImageForCurrentTime(CompletionHandler<void(std::optional<WTF::MachSendRight>&&, std::optional<WebCore::DestinationColorSpace>&&)>&&);
312
    void colorSpace(CompletionHandler<void(std::optional<WebCore::DestinationColorSpace>&&)>&&);
312
#endif
313
#endif
313
#if USE(AVFOUNDATION)
314
#if USE(AVFOUNDATION)
314
    void pixelBufferForCurrentTime(CompletionHandler<void(RetainPtr<CVPixelBufferRef>&&)>&&);
315
    void pixelBufferForCurrentTime(CompletionHandler<void(RetainPtr<CVPixelBufferRef>&&)>&&);
- a/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in -1 / +2 lines
Lines 123-129 messages -> RemoteMediaPlayerProxy NotRefCounted { a/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in_sec1
123
#endif
123
#endif
124
124
125
#if PLATFORM(COCOA)
125
#if PLATFORM(COCOA)
126
    NativeImageForCurrentTime() -> (std::optional<MachSendRight> sendRight) Synchronous
126
    NativeImageForCurrentTime() -> (std::optional<MachSendRight> sendRight, std::optional<WebCore::DestinationColorSpace> colorSpace) Synchronous
127
    ColorSpace() -> (std::optional<WebCore::DestinationColorSpace> colorSpace) Synchronous
127
#endif
128
#endif
128
#if USE(AVFOUNDATION)
129
#if USE(AVFOUNDATION)
129
    PixelBufferForCurrentTime() -> (RetainPtr<CVPixelBufferRef> pixelBuffer) Synchronous
130
    PixelBufferForCurrentTime() -> (RetainPtr<CVPixelBufferRef> pixelBuffer) Synchronous
- a/Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm -5 / +15 lines
Lines 83-114 void RemoteMediaPlayerProxy::setVideoInlineSizeFenced(const WebCore::FloatSize& a/Source/WebKit/GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm_sec1
83
    setVideoInlineSizeIfPossible(*m_inlineLayerHostingContext, size);
83
    setVideoInlineSizeIfPossible(*m_inlineLayerHostingContext, size);
84
}
84
}
85
85
86
void RemoteMediaPlayerProxy::nativeImageForCurrentTime(CompletionHandler<void(std::optional<WTF::MachSendRight>&&)>&& completionHandler)
86
void RemoteMediaPlayerProxy::nativeImageForCurrentTime(CompletionHandler<void(std::optional<WTF::MachSendRight>&&, std::optional<WebCore::DestinationColorSpace>&&)>&& completionHandler)
87
{
87
{
88
    if (!m_player) {
88
    if (!m_player) {
89
        completionHandler(std::nullopt);
89
        completionHandler(std::nullopt, std::nullopt);
90
        return;
90
        return;
91
    }
91
    }
92
92
93
    auto nativeImage = m_player->nativeImageForCurrentTime();
93
    auto nativeImage = m_player->nativeImageForCurrentTime();
94
    if (!nativeImage) {
94
    if (!nativeImage) {
95
        completionHandler(std::nullopt);
95
        completionHandler(std::nullopt, std::nullopt);
96
        return;
96
        return;
97
    }
97
    }
98
98
99
    auto platformImage = nativeImage->platformImage();
99
    auto platformImage = nativeImage->platformImage();
100
    if (!platformImage) {
100
    if (!platformImage) {
101
        completionHandler(std::nullopt);
101
        completionHandler(std::nullopt, std::nullopt);
102
        return;
102
        return;
103
    }
103
    }
104
104
105
    auto surface = WebCore::IOSurface::createFromImage(platformImage.get());
105
    auto surface = WebCore::IOSurface::createFromImage(platformImage.get());
106
    if (!surface) {
106
    if (!surface) {
107
        completionHandler(std::nullopt, std::nullopt);
108
        return;
109
    }
110
111
    completionHandler(surface->createSendRight(), nativeImage->colorSpace());
112
}
113
114
void RemoteMediaPlayerProxy::colorSpace(CompletionHandler<void(std::optional<WebCore::DestinationColorSpace>&&)>&& completionHandler)
115
{
116
    if (!m_player) {
107
        completionHandler(std::nullopt);
117
        completionHandler(std::nullopt);
108
        return;
118
        return;
109
    }
119
    }
110
120
111
    completionHandler(surface->createSendRight());
121
    completionHandler(m_player->colorSpace());
112
}
122
}
113
123
114
void RemoteMediaPlayerProxy::pixelBufferForCurrentTime(CompletionHandler<void(RetainPtr<CVPixelBufferRef>&&)>&& completionHandler)
124
void RemoteMediaPlayerProxy::pixelBufferForCurrentTime(CompletionHandler<void(RetainPtr<CVPixelBufferRef>&&)>&& completionHandler)
- a/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp +6 lines
Lines 985-990 RefPtr<NativeImage> MediaPlayerPrivateRemote::nativeImageForCurrentTime() a/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp_sec1
985
    notImplemented();
985
    notImplemented();
986
    return nullptr;
986
    return nullptr;
987
}
987
}
988
989
std::optional<WebCore::DestinationColorSpace> MediaPlayerPrivateRemote::colorSpace()
990
{
991
    notImplemented();
992
    return std::nullopt;
993
}
988
#endif
994
#endif
989
995
990
bool MediaPlayerPrivateRemote::hasAvailableVideoFrame() const
996
bool MediaPlayerPrivateRemote::hasAvailableVideoFrame() const
- a/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h +1 lines
Lines 290-295 private: a/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h_sec1
290
    RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() final;
290
    RetainPtr<CVPixelBufferRef> pixelBufferForCurrentTime() final;
291
#endif
291
#endif
292
    RefPtr<WebCore::NativeImage> nativeImageForCurrentTime() final;
292
    RefPtr<WebCore::NativeImage> nativeImageForCurrentTime() final;
293
    std::optional<WebCore::DestinationColorSpace> colorSpace() final;
293
294
294
    WebCore::MediaPlayerIdentifier identifier() const final;
295
    WebCore::MediaPlayerIdentifier identifier() const final;
295
296
- a/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm -3 / +13 lines
Lines 49-61 PlatformLayerContainer MediaPlayerPrivateRemote::createVideoFullscreenLayer() a/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm_sec1
49
RefPtr<NativeImage> MediaPlayerPrivateRemote::nativeImageForCurrentTime()
49
RefPtr<NativeImage> MediaPlayerPrivateRemote::nativeImageForCurrentTime()
50
{
50
{
51
    std::optional<MachSendRight> sendRight;
51
    std::optional<MachSendRight> sendRight;
52
    if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::NativeImageForCurrentTime(), Messages::RemoteMediaPlayerProxy::NativeImageForCurrentTime::Reply(sendRight), m_id))
52
    std::optional<DestinationColorSpace> colorSpace;
53
    if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::NativeImageForCurrentTime(), Messages::RemoteMediaPlayerProxy::NativeImageForCurrentTime::Reply(sendRight, colorSpace), m_id))
53
        return nullptr;
54
        return nullptr;
54
55
55
    if (!sendRight)
56
    if (!sendRight || !colorSpace)
56
        return nullptr;
57
        return nullptr;
57
58
58
    auto surface = WebCore::IOSurface::createFromSendRight(WTFMove(*sendRight), WebCore::DestinationColorSpace::SRGB());
59
    auto surface = WebCore::IOSurface::createFromSendRight(WTFMove(*sendRight), *colorSpace);
59
    if (!surface)
60
    if (!surface)
60
        return nullptr;
61
        return nullptr;
61
62
Lines 66-71 RefPtr<NativeImage> MediaPlayerPrivateRemote::nativeImageForCurrentTime() a/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm_sec2
66
    return NativeImage::create(WTFMove(platformImage));
67
    return NativeImage::create(WTFMove(platformImage));
67
}
68
}
68
69
70
std::optional<WebCore::DestinationColorSpace> MediaPlayerPrivateRemote::colorSpace()
71
{
72
    std::optional<DestinationColorSpace> colorSpace;
73
    if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::ColorSpace(), Messages::RemoteMediaPlayerProxy::ColorSpace::Reply(colorSpace), m_id))
74
        return std::nullopt;
75
76
    return colorSpace;
77
}
78
69
RetainPtr<CVPixelBufferRef> MediaPlayerPrivateRemote::pixelBufferForCurrentTime()
79
RetainPtr<CVPixelBufferRef> MediaPlayerPrivateRemote::pixelBufferForCurrentTime()
70
{
80
{
71
81
- a/LayoutTests/ChangeLog +11 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2021-09-19  Cameron McCormack  <heycam@apple.com>
2
3
        Preserve color space when structured cloning ImageBitmaps
4
        https://bugs.webkit.org/show_bug.cgi?id=230429
5
        <rdar://problem/83293533>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        * fast/storage/serialized-script-value.html: Bump the current version
10
        number.
11
1
2021-09-17  Chris Dumez  <cdumez@apple.com>
12
2021-09-17  Chris Dumez  <cdumez@apple.com>
2
13
3
        [ Catalina+ Win WK1 ] http/tests/misc/iframe-reparenting-id-collision.html is a flaky text failure
14
        [ Catalina+ Win WK1 ] http/tests/misc/iframe-reparenting-id-collision.html is a flaky text failure
- a/LayoutTests/imported/w3c/ChangeLog +42 lines
Lines 1-3 a/LayoutTests/imported/w3c/ChangeLog_sec1
1
2021-09-21  Cameron McCormack  <heycam@apple.com>
2
3
        Ensure canvas.drawImage(video) uses the right color space
4
        https://bugs.webkit.org/show_bug.cgi?id=229025
5
        <rdar://problem/81828490>
6
7
        Reviewed by NOBODY (OOPS!).
8
9
        Add some new WPTs for drawImage(video).
10
11
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video-expected.txt: Added.
12
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html: Added.
13
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video-expected.txt: Added.
14
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html: Added.
15
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js:
16
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.mp4: Added.
17
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-222000000.webm: Added.
18
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.mp4: Added.
19
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/Rec2020-3FF000000.webm: Added.
20
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.mp4: Added.
21
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-BB0000.webm: Added.
22
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.mp4: Added.
23
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/resources/sRGB-FF0100.webm: Added.
24
25
2021-09-19  Cameron McCormack  <heycam@apple.com>
26
27
        Preserve color space when structured cloning ImageBitmaps
28
        https://bugs.webkit.org/show_bug.cgi?id=230429
29
        <rdar://problem/83293533>
30
31
        Reviewed by NOBODY (OOPS!).
32
33
        The test added in https://bugs.webkit.org/show_bug.cgi?id=230429 was
34
        buggy, in that by the time the "message" event handler ran, the
35
        values for the various test configuration variables had changed. The
36
        key bugfix here is checking for the right testID value in the message
37
        event handler, but the test is rewritten more substantially to be a bit
38
        clearer and less indented.
39
40
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned-expected.txt:
41
        * web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html:
42
1
2021-09-17  Simon Fraser  <simon.fraser@apple.com>
43
2021-09-17  Simon Fraser  <simon.fraser@apple.com>
2
44
3
        css/cssom-view/mouseEvent-offsetXY-svg.html passes now
45
        css/cssom-view/mouseEvent-offsetXY-svg.html passes now
- a/LayoutTests/TestExpectations +2 lines
Lines 5259-5264 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/can a/LayoutTests/TestExpectations_sec1
5259
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Failure ]
5259
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Failure ]
5260
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Failure ]
5260
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Failure ]
5261
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Failure ]
5261
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Failure ]
5262
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html [ Failure ]
5263
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html [ Failure ]
5262
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
5264
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
5263
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
5265
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
5264
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
5266
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
- a/LayoutTests/fast/storage/serialized-script-value.html -1 / +1 lines
Lines 6-12 a/LayoutTests/fast/storage/serialized-script-value.html_sec1
6
    <body>
6
    <body>
7
        <script>
7
        <script>
8
8
9
const currentVersion = 0x08;
9
const currentVersion = 0x09;
10
10
11
// Here's a little Q&D helper for future adventurers needing to rebaseline this.
11
// Here's a little Q&D helper for future adventurers needing to rebaseline this.
12
12
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned-expected.txt -172 / +172 lines
Lines 7-116 PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned-expected.txt_sec1
7
PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true
7
PASS sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true
8
PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
8
PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
9
PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
9
PASS sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
10
FAIL sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
10
PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false
11
FAIL sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
11
PASS sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true
12
FAIL sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
12
PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false
13
FAIL sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
13
PASS sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true
14
FAIL sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
14
PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false
15
FAIL sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
15
PASS sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true
16
FAIL sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
16
PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
17
FAIL sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
17
PASS sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
18
FAIL sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,255. expected true got false
18
PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false
19
FAIL sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,255. expected true got false
19
PASS sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true
20
FAIL sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
20
PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false
21
FAIL sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
21
PASS sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true
22
FAIL sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,255. expected true got false
22
PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false
23
FAIL sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,255. expected true got false
23
PASS sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true
24
FAIL sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
24
PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
25
FAIL sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
25
PASS sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
26
FAIL sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,204. expected true got false
26
PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false
27
FAIL sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,204. expected true got false
27
PASS sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true
28
FAIL sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
28
PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false
29
FAIL sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
29
PASS sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true
30
FAIL sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,204. expected true got false
30
PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false
31
FAIL sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,204. expected true got false
31
PASS sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true
32
FAIL sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
32
PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
33
FAIL sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
33
PASS sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
34
PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false
34
PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false
35
PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true
35
PASS Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true
36
PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false
36
PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false
37
PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true
37
PASS Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true
38
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false
38
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false
39
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true
39
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true
40
FAIL Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,255. expected true got false
40
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
41
FAIL Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,255. expected true got false
41
PASS Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
42
FAIL Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
42
PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false
43
FAIL Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
43
PASS Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true
44
FAIL Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
44
PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false
45
FAIL Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
45
PASS Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true
46
FAIL Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
46
PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false
47
FAIL Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
47
PASS Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true
48
FAIL Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,204. expected true got false
48
PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
49
FAIL Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,204. expected true got false
49
PASS Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
50
FAIL Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
50
PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false
51
FAIL Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
51
PASS Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true
52
FAIL Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,255. expected true got false
52
PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false
53
FAIL Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,255. expected true got false
53
PASS Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true
54
FAIL Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
54
PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false
55
FAIL Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
55
PASS Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true
56
FAIL Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,255. expected true got false
56
PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
57
FAIL Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,255. expected true got false
57
PASS Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
58
FAIL Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
58
PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false
59
FAIL Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
59
PASS Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true
60
FAIL Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,204. expected true got false
60
PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false
61
FAIL Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,204. expected true got false
61
PASS Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true
62
FAIL Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
62
PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false
63
FAIL Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
63
PASS Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true
64
FAIL Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,204. expected true got false
64
PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
65
FAIL Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,204. expected true got false
65
PASS Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
66
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false
66
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false
67
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true
67
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true
68
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false
68
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false
69
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true
69
PASS Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true
70
FAIL Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,255. expected true got false
70
PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false
71
FAIL Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,255. expected true got false
71
PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true
72
FAIL Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,255. expected true got false
72
PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
73
FAIL Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,255. expected true got false
73
PASS Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
74
FAIL Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
74
PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false
75
FAIL Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
75
PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true
76
FAIL Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
76
PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false
77
FAIL Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
77
PASS Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true
78
FAIL Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,204. expected true got false
78
PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false
79
FAIL Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,204. expected true got false
79
PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true
80
FAIL Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,204. expected true got false
80
PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
81
FAIL Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,204. expected true got false
81
PASS Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
82
FAIL Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,255. expected true got false
82
PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false
83
FAIL Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,255. expected true got false
83
PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true
84
FAIL Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
84
PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false
85
FAIL Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
85
PASS Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true
86
FAIL Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,255. expected true got false
86
PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false
87
FAIL Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,255. expected true got false
87
PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true
88
FAIL Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
88
PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false
89
FAIL Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
89
PASS Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true
90
FAIL Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,204. expected true got false
90
PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false
91
FAIL Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,204. expected true got false
91
PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true
92
FAIL Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
92
PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false
93
FAIL Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
93
PASS Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true
94
FAIL Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,204. expected true got false
94
PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false
95
FAIL Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,204. expected true got false
95
PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true
96
FAIL Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
96
PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false
97
FAIL Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
97
PASS Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true
98
FAIL Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,163,218,255. expected true got false
98
PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=false
99
FAIL Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,163,218,255. expected true got false
99
PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=true
100
FAIL Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 72,161,213,255. expected true got false
100
PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=false
101
FAIL Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 72,161,213,255. expected true got false
101
PASS Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=true
102
FAIL Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,163,218,255. expected true got false
102
PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=false
103
FAIL Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,163,218,255. expected true got false
103
PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=true
104
FAIL Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 0,160,213,255. expected true got false
104
PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=false
105
FAIL Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 0,160,213,255. expected true got false
105
PASS Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=true
106
FAIL Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,180,223,255. expected true got false
106
PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=false
107
FAIL Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,180,223,255. expected true got false
107
PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=true
108
FAIL Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 80,177,219,255. expected true got false
108
PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=false
109
FAIL Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 80,177,219,255. expected true got false
109
PASS Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=true
110
FAIL Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,180,223,255. expected true got false
110
PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=false
111
FAIL Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 0,180,223,255. expected true got false
111
PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=true
112
FAIL Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 65,177,219,255. expected true got false
112
PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=false
113
FAIL Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 65,177,219,255. expected true got false
113
PASS Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=true
114
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
114
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
115
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
115
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
116
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
116
PASS sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
Lines 119-210 PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=f a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned-expected.txt_sec2
119
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
119
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
120
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
120
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
121
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
121
PASS sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
122
FAIL sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
122
PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
123
FAIL sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
123
PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
124
FAIL sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
124
PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
125
FAIL sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
125
PASS sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
126
FAIL sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
126
PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
127
FAIL sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
127
PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
128
FAIL sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
128
PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
129
FAIL sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
129
PASS sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
130
FAIL sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,255. expected true got false
130
PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
131
FAIL sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,255. expected true got false
131
PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
132
FAIL sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
132
PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
133
FAIL sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
133
PASS sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
134
FAIL sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,255. expected true got false
134
PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
135
FAIL sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,255. expected true got false
135
PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
136
FAIL sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
136
PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
137
FAIL sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,255. expected true got false
137
PASS sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
138
FAIL sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,204. expected true got false
138
PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
139
FAIL sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,0,0,204. expected true got false
139
PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
140
FAIL sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
140
PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
141
FAIL sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
141
PASS sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
142
FAIL sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,204. expected true got false
142
PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
143
FAIL sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 187,1,0,204. expected true got false
143
PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
144
FAIL sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
144
PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
145
FAIL sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 171,35,23,204. expected true got false
145
PASS sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
146
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
146
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
147
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
147
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
148
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
148
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
149
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
149
PASS Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
150
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
150
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
151
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
151
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
152
FAIL Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,255. expected true got false
152
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
153
FAIL Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,255. expected true got false
153
PASS Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
154
FAIL Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
154
PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
155
FAIL Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
155
PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
156
FAIL Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
156
PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
157
FAIL Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
157
PASS Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
158
FAIL Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
158
PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
159
FAIL Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
159
PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
160
FAIL Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,204. expected true got false
160
PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
161
FAIL Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,0,0,204. expected true got false
161
PASS Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
162
FAIL Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
162
PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
163
FAIL Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
163
PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
164
FAIL Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,255. expected true got false
164
PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
165
FAIL Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,255. expected true got false
165
PASS Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
166
FAIL Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
166
PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
167
FAIL Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,255. expected true got false
167
PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
168
FAIL Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,255. expected true got false
168
PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
169
FAIL Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,255. expected true got false
169
PASS Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
170
FAIL Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
170
PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
171
FAIL Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
171
PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
172
FAIL Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,204. expected true got false
172
PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
173
FAIL Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 188,39,26,204. expected true got false
173
PASS Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
174
FAIL Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
174
PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
175
FAIL Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 205,0,0,204. expected true got false
175
PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
176
FAIL Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,204. expected true got false
176
PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
177
FAIL Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 187,0,0,204. expected true got false
177
PASS Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
178
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
178
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
179
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
179
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
180
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
180
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
181
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
181
PASS Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
182
FAIL Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,255. expected true got false
182
PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
183
FAIL Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,255. expected true got false
183
PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
184
FAIL Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,255. expected true got false
184
PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
185
FAIL Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,255. expected true got false
185
PASS Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
186
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
186
PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
187
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,0,0,204. expected true got false
187
PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
188
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
188
PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
189
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 234,51,35,204. expected true got false
189
PASS Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
190
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,204. expected true got false
190
PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
191
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 255,19,11,204. expected true got false
191
PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
192
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,204. expected true got false
192
PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
193
FAIL Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 255,61,43,204. expected true got false
193
PASS Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
194
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,255. expected true got false
194
PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false
195
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,255. expected true got false
195
PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true
196
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
196
PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false
197
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
197
PASS Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true
198
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,255. expected true got false
198
PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false
199
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,255. expected true got false
199
PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true
200
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
200
PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false
201
FAIL Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,255. expected true got false
201
PASS Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true
202
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,204. expected true got false
202
PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false
203
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,0,204. expected true got false
203
PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true
204
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
204
PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false
205
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
205
PASS Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true
206
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,204. expected true got false
206
PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false
207
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true assert_true: Actual pixel value 255,0,0,255 is approximately equal to 219,0,1,204. expected true got false
207
PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true
208
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
208
PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false
209
FAIL Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true assert_true: Actual pixel value 234,51,35,255 is approximately equal to 201,42,29,204. expected true got false
209
PASS Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true
210
210
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html -36 / +55 lines
Lines 6-50 a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html_sec1
6
// Test that drawing structured cloned ImageBitmaps with different image source
6
// Test that drawing structured cloned ImageBitmaps with different image source
7
// bit depths and color profiles into sRGB and Display P3 canvases works, by
7
// bit depths and color profiles into sRGB and Display P3 canvases works, by
8
// reading pixels with getImageData() as sRGB and Display P3 values.
8
// reading pixels with getImageData() as sRGB and Display P3 values.
9
10
let nextTestID = 0;
11
12
class Test {
13
    constructor(testConfiguration) {
14
        Object.assign(this, testConfiguration);
15
        this.testID = nextTestID++;
16
    }
17
18
    run() {
19
        let self = this;
20
        async_test(function(t) {
21
            self.t = t;
22
            self.image = new Image();
23
            self.image.onload = t.step_func(self.onImageLoaded.bind(self));
24
            self.image.src = `resources/${self.filename}`;
25
        }, `${this.filename}, Context ${this.contextColorSpace}, ImageData ${this.imageDataColorSpace}, cropSource=${this.cropSource}`);
26
    }
27
28
    onImageLoaded() {
29
        let imageBitmapPromise;
30
        if (this.cropSource)
31
            imageBitmapPromise = createImageBitmap(this.image, 1, 1, 1, 1);
32
        else
33
            imageBitmapPromise = createImageBitmap(this.image);
34
        imageBitmapPromise.then(this.t.step_func(this.onImageBitmapCreated.bind(this)));
35
    }
36
37
    onImageBitmapCreated(imageBitmap) {
38
        window.addEventListener("message", this.t.step_func(this.onMessage.bind(this)));
39
        window.postMessage({ imageBitmap, testID: this.testID });
40
    }
41
42
    onMessage(message) {
43
        if (message.data.testID != this.testID)
44
            return;
45
46
        let canvas = document.createElement("canvas");
47
        canvas.width = 2;
48
        canvas.height = 2;
49
50
        let ctx = canvas.getContext("2d", { colorSpace: this.contextColorSpace });
51
        ctx.drawImage(message.data.imageBitmap, 0, 0);
52
53
        let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: this.imageDataColorSpace });
54
55
        let expected = this.expectedPixels[`${this.contextColorSpace} ${this.imageDataColorSpace}`];
56
        assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
57
58
        this.t.done();
59
    }
60
}
61
9
for (let [filename, expectedPixels] of Object.entries(imageTests)) {
62
for (let [filename, expectedPixels] of Object.entries(imageTests)) {
10
    for (let contextColorSpace of ["srgb", "display-p3"]) {
63
    for (let contextColorSpace of ["srgb", "display-p3"]) {
11
        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
64
        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
12
            for (let cropSource of [false, true]) {
65
            for (let cropSource of [false, true])
13
                async_test(function(t) {
66
                new Test({ filename, expectedPixels, contextColorSpace, imageDataColorSpace, cropSource }).run();
14
                    let image = new Image();
15
                    image.onload = t.step_func(function() {
16
17
                        let canvas = document.createElement("canvas");
18
                        canvas.width = 2;
19
                        canvas.height = 2;
20
21
                        let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
22
23
                        let imageBitmapPromise;
24
                        if (cropSource)
25
                            imageBitmapPromise = createImageBitmap(image, 1, 1, 1, 1);
26
                        else
27
                            imageBitmapPromise = createImageBitmap(image);
28
29
                        imageBitmapPromise.then(t.step_func(function(imageBitmap) {
30
                            window.addEventListener(
31
                                "message",
32
                                t.step_func_done(function(message) {
33
                                    ctx.drawImage(message.data, 0, 0);
34
35
                                    let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace });
36
37
                                    let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
38
                                    assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
39
                                }),
40
                                { once: true }
41
                            );
42
                            window.postMessage(imageBitmap);
43
                        }));
44
                    });
45
                    image.src = `resources/${filename}`;
46
                }, `${filename}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, cropSource=${cropSource}`);
47
            }
48
        }
67
        }
49
    }
68
    }
50
}
69
}
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video-expected.txt +34 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video-expected.txt_sec1
1
2
PASS sRGB-FF0100, Context srgb, ImageData srgb, cropSource=false
3
PASS sRGB-FF0100, Context srgb, ImageData srgb, cropSource=true
4
PASS sRGB-FF0100, Context srgb, ImageData display-p3, cropSource=false
5
PASS sRGB-FF0100, Context srgb, ImageData display-p3, cropSource=true
6
PASS sRGB-FF0100, Context display-p3, ImageData srgb, cropSource=false
7
PASS sRGB-FF0100, Context display-p3, ImageData srgb, cropSource=true
8
PASS sRGB-FF0100, Context display-p3, ImageData display-p3, cropSource=false
9
PASS sRGB-FF0100, Context display-p3, ImageData display-p3, cropSource=true
10
PASS sRGB-BB0000, Context srgb, ImageData srgb, cropSource=false
11
PASS sRGB-BB0000, Context srgb, ImageData srgb, cropSource=true
12
PASS sRGB-BB0000, Context srgb, ImageData display-p3, cropSource=false
13
PASS sRGB-BB0000, Context srgb, ImageData display-p3, cropSource=true
14
PASS sRGB-BB0000, Context display-p3, ImageData srgb, cropSource=false
15
PASS sRGB-BB0000, Context display-p3, ImageData srgb, cropSource=true
16
PASS sRGB-BB0000, Context display-p3, ImageData display-p3, cropSource=false
17
PASS sRGB-BB0000, Context display-p3, ImageData display-p3, cropSource=true
18
PASS Rec2020-3FF000000, Context srgb, ImageData srgb, cropSource=false
19
PASS Rec2020-3FF000000, Context srgb, ImageData srgb, cropSource=true
20
PASS Rec2020-3FF000000, Context srgb, ImageData display-p3, cropSource=false
21
PASS Rec2020-3FF000000, Context srgb, ImageData display-p3, cropSource=true
22
PASS Rec2020-3FF000000, Context display-p3, ImageData srgb, cropSource=false
23
PASS Rec2020-3FF000000, Context display-p3, ImageData srgb, cropSource=true
24
PASS Rec2020-3FF000000, Context display-p3, ImageData display-p3, cropSource=false
25
PASS Rec2020-3FF000000, Context display-p3, ImageData display-p3, cropSource=true
26
PASS Rec2020-222000000, Context srgb, ImageData srgb, cropSource=false
27
PASS Rec2020-222000000, Context srgb, ImageData srgb, cropSource=true
28
PASS Rec2020-222000000, Context srgb, ImageData display-p3, cropSource=false
29
PASS Rec2020-222000000, Context srgb, ImageData display-p3, cropSource=true
30
PASS Rec2020-222000000, Context display-p3, ImageData srgb, cropSource=false
31
PASS Rec2020-222000000, Context display-p3, ImageData srgb, cropSource=true
32
PASS Rec2020-222000000, Context display-p3, ImageData display-p3, cropSource=false
33
PASS Rec2020-222000000, Context display-p3, ImageData display-p3, cropSource=true
34
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html +55 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html_sec1
1
<!DOCTYPE HTML>
2
<script src="/resources/testharness.js"></script>
3
<script src="/resources/testharnessreport.js"></script>
4
<script src="canvas-display-p3.js"></script>
5
<body>
6
<script>
7
// Test that drawing ImageBitmaps with different video source color profiles
8
// into sRGB and Display P3 canvases works, by reading pixels with
9
// getImageData() as sRGB and Display P3 values.
10
for (let [filenameBase, expectedPixels] of Object.entries(videoTests)) {
11
    for (let contextColorSpace of ["srgb", "display-p3"]) {
12
        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
13
            for (let cropSource of [false, true]) {
14
                async_test(function(t) {
15
                    let video = document.createElement("video");
16
                    video.onloadeddata = t.step_func(function() {
17
18
                        let canvas = document.createElement("canvas");
19
                        canvas.width = 2;
20
                        canvas.height = 2;
21
22
                        let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
23
24
                        let imageBitmapPromise;
25
                        if (cropSource)
26
                            imageBitmapPromise = createImageBitmap(video, 1, 1, 1, 1);
27
                        else
28
                            imageBitmapPromise = createImageBitmap(video);
29
30
                        imageBitmapPromise.then(t.step_func_done(function(imageBitmap) {
31
                            video.remove();
32
                            ctx.drawImage(imageBitmap, 0, 0);
33
34
                            let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace });
35
36
                            let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
37
                            assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
38
                        }), t.step_func(function(error) {
39
                            video.remove();
40
                            throw error;
41
                        }));
42
                    });
43
                    for (let format of ["mp4", "webm"]) {
44
                        let source = document.createElement("source");
45
                        source.src = `resources/${filenameBase}.${format}`;
46
                        source.type = `video/${format}`;
47
                        video.append(source);
48
                    }
49
                    document.body.append(video);
50
                }, `${filenameBase}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, cropSource=${cropSource}`);
51
            }
52
        }
53
    }
54
}
55
</script>
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video-expected.txt +34 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video-expected.txt_sec1
1
2
PASS sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=false
3
PASS sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=true
4
PASS sRGB-FF0100, Context srgb, ImageData display-p3, scaleImage=false
5
PASS sRGB-FF0100, Context srgb, ImageData display-p3, scaleImage=true
6
PASS sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=false
7
PASS sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=true
8
PASS sRGB-FF0100, Context display-p3, ImageData display-p3, scaleImage=false
9
PASS sRGB-FF0100, Context display-p3, ImageData display-p3, scaleImage=true
10
PASS sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=false
11
PASS sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=true
12
PASS sRGB-BB0000, Context srgb, ImageData display-p3, scaleImage=false
13
PASS sRGB-BB0000, Context srgb, ImageData display-p3, scaleImage=true
14
PASS sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=false
15
PASS sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=true
16
PASS sRGB-BB0000, Context display-p3, ImageData display-p3, scaleImage=false
17
PASS sRGB-BB0000, Context display-p3, ImageData display-p3, scaleImage=true
18
PASS Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=false
19
PASS Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=true
20
PASS Rec2020-3FF000000, Context srgb, ImageData display-p3, scaleImage=false
21
PASS Rec2020-3FF000000, Context srgb, ImageData display-p3, scaleImage=true
22
PASS Rec2020-3FF000000, Context display-p3, ImageData srgb, scaleImage=false
23
PASS Rec2020-3FF000000, Context display-p3, ImageData srgb, scaleImage=true
24
PASS Rec2020-3FF000000, Context display-p3, ImageData display-p3, scaleImage=false
25
PASS Rec2020-3FF000000, Context display-p3, ImageData display-p3, scaleImage=true
26
PASS Rec2020-222000000, Context srgb, ImageData srgb, scaleImage=false
27
PASS Rec2020-222000000, Context srgb, ImageData srgb, scaleImage=true
28
PASS Rec2020-222000000, Context srgb, ImageData display-p3, scaleImage=false
29
PASS Rec2020-222000000, Context srgb, ImageData display-p3, scaleImage=true
30
PASS Rec2020-222000000, Context display-p3, ImageData srgb, scaleImage=false
31
PASS Rec2020-222000000, Context display-p3, ImageData srgb, scaleImage=true
32
PASS Rec2020-222000000, Context display-p3, ImageData display-p3, scaleImage=false
33
PASS Rec2020-222000000, Context display-p3, ImageData display-p3, scaleImage=true
34
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html +46 lines
Line 0 a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html_sec1
1
<!DOCTYPE HTML>
2
<script src="/resources/testharness.js"></script>
3
<script src="/resources/testharnessreport.js"></script>
4
<script src="canvas-display-p3.js"></script>
5
<body>
6
<script>
7
// Test that drawing videos with different color spaces into sRGB and Display P3
8
// canvases works, by reading pixels with getImageData() as sRGB and Display P3
9
// values.
10
for (let [filenameBase, expectedPixels] of Object.entries(videoTests)) {
11
    for (let contextColorSpace of ["srgb", "display-p3"]) {
12
        for (let imageDataColorSpace of ["srgb", "display-p3"]) {
13
            for (let scaleImage of [false, true]) {
14
                async_test(function(t) {
15
                    let video = document.createElement("video");
16
                    video.onloadeddata = t.step_func_done(function() {
17
18
                        let canvas = document.createElement("canvas");
19
                        canvas.width = 2;
20
                        canvas.height = 2;
21
22
                        let ctx = canvas.getContext("2d", { colorSpace: contextColorSpace });
23
                        if (scaleImage)
24
                            ctx.drawImage(video, 0, 0, 10, 10);
25
                        else
26
                            ctx.drawImage(video, 0, 0);
27
                        video.remove();
28
29
                        let imageData = ctx.getImageData(0, 0, 1, 1, { colorSpace: imageDataColorSpace });
30
31
                        let expected = expectedPixels[`${contextColorSpace} ${imageDataColorSpace}`];
32
                        assert_true(pixelsApproximatelyEqual(imageData.data, expected), `Actual pixel value ${[...imageData.data]} is approximately equal to ${expected}.`);
33
                    });
34
                    for (let format of ["mp4", "webm"]) {
35
                        let source = document.createElement("source");
36
                        source.src = `resources/${filenameBase}.${format}`;
37
                        source.type = `video/${format}`;
38
                        video.append(source);
39
                    }
40
                    document.body.append(video);
41
                }, `${filenameBase}, Context ${contextColorSpace}, ImageData ${imageDataColorSpace}, scaleImage=${scaleImage}`);
42
            }
43
        }
44
    }
45
}
46
</script>
- a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js +53 lines
Lines 177-182 const imageTests = { a/LayoutTests/imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3.js_sec1
177
    },
177
    },
178
};
178
};
179
179
180
// Each video:
181
//  * is 300x200 and has a single color
182
//  * has a filename base that indicates its contents:
183
//
184
//      <color-space>-<8-or-10-bit-color-value>
185
//
186
//  * was generated using commands like:
187
//
188
//      W=300 H=200 Y=3F Cb=66 Cr=F0 ; \
189
//        perl -e "print pack('c', 0x$Y) x ($W * $H), pack('c', 0x$Cb) x ($W * $H / 4), pack('c', 0x$Cr) x ($W * $H / 4)" | \
190
//        ffmpeg -f rawvideo -pix_fmt yuv420p -s:v ${W}x$H -r 25 -i - -pix_fmt yuv420p -colorspace bt709 -color_primaries bt709 -color_trc iec61966_2_1 sRGB-FF0100.webm
191
//
192
//      W=300 H=200 Y=0BB Cb=1BD Cr=2EF ; \
193
//        perl -e "print pack('s', 0x$Y) x ($W * $H), pack('s', 0x$Cb) x ($W * $H / 4), pack('s', 0x$Cr) x ($W * $H / 4)" | \
194
//        ffmpeg -f rawvideo -pix_fmt yuv420p10le -s:v ${W}x$H -r 25 -i - -c:v libx265 -vtag hvc1 -pix_fmt yuv420p10le -colorspace bt2020nc -color_primaries bt2020 -color_trc bt2020-10 Rec2020-222000000.mp4
195
//
196
//      W=300 H=200 Y=0BB Cb=1BD Cr=2EF ; \
197
//        perl -e "print pack('s', 0x$Y) x ($W * $H), pack('s', 0x$Cb) x ($W * $H / 4), pack('s', 0x$Cr) x ($W * $H / 4)" | \
198
//        ffmpeg -f rawvideo -pix_fmt yuv420p10le -s:v ${W}x$H -r 25 -i - -vcodec libvpx-vp9 -profile:v 2 -pix_fmt yuv420p10le -colorspace bt2020nc -color_primaries bt2020 -color_trc bt2020-10 Rec2020-222000000.webm
199
//
200
//    where the Y'CbCr values were computed using https://jdashg.github.io/misc/colors/from-coeffs.html.
201
const videoTests = {
202
    // Rec.709 Y'CbCr (0x3F, 0x66, 0xF0) = sRGB (0xFF, 0x01, 0x00)
203
    "sRGB-FF0100": {
204
        "srgb srgb": [255, 1, 0, 255],
205
        "srgb display-p3": [234, 51, 35, 255],
206
        "display-p3 srgb": [255, 0, 0, 255],
207
        "display-p3 display-p3": [234, 51, 35, 255],
208
    },
209
    // Rec.709 Y'CbCr (0x32, 0x6D, 0xD2) = sRGB (0xBB, 0x00, 0x00)
210
    "sRGB-BB0000": {
211
        "srgb srgb": [187, 0, 0, 255],
212
        "srgb display-p3": [171, 35, 23, 255],
213
        "display-p3 srgb": [187, 1, 0, 255],
214
        "display-p3 display-p3": [171, 35, 23, 255],
215
    },
216
217
    // 10 bit Rec.2020 Y'CbCr (0x126, 0x183, 0x3C0) = Rec.2020 (0x3FF, 0x000, 0x000)
218
    "Rec2020-3FF000000": {
219
        "srgb srgb": [255, 0, 0, 255],
220
        "srgb display-p3": [234, 51, 35, 255],
221
        "display-p3 srgb": [255, 0, 0, 255],
222
        "display-p3 display-p3": [255, 0, 9, 255],
223
    },
224
    // 10 bit Rec.2020 Y'CbCr (0x0BB, 0x1BD, 0x2EF) = Rec.2020 (0x222, 0x000, 0x000)
225
    "Rec2020-222000000": {
226
        "srgb srgb": [186, 0, 0, 255],
227
        "srgb display-p3": [170, 34, 23, 255],
228
        "display-p3 srgb": [186, 0, 0, 255],
229
        "display-p3 display-p3": [169, 0, 3, 255],
230
    },
231
};
232
180
const fromSRGBToDisplayP3 = {
233
const fromSRGBToDisplayP3 = {
181
    "255,0,0,255": [234, 51, 35, 255],
234
    "255,0,0,255": [234, 51, 35, 255],
182
    "255,0,0,204": [234, 51, 35, 204],
235
    "255,0,0,204": [234, 51, 35, 204],
- a/LayoutTests/platform/ios-14/TestExpectations +2 lines
Lines 78-83 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/can a/LayoutTests/platform/ios-14/TestExpectations_sec1
78
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Failure ]
78
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Failure ]
79
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Failure ]
79
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Failure ]
80
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Failure ]
80
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Failure ]
81
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html [ Failure ]
82
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html [ Failure ]
81
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
83
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Failure ]
82
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
84
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Failure ]
83
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
85
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Failure ]
- a/LayoutTests/platform/ios/TestExpectations +2 lines
Lines 3494-3499 imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/can a/LayoutTests/platform/ios/TestExpectations_sec1
3494
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Pass ]
3494
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Pass ]
3495
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Pass ]
3495
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Pass ]
3496
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Pass ]
3496
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Pass ]
3497
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html [ Pass ]
3498
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html [ Pass ]
3497
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
3499
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
3498
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
3500
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
3499
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]
3501
imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]
- a/LayoutTests/platform/mac/TestExpectations +2 lines
Lines 2357-2362 webkit.org/b/230116 imported/w3c/web-platform-tests/webrtc-extensions/transfer-d a/LayoutTests/platform/mac/TestExpectations_sec1
2357
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Pass ]
2357
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-canvas.html [ Pass ]
2358
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Pass ]
2358
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html [ Pass ]
2359
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Pass ]
2359
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html [ Pass ]
2360
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html [ Pass ]
2361
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html [ Pass ]
2360
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
2362
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-canvas.html [ Pass ]
2361
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
2363
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-pattern-image.html [ Pass ]
2362
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]
2364
[ Monterey+ ] imported/w3c/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-settings.html [ Pass ]

Return to Bug 229025