Changeset 275571 in webkit
- Timestamp:
- Apr 6, 2021 4:51:54 PM (3 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r275570 r275571 1 2021-04-06 Jer Noble <jer.noble@apple.com> 2 3 [MediaSession] Add optional mediaTime and hostTime arguments to the playSession() command. 4 https://bugs.webkit.org/show_bug.cgi?id=224173 5 6 Reviewed by Eric Carlson. 7 8 When receiving a playSession() method that has an optional mediaTime argument, perform a 9 seekAction before the matching playAction if the current media time is not already approximately 10 equal to the mediaTime argument. 11 12 * Modules/mediasession/MediaSessionCoordinator.cpp: 13 (WebCore::MediaSessionCoordinator::playSession): 14 (WebCore::MediaSessionCoordinator::currentPositionApproximatelyEqualTo): 15 * Modules/mediasession/MediaSessionCoordinator.h: 16 * Modules/mediasession/MediaSessionCoordinatorPrivate.h: 17 1 18 2021-04-06 Said Abou-Hallawa <said@apple.com> 2 19 -
trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp
r275458 r275571 36 36 #include "MediaSessionCoordinatorPrivate.h" 37 37 #include <wtf/Logger.h> 38 #include <wtf/Seconds.h> 39 40 static const Seconds CommandTimeTolerance = 50_ms; 38 41 39 42 namespace WebCore { … … 297 300 } 298 301 299 void MediaSessionCoordinator::playSession(CompletionHandler<void(bool)>&& completionHandler) 300 { 302 void MediaSessionCoordinator::playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&& completionHandler) 303 { 304 UNUSED_PARAM(hostTime); 301 305 ALWAYS_LOG(LOGIDENTIFIER, m_state); 302 306 … … 305 309 return; 306 310 } 311 312 if (atTime && !currentPositionApproximatelyEqualTo(*atTime)) 313 m_session->callActionHandler({ .action = MediaSessionAction::Seekto, .seekTime = *atTime }); 307 314 308 315 m_session->callActionHandler({ .action = MediaSessionAction::Play }); … … 336 343 } 337 344 345 bool MediaSessionCoordinator::currentPositionApproximatelyEqualTo(double time) 346 { 347 if (!m_session) 348 return false; 349 350 auto currentPosition = m_session->currentPosition(); 351 if (!currentPosition) 352 return false; 353 354 auto delta = Seconds(abs(*currentPosition - time)); 355 return delta <= CommandTimeTolerance; 356 } 357 338 358 WTFLogChannel& MediaSessionCoordinator::logChannel() 339 359 { -
trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h
r275458 r275571 73 73 // MediaSessionCoordinatorClient 74 74 void seekSessionToTime(double, CompletionHandler<void(bool)>&&) final; 75 void playSession( CompletionHandler<void(bool)>&&) final;75 void playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&&) final; 76 76 void pauseSession(CompletionHandler<void(bool)>&&) final; 77 77 void setSessionTrack(const String&, CompletionHandler<void(bool)>&&) final; -
trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinatorPrivate.h
r275458 r275571 47 47 48 48 virtual void seekSessionToTime(double, CompletionHandler<void(bool)>&&) = 0; 49 virtual void playSession( CompletionHandler<void(bool)>&&) = 0;49 virtual void playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&&) = 0; 50 50 virtual void pauseSession(CompletionHandler<void(bool)>&&) = 0; 51 51 virtual void setSessionTrack(const String&, CompletionHandler<void(bool)>&&) = 0; -
trunk/Source/WebKit/ChangeLog
r275563 r275571 1 2021-04-06 Jer Noble <jer.noble@apple.com> 2 3 [MediaSession] Add optional mediaTime and hostTime arguments to the playSession() command. 4 https://bugs.webkit.org/show_bug.cgi?id=224173 5 6 Reviewed by Eric Carlson. 7 8 * UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp: 9 (WebKit::RemoteMediaSessionCoordinatorProxy::playSession): 10 * UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h: 11 * WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp: 12 (WebKit::RemoteMediaSessionCoordinator::playSession): 13 * WebProcess/MediaSession/RemoteMediaSessionCoordinator.h: 14 * WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in: 15 1 16 2021-04-06 Brent Fulgham <bfulgham@apple.com> 2 17 -
trunk/Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp
r275537 r275571 160 160 } 161 161 162 void RemoteMediaSessionCoordinatorProxy::playSession( CompletionHandler<void(bool)>&& callback)162 void RemoteMediaSessionCoordinatorProxy::playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&& callback) 163 163 { 164 m_webPageProxy.sendWithAsyncReply(Messages::RemoteMediaSessionCoordinator::PlaySession { }, callback);164 m_webPageProxy.sendWithAsyncReply(Messages::RemoteMediaSessionCoordinator::PlaySession { WTFMove(atTime), WTFMove(hostTime) }, callback); 165 165 } 166 166 -
trunk/Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h
r275537 r275571 78 78 // MediaSessionCoordinatorClient 79 79 void seekSessionToTime(double, CompletionHandler<void(bool)>&&) final; 80 void playSession( CompletionHandler<void(bool)>&&) final;80 void playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&&) final; 81 81 void pauseSession(CompletionHandler<void(bool)>&&) final; 82 82 void setSessionTrack(const String&, CompletionHandler<void(bool)>&&) final; -
trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp
r275537 r275571 191 191 } 192 192 193 void RemoteMediaSessionCoordinator::playSession( CompletionHandler<void(bool)>&& completionHandler)194 { 195 ALWAYS_LOG_IF_POSSIBLE(LOGIDENTIFIER); 196 if (auto coordinatorClient = client()) 197 coordinatorClient->playSession(WTFMove( (completionHandler)));193 void RemoteMediaSessionCoordinator::playSession(Optional<double> atTime, Optional<double> hostTime, CompletionHandler<void(bool)>&& completionHandler) 194 { 195 ALWAYS_LOG_IF_POSSIBLE(LOGIDENTIFIER); 196 if (auto coordinatorClient = client()) 197 coordinatorClient->playSession(WTFMove(atTime), WTFMove(hostTime), WTFMove((completionHandler))); 198 198 else 199 199 completionHandler(false); -
trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.h
r275314 r275571 56 56 // MessageReceivers. 57 57 void seekSessionToTime(double, CompletionHandler<void(bool)>&&); 58 void playSession( CompletionHandler<void(bool)>&&);58 void playSession(Optional<double>, Optional<double>, CompletionHandler<void(bool)>&&); 59 59 void pauseSession(CompletionHandler<void(bool)>&&); 60 60 void setSessionTrack(const String&, CompletionHandler<void(bool)>&&); -
trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in
r275210 r275571 30 30 SeekSessionToTime(double time) -> (bool result) Async 31 31 32 PlaySession( ) -> (bool result) Async32 PlaySession(Optional<double> atTime, Optional<double> hostTime) -> (bool result) Async 33 33 34 34 PauseSession() -> (bool result) Async
Note: See TracChangeset
for help on using the changeset viewer.