bool MediaElementSession::playbackPermitted(const HTMLMediaElement& element) const { if (pageExplicitlyAllowsElementToAutoplayInline(element)) return true; if (requiresFullscreenForVideoPlayback(element) && !fullscreenPermitted(element)) { LOG(Media, "MediaElementSession::playbackPermitted - returning FALSE because of fullscreen restriction"); return false; } if (m_restrictions & OverrideUserGestureRequirementForMainContent && updateIsMainContent()) return true; if (m_restrictions & RequireUserGestureForVideoRateChange && element.isVideo() && !ScriptController::processingUserGestureForMedia()) { LOG(Media, "MediaElementSession::playbackPermitted - returning FALSE because of video rate change restriction"); return false; } if (m_restrictions & RequireUserGestureForAudioRateChange && (!element.isVideo() || element.hasAudio()) && !element.muted() && !ScriptController::processingUserGestureForMedia()) { LOG(Media, "MediaElementSession::playbackPermitted - returning FALSE because of audio rate change restriction"); return false; } return true; }
void MediaElementSession::mainContentCheckTimerFired() { if (!hasBehaviorRestriction(OverrideUserGestureRequirementForMainContent)) return; updateIsMainContent(); }
bool MediaElementSession::dataLoadingPermitted(const HTMLMediaElement&) const { if (m_restrictions & OverrideUserGestureRequirementForMainContent && updateIsMainContent()) return true; if (m_restrictions & RequireUserGestureForLoad && !ScriptController::processingUserGestureForMedia()) { LOG(Media, "MediaElementSession::dataLoadingPermitted - returning FALSE"); return false; } return true; }