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) {
}
if (error == WebMediaPlayer::NetworkStateNetworkError &&
m_readyState >= kHaveMetadata)
m_readyState >= kHaveMetadata) {
mediaEngineError(MediaError::create(MediaError::kMediaErrNetwork));
else if (error == WebMediaPlayer::NetworkStateDecodeError)
} else if (error == WebMediaPlayer::NetworkStateDecodeError) {
mediaEngineError(MediaError::create(MediaError::kMediaErrDecode));
else if ((error == WebMediaPlayer::NetworkStateFormatError ||
error == WebMediaPlayer::NetworkStateNetworkError) &&
m_loadState == LoadingFromSrcAttr)
} else if ((error == WebMediaPlayer::NetworkStateFormatError ||
error == WebMediaPlayer::NetworkStateNetworkError) &&
m_loadState == LoadingFromSrcAttr) {
noneSupported();
}
updateDisplayState();
if (mediaControls())
mediaControls()->reset();
}
void HTMLMediaElement::setNetworkState(WebMediaPlayer::NetworkState state) {
......@@ -1658,8 +1657,6 @@ void HTMLMediaElement::setReadyState(ReadyState state) {
jumped = true;
}
if (mediaControls())
mediaControls()->reset();
if (layoutObject())
layoutObject()->updateFromElement();
}
......@@ -3852,11 +3849,12 @@ bool HTMLMediaElement::isAutoplayAllowedPerSettings() const {
}
void HTMLMediaElement::setNetworkState(NetworkState state) {
if (m_networkState != state) {
m_networkState = state;
if (MediaControls* controls = mediaControls())
controls->networkStateChanged();
}
if (m_networkState == state)
return;
m_networkState = state;
if (mediaControls())
mediaControls()->networkStateChanged();
}
void HTMLMediaElement::videoWillBeDrawnToCanvas() const {
......
......@@ -748,6 +748,18 @@ void MediaControls::onTextTracksChanged() {
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) {
// Don't bother to do any work if this matches the most recent panel
// width, since we're called after layout.
......
......@@ -160,6 +160,8 @@ class CORE_EXPORT MediaControls final : public HTMLDivElement {
void onPause();
void onTextTracksAddedOrRemoved();
void onTextTracksChanged();
void onError();
void onLoadedMetadata();
Member<HTMLMediaElement> m_mediaElement;
......
......@@ -26,6 +26,10 @@ MediaControlsMediaEventListener::MediaControlsMediaEventListener(
false);
m_mediaControls->m_mediaElement->addEventListener(
EventTypeNames::durationchange, this, false);
m_mediaControls->m_mediaElement->addEventListener(EventTypeNames::error, this,
false);
m_mediaControls->m_mediaElement->addEventListener(
EventTypeNames::loadedmetadata, this, false);
// TextTracks events.
TextTrackList* textTracks = m_mediaControls->m_mediaElement->textTracks();
......@@ -66,6 +70,14 @@ void MediaControlsMediaEventListener::handleEvent(
m_mediaControls->onPause();
return;
}
if (event->type() == EventTypeNames::error) {
m_mediaControls->onError();
return;
}
if (event->type() == EventTypeNames::loadedmetadata) {
m_mediaControls->onLoadedMetadata();
return;
}
// TextTracks events.
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