diff options
author | Lajos Molnar <lajos@google.com> | 2014-04-16 11:07:22 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2014-04-16 12:08:23 -0700 |
commit | 72bbe6cca6470e86b56081c3fbe3cbb4360f5271 (patch) | |
tree | 9eac2f0798b7f9842d9b63b7b4c19f7ff5588c78 | |
parent | 34de7a83033c65f28626aaa9762a91a1646d2486 (diff) | |
download | frameworks_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
-rw-r--r-- | media/java/android/media/WebVttRenderer.java | 37 |
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); |