bool MediaElementSession::wirelessVideoPlaybackDisabled(const HTMLMediaElement& element) const { Settings* settings = element.document().settings(); if (!settings || !settings->allowsAirPlayForMediaPlayback()) { LOG(Media, "MediaElementSession::wirelessVideoPlaybackDisabled - returning TRUE because of settings"); return true; } if (element.fastHasAttribute(HTMLNames::webkitwirelessvideoplaybackdisabledAttr)) { LOG(Media, "MediaElementSession::wirelessVideoPlaybackDisabled - returning TRUE because of attribute"); return true; } #if PLATFORM(IOS) String legacyAirplayAttributeValue = element.fastGetAttribute(HTMLNames::webkitairplayAttr); if (equalLettersIgnoringASCIICase(legacyAirplayAttributeValue, "deny")) { LOG(Media, "MediaElementSession::wirelessVideoPlaybackDisabled - returning TRUE because of legacy attribute"); return true; } if (equalLettersIgnoringASCIICase(legacyAirplayAttributeValue, "allow")) { LOG(Media, "MediaElementSession::wirelessVideoPlaybackDisabled - returning FALSE because of legacy attribute"); return false; } #endif MediaPlayer* player = element.player(); if (!player) return true; bool disabled = player->wirelessVideoPlaybackDisabled(); LOG(Media, "MediaElementSession::wirelessVideoPlaybackDisabled - returning %s because media engine says so", disabled ? "TRUE" : "FALSE"); return disabled; }
bool MediaElementSession::requiresFullscreenForVideoPlayback(const HTMLMediaElement& element) const { if (pageExplicitlyAllowsElementToAutoplayInline(element)) return false; if (is<HTMLAudioElement>(element)) return false; Settings* settings = element.document().settings(); if (!settings || !settings->allowsInlineMediaPlayback()) return true; return settings->inlineMediaPlaybackRequiresPlaysInlineAttribute() && !element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr); }
bool HTMLMediaSession::requiresFullscreenForVideoPlayback(const HTMLMediaElement& element) const { if (!MediaSessionManager::sharedManager().sessionRestrictsInlineVideoPlayback(*this)) return false; Settings* settings = element.document().settings(); if (!settings || !settings->mediaPlaybackAllowsInline()) return true; if (element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr)) return false; #if PLATFORM(IOS) if (applicationIsDumpRenderTree()) return false; #endif return true; }
static bool shouldShowCastButton(HTMLMediaElement& mediaElement) { return !mediaElement.fastHasAttribute(HTMLNames::disableremoteplaybackAttr) && mediaElement.hasRemoteRoutes(); }
// static bool HTMLMediaElementRemotePlayback::fastHasAttribute( const QualifiedName& name, const HTMLMediaElement& element) { ASSERT(name == HTMLNames::disableremoteplaybackAttr); return element.fastHasAttribute(name); }