Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Unified Diff: sky/engine/core/html/HTMLMediaElement.cpp

Issue 677573002: Remove MediaController. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/core/html/HTMLMediaElement.h ('k') | sky/engine/core/html/HTMLMediaElement.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/html/HTMLMediaElement.cpp
diff --git a/sky/engine/core/html/HTMLMediaElement.cpp b/sky/engine/core/html/HTMLMediaElement.cpp
index 71cf4130d7030902fd6042f7399f97bf8aa988ee..73cc6a201d9ce9f3d535185fa48e776396a267d3 100644
--- a/sky/engine/core/html/HTMLMediaElement.cpp
+++ b/sky/engine/core/html/HTMLMediaElement.cpp
@@ -41,7 +41,6 @@
#include "core/frame/UseCounter.h"
#include "core/html/HTMLMediaSource.h"
#include "core/html/HTMLSourceElement.h"
-#include "core/html/MediaController.h"
#include "core/html/MediaError.h"
#include "core/html/MediaFragmentURIParser.h"
#include "core/html/TimeRanges.h"
@@ -262,11 +261,6 @@ HTMLMediaElement::~HTMLMediaElement()
m_asyncEventQueue->close();
setShouldDelayLoadEvent(false);
-
- if (m_mediaController) {
- m_mediaController->removeMediaElement(this);
- m_mediaController = nullptr;
- }
#endif
#if ENABLE(OILPAN)
@@ -1217,7 +1211,6 @@ void HTMLMediaElement::setReadyState(ReadyState state)
updateDisplayState();
updatePlayState();
- updateMediaController();
}
void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
@@ -1431,10 +1424,6 @@ double HTMLMediaElement::currentTime() const
void HTMLMediaElement::setCurrentTime(double time, ExceptionState& exceptionState)
{
- if (m_mediaController) {
- exceptionState.throwDOMException(InvalidStateError, "The element is slaved to a MediaController.");
- return;
- }
seek(time, exceptionState);
}
@@ -1501,7 +1490,7 @@ void HTMLMediaElement::setPlaybackRate(double rate)
double HTMLMediaElement::effectivePlaybackRate() const
{
- return m_mediaController ? m_mediaController->playbackRate() : m_playbackRate;
+ return m_playbackRate;
}
HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() const
@@ -1576,9 +1565,6 @@ void HTMLMediaElement::playInternal()
if (endedPlayback())
seek(0, IGNORE_EXCEPTION);
- if (m_mediaController)
- m_mediaController->bringElementUpToSpeed(this);
-
if (m_paused) {
m_paused = false;
invalidateCachedTime();
@@ -1592,7 +1578,6 @@ void HTMLMediaElement::playInternal()
m_autoplaying = false;
updatePlayState();
- updateMediaController();
}
void HTMLMediaElement::pause()
@@ -1685,15 +1670,7 @@ double HTMLMediaElement::effectiveMediaVolume() const
if (m_muted)
return 0;
- if (m_mediaController && m_mediaController->muted())
- return 0;
-
- double volume = m_volume;
-
- if (m_mediaController)
- volume *= m_mediaController->volume();
-
- return volume;
+ return m_volume;
}
// The spec says to fire periodic timeupdate events (those sent while playing) every
@@ -1715,7 +1692,7 @@ void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*)
if (m_fragmentEndTime != MediaPlayer::invalidTime() && currentTime() >= m_fragmentEndTime && directionOfPlayback() == Forward) {
m_fragmentEndTime = MediaPlayer::invalidTime();
- if (!m_mediaController && !m_paused) {
+ if (!m_paused) {
UseCounter::count(document(), UseCounter::HTMLMediaElementPauseAtFragmentEnd);
// changes paused to true and fires a simple event named pause at the media element.
pause();
@@ -1747,26 +1724,15 @@ void HTMLMediaElement::scheduleTimeupdateEvent(bool periodicEvent)
bool HTMLMediaElement::togglePlayStateWillPlay() const
{
- if (m_mediaController)
- return m_mediaController->paused() || m_mediaController->isRestrained();
return paused();
}
void HTMLMediaElement::togglePlayState()
{
- if (m_mediaController) {
- if (m_mediaController->isRestrained())
- m_mediaController->play();
- else if (m_mediaController->paused())
- m_mediaController->unpause();
- else
- m_mediaController->pause();
- } else {
- if (paused())
- play();
- else
- pause();
- }
+ if (paused())
+ play();
+ else
+ pause();
}
bool HTMLMediaElement::havePotentialSourceChild()
@@ -1974,7 +1940,7 @@ void HTMLMediaElement::mediaPlayerTimeChanged()
// playback is forwards, then the user agent must follow these steps:
if (!std::isnan(dur) && dur && now >= dur && directionOfPlayback() == Forward) {
// If the media element has a loop attribute specified and does not have a current media controller,
- if (loop() && !m_mediaController) {
+ if (loop()) {
m_sentEndEvent = false;
// then seek to the earliest possible position of the media resource and abort these steps.
seek(0, IGNORE_EXCEPTION);
@@ -1982,7 +1948,7 @@ void HTMLMediaElement::mediaPlayerTimeChanged()
// If the media element does not have a current media controller, and the media element
// has still ended playback, and the direction of playback is still forwards, and paused
// is false,
- if (!m_mediaController && !m_paused) {
+ if (!m_paused) {
// changes paused to true and fires a simple event named pause at the media element.
m_paused = true;
scheduleEvent(EventTypeNames::pause);
@@ -1992,9 +1958,6 @@ void HTMLMediaElement::mediaPlayerTimeChanged()
m_sentEndEvent = true;
scheduleEvent(EventTypeNames::ended);
}
- // If the media element has a current media controller, then report the controller state
- // for the media element's current media controller.
- updateMediaController();
}
}
else
@@ -2052,11 +2015,6 @@ void HTMLMediaElement::mediaPlayerRequestFullscreen()
void HTMLMediaElement::mediaPlayerRequestSeek(double time)
{
- // The player is the source of this seek request.
- if (m_mediaController) {
- m_mediaController->setCurrentTime(time, IGNORE_EXCEPTION);
- return;
- }
setCurrentTime(time, IGNORE_EXCEPTION);
}
@@ -2124,7 +2082,7 @@ bool HTMLMediaElement::potentiallyPlaying() const
// when it ran out of buffered data. A movie is this state is "potentially playing", modulo the
// checks in couldPlayIfEnoughData().
bool pausedToBuffer = m_readyStateMaximum >= HAVE_FUTURE_DATA && m_readyState < HAVE_FUTURE_DATA;
- return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEnoughData() && !isBlockedOnMediaController();
+ return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEnoughData();
}
bool HTMLMediaElement::couldPlayIfEnoughData() const
@@ -2150,7 +2108,7 @@ bool HTMLMediaElement::endedPlayback() const
// or the media element has a current media controller.
double now = currentTime();
if (directionOfPlayback() == Forward)
- return dur > 0 && now >= dur && (!loop() || m_mediaController);
+ return dur > 0 && now >= dur && !loop();
// or the current playback position is the earliest possible position and the direction
// of playback is backwards
@@ -2218,8 +2176,6 @@ void HTMLMediaElement::updatePlayState()
prepareToPlay();
}
- updateMediaController();
-
if (renderer())
renderer()->updateFromElement();
}
@@ -2276,7 +2232,6 @@ void HTMLMediaElement::userCancelledLoad()
// Reset m_readyState since m_player is gone.
m_readyState = HAVE_NOTHING;
invalidateCachedTime();
- updateMediaController();
}
void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClientWithoutLocking()
@@ -2325,12 +2280,6 @@ bool HTMLMediaElement::hasPendingActivity() const
void HTMLMediaElement::contextDestroyed()
{
- // With Oilpan the ExecutionContext is weakly referenced from the media
- // controller and so it will clear itself on destruction.
-#if !ENABLE(OILPAN)
- if (m_mediaController)
- m_mediaController->clearExecutionContext();
-#endif
ActiveDOMObject::contextDestroyed();
}
@@ -2388,69 +2337,6 @@ const AtomicString& HTMLMediaElement::mediaGroup() const
return getAttribute(HTMLNames::mediagroupAttr);
}
-void HTMLMediaElement::setMediaGroup(const AtomicString& group)
-{
- // When a media element is created with a mediagroup attribute, and when a media element's mediagroup
- // attribute is set, changed, or removed, the user agent must run the following steps:
- // 1. Let m [this] be the media element in question.
- // 2. Let m have no current media controller, if it currently has one.
- setControllerInternal(nullptr);
-
- // 3. If m's mediagroup attribute is being removed, then abort these steps.
- if (group.isNull() || group.isEmpty())
- return;
-
- // 4. If there is another media element whose Document is the same as m's Document (even if one or both
- // of these elements are not actually in the Document),
- WeakMediaElementSet elements = documentToElementSetMap().get(&document());
- for (WeakMediaElementSet::iterator i = elements.begin(); i != elements.end(); ++i) {
- if (*i == this)
- continue;
-
- // and which also has a mediagroup attribute, and whose mediagroup attribute has the same value as
- // the new value of m's mediagroup attribute,
- if ((*i)->mediaGroup() == group) {
- // then let controller be that media element's current media controller.
- setControllerInternal((*i)->controller());
- return;
- }
- }
-
- // Otherwise, let controller be a newly created MediaController.
- setControllerInternal(MediaController::create(Node::executionContext()));
-}
-
-MediaController* HTMLMediaElement::controller() const
-{
- return m_mediaController.get();
-}
-
-void HTMLMediaElement::setController(PassRefPtrWillBeRawPtr<MediaController> controller)
-{
- // 4.8.10.11.2 Media controllers: controller attribute.
- // On setting, it must first remove the element's mediagroup attribute, if any,
- removeAttribute(HTMLNames::mediagroupAttr);
- // and then set the current media controller to the given value.
- setControllerInternal(controller);
-}
-
-void HTMLMediaElement::setControllerInternal(PassRefPtrWillBeRawPtr<MediaController> controller)
-{
- if (m_mediaController)
- m_mediaController->removeMediaElement(this);
-
- m_mediaController = controller;
-
- if (m_mediaController)
- m_mediaController->addMediaElement(this);
-}
-
-void HTMLMediaElement::updateMediaController()
-{
- if (m_mediaController)
- m_mediaController->reportControllerState();
-}
-
bool HTMLMediaElement::isBlocked() const
{
// A media element is a blocked media element if its readyState attribute is in the
@@ -2462,26 +2348,6 @@ bool HTMLMediaElement::isBlocked() const
return false;
}
-bool HTMLMediaElement::isBlockedOnMediaController() const
-{
- if (!m_mediaController)
- return false;
-
- // A media element is blocked on its media controller if the MediaController is a blocked
- // media controller,
- if (m_mediaController->isBlocked())
- return true;
-
- // or if its media controller position is either before the media resource's earliest possible
- // position relative to the MediaController's timeline or after the end of the media resource
- // relative to the MediaController's timeline.
- double mediaControllerPosition = m_mediaController->currentTime();
- if (mediaControllerPosition < 0 || mediaControllerPosition > duration())
- return true;
-
- return false;
-}
-
void HTMLMediaElement::prepareMediaFragmentURI()
{
MediaFragmentURIParser fragmentParser(m_currentSrc);
@@ -2566,7 +2432,6 @@ void HTMLMediaElement::trace(Visitor* visitor)
visitor->trace(m_currentSourceNode);
visitor->trace(m_nextChildNodeToConsider);
visitor->trace(m_mediaSource);
- visitor->trace(m_mediaController);
WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor);
HTMLElement::trace(visitor);
}
« no previous file with comments | « sky/engine/core/html/HTMLMediaElement.h ('k') | sky/engine/core/html/HTMLMediaElement.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698