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

Unified Diff: Source/core/html/track/vtt/VTTCue.cpp

Issue 857823003: VTTCue: Make position/line/size double attributes (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Nits. Created 5 years, 11 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 | « Source/core/html/track/vtt/VTTCue.h ('k') | Source/core/html/track/vtt/VTTCue.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/track/vtt/VTTCue.cpp
diff --git a/Source/core/html/track/vtt/VTTCue.cpp b/Source/core/html/track/vtt/VTTCue.cpp
index 5a81928c7318dd978be9b711a429c8765cd9a721..18669e89c4b07050b9b5e0978d6457984a3aec94 100644
--- a/Source/core/html/track/vtt/VTTCue.cpp
+++ b/Source/core/html/track/vtt/VTTCue.cpp
@@ -46,6 +46,7 @@
#include "core/html/track/vtt/VTTRegionList.h"
#include "core/html/track/vtt/VTTScanner.h"
#include "core/rendering/RenderVTTCue.h"
+#include "platform/FloatConversion.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/text/BidiResolver.h"
#include "platform/text/TextRunIterator.h"
@@ -54,8 +55,8 @@
namespace blink {
-static const int undefinedPosition = -1;
-static const int undefinedSize = -1;
+static const float undefinedPosition = -1;
+static const float undefinedSize = -1;
static const CSSValueID displayWritingModeMap[] = {
CSSValueHorizontalTb, CSSValueVerticalRl, CSSValueVerticalLr
@@ -116,10 +117,11 @@ static const String& verticalGrowingRightKeyword()
return verticallr;
}
-static bool isInvalidPercentage(int value, ExceptionState& exceptionState)
+static bool isInvalidPercentage(double value, ExceptionState& exceptionState)
{
+ ASSERT(std::isfinite(value));
if (value < 0 || value > 100) {
- exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::indexOutsideRange("value", value, 0, ExceptionMessages::InclusiveBound, 100, ExceptionMessages::InclusiveBound));
+ exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::indexOutsideRange<double>("value", value, 0, ExceptionMessages::InclusiveBound, 100, ExceptionMessages::InclusiveBound));
return true;
}
return false;
@@ -304,7 +306,7 @@ void VTTCue::setSnapToLines(bool value)
cueDidChange();
}
-void VTTCue::setLine(int position, ExceptionState& exceptionState)
+void VTTCue::setLine(double position, ExceptionState& exceptionState)
{
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-line
// On setting, if the text track cue snap-to-lines flag is not set, and the new
@@ -315,16 +317,17 @@ void VTTCue::setLine(int position, ExceptionState& exceptionState)
}
// Otherwise, set the text track cue line position to the new value.
- if (m_linePosition == position)
+ float floatPosition = narrowPrecisionToFloat(position);
+ if (m_linePosition == floatPosition)
return;
cueWillChange();
- m_linePosition = position;
+ m_linePosition = floatPosition;
m_computedLinePosition = calculateComputedLinePosition();
cueDidChange();
}
-void VTTCue::setPosition(int position, ExceptionState& exceptionState)
+void VTTCue::setPosition(double position, ExceptionState& exceptionState)
{
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-position
// On setting, if the new value is negative or greater than 100, then throw an IndexSizeError exception.
@@ -333,15 +336,16 @@ void VTTCue::setPosition(int position, ExceptionState& exceptionState)
return;
// Otherwise, set the text track cue line position to the new value.
- if (m_textPosition == position)
+ float floatPosition = narrowPrecisionToFloat(position);
+ if (m_textPosition == floatPosition)
return;
cueWillChange();
- m_textPosition = position;
+ m_textPosition = floatPosition;
cueDidChange();
}
-void VTTCue::setSize(int size, ExceptionState& exceptionState)
+void VTTCue::setSize(double size, ExceptionState& exceptionState)
{
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-size
// On setting, if the new value is negative or greater than 100, then throw an IndexSizeError
@@ -350,11 +354,12 @@ void VTTCue::setSize(int size, ExceptionState& exceptionState)
return;
// Otherwise, set the text track cue line position to the new value.
- if (m_cueSize == size)
+ float floatSize = narrowPrecisionToFloat(size);
+ if (m_cueSize == floatSize)
return;
cueWillChange();
- m_cueSize = size;
+ m_cueSize = floatSize;
cueDidChange();
}
@@ -465,7 +470,7 @@ void VTTCue::notifyRegionWhenRemovingDisplayTree(bool notifyRegion)
m_notifyRegion = notifyRegion;
}
-int VTTCue::calculateComputedLinePosition()
+float VTTCue::calculateComputedLinePosition()
{
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-computed-line-position
@@ -587,7 +592,7 @@ void VTTCue::calculateDisplayParameters()
// 10.5 Determine the value of maximum size for cue as per the appropriate
// rules from the following list:
- int maximumSize = m_textPosition;
+ float maximumSize = m_textPosition;
if ((m_writingDirection == Horizontal && m_cueAlignment == Start && m_displayDirection == CSSValueLtr)
|| (m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueRtl)
|| (m_writingDirection == Horizontal && m_cueAlignment == Left)
@@ -617,7 +622,7 @@ void VTTCue::calculateDisplayParameters()
// 10.8 Determine the value of x-position or y-position for cue as per the
// appropriate rules from the following list:
if (m_writingDirection == Horizontal) {
- int visualTextPosition = m_displayDirection == CSSValueLtr ? m_textPosition : 100 - m_textPosition;
+ float visualTextPosition = m_displayDirection == CSSValueLtr ? m_textPosition : 100 - m_textPosition;
switch (resolveCueAlignment(m_cueAlignment, m_displayDirection)) {
case Left:
@@ -1052,7 +1057,7 @@ CSSValueID VTTCue::getCSSWritingMode() const
return displayWritingModeMap[m_writingDirection];
}
-int VTTCue::getCSSSize() const
+float VTTCue::getCSSSize() const
{
ASSERT(m_displaySize != undefinedSize);
return m_displaySize;
« no previous file with comments | « Source/core/html/track/vtt/VTTCue.h ('k') | Source/core/html/track/vtt/VTTCue.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698