Changeset 278222 in webkit
- Timestamp:
- May 28, 2021 1:08:08 PM (14 months ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/media/media-session/callActionHandler-expected.txt (added)
-
LayoutTests/media/media-session/callActionHandler.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/mediasession/MediaSession.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/mediasession/MediaSession.h (modified) (3 diffs)
-
Source/WebCore/Modules/mediasession/MediaSession.idl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r278219 r278222 1 2021-05-28 Jean-Yves Avenard <jya@apple.com> 2 3 Add MediaSession.callActionHandler 4 https://bugs.webkit.org/show_bug.cgi?id=226077 5 rdar://77463304 6 7 Reviewed by Eric Carlson. 8 9 * media/media-session/callActionHandler-expected.txt: Added. 10 * media/media-session/callActionHandler.html: Added. 11 1 12 2021-05-28 Alan Bujtas <zalan@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r278219 r278222 1 2021-05-28 Jean-Yves Avenard <jya@apple.com> 2 3 Add MediaSession.callActionHandler 4 https://bugs.webkit.org/show_bug.cgi?id=226077 5 rdar://77463304 6 7 Reviewed by Eric Carlson. 8 9 Make it possible for JavaScript to be able to trigger a MediaSession action 10 handler so a MediaSession.coordinator polyfill such as one provided by an 11 external JS library will work. 12 Test: media/media-session/callActionHandler.html 13 14 * Modules/mediasession/MediaSession.cpp: 15 (WebCore::MediaSession::callActionHandler): 16 * Modules/mediasession/MediaSession.h: 17 * Modules/mediasession/MediaSession.idl: Add method definition. 18 1 19 2021-05-28 Alan Bujtas <zalan@apple.com> 2 20 -
trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp
r278185 r278222 32 32 #include "EventNames.h" 33 33 #include "HTMLMediaElement.h" 34 #include "JSDOMPromiseDeferred.h" 34 35 #include "JSMediaPositionState.h" 35 36 #include "JSMediaSessionAction.h" … … 273 274 } 274 275 275 bool MediaSession::callActionHandler(const MediaSessionActionDetails& actionDetails) 276 void MediaSession::callActionHandler(const MediaSessionActionDetails& actionDetails, DOMPromiseDeferred<void>&& promise) 277 { 278 ALWAYS_LOG(LOGIDENTIFIER); 279 280 if (!callActionHandler(actionDetails, TriggerGestureIndicator::No)) { 281 promise.reject(InvalidStateError); 282 return; 283 } 284 285 promise.resolve(); 286 } 287 288 bool MediaSession::callActionHandler(const MediaSessionActionDetails& actionDetails, TriggerGestureIndicator triggerGestureIndicator) 276 289 { 277 290 if (auto handler = m_actionHandlers.get(actionDetails.action)) { 278 UserGestureIndicator gestureIndicator(ProcessingUserGesture, document()); 291 Optional<UserGestureIndicator> maybeGestureIndicator; 292 if (triggerGestureIndicator == TriggerGestureIndicator::Yes) 293 maybeGestureIndicator.emplace(ProcessingUserGesture, document()); 279 294 handler->handleEvent(actionDetails); 280 295 return true; -
trunk/Source/WebCore/Modules/mediasession/MediaSession.h
r278143 r278222 51 51 class MediaSessionCoordinatorPrivate; 52 52 class Navigator; 53 template<typename> class DOMPromiseDeferred; 53 54 54 55 class MediaSession : public RefCounted<MediaSession>, public ActiveDOMObject, public EventTargetWithInlineData { … … 66 67 67 68 void setActionHandler(MediaSessionAction, RefPtr<MediaSessionActionHandler>&&); 69 70 void callActionHandler(const MediaSessionActionDetails&, DOMPromiseDeferred<void>&&); 68 71 69 72 ExceptionOr<void> setPositionState(Optional<MediaPositionState>&&); … … 88 91 89 92 bool hasActiveActionHandlers() const { return !m_actionHandlers.isEmpty(); } 90 WEBCORE_EXPORT bool callActionHandler(const MediaSessionActionDetails&); 93 enum class TriggerGestureIndicator { 94 No, 95 Yes, 96 }; 97 WEBCORE_EXPORT bool callActionHandler(const MediaSessionActionDetails&, TriggerGestureIndicator = TriggerGestureIndicator::Yes); 91 98 92 99 const Logger& logger() const { return *m_logger.get(); } -
trunk/Source/WebCore/Modules/mediasession/MediaSession.idl
r275314 r278222 38 38 undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler); 39 39 40 Promise<undefined> callActionHandler(MediaSessionActionDetails actionDetails); 41 40 42 undefined setPositionState(optional MediaPositionState? state = null); 41 43 };
Note: See TracChangeset
for help on using the changeset viewer.