Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 206 // Scan the name part. | 206 // Scan the name part. |
| 207 RegionSetting name = scanSettingName(input); | 207 RegionSetting name = scanSettingName(input); |
| 208 | 208 |
| 209 // Verify that we're looking at a '='. | 209 // Verify that we're looking at a '='. |
| 210 if (name == None || !input.scan('=')) { | 210 if (name == None || !input.scan('=')) { |
| 211 input.skipUntil<VTTParser::isASpace>(); | 211 input.skipUntil<VTTParser::isASpace>(); |
| 212 continue; | 212 continue; |
| 213 } | 213 } |
| 214 | 214 |
| 215 // Scan the value part. | 215 // Scan the value part. |
| 216 VTTScanner::Run valueRun = input.collectUntil<VTTParser::isASpace>(); | 216 parseSettingValue(name, input); |
| 217 parseSettingValue(name, input.extractString(valueRun)); | |
| 218 input.skipRun(valueRun); | |
| 219 } | 217 } |
| 220 } | 218 } |
| 221 | 219 |
| 222 VTTRegion::RegionSetting VTTRegion::scanSettingName(VTTScanner& input) | 220 VTTRegion::RegionSetting VTTRegion::scanSettingName(VTTScanner& input) |
| 223 { | 221 { |
| 224 if (input.scan("id")) | 222 if (input.scan("id")) |
| 225 return Id; | 223 return Id; |
| 226 if (input.scan("height")) | 224 if (input.scan("height")) |
| 227 return Height; | 225 return Height; |
| 228 if (input.scan("width")) | 226 if (input.scan("width")) |
| 229 return Width; | 227 return Width; |
| 230 if (input.scan("viewportanchor")) | 228 if (input.scan("viewportanchor")) |
| 231 return ViewportAnchor; | 229 return ViewportAnchor; |
| 232 if (input.scan("regionanchor")) | 230 if (input.scan("regionanchor")) |
| 233 return RegionAnchor; | 231 return RegionAnchor; |
| 234 if (input.scan("scroll")) | 232 if (input.scan("scroll")) |
| 235 return Scroll; | 233 return Scroll; |
| 236 | 234 |
| 237 return None; | 235 return None; |
| 238 } | 236 } |
| 239 | 237 |
| 240 void VTTRegion::parseSettingValue(RegionSetting setting, const String& value) | 238 void VTTRegion::parseSettingValue(RegionSetting setting, VTTScanner& input) |
| 241 { | 239 { |
| 242 DEFINE_STATIC_LOCAL(const AtomicString, scrollUpValueKeyword, ("up", AtomicS tring::ConstructFromLiteral)); | 240 DEFINE_STATIC_LOCAL(const AtomicString, scrollUpValueKeyword, ("up", AtomicS tring::ConstructFromLiteral)); |
| 243 | 241 |
| 242 VTTScanner::Run valueRun = input.collectUntil<VTTParser::isASpace>(); | |
| 243 | |
| 244 switch (setting) { | 244 switch (setting) { |
| 245 case Id: | 245 case Id: { |
| 246 if (value.find("-->") == kNotFound) | 246 String stringValue = input.extractString(valueRun); |
| 247 m_id = value; | 247 if (stringValue.find("-->") == kNotFound) |
| 248 m_id = stringValue; | |
| 248 break; | 249 break; |
| 250 } | |
| 249 case Width: { | 251 case Width: { |
| 250 float floatWidth; | 252 float floatWidth; |
| 251 VTTScanner valueScanner(value); | 253 if (VTTParser::parseFloatPercentageValue(input, floatWidth) && input.isA t(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
| |
| 252 if (VTTParser::parseFloatPercentageValue(valueScanner, floatWidth) && va lueScanner.isAtEnd()) | |
| 253 m_width = floatWidth; | 254 m_width = floatWidth; |
| 254 else | 255 else |
| 255 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Width"); | 256 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Width"); |
| 256 break; | 257 break; |
| 257 } | 258 } |
| 258 case Height: { | 259 case Height: { |
| 259 int number; | 260 int number; |
| 260 VTTScanner valueScanner(value); | 261 if (input.scanDigits(number) && input.isAt(valueRun.end())) |
| 261 if (valueScanner.scanDigits(number) && valueScanner.isAtEnd()) | |
| 262 m_heightInLines = number; | 262 m_heightInLines = number; |
| 263 else | 263 else |
| 264 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Height"); | 264 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Height"); |
| 265 break; | 265 break; |
| 266 } | 266 } |
| 267 case RegionAnchor: { | 267 case RegionAnchor: { |
| 268 VTTScanner valueScanner(value); | |
| 269 FloatPoint anchor; | 268 FloatPoint anchor; |
| 270 if (VTTParser::parseFloatPercentageValuePair(valueScanner, ',', anchor) && valueScanner.isAtEnd()) | 269 if (VTTParser::parseFloatPercentageValuePair(input, ',', anchor) && inpu t.isAt(valueRun.end())) |
| 271 m_regionAnchor = anchor; | 270 m_regionAnchor = anchor; |
| 272 else | 271 else |
| 273 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid RegionAnchor") ; | 272 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid RegionAnchor") ; |
| 274 break; | 273 break; |
| 275 } | 274 } |
| 276 case ViewportAnchor: { | 275 case ViewportAnchor: { |
| 277 VTTScanner valueScanner(value); | |
| 278 FloatPoint anchor; | 276 FloatPoint anchor; |
| 279 if (VTTParser::parseFloatPercentageValuePair(valueScanner, ',', anchor) && valueScanner.isAtEnd()) | 277 if (VTTParser::parseFloatPercentageValuePair(input, ',', anchor) && inpu t.isAt(valueRun.end())) |
| 280 m_viewportAnchor = anchor; | 278 m_viewportAnchor = anchor; |
| 281 else | 279 else |
| 282 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid ViewportAnchor "); | 280 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid ViewportAnchor "); |
| 283 break; | 281 break; |
| 284 } | 282 } |
| 285 case Scroll: | 283 case Scroll: |
| 286 if (value == scrollUpValueKeyword) | 284 if (input.scanRun(valueRun, scrollUpValueKeyword)) |
| 287 m_scroll = true; | 285 m_scroll = true; |
| 288 else | 286 else |
| 289 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Scroll"); | 287 WTF_LOG(Media, "VTTRegion::parseSettingValue, invalid Scroll"); |
| 290 break; | 288 break; |
| 291 case None: | 289 case None: |
| 292 break; | 290 break; |
| 293 } | 291 } |
| 292 | |
| 293 input.skipRun(valueRun); | |
| 294 } | 294 } |
| 295 | 295 |
| 296 const AtomicString& VTTRegion::textTrackCueContainerShadowPseudoId() | 296 const AtomicString& VTTRegion::textTrackCueContainerShadowPseudoId() |
| 297 { | 297 { |
| 298 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerPseudoId, | 298 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerPseudoId, |
| 299 ("-webkit-media-text-track-region-container", AtomicString::ConstructFro mLiteral)); | 299 ("-webkit-media-text-track-region-container", AtomicString::ConstructFro mLiteral)); |
| 300 | 300 |
| 301 return trackRegionCueContainerPseudoId; | 301 return trackRegionCueContainerPseudoId; |
| 302 } | 302 } |
| 303 | 303 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 460 | 460 |
| 461 void VTTRegion::scrollTimerFired(Timer<VTTRegion>*) | 461 void VTTRegion::scrollTimerFired(Timer<VTTRegion>*) |
| 462 { | 462 { |
| 463 WTF_LOG(Media, "VTTRegion::scrollTimerFired"); | 463 WTF_LOG(Media, "VTTRegion::scrollTimerFired"); |
| 464 | 464 |
| 465 stopTimer(); | 465 stopTimer(); |
| 466 displayLastVTTCueBox(); | 466 displayLastVTTCueBox(); |
| 467 } | 467 } |
| 468 | 468 |
| 469 } // namespace WebCore | 469 } // namespace WebCore |
| OLD | NEW |