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

Unified Diff: third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp

Issue 2684633005: Move VTTRegion Timers to TaskRunnerTimer (Closed)
Patch Set: Created 3 years, 10 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
Index: third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp
diff --git a/third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp b/third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp
index 772bca0fb86139c7c732c00ee58e64cb1ec37fb3..9c98a9a6eed42913758e9fc6a85195df88bea626 100644
--- a/third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp
+++ b/third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp
@@ -36,6 +36,7 @@
#include "core/dom/DOMTokenList.h"
#include "core/dom/ElementTraversal.h"
#include "core/dom/ExceptionCode.h"
+#include "core/dom/TaskRunnerHelper.h"
#include "core/html/HTMLDivElement.h"
#include "core/html/track/vtt/VTTParser.h"
#include "core/html/track/vtt/VTTScanner.h"
@@ -91,8 +92,7 @@ VTTRegion::VTTRegion()
m_viewportAnchor(FloatPoint(defaultAnchorPointX, defaultAnchorPointY)),
m_scroll(defaultScroll),
m_track(nullptr),
- m_currentTop(0),
- m_scrollTimer(this, &VTTRegion::scrollTimerFired) {}
+ m_currentTop(0) {}
VTTRegion::~VTTRegion() {}
@@ -319,6 +319,7 @@ HTMLDivElement* VTTRegion::getDisplayTree(Document& document) {
if (!m_regionDisplayTree) {
m_regionDisplayTree = HTMLDivElement::create(document);
prepareRegionDisplayTree();
+ prepareScrollTimer(document);
}
return m_regionDisplayTree;
@@ -357,7 +358,7 @@ void VTTRegion::displayLastVTTCueBox() {
// css property to move elements. We should just scroll the text track cues on
// the compositor with an animation.
- if (m_scrollTimer.isActive())
+ if (!m_scrollTimer || m_scrollTimer->isActive())
return;
// If it's a scrolling region, add the scrolling class.
@@ -369,7 +370,7 @@ void VTTRegion::displayLastVTTCueBox() {
// Find first cue that is not entirely displayed and scroll it upwards.
for (Element* child = ElementTraversal::firstChild(*m_cueContainer);
- child && !m_scrollTimer.isActive();
+ child && !m_scrollTimer->isActive();
child = ElementTraversal::nextSibling(*child)) {
ClientRect* clientRect = child->getBoundingClientRect();
float childTop = clientRect->top();
@@ -439,19 +440,27 @@ void VTTRegion::prepareRegionDisplayTree() {
m_regionDisplayTree->setShadowPseudoId(textTrackRegionShadowPseudoId());
}
+void VTTRegion::prepareScrollTimer(Document& document) {
fs 2017/02/08 11:57:54 Maybe just fold this into startTimer(), and possib
+ DCHECK(!m_scrollTimer);
+ m_scrollTimer = WTF::makeUnique<TaskRunnerTimer<VTTRegion>>(
+ TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), this,
haraken 2017/02/08 11:49:40 foolip@ should know better but I guess this is not
fs 2017/02/08 11:57:54 AFAIK, this timer is an implementation detail, so
foolip 2017/02/08 13:46:38 Yep, I think so too. If that means that the &docum
+ &VTTRegion::scrollTimerFired);
+}
+
void VTTRegion::startTimer() {
+ DCHECK(m_scrollTimer);
DVLOG(VTT_LOG_LEVEL) << "startTimer";
- if (m_scrollTimer.isActive())
+ if (m_scrollTimer->isActive())
return;
double duration = isScrollingRegion() ? scrollTime : 0;
- m_scrollTimer.startOneShot(duration, BLINK_FROM_HERE);
+ m_scrollTimer->startOneShot(duration, BLINK_FROM_HERE);
}
void VTTRegion::stopTimer() {
DVLOG(VTT_LOG_LEVEL) << "stopTimer";
- m_scrollTimer.stop();
+ m_scrollTimer->stop();
}
void VTTRegion::scrollTimerFired(TimerBase*) {

Powered by Google App Engine
This is Rietveld 408576698