void ChromeClientAndroid::exitFullScreenForElement(Element* element) { if (!element) return; HTMLMediaElement* videoElement = static_cast<HTMLMediaElement*>(element); videoElement->exitFullscreen(); }
void MediaPlayerPrivate::onStopFullscreen() { if (m_player && m_player->mediaPlayerClient()) { HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*> (m_player->mediaPlayerClient()); mediaElement->exitFullscreen(); } }
MediaPlayerPrivate::~MediaPlayerPrivate() { if (isFullscreen()) { HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient()); element->exitFullscreen(); } #if USE(ACCELERATED_COMPOSITING) // Remove media player from platform layer. if (m_platformLayer) static_cast<VideoLayerWebKitThread*>(m_platformLayer.get())->setMediaPlayer(0); #endif delete m_platformPlayer; }
void MediaPlayerPrivate::onStopFullscreen(bool stillPlaying) { if (m_player && m_player->mediaPlayerClient()) { Document* doc = m_player->mediaPlayerClient()->mediaPlayerOwningDocument(); if (doc) { HTMLMediaElement* element = static_cast<HTMLMediaElement*>(doc->webkitCurrentFullScreenElement()); element->exitFullscreen(); doc->webkitDidExitFullScreenForElement(element); if (stillPlaying) element->play(true); } } }
void MediaPlayerPrivate::updateStates() { MediaPlayer::NetworkState oldNetworkState = m_networkState; MediaPlayer::ReadyState oldReadyState = m_readyState; MMRPlayer::Error currentError = m_platformPlayer->error(); HTMLMediaElement* element = static_cast<HTMLMediaElement*>(m_webCorePlayer->mediaPlayerClient()); if (currentError != MMRPlayer::MediaOK) { m_readyState = MediaPlayer::HaveNothing; if (currentError == MMRPlayer::MediaDecodeError) m_networkState = MediaPlayer::DecodeError; else if (currentError == MMRPlayer::MediaMetaDataError || currentError == MMRPlayer::MediaAudioReceiveError || currentError == MMRPlayer::MediaVideoReceiveError) m_networkState = MediaPlayer::NetworkError; } else { switch (m_platformPlayer->mediaState()) { case MMRPlayer::MMRPlayStateIdle: m_networkState = MediaPlayer::Idle; break; case MMRPlayer::MMRPlayStatePlaying: m_networkState = MediaPlayer::Loading; break; case MMRPlayer::MMRPlayStateStopped: m_networkState = MediaPlayer::Idle; break; case MMRPlayer::MMRPlayStateUnknown: default: break; } switch (m_platformPlayer->state()) { case MMRPlayer::MP_STATE_IDLE: #if USE(ACCELERATED_COMPOSITING) setBuffering(false); m_mediaIsBuffering = false; #endif if (isFullscreen()) element->exitFullscreen(); break; case MMRPlayer::MP_STATE_ACTIVE: #if USE(ACCELERATED_COMPOSITING) m_showBufferingImage = false; m_mediaIsBuffering = false; #endif break; case MMRPlayer::MP_STATE_UNSUPPORTED: break; default: break; } if ((duration() || movieLoadType() == MediaPlayer::LiveStream) && m_readyState != MediaPlayer::HaveEnoughData) m_readyState = MediaPlayer::HaveEnoughData; } if (m_readyState != oldReadyState) { m_webCorePlayer->readyStateChanged(); #if USE(ACCELERATED_COMPOSITING) // Create platform layer for video. if (!m_platformLayer) m_platformLayer = VideoLayerWebKitThread::create(m_webCorePlayer); #endif } if (m_networkState != oldNetworkState) m_webCorePlayer->networkStateChanged(); }