Changeset 185678 in webkit
- Timestamp:
- Jun 17, 2015 5:01:10 PM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r185675 r185678 1 2015-06-16 Matt Rajca <mrajca@apple.com> 2 3 MediaSession: handle MediaEventTrackNext and MediaEventTrackPrevious events 4 https://bugs.webkit.org/show_bug.cgi?id=146028 5 6 Reviewed by Darin Adler. 7 8 * Modules/mediasession/MediaRemoteControls.idl: Added nexttrack/previoustrack event handlers. 9 * Modules/mediasession/MediaSession.cpp: Dispatch the nexttrack/previoustrack events. 10 (WebCore::MediaSession::skipToNextTrack): 11 (WebCore::MediaSession::skipToPreviousTrack): 12 * Modules/mediasession/MediaSession.h: 13 * Modules/mediasession/MediaSessionManager.cpp: Skip to the next/previous track as described in the media session spec. 14 (WebCore::MediaSessionManager::skipToNextTrack): 15 (WebCore::MediaSessionManager::skipToPreviousTrack): 16 * Modules/mediasession/MediaSessionManager.h: 17 * dom/EventNames.h: Added the nexttrack/previoustrack event names. 18 * page/Page.cpp: Tell MediaSessionManager to handle the new track-skipping events. 19 (WebCore::Page::handleMediaEvent): 20 1 21 2015-06-17 Chris Fleizach <cfleizach@apple.com> 2 22 -
trunk/Source/WebCore/Modules/mediasession/MediaRemoteControls.idl
r185429 r185678 35 35 attribute boolean seekForwardEnabled; 36 36 attribute boolean seekBackwardEnabled; 37 38 attribute EventHandler onprevioustrack; 39 attribute EventHandler onnexttrack; 37 40 }; -
trunk/Source/WebCore/Modules/mediasession/MediaSession.cpp
r185570 r185678 29 29 #if ENABLE(MEDIA_SESSION) 30 30 31 #include "Event.h" 31 32 #include "HTMLMediaElement.h" 32 33 #include "MediaSessionManager.h" … … 112 113 } 113 114 115 void MediaSession::skipToNextTrack() 116 { 117 if (m_controls && m_controls->nextTrackEnabled()) 118 m_controls->dispatchEvent(Event::create(eventNames().nexttrackEvent, false, false)); 119 } 120 121 void MediaSession::skipToPreviousTrack() 122 { 123 if (m_controls && m_controls->previousTrackEnabled()) 124 m_controls->dispatchEvent(Event::create(eventNames().previoustrackEvent, false, false)); 125 } 126 114 127 } 115 128 -
trunk/Source/WebCore/Modules/mediasession/MediaSession.h
r185570 r185678 62 62 63 63 void togglePlayback(); 64 void skipToNextTrack(); 65 void skipToPreviousTrack(); 64 66 65 67 private: -
trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.cpp
r185394 r185678 34 34 namespace WebCore { 35 35 36 static const char* contentSessionKind = "content"; 37 36 38 MediaSessionManager& MediaSessionManager::singleton() 37 39 { … … 54 56 for (auto* session : m_sessions) { 55 57 String sessionKind = session->kind(); 56 if (session->currentState() == MediaSession::State::Active && (sessionKind == "content"|| sessionKind == ""))58 if (session->currentState() == MediaSession::State::Active && (sessionKind == contentSessionKind || sessionKind == "")) 57 59 session->togglePlayback(); 60 } 61 } 62 63 void MediaSessionManager::skipToNextTrack() 64 { 65 // 5.2.2 When the user presses the MediaTrackNext media key, then for each Content-based media session that is 66 // currently ACTIVE and has a media remote controller with its nextTrackEnabled attribute set to true, queue a task 67 // to fire a simple event named nexttrack at its media remote controller. 68 for (auto* session : m_sessions) { 69 if (session->currentState() == MediaSession::State::Active && session->kind() == contentSessionKind) 70 session->skipToNextTrack(); 71 } 72 } 73 74 void MediaSessionManager::skipToPreviousTrack() 75 { 76 // 5.2.2 When the user presses the MediaTrackPrevious media key, then for each Content-based media session that is 77 // currently ACTIVE and has a media remote controller with its previousTrackEnabled attribute set to true, queue a task 78 // to fire a simple event named previoustrack at its media remote controller. 79 for (auto* session : m_sessions) { 80 if (session->currentState() == MediaSession::State::Active && session->kind() == contentSessionKind) 81 session->skipToPreviousTrack(); 58 82 } 59 83 } -
trunk/Source/WebCore/Modules/mediasession/MediaSessionManager.h
r185394 r185678 40 40 41 41 void togglePlayback(); 42 42 void skipToNextTrack(); 43 void skipToPreviousTrack(); 44 43 45 private: 44 46 friend class MediaSession; -
trunk/Source/WebCore/dom/EventNames.h
r183186 r185678 143 143 macro(mute) \ 144 144 macro(negotiationneeded) \ 145 macro(nexttrack) \ 145 146 macro(nomatch) \ 146 147 macro(noupdate) \ … … 161 162 macro(pointerlockerror) \ 162 163 macro(popstate) \ 164 macro(previoustrack) \ 163 165 macro(progress) \ 164 166 macro(ratechange) \ -
trunk/Source/WebCore/page/Page.cpp
r185477 r185678 1239 1239 MediaSessionManager::singleton().togglePlayback(); 1240 1240 break; 1241 default: 1241 case MediaEventType::TrackNext: 1242 MediaSessionManager::singleton().skipToNextTrack(); 1243 break; 1244 case MediaEventType::TrackPrevious: 1245 MediaSessionManager::singleton().skipToPreviousTrack(); 1242 1246 break; 1243 1247 }
Note: See TracChangeset
for help on using the changeset viewer.