Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
| diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
| index a3a195c2fcc3b2a7ca372c8415f8bea99985f949..936ac29fdac9cf01dc37bd877ae75a56d88e5cb6 100644 |
| --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
| +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
| @@ -262,7 +262,7 @@ bool canLoadURL(const KURL& url, const ContentType& contentType) { |
| if (contentMIMEType.isEmpty()) |
| return true; |
| - // 4.8.10.3 MIME types - In the absence of a specification to the contrary, |
| + // 4.8.12.3 MIME types - In the absence of a specification to the contrary, |
| // the MIME type "application/octet-stream" when used with parameters, e.g. |
| // "application/octet-stream;codecs=theora", is a type that the user agent |
| // knows it cannot render. |
| @@ -337,7 +337,7 @@ MIMETypeRegistry::SupportsType HTMLMediaElement::supportsType( |
| if (type.isEmpty()) |
| return MIMETypeRegistry::IsNotSupported; |
| - // 4.8.10.3 MIME types - The canPlayType(type) method must return the empty |
| + // 4.8.12.3 MIME types - The canPlayType(type) method must return the empty |
| // string if type is a type that the user agent knows it cannot render or is |
| // the type "application/octet-stream" |
| if (type == "application/octet-stream") |
| @@ -389,27 +389,27 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, |
| Document& document) |
| : HTMLElement(tagName, document), |
| SuspendableObject(&document), |
| - m_loadTimer(TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + m_loadTimer(TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::loadTimerFired), |
| m_progressEventTimer( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::progressEventTimerFired), |
| m_playbackProgressTimer( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::playbackProgressTimerFired), |
| m_audioTracksTimer( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::audioTracksTimerFired), |
| m_viewportFillDebouncerTimer( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::viewportFillDebouncerTimerFired), |
| m_checkViewportIntersectionTimer( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document), |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| this, |
| &HTMLMediaElement::checkViewportIntersectionTimerFired), |
| m_playedTimeRanges(), |
| @@ -428,7 +428,10 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, |
| m_defaultPlaybackStartPosition(0), |
| m_loadState(WaitingForSource), |
| m_deferredLoadState(NotDeferred), |
| - m_deferredLoadTimer(this, &HTMLMediaElement::deferredLoadTimerFired), |
| + m_deferredLoadTimer( |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
| + this, |
| + &HTMLMediaElement::deferredLoadTimerFired), |
| m_webLayer(nullptr), |
| m_displayMode(Unknown), |
| m_officialPlaybackPosition(0), |
| @@ -506,17 +509,19 @@ void HTMLMediaElement::didMoveToNewDocument(Document& oldDocument) { |
| BLINK_MEDIA_LOG << "didMoveToNewDocument(" << (void*)this << ")"; |
| m_loadTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| m_progressEventTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| m_playbackProgressTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| m_audioTracksTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| m_viewportFillDebouncerTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| m_checkViewportIntersectionTimer.moveToNewTaskRunner( |
| - TaskRunnerHelper::get(TaskType::Unthrottled, &document())); |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
| + m_deferredLoadTimer.moveToNewTaskRunner( |
| + TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
|
mlamouri (slow - plz ping)
2017/02/22 12:10:03
This is a change in behaviour, right?
|
| m_autoplayUmaHelper->didMoveToNewDocument(oldDocument); |
| // If any experiment is enabled, then we want to enable a user gesture by |
| @@ -739,7 +744,7 @@ String HTMLMediaElement::canPlayType(const String& mimeType) const { |
| MIMETypeRegistry::SupportsType support = supportsType(ContentType(mimeType)); |
| String canPlay; |
| - // 4.8.10.3 |
| + // 4.8.12.3 |
| switch (support) { |
| case MIMETypeRegistry::IsNotSupported: |
| canPlay = emptyString; |
| @@ -1227,7 +1232,8 @@ bool HTMLMediaElement::loadIsDeferred() const { |
| } |
| void HTMLMediaElement::deferLoad() { |
| - // This implements the "optional" step 3 from the resource fetch algorithm. |
| + // This implements the "optional" step 4 from the resource fetch algorithm |
| + // "If mode is remote". |
| DCHECK(!m_deferredLoadTimer.isActive()); |
| DCHECK_EQ(m_deferredLoadState, NotDeferred); |
| // 1. Set the networkState to NETWORK_IDLE. |
| @@ -1249,7 +1255,7 @@ void HTMLMediaElement::cancelDeferredLoad() { |
| void HTMLMediaElement::executeDeferredLoad() { |
| DCHECK_GE(m_deferredLoadState, WaitingForTrigger); |
| - // resource fetch algorithm step 3 - continued from deferLoad(). |
| + // resource fetch algorithm step 4 - continued from deferLoad(). |
| // 5. Wait for an implementation-defined event (e.g. the user requesting that |
| // the media element begin playback). This is assumed to be whatever 'event' |
| @@ -1300,7 +1306,7 @@ WebMediaPlayer::LoadType HTMLMediaElement::loadType() const { |
| } |
| bool HTMLMediaElement::textTracksAreReady() const { |
| - // 4.8.10.12.1 Text track model |
| + // 4.8.12.11.1 Text track model |
| // ... |
| // The text tracks of a media element are ready if all the text tracks whose |
| // mode was not in the disabled state when the element's resource selection |
| @@ -1434,7 +1440,7 @@ void HTMLMediaElement::noneSupported() { |
| m_loadState = WaitingForSource; |
| m_currentSourceNode = nullptr; |
| - // 4.8.13.5 |
| + // 4.8.12.5 |
| // The dedicated media source failure steps are the following steps: |
| // 1 - Set the error attribute to a new MediaError object whose code attribute |
| @@ -1651,14 +1657,14 @@ void HTMLMediaElement::setReadyState(ReadyState state) { |
| return; |
| if (m_seeking) { |
| - // 4.8.10.9, step 9 note: If the media element was potentially playing |
| + // 4.8.12.9, step 9 note: If the media element was potentially playing |
| // immediately before it started seeking, but seeking caused its readyState |
| // attribute to change to a value lower than kHaveFutureData, then a waiting |
| // will be fired at the element. |
| if (wasPotentiallyPlaying && m_readyState < kHaveFutureData) |
| scheduleEvent(EventTypeNames::waiting); |
| - // 4.8.10.9 steps 12-14 |
| + // 4.8.12.9 steps 12-14 |
| if (m_readyState >= kHaveCurrentData) |
| finishSeek(); |
| } else { |
| @@ -1670,7 +1676,7 @@ void HTMLMediaElement::setReadyState(ReadyState state) { |
| // media time at the moment we ran out of data to play. |
| setOfficialPlaybackPosition(currentPlaybackPosition()); |
| - // 4.8.10.8 |
| + // 4.8.12.8 |
| scheduleTimeupdateEvent(false); |
| scheduleEvent(EventTypeNames::waiting); |
| } |
| @@ -2113,7 +2119,7 @@ void HTMLMediaElement::updatePlaybackRate() { |
| } |
| bool HTMLMediaElement::ended() const { |
| - // 4.8.10.8 Playing the media resource |
| + // 4.8.12.8 Playing the media resource |
| // The ended attribute must return true if the media element has ended |
| // playback and the direction of playback is forwards, and false otherwise. |
| return endedPlayback() && getDirectionOfPlayback() == Forward; |
| @@ -2295,7 +2301,7 @@ void HTMLMediaElement::playInternal() { |
| webMediaPlayer()->setBufferingStrategy( |
| WebMediaPlayer::BufferingStrategy::Normal); |
| - // 4.8.10.9. Playing the media resource |
| + // 4.8.12.8. Playing the media resource |
| if (m_networkState == kNetworkEmpty) |
| invokeResourceSelectionAlgorithm(); |
| @@ -2681,7 +2687,7 @@ void HTMLMediaElement::removeVideoTrack(WebMediaPlayer::TrackId trackId) { |
| } |
| void HTMLMediaElement::addTextTrack(WebInbandTextTrack* webTrack) { |
| - // 4.8.10.12.2 Sourcing in-band text tracks |
| + // 4.8.12.11.2 Sourcing in-band text tracks |
| // 1. Associate the relevant data with a new text track and its corresponding |
| // new TextTrack object. |
| InbandTextTrack* textTrack = InbandTextTrack::create(webTrack); |
| @@ -2792,7 +2798,7 @@ TextTrackList* HTMLMediaElement::textTracks() { |
| } |
| void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement) { |
| - // 4.8.10.12.3 Sourcing out-of-band text tracks |
| + // 4.8.12.11.3 Sourcing out-of-band text tracks |
| // When a track element's parent element changes and the new parent is a media |
| // element, then the user agent must add the track element's corresponding |
| // text track to the media element's list of text tracks ... [continues in |
| @@ -2823,7 +2829,7 @@ void HTMLMediaElement::didRemoveTrackElement(HTMLTrackElement* trackElement) { |
| if (!m_textTracks) |
| return; |
| - // 4.8.10.12.3 Sourcing out-of-band text tracks |
| + // 4.8.12.11.3 Sourcing out-of-band text tracks |
| // When a track element's parent element changes and the old parent was a |
| // media element, then the user agent must remove the track element's |
| // corresponding text track from the media element's list of text tracks. |
| @@ -3060,7 +3066,7 @@ void HTMLMediaElement::timeChanged() { |
| cueTimeline().updateActiveCues(currentTime()); |
| - // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with the |
| + // 4.8.12.9 steps 12-14. Needed if no ReadyState change is associated with the |
| // seek. |
| if (m_seeking && m_readyState >= kHaveCurrentData && |
| !webMediaPlayer()->seeking()) |
| @@ -3311,7 +3317,7 @@ bool HTMLMediaElement::endedPlayback(LoopCondition loopCondition) const { |
| if (std::isnan(dur)) |
| return false; |
| - // 4.8.10.8 Playing the media resource |
| + // 4.8.12.8 Playing the media resource |
| // A media element is said to have ended playback when the element's |
| // readyState attribute is HAVE_METADATA or greater, |