bool PlatformMediaSessionManager::sessionWillBeginPlayback(PlatformMediaSession& session) { LOG(Media, "PlatformMediaSessionManager::sessionWillBeginPlayback - %p", &session); setCurrentSession(session); PlatformMediaSession::MediaType sessionType = session.mediaType(); SessionRestrictions restrictions = m_restrictions[sessionType]; if (session.state() == PlatformMediaSession::Interrupted && restrictions & InterruptedPlaybackNotPermitted) return false; #if USE(AUDIO_SESSION) if (activeAudioSessionRequired() && !AudioSession::sharedSession().tryToSetActive(true)) return false; #endif if (m_interrupted) endInterruption(PlatformMediaSession::NoFlags); Vector<PlatformMediaSession*> sessions = m_sessions; for (auto* oneSession : sessions) { if (oneSession == &session) continue; if (oneSession->mediaType() == sessionType && restrictions & ConcurrentPlaybackNotPermitted) oneSession->pauseSession(); } updateSessionState(); return true; }
void PlatformMediaSessionManager::sessionIsPlayingToWirelessPlaybackTargetChanged(PlatformMediaSession& session) { if (!m_isApplicationInBackground || !(m_restrictions[session.mediaType()] & BackgroundProcessPlaybackRestricted)) return; if (session.state() != PlatformMediaSession::Interrupted) session.beginInterruption(PlatformMediaSession::EnteringBackground); }