haikuwebkit/LayoutTests/fast/mediasession/metadata/artworkdownload.html

36 lines
1.1 KiB
HTML
Raw Permalink Normal View History

Show media session image artwork in Now Playing information pane. https://bugs.webkit.org/show_bug.cgi?id=223118 <rdar://problem/75360166> Patch by Jean-Yves Avenard <jya@apple.com> on 2021-03-17 Reviewed by Eric Carlson. Source/WebCore: Test: fast/mediasession/metadata/artworkdownload.html Manually tested for Now Playing system integration. * Modules/mediasession/MediaMetadata.cpp: (WebCore::ArtworkImageLoader::ArtworkImageLoader): Implementation of new ArtworkImageLoader class. (WebCore::ArtworkImageLoader::~ArtworkImageLoader): (WebCore::ArtworkImageLoader::requestImageResource): (WebCore::ArtworkImageLoader::notifyFinished): (WebCore::MediaMetadata::setMediaSession): (WebCore::MediaMetadata::resetMediaSession): (WebCore::MediaMetadata::setArtwork): (WebCore::MediaMetadata::refreshArtworkImage): (WebCore::MediaMetadata::setArtworkImage): Make use of new ArtworkImageLoader class. * Modules/mediasession/MediaMetadata.h: Add new ArtworkImageLoader class. Allows to download from a given URL in relation to a given Document. (WebCore::MediaMetadata::artworkSrc const): (WebCore::MediaMetadata::artworkImage const): * Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::setActionHandler): fix whitespace (automatic). (WebCore::MediaSession::document const): Add method, used by MediaMetadata * Modules/mediasession/MediaSession.h: * html/MediaElementSession.cpp: (WebCore::MediaElementSession::wirelessVideoPlaybackDisabled const): fix whitespace (automatic). (WebCore::MediaElementSession::mediaEngineUpdated): fix whitespace (automatic). (WebCore::MediaElementSession::didReceiveRemoteControlCommand): fix whitespace (automatic). (WebCore::MediaElementSession::nowPlayingInfo const): Add artwork to NowPlayingInfo struct. * html/MediaElementSession.h: Add method, used by MediaMetadata * platform/audio/NowPlayingInfo.h: Add NowPlayingInfoArtwork struct. (WebCore::NowPlayingInfoArtwork::operator== const): (WebCore::NowPlayingInfoArtwork::operator!= const): (WebCore::NowPlayingInfoArtwork::encode const): (WebCore::NowPlayingInfoArtwork::decode): (WebCore::NowPlayingInfo::operator== const): (WebCore::NowPlayingInfo::operator!= const): (WebCore::NowPlayingInfo::encode const): (WebCore::NowPlayingInfo::decode): * platform/audio/cocoa/MediaSessionManagerCocoa.mm: Add artwork image to CFDictionary (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): * testing/Internals.cpp: Add private interface to test ArtworkImageLoader class. (WebCore::Internals::~Internals): Reject pending ArtworkImageLoader promise if any. (WebCore::Internals::grabNextMediaStreamTrackFrame): Add missing move. (WebCore::Internals::loadArtworkImage): New method to load an image. * testing/Internals.h: New method. * testing/Internals.idl: New method. LayoutTests: * fast/mediasession/metadata/artworkdownload-expected.txt: Added. * fast/mediasession/metadata/artworkdownload.html: Added. Canonical link: https://commits.webkit.org/235427@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@274586 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-17 20:46:52 +00:00
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<body>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script>
const IMAGE_SRC = '../../images/resources/test-load.jpg';
promise_test((test) => {
if (!window.internals)
return Promise.rejects("Test needs internals");
return internals.loadArtworkImage(IMAGE_SRC).then((data) => {
assert_equals(data.width, 16);
assert_equals(data.height, 16);
});
Show media session image artwork in Now Playing information pane. https://bugs.webkit.org/show_bug.cgi?id=223118 <rdar://problem/75360166> Patch by Jean-Yves Avenard <jya@apple.com> on 2021-03-17 Reviewed by Eric Carlson. Source/WebCore: Test: fast/mediasession/metadata/artworkdownload.html Manually tested for Now Playing system integration. * Modules/mediasession/MediaMetadata.cpp: (WebCore::ArtworkImageLoader::ArtworkImageLoader): Implementation of new ArtworkImageLoader class. (WebCore::ArtworkImageLoader::~ArtworkImageLoader): (WebCore::ArtworkImageLoader::requestImageResource): (WebCore::ArtworkImageLoader::notifyFinished): (WebCore::MediaMetadata::setMediaSession): (WebCore::MediaMetadata::resetMediaSession): (WebCore::MediaMetadata::setArtwork): (WebCore::MediaMetadata::refreshArtworkImage): (WebCore::MediaMetadata::setArtworkImage): Make use of new ArtworkImageLoader class. * Modules/mediasession/MediaMetadata.h: Add new ArtworkImageLoader class. Allows to download from a given URL in relation to a given Document. (WebCore::MediaMetadata::artworkSrc const): (WebCore::MediaMetadata::artworkImage const): * Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::setActionHandler): fix whitespace (automatic). (WebCore::MediaSession::document const): Add method, used by MediaMetadata * Modules/mediasession/MediaSession.h: * html/MediaElementSession.cpp: (WebCore::MediaElementSession::wirelessVideoPlaybackDisabled const): fix whitespace (automatic). (WebCore::MediaElementSession::mediaEngineUpdated): fix whitespace (automatic). (WebCore::MediaElementSession::didReceiveRemoteControlCommand): fix whitespace (automatic). (WebCore::MediaElementSession::nowPlayingInfo const): Add artwork to NowPlayingInfo struct. * html/MediaElementSession.h: Add method, used by MediaMetadata * platform/audio/NowPlayingInfo.h: Add NowPlayingInfoArtwork struct. (WebCore::NowPlayingInfoArtwork::operator== const): (WebCore::NowPlayingInfoArtwork::operator!= const): (WebCore::NowPlayingInfoArtwork::encode const): (WebCore::NowPlayingInfoArtwork::decode): (WebCore::NowPlayingInfo::operator== const): (WebCore::NowPlayingInfo::operator!= const): (WebCore::NowPlayingInfo::encode const): (WebCore::NowPlayingInfo::decode): * platform/audio/cocoa/MediaSessionManagerCocoa.mm: Add artwork image to CFDictionary (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): * testing/Internals.cpp: Add private interface to test ArtworkImageLoader class. (WebCore::Internals::~Internals): Reject pending ArtworkImageLoader promise if any. (WebCore::Internals::grabNextMediaStreamTrackFrame): Add missing move. (WebCore::Internals::loadArtworkImage): New method to load an image. * testing/Internals.h: New method. * testing/Internals.idl: New method. LayoutTests: * fast/mediasession/metadata/artworkdownload-expected.txt: Added. * fast/mediasession/metadata/artworkdownload.html: Added. Canonical link: https://commits.webkit.org/235427@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@274586 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-17 20:46:52 +00:00
}, "ensure loading artwork image method operates properly");
promise_test(async (test) => {
if (!window.internals)
return Promise.rejects("Test needs internals");
return promise_rejects(test, 'InvalidAccessError', internals.loadArtworkImage("bad_image.jpg"));
}, "ensure loading invalid artwork causes a failure");
promise_test(async (test) => {
if (!window.internals)
return Promise.rejects("Test needs internals");
return promise_rejects(test, 'InvalidAccessError', internals.loadArtworkImage(""));
}, "ensure loading a non-image causes a failure");
Show media session image artwork in Now Playing information pane. https://bugs.webkit.org/show_bug.cgi?id=223118 <rdar://problem/75360166> Patch by Jean-Yves Avenard <jya@apple.com> on 2021-03-17 Reviewed by Eric Carlson. Source/WebCore: Test: fast/mediasession/metadata/artworkdownload.html Manually tested for Now Playing system integration. * Modules/mediasession/MediaMetadata.cpp: (WebCore::ArtworkImageLoader::ArtworkImageLoader): Implementation of new ArtworkImageLoader class. (WebCore::ArtworkImageLoader::~ArtworkImageLoader): (WebCore::ArtworkImageLoader::requestImageResource): (WebCore::ArtworkImageLoader::notifyFinished): (WebCore::MediaMetadata::setMediaSession): (WebCore::MediaMetadata::resetMediaSession): (WebCore::MediaMetadata::setArtwork): (WebCore::MediaMetadata::refreshArtworkImage): (WebCore::MediaMetadata::setArtworkImage): Make use of new ArtworkImageLoader class. * Modules/mediasession/MediaMetadata.h: Add new ArtworkImageLoader class. Allows to download from a given URL in relation to a given Document. (WebCore::MediaMetadata::artworkSrc const): (WebCore::MediaMetadata::artworkImage const): * Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::setActionHandler): fix whitespace (automatic). (WebCore::MediaSession::document const): Add method, used by MediaMetadata * Modules/mediasession/MediaSession.h: * html/MediaElementSession.cpp: (WebCore::MediaElementSession::wirelessVideoPlaybackDisabled const): fix whitespace (automatic). (WebCore::MediaElementSession::mediaEngineUpdated): fix whitespace (automatic). (WebCore::MediaElementSession::didReceiveRemoteControlCommand): fix whitespace (automatic). (WebCore::MediaElementSession::nowPlayingInfo const): Add artwork to NowPlayingInfo struct. * html/MediaElementSession.h: Add method, used by MediaMetadata * platform/audio/NowPlayingInfo.h: Add NowPlayingInfoArtwork struct. (WebCore::NowPlayingInfoArtwork::operator== const): (WebCore::NowPlayingInfoArtwork::operator!= const): (WebCore::NowPlayingInfoArtwork::encode const): (WebCore::NowPlayingInfoArtwork::decode): (WebCore::NowPlayingInfo::operator== const): (WebCore::NowPlayingInfo::operator!= const): (WebCore::NowPlayingInfo::encode const): (WebCore::NowPlayingInfo::decode): * platform/audio/cocoa/MediaSessionManagerCocoa.mm: Add artwork image to CFDictionary (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo): (WebCore::MediaSessionManagerCocoa::updateNowPlayingInfo): * testing/Internals.cpp: Add private interface to test ArtworkImageLoader class. (WebCore::Internals::~Internals): Reject pending ArtworkImageLoader promise if any. (WebCore::Internals::grabNextMediaStreamTrackFrame): Add missing move. (WebCore::Internals::loadArtworkImage): New method to load an image. * testing/Internals.h: New method. * testing/Internals.idl: New method. LayoutTests: * fast/mediasession/metadata/artworkdownload-expected.txt: Added. * fast/mediasession/metadata/artworkdownload.html: Added. Canonical link: https://commits.webkit.org/235427@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@274586 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-17 20:46:52 +00:00
</script>
</body>
</html>