Commit b7560683 authored by mlamouri's avatar mlamouri Committed by Commit bot

Media Controls: use loadedmetadata and error events.

This is temporarily using ::reset() to guarantee backward compatibility
and reduce chances of breakage for now.

BUG=662761
R=zqzhang@chromium.org

Review-Url: https://codereview.chromium.org/2589873002
Cr-Commit-Position: refs/heads/master@{#439503}
parent e27afd71
...@@ -1488,18 +1488,17 @@ void HTMLMediaElement::mediaLoadingFailed(WebMediaPlayer::NetworkState error) { ...@@ -1488,18 +1488,17 @@ void HTMLMediaElement::mediaLoadingFailed(WebMediaPlayer::NetworkState error) {
} }
if (error == WebMediaPlayer::NetworkStateNetworkError && if (error == WebMediaPlayer::NetworkStateNetworkError &&
m_readyState >= kHaveMetadata) m_readyState >= kHaveMetadata) {
mediaEngineError(MediaError::create(MediaError::kMediaErrNetwork)); mediaEngineError(MediaError::create(MediaError::kMediaErrNetwork));
else if (error == WebMediaPlayer::NetworkStateDecodeError) } else if (error == WebMediaPlayer::NetworkStateDecodeError) {
mediaEngineError(MediaError::create(MediaError::kMediaErrDecode)); mediaEngineError(MediaError::create(MediaError::kMediaErrDecode));
else if ((error == WebMediaPlayer::NetworkStateFormatError || } else if ((error == WebMediaPlayer::NetworkStateFormatError ||
error == WebMediaPlayer::NetworkStateNetworkError) && error == WebMediaPlayer::NetworkStateNetworkError) &&
m_loadState == LoadingFromSrcAttr) m_loadState == LoadingFromSrcAttr) {
noneSupported(); noneSupported();
}
updateDisplayState(); updateDisplayState();
if (mediaControls())
mediaControls()->reset();
} }
void HTMLMediaElement::setNetworkState(WebMediaPlayer::NetworkState state) { void HTMLMediaElement::setNetworkState(WebMediaPlayer::NetworkState state) {
...@@ -1658,8 +1657,6 @@ void HTMLMediaElement::setReadyState(ReadyState state) { ...@@ -1658,8 +1657,6 @@ void HTMLMediaElement::setReadyState(ReadyState state) {
jumped = true; jumped = true;
} }
if (mediaControls())
mediaControls()->reset();
if (layoutObject()) if (layoutObject())
layoutObject()->updateFromElement(); layoutObject()->updateFromElement();
} }
...@@ -3852,11 +3849,12 @@ bool HTMLMediaElement::isAutoplayAllowedPerSettings() const { ...@@ -3852,11 +3849,12 @@ bool HTMLMediaElement::isAutoplayAllowedPerSettings() const {
} }
void HTMLMediaElement::setNetworkState(NetworkState state) { void HTMLMediaElement::setNetworkState(NetworkState state) {
if (m_networkState != state) { if (m_networkState == state)
m_networkState = state; return;
if (MediaControls* controls = mediaControls())
controls->networkStateChanged(); m_networkState = state;
} if (mediaControls())
mediaControls()->networkStateChanged();
} }
void HTMLMediaElement::videoWillBeDrawnToCanvas() const { void HTMLMediaElement::videoWillBeDrawnToCanvas() const {
......
...@@ -748,6 +748,18 @@ void MediaControls::onTextTracksChanged() { ...@@ -748,6 +748,18 @@ void MediaControls::onTextTracksChanged() {
m_toggleClosedCaptionsButton->updateDisplayType(); m_toggleClosedCaptionsButton->updateDisplayType();
} }
void MediaControls::onError() {
// TODO(mlamouri): we should only change the aspects of the control that need
// to be changed.
reset();
}
void MediaControls::onLoadedMetadata() {
// TODO(mlamouri): we should only change the aspects of the control that need
// to be changed.
reset();
}
void MediaControls::notifyPanelWidthChanged(const LayoutUnit& newWidth) { void MediaControls::notifyPanelWidthChanged(const LayoutUnit& newWidth) {
// Don't bother to do any work if this matches the most recent panel // Don't bother to do any work if this matches the most recent panel
// width, since we're called after layout. // width, since we're called after layout.
......
...@@ -160,6 +160,8 @@ class CORE_EXPORT MediaControls final : public HTMLDivElement { ...@@ -160,6 +160,8 @@ class CORE_EXPORT MediaControls final : public HTMLDivElement {
void onPause(); void onPause();
void onTextTracksAddedOrRemoved(); void onTextTracksAddedOrRemoved();
void onTextTracksChanged(); void onTextTracksChanged();
void onError();
void onLoadedMetadata();
Member<HTMLMediaElement> m_mediaElement; Member<HTMLMediaElement> m_mediaElement;
......
...@@ -26,6 +26,10 @@ MediaControlsMediaEventListener::MediaControlsMediaEventListener( ...@@ -26,6 +26,10 @@ MediaControlsMediaEventListener::MediaControlsMediaEventListener(
false); false);
m_mediaControls->m_mediaElement->addEventListener( m_mediaControls->m_mediaElement->addEventListener(
EventTypeNames::durationchange, this, false); EventTypeNames::durationchange, this, false);
m_mediaControls->m_mediaElement->addEventListener(EventTypeNames::error, this,
false);
m_mediaControls->m_mediaElement->addEventListener(
EventTypeNames::loadedmetadata, this, false);
// TextTracks events. // TextTracks events.
TextTrackList* textTracks = m_mediaControls->m_mediaElement->textTracks(); TextTrackList* textTracks = m_mediaControls->m_mediaElement->textTracks();
...@@ -66,6 +70,14 @@ void MediaControlsMediaEventListener::handleEvent( ...@@ -66,6 +70,14 @@ void MediaControlsMediaEventListener::handleEvent(
m_mediaControls->onPause(); m_mediaControls->onPause();
return; return;
} }
if (event->type() == EventTypeNames::error) {
m_mediaControls->onError();
return;
}
if (event->type() == EventTypeNames::loadedmetadata) {
m_mediaControls->onLoadedMetadata();
return;
}
// TextTracks events. // TextTracks events.
if (event->type() == EventTypeNames::addtrack || if (event->type() == EventTypeNames::addtrack ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment