Index: Source/core/html/track/vtt/VTTRegion.cpp |
diff --git a/Source/core/html/track/vtt/VTTRegion.cpp b/Source/core/html/track/vtt/VTTRegion.cpp |
index 21c4595a05f926f129bfe3d78e18fbe9b7a6af28..4e99592cce8f0d07da48dc4ed037ec1124d57e2d 100644 |
--- a/Source/core/html/track/vtt/VTTRegion.cpp |
+++ b/Source/core/html/track/vtt/VTTRegion.cpp |
@@ -213,9 +213,7 @@ void VTTRegion::setRegionSettings(const String& inputString) |
} |
// Scan the value part. |
- VTTScanner::Run valueRun = input.collectUntil<VTTParser::isASpace>(); |
- parseSettingValue(name, input.extractString(valueRun)); |
- input.skipRun(valueRun); |
+ parseSettingValue(name, input); |
} |
} |
@@ -237,19 +235,22 @@ VTTRegion::RegionSetting VTTRegion::scanSettingName(VTTScanner& input) |
return None; |
} |
-void VTTRegion::parseSettingValue(RegionSetting setting, const String& value) |
+void VTTRegion::parseSettingValue(RegionSetting setting, VTTScanner& input) |
{ |
DEFINE_STATIC_LOCAL(const AtomicString, scrollUpValueKeyword, ("up", AtomicString::ConstructFromLiteral)); |
+ VTTScanner::Run valueRun = input.collectUntil<VTTParser::isASpace>(); |
+ |
switch (setting) { |
- case Id: |
- if (value.find("-->") == kNotFound) |
- m_id = value; |
+ case Id: { |
+ String stringValue = input.extractString(valueRun); |
+ if (stringValue.find("-->") == kNotFound) |
+ m_id = stringValue; |
break; |
+ } |
case Width: { |
float floatWidth; |
- VTTScanner valueScanner(value); |
- if (VTTParser::parseFloatPercentageValue(valueScanner, floatWidth) && valueScanner.isAtEnd()) |
+ if (VTTParser::parseFloatPercentageValue(input, floatWidth) && input.isAt(valueRun.end())) |
Mike West
2014/01/22 10:24:26
Nit: `input.isAt(valueRun.end())` is awkward. You'
fs
2014/01/22 10:29:50
You mean as a local helper? Or on VTTScanner? (I t
|
m_width = floatWidth; |
else |
WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Width"); |
@@ -257,33 +258,30 @@ void VTTRegion::parseSettingValue(RegionSetting setting, const String& value) |
} |
case Height: { |
int number; |
- VTTScanner valueScanner(value); |
- if (valueScanner.scanDigits(number) && valueScanner.isAtEnd()) |
+ if (input.scanDigits(number) && input.isAt(valueRun.end())) |
m_heightInLines = number; |
else |
WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Height"); |
break; |
} |
case RegionAnchor: { |
- VTTScanner valueScanner(value); |
FloatPoint anchor; |
- if (VTTParser::parseFloatPercentageValuePair(valueScanner, ',', anchor) && valueScanner.isAtEnd()) |
+ if (VTTParser::parseFloatPercentageValuePair(input, ',', anchor) && input.isAt(valueRun.end())) |
m_regionAnchor = anchor; |
else |
WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid RegionAnchor"); |
break; |
} |
case ViewportAnchor: { |
- VTTScanner valueScanner(value); |
FloatPoint anchor; |
- if (VTTParser::parseFloatPercentageValuePair(valueScanner, ',', anchor) && valueScanner.isAtEnd()) |
+ if (VTTParser::parseFloatPercentageValuePair(input, ',', anchor) && input.isAt(valueRun.end())) |
m_viewportAnchor = anchor; |
else |
WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid ViewportAnchor"); |
break; |
} |
case Scroll: |
- if (value == scrollUpValueKeyword) |
+ if (input.scanRun(valueRun, scrollUpValueKeyword)) |
m_scroll = true; |
else |
WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Scroll"); |
@@ -291,6 +289,8 @@ void VTTRegion::parseSettingValue(RegionSetting setting, const String& value) |
case None: |
break; |
} |
+ |
+ input.skipRun(valueRun); |
} |
const AtomicString& VTTRegion::textTrackCueContainerShadowPseudoId() |