| Index: Source/core/layout/LayoutVTTCue.cpp
|
| diff --git a/Source/core/layout/LayoutVTTCue.cpp b/Source/core/layout/LayoutVTTCue.cpp
|
| index 15cb2f3ccda33cf3b6816539543c835200df6c4f..b751d6c60e2e63c21485a94027a98ec49a9e3652 100644
|
| --- a/Source/core/layout/LayoutVTTCue.cpp
|
| +++ b/Source/core/layout/LayoutVTTCue.cpp
|
| @@ -27,25 +27,23 @@
|
| #include "core/layout/LayoutVTTCue.h"
|
|
|
| #include "core/html/shadow/MediaControls.h"
|
| -#include "core/html/track/vtt/VTTCue.h"
|
| #include "core/layout/LayoutInline.h"
|
| #include "core/layout/LayoutState.h"
|
|
|
| namespace blink {
|
|
|
| -LayoutVTTCue::LayoutVTTCue(VTTCueBox* element)
|
| - : LayoutBlockFlow(element)
|
| - , m_cue(element->getCue())
|
| +LayoutVTTCue::LayoutVTTCue(ContainerNode* node, float snapToLinesPosition)
|
| + : LayoutBlockFlow(node)
|
| + , m_snapToLinesPosition(snapToLinesPosition)
|
| {
|
| }
|
|
|
| class SnapToLinesLayouter {
|
| STACK_ALLOCATED();
|
| public:
|
| - SnapToLinesLayouter(LayoutVTTCue& cueBox, const IntRect& controlsRect, float linePosition)
|
| + SnapToLinesLayouter(LayoutVTTCue& cueBox, const IntRect& controlsRect)
|
| : m_cueBox(cueBox)
|
| , m_controlsRect(controlsRect)
|
| - , m_linePosition(linePosition)
|
| {
|
| }
|
|
|
| @@ -67,7 +65,6 @@ private:
|
| LayoutPoint m_specifiedPosition;
|
| LayoutVTTCue& m_cueBox;
|
| IntRect m_controlsRect;
|
| - float m_linePosition;
|
| };
|
|
|
| InlineFlowBox* SnapToLinesLayouter::findFirstLineBox() const
|
| @@ -79,9 +76,11 @@ InlineFlowBox* SnapToLinesLayouter::findFirstLineBox() const
|
|
|
| LayoutUnit SnapToLinesLayouter::computeInitialPositionAdjustment(LayoutUnit& step) const
|
| {
|
| + ASSERT(std::isfinite(m_cueBox.snapToLinesPosition()));
|
| +
|
| // 6. Let line position be the text track cue computed line position.
|
| // 7. Round line position to an integer by adding 0.5 and then flooring it.
|
| - LayoutUnit linePosition = floorf(m_linePosition + 0.5f);
|
| + LayoutUnit linePosition = floorf(m_cueBox.snapToLinesPosition() + 0.5f);
|
|
|
| WritingMode writingMode = m_cueBox.style()->writingMode();
|
| // 8. Vertical Growing Left: Add one to line position then negate it.
|
| @@ -313,13 +312,6 @@ void LayoutVTTCue::layout()
|
| {
|
| LayoutBlockFlow::layout();
|
|
|
| - // If WebVTT Regions are used, the regular WebVTT layout algorithm is no
|
| - // longer necessary, since cues having the region parameter set do not have
|
| - // any positioning parameters. Also, in this case, the regions themselves
|
| - // have positioning information.
|
| - if (!m_cue->regionId().isEmpty())
|
| - return;
|
| -
|
| ASSERT(firstChild());
|
|
|
| LayoutState state(*this, locationOffset());
|
| @@ -338,8 +330,8 @@ void LayoutVTTCue::layout()
|
| }
|
|
|
| // http://dev.w3.org/html5/webvtt/#dfn-apply-webvtt-cue-settings - step 13.
|
| - if (m_cue->snapToLines()) {
|
| - SnapToLinesLayouter(*this, controlsRect, m_cue->calculateComputedLinePosition()).layout();
|
| + if (!std::isnan(m_snapToLinesPosition)) {
|
| + SnapToLinesLayouter(*this, controlsRect).layout();
|
|
|
| adjustForTopAndBottomMarginBorderAndPadding();
|
| } else {
|
|
|