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

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

Issue 137033002: Use VTTScanner for VTT region settings parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 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/VTTRegion.h ('k') | Source/core/html/track/vtt/VTTScanner.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b43f985ad0f9b9cda4252a9cff848fa01a166ac3..ca48163a2a3927251ba0c7bbe9b4b1c6911a6ddb 100644
--- a/Source/core/html/track/vtt/VTTRegion.cpp
+++ b/Source/core/html/track/vtt/VTTRegion.cpp
@@ -37,6 +37,7 @@
#include "core/dom/DOMTokenList.h"
#include "core/html/HTMLDivElement.h"
#include "core/html/track/vtt/VTTParser.h"
+#include "core/html/track/vtt/VTTScanner.h"
#include "core/rendering/RenderInline.h"
#include "core/rendering/RenderObject.h"
#include "platform/Logging.h"
@@ -206,26 +207,19 @@ void VTTRegion::setRegionSettings(const String& input)
}
}
-VTTRegion::RegionSetting VTTRegion::getSettingFromString(const String& setting)
+VTTRegion::RegionSetting VTTRegion::scanSettingName(VTTScanner& input)
{
- DEFINE_STATIC_LOCAL(const AtomicString, idKeyword, ("id", AtomicString::ConstructFromLiteral));
- DEFINE_STATIC_LOCAL(const AtomicString, heightKeyword, ("height", AtomicString::ConstructFromLiteral));
- DEFINE_STATIC_LOCAL(const AtomicString, widthKeyword, ("width", AtomicString::ConstructFromLiteral));
- DEFINE_STATIC_LOCAL(const AtomicString, regionAnchorKeyword, ("regionanchor", AtomicString::ConstructFromLiteral));
- DEFINE_STATIC_LOCAL(const AtomicString, viewportAnchorKeyword, ("viewportanchor", AtomicString::ConstructFromLiteral));
- DEFINE_STATIC_LOCAL(const AtomicString, scrollKeyword, ("scroll", AtomicString::ConstructFromLiteral));
-
- if (setting == idKeyword)
+ if (input.scan("id"))
return Id;
- if (setting == heightKeyword)
+ if (input.scan("height"))
return Height;
- if (setting == widthKeyword)
+ if (input.scan("width"))
return Width;
- if (setting == viewportAnchorKeyword)
+ if (input.scan("viewportanchor"))
return ViewportAnchor;
- if (setting == regionAnchorKeyword)
+ if (input.scan("regionanchor"))
return RegionAnchor;
- if (setting == scrollKeyword)
+ if (input.scan("scroll"))
return Scroll;
return None;
@@ -276,18 +270,23 @@ void VTTRegion::parseSettingValue(RegionSetting setting, const String& value)
}
}
-void VTTRegion::parseSetting(const String& input, unsigned* position)
+void VTTRegion::parseSetting(const String& inputString, unsigned* position)
{
- String setting = VTTParser::collectWord(input, position);
+ VTTLegacyScanner input(inputString, position);
- size_t equalOffset = setting.find('=', 1);
- if (equalOffset == kNotFound || !equalOffset || equalOffset == setting.length() - 1)
- return;
+ // Scan the name part.
+ RegionSetting name = scanSettingName(input);
- RegionSetting name = getSettingFromString(setting.substring(0, equalOffset));
- String value = setting.substring(equalOffset + 1, setting.length() - 1);
+ // Verify that we're looking at a '='.
+ if (!input.scan('=')) {
+ input.skipUntil<VTTParser::isASpace>();
+ return;
+ }
- parseSettingValue(name, value);
+ // Scan the value part.
+ VTTScanner::Run valueRun = input.collectUntil<VTTParser::isASpace>();
+ parseSettingValue(name, input.extractString(valueRun));
+ input.skipRun(valueRun);
}
const AtomicString& VTTRegion::textTrackCueContainerShadowPseudoId()
« no previous file with comments | « Source/core/html/track/vtt/VTTRegion.h ('k') | Source/core/html/track/vtt/VTTScanner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698