Changeset 277507 in webkit


Ignore:
Timestamp:
May 14, 2021, 3:02:15 PM (4 years ago)
Author:
Jean-Yves Avenard
Message:

Bad media session artwork URL results in blue "broken image" icon being shown in Now Playing
https://bugs.webkit.org/show_bug.cgi?id=225799
rdar://77990886

Reviewed by Eric Carlson.

Source/WebCore:

By default, when the image's URL doesn't point to an image the CachedImage
will return a default image consistent of a blue interrogation mark.
We need to explicitely check that an error occurred. The naming used in the
method didn't make this need obvious.

  • Modules/mediasession/MediaMetadata.cpp:

(WebCore::ArtworkImageLoader::notifyFinished): Check for a status error.

  • testing/Internals.cpp:

(WebCore::Internals::loadArtworkImage): Fix spelling

LayoutTests:

  • fast/mediasession/metadata/artworkdownload-expected.txt:
  • fast/mediasession/metadata/artworkdownload.html: Add test case.
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r277503 r277507  
     12021-05-14  Jean-Yves Avenard  <jya@apple.com>
     2
     3        Bad media session artwork URL results in blue "broken image" icon being shown in Now Playing
     4        https://bugs.webkit.org/show_bug.cgi?id=225799
     5        rdar://77990886
     6
     7        Reviewed by Eric Carlson.
     8
     9        * fast/mediasession/metadata/artworkdownload-expected.txt:
     10        * fast/mediasession/metadata/artworkdownload.html: Add test case.
     11
    1122021-05-14  Lauro Moura  <lmoura@igalia.com>
    213
  • trunk/LayoutTests/fast/mediasession/metadata/artworkdownload-expected.txt

    r274586 r277507  
    11
    22PASS ensure loading artwork image method operates properly
     3PASS ensure loading invalid artwork causes a failure
     4PASS ensure loading a non-image causes a failure
    35
  • trunk/LayoutTests/fast/mediasession/metadata/artworkdownload.html

    r274586 r277507  
    1010promise_test((test) => {
    1111    if (!window.internals)
    12         var promise = Promise.resolve();
    13     else {
    14         var promise = internals.loadArtworkImage(IMAGE_SRC).then((data) => {
    15             assert_equals(data.width, 16);
    16             assert_equals(data.height, 16);
    17         });;
    18     }
    19     return promise;
     12        return Promise.rejects("Test needs internals");
     13    return internals.loadArtworkImage(IMAGE_SRC).then((data) => {
     14        assert_equals(data.width, 16);
     15        assert_equals(data.height, 16);
     16    });
    2017}, "ensure loading artwork image method operates properly");
     18
     19promise_test(async (test) => {
     20    if (!window.internals)
     21        return Promise.rejects("Test needs internals");
     22
     23    return promise_rejects(test, 'InvalidAccessError', internals.loadArtworkImage("bad_image.jpg"));
     24}, "ensure loading invalid artwork causes a failure");
     25
     26promise_test(async (test) => {
     27    if (!window.internals)
     28        return Promise.rejects("Test needs internals");
     29
     30    return promise_rejects(test, 'InvalidAccessError', internals.loadArtworkImage(""));
     31}, "ensure loading a non-image causes a failure");
    2132
    2233        </script>
  • trunk/Source/WebCore/ChangeLog

    r277505 r277507  
     12021-05-14  Jean-Yves Avenard  <jya@apple.com>
     2
     3        Bad media session artwork URL results in blue "broken image" icon being shown in Now Playing
     4        https://bugs.webkit.org/show_bug.cgi?id=225799
     5        rdar://77990886
     6
     7        Reviewed by Eric Carlson.
     8
     9        By default, when the image's URL doesn't point to an image the CachedImage
     10        will return a default image consistent of a blue interrogation mark.
     11        We need to explicitely check that an error occurred. The naming used in the
     12        method didn't make this need obvious.
     13
     14        * Modules/mediasession/MediaMetadata.cpp:
     15        (WebCore::ArtworkImageLoader::notifyFinished): Check for a status error.
     16        * testing/Internals.cpp:
     17        (WebCore::Internals::loadArtworkImage): Fix spelling
     18
    1192021-05-14  Devin Rousso  <drousso@apple.com>
    220
  • trunk/Source/WebCore/Modules/mediasession/MediaMetadata.cpp

    r277148 r277507  
    7373{
    7474    ASSERT_UNUSED(resource, &resource == m_cachedImage);
    75     if (m_cachedImage->loadFailedOrCanceled() || !m_cachedImage->image() || !m_cachedImage->image()->data() || m_cachedImage->image()->data()->isEmpty()) {
     75    if (m_cachedImage->loadFailedOrCanceled() || m_cachedImage->errorOccurred() || !m_cachedImage->image() || !m_cachedImage->image()->data() || m_cachedImage->image()->data()->isEmpty()) {
    7676        m_callback(nullptr);
    7777        return;
  • trunk/Source/WebCore/testing/Internals.cpp

    r277437 r277507  
    62186218                m_artworkImagePromise->reject(imageData.exception().code());
    62196219        } else
    6220             m_artworkImagePromise->reject(Exception { InvalidAccessError, "No image retrieve."  });
     6220            m_artworkImagePromise->reject(Exception { InvalidAccessError, "No image retrieved."  });
    62216221        m_artworkImagePromise = nullptr;
    62226222    });
Note: See TracChangeset for help on using the changeset viewer.