summaryrefslogtreecommitdiffstats
path: root/media/java/android
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-04-16 11:07:22 -0700
committerLajos Molnar <lajos@google.com>2014-04-16 12:08:23 -0700
commit72bbe6cca6470e86b56081c3fbe3cbb4360f5271 (patch)
tree9eac2f0798b7f9842d9b63b7b4c19f7ff5588c78 /media/java/android
parent34de7a83033c65f28626aaa9762a91a1646d2486 (diff)
downloadframeworks_base-72bbe6cca6470e86b56081c3fbe3cbb4360f5271.zip
frameworks_base-72bbe6cca6470e86b56081c3fbe3cbb4360f5271.tar.gz
frameworks_base-72bbe6cca6470e86b56081c3fbe3cbb4360f5271.tar.bz2
media: don't rely on Java 6 parseInt error on leading '+' sign
Also add revision of draft that was used for the implementation. Related-bug: 5239391 Change-Id: I48c25a6af6a5a1bca83876b97f205c5cef9ebd09
Diffstat (limited to 'media/java/android')
-rw-r--r--media/java/android/media/WebVttRenderer.java37
1 files changed, 19 insertions, 18 deletions
diff --git a/media/java/android/media/WebVttRenderer.java b/media/java/android/media/WebVttRenderer.java
index 58d3520..1c9730f 100644
--- a/media/java/android/media/WebVttRenderer.java
+++ b/media/java/android/media/WebVttRenderer.java
@@ -558,7 +558,11 @@ class TextTrackCue extends SubtitleTrack.Cue {
}
}
-/** @hide */
+/**
+ * Supporting July 10 2013 draft version
+ *
+ * @hide
+ */
class WebVttParser {
private static final String TAG = "WebVttParser";
private Phase mPhase;
@@ -726,15 +730,15 @@ class WebVttParser {
"has invalid value", e.getMessage(), value);
}
} else if (name.equals("lines")) {
- try {
- int lines = Integer.parseInt(value);
- if (lines >= 0) {
- region.mLines = lines;
- } else {
- log_warning("region setting", name, "is negative", value);
+ if (value.matches(".*[^0-9].*")) {
+ log_warning("lines", name, "contains an invalid character", value);
+ } else {
+ try {
+ region.mLines = Integer.parseInt(value);
+ assert(region.mLines >= 0); // lines contains only digits
+ } catch (NumberFormatException e) {
+ log_warning("region setting", name, "is not numeric", value);
}
- } catch (NumberFormatException e) {
- log_warning("region setting", name, "is not numeric", value);
}
} else if (name.equals("regionanchor") ||
name.equals("viewportanchor")) {
@@ -872,26 +876,23 @@ class WebVttParser {
}
} else if (name.equals("line")) {
try {
- int linePosition;
/* TRICKY: we know that there are no spaces in value */
assert(value.indexOf(' ') < 0);
if (value.endsWith("%")) {
- linePosition = Integer.parseInt(
- value.substring(0, value.length() - 1));
- if (linePosition < 0 || linePosition > 100) {
- log_warning("cue setting", name, "is out of range", value);
- continue;
- }
mCue.mSnapToLines = false;
- mCue.mLinePosition = linePosition;
+ mCue.mLinePosition = parseIntPercentage(value);
+ } else if (value.matches(".*[^0-9].*")) {
+ log_warning("cue setting", name,
+ "contains an invalid character", value);
} else {
mCue.mSnapToLines = true;
mCue.mLinePosition = Integer.parseInt(value);
}
} catch (NumberFormatException e) {
log_warning("cue setting", name,
- "is not numeric or percentage", value);
+ "is not numeric or percentage", value);
}
+ // TODO: add support for optional alignment value [,start|middle|end]
} else if (name.equals("position")) {
try {
mCue.mTextPosition = parseIntPercentage(value);