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();
    }
}
Exemple #3
0
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;
}
Exemple #4
0
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);
        }
    }
}
Exemple #5
0
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();
}