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

Side by Side Diff: Source/core/html/track/VTTRegion.cpp

Issue 55653003: Rename TextTrackRegion/TextTrackRegionList to VTTRegion/VTTRegionList (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: update test expectations Created 7 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « Source/core/html/track/VTTRegion.h ('k') | Source/core/html/track/VTTRegion.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 11 matching lines...) Expand all
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "core/html/track/TextTrackRegion.h" 32 #include "core/html/track/VTTRegion.h"
33 33
34 #include "bindings/v8/ExceptionState.h" 34 #include "bindings/v8/ExceptionState.h"
35 #include "bindings/v8/ExceptionStatePlaceholder.h" 35 #include "bindings/v8/ExceptionStatePlaceholder.h"
36 #include "core/dom/ClientRect.h" 36 #include "core/dom/ClientRect.h"
37 #include "core/dom/DOMTokenList.h" 37 #include "core/dom/DOMTokenList.h"
38 #include "core/html/HTMLDivElement.h" 38 #include "core/html/HTMLDivElement.h"
39 #include "core/html/track/WebVTTParser.h" 39 #include "core/html/track/WebVTTParser.h"
40 #include "platform/Logging.h"
41 #include "core/rendering/RenderInline.h" 40 #include "core/rendering/RenderInline.h"
42 #include "core/rendering/RenderObject.h" 41 #include "core/rendering/RenderObject.h"
42 #include "platform/Logging.h"
43 #include "wtf/MathExtras.h" 43 #include "wtf/MathExtras.h"
44 #include "wtf/text/StringBuilder.h" 44 #include "wtf/text/StringBuilder.h"
45 45
46 namespace WebCore { 46 namespace WebCore {
47 47
48 // The following values default values are defined within the WebVTT Regions Spe c. 48 // The following values default values are defined within the WebVTT Regions Spe c.
49 // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/region.html 49 // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/region.html
50 50
51 // The region occupies by default 100% of the width of the video viewport. 51 // The region occupies by default 100% of the width of the video viewport.
52 static const float defaultWidth = 100; 52 static const float defaultWidth = 100;
53 53
54 // The region has, by default, 3 lines of text. 54 // The region has, by default, 3 lines of text.
55 static const long defaultHeightInLines = 3; 55 static const long defaultHeightInLines = 3;
56 56
57 // The region and viewport are anchored in the bottom left corner. 57 // The region and viewport are anchored in the bottom left corner.
58 static const float defaultAnchorPointX = 0; 58 static const float defaultAnchorPointX = 0;
59 static const float defaultAnchorPointY = 100; 59 static const float defaultAnchorPointY = 100;
60 60
61 // The region doesn't have scrolling text, by default. 61 // The region doesn't have scrolling text, by default.
62 static const bool defaultScroll = false; 62 static const bool defaultScroll = false;
63 63
64 // Default region line-height (vh units) 64 // Default region line-height (vh units)
65 static const float lineHeight = 5.33; 65 static const float lineHeight = 5.33;
66 66
67 // Default scrolling animation time period (s). 67 // Default scrolling animation time period (s).
68 static const float scrollTime = 0.433; 68 static const float scrollTime = 0.433;
69 69
70 TextTrackRegion::TextTrackRegion() 70 VTTRegion::VTTRegion()
71 : m_id(emptyString()) 71 : m_id(emptyString())
72 , m_width(defaultWidth) 72 , m_width(defaultWidth)
73 , m_heightInLines(defaultHeightInLines) 73 , m_heightInLines(defaultHeightInLines)
74 , m_regionAnchor(FloatPoint(defaultAnchorPointX, defaultAnchorPointY)) 74 , m_regionAnchor(FloatPoint(defaultAnchorPointX, defaultAnchorPointY))
75 , m_viewportAnchor(FloatPoint(defaultAnchorPointX, defaultAnchorPointY)) 75 , m_viewportAnchor(FloatPoint(defaultAnchorPointX, defaultAnchorPointY))
76 , m_scroll(defaultScroll) 76 , m_scroll(defaultScroll)
77 , m_track(0) 77 , m_track(0)
78 , m_currentTop(0) 78 , m_currentTop(0)
79 , m_scrollTimer(this, &TextTrackRegion::scrollTimerFired) 79 , m_scrollTimer(this, &VTTRegion::scrollTimerFired)
80 { 80 {
81 } 81 }
82 82
83 TextTrackRegion::~TextTrackRegion() 83 VTTRegion::~VTTRegion()
84 { 84 {
85 } 85 }
86 86
87 void TextTrackRegion::setTrack(TextTrack* track) 87 void VTTRegion::setTrack(TextTrack* track)
88 { 88 {
89 m_track = track; 89 m_track = track;
90 } 90 }
91 91
92 void TextTrackRegion::setId(const String& id) 92 void VTTRegion::setId(const String& id)
93 { 93 {
94 m_id = id; 94 m_id = id;
95 } 95 }
96 96
97 void TextTrackRegion::setWidth(double value, ExceptionState& es) 97 void VTTRegion::setWidth(double value, ExceptionState& es)
98 { 98 {
99 if (std::isinf(value) || std::isnan(value)) { 99 if (std::isinf(value) || std::isnan(value)) {
100 es.throwUninformativeAndGenericTypeError(); 100 es.throwUninformativeAndGenericTypeError();
101 return; 101 return;
102 } 102 }
103 103
104 if (value < 0 || value > 100) { 104 if (value < 0 || value > 100) {
105 es.throwUninformativeAndGenericDOMException(IndexSizeError); 105 es.throwUninformativeAndGenericDOMException(IndexSizeError);
106 return; 106 return;
107 } 107 }
108 108
109 m_width = value; 109 m_width = value;
110 } 110 }
111 111
112 void TextTrackRegion::setHeight(long value, ExceptionState& es) 112 void VTTRegion::setHeight(long value, ExceptionState& es)
113 { 113 {
114 if (value < 0) { 114 if (value < 0) {
115 es.throwUninformativeAndGenericDOMException(IndexSizeError); 115 es.throwUninformativeAndGenericDOMException(IndexSizeError);
116 return; 116 return;
117 } 117 }
118 118
119 m_heightInLines = value; 119 m_heightInLines = value;
120 } 120 }
121 121
122 void TextTrackRegion::setRegionAnchorX(double value, ExceptionState& es) 122 void VTTRegion::setRegionAnchorX(double value, ExceptionState& es)
123 { 123 {
124 if (std::isinf(value) || std::isnan(value)) { 124 if (std::isinf(value) || std::isnan(value)) {
125 es.throwUninformativeAndGenericTypeError(); 125 es.throwUninformativeAndGenericTypeError();
126 return; 126 return;
127 } 127 }
128 128
129 if (value < 0 || value > 100) { 129 if (value < 0 || value > 100) {
130 es.throwUninformativeAndGenericDOMException(IndexSizeError); 130 es.throwUninformativeAndGenericDOMException(IndexSizeError);
131 return; 131 return;
132 } 132 }
133 133
134 m_regionAnchor.setX(value); 134 m_regionAnchor.setX(value);
135 } 135 }
136 136
137 void TextTrackRegion::setRegionAnchorY(double value, ExceptionState& es) 137 void VTTRegion::setRegionAnchorY(double value, ExceptionState& es)
138 { 138 {
139 if (std::isinf(value) || std::isnan(value)) { 139 if (std::isinf(value) || std::isnan(value)) {
140 es.throwUninformativeAndGenericTypeError(); 140 es.throwUninformativeAndGenericTypeError();
141 return; 141 return;
142 } 142 }
143 143
144 if (value < 0 || value > 100) { 144 if (value < 0 || value > 100) {
145 es.throwUninformativeAndGenericDOMException(IndexSizeError); 145 es.throwUninformativeAndGenericDOMException(IndexSizeError);
146 return; 146 return;
147 } 147 }
148 148
149 m_regionAnchor.setY(value); 149 m_regionAnchor.setY(value);
150 } 150 }
151 151
152 void TextTrackRegion::setViewportAnchorX(double value, ExceptionState& es) 152 void VTTRegion::setViewportAnchorX(double value, ExceptionState& es)
153 { 153 {
154 if (std::isinf(value) || std::isnan(value)) { 154 if (std::isinf(value) || std::isnan(value)) {
155 es.throwUninformativeAndGenericTypeError(); 155 es.throwUninformativeAndGenericTypeError();
156 return; 156 return;
157 } 157 }
158 158
159 if (value < 0 || value > 100) { 159 if (value < 0 || value > 100) {
160 es.throwUninformativeAndGenericDOMException(IndexSizeError); 160 es.throwUninformativeAndGenericDOMException(IndexSizeError);
161 return; 161 return;
162 } 162 }
163 163
164 m_viewportAnchor.setX(value); 164 m_viewportAnchor.setX(value);
165 } 165 }
166 166
167 void TextTrackRegion::setViewportAnchorY(double value, ExceptionState& es) 167 void VTTRegion::setViewportAnchorY(double value, ExceptionState& es)
168 { 168 {
169 if (std::isinf(value) || std::isnan(value)) { 169 if (std::isinf(value) || std::isnan(value)) {
170 es.throwUninformativeAndGenericTypeError(); 170 es.throwUninformativeAndGenericTypeError();
171 return; 171 return;
172 } 172 }
173 173
174 if (value < 0 || value > 100) { 174 if (value < 0 || value > 100) {
175 es.throwUninformativeAndGenericDOMException(IndexSizeError); 175 es.throwUninformativeAndGenericDOMException(IndexSizeError);
176 return; 176 return;
177 } 177 }
178 178
179 m_viewportAnchor.setY(value); 179 m_viewportAnchor.setY(value);
180 } 180 }
181 181
182 const AtomicString TextTrackRegion::scroll() const 182 const AtomicString VTTRegion::scroll() const
183 { 183 {
184 DEFINE_STATIC_LOCAL(const AtomicString, upScrollValueKeyword, ("up", AtomicS tring::ConstructFromLiteral)); 184 DEFINE_STATIC_LOCAL(const AtomicString, upScrollValueKeyword, ("up", AtomicS tring::ConstructFromLiteral));
185 185
186 if (m_scroll) 186 if (m_scroll)
187 return upScrollValueKeyword; 187 return upScrollValueKeyword;
188 188
189 return ""; 189 return "";
190 } 190 }
191 191
192 void TextTrackRegion::setScroll(const AtomicString& value, ExceptionState& es) 192 void VTTRegion::setScroll(const AtomicString& value, ExceptionState& es)
193 { 193 {
194 DEFINE_STATIC_LOCAL(const AtomicString, upScrollValueKeyword, ("up", AtomicS tring::ConstructFromLiteral)); 194 DEFINE_STATIC_LOCAL(const AtomicString, upScrollValueKeyword, ("up", AtomicS tring::ConstructFromLiteral));
195 195
196 if (value != emptyString() && value != upScrollValueKeyword) { 196 if (value != emptyString() && value != upScrollValueKeyword) {
197 es.throwUninformativeAndGenericDOMException(SyntaxError); 197 es.throwUninformativeAndGenericDOMException(SyntaxError);
198 return; 198 return;
199 } 199 }
200 200
201 m_scroll = value == upScrollValueKeyword; 201 m_scroll = value == upScrollValueKeyword;
202 } 202 }
203 203
204 void TextTrackRegion::updateParametersFromRegion(TextTrackRegion* region) 204 void VTTRegion::updateParametersFromRegion(VTTRegion* region)
205 { 205 {
206 m_heightInLines = region->height(); 206 m_heightInLines = region->height();
207 m_width = region->width(); 207 m_width = region->width();
208 208
209 m_regionAnchor = FloatPoint(region->regionAnchorX(), region->regionAnchorY() ); 209 m_regionAnchor = FloatPoint(region->regionAnchorX(), region->regionAnchorY() );
210 m_viewportAnchor = FloatPoint(region->viewportAnchorX(), region->viewportAnc horY()); 210 m_viewportAnchor = FloatPoint(region->viewportAnchorX(), region->viewportAnc horY());
211 211
212 setScroll(region->scroll(), ASSERT_NO_EXCEPTION); 212 setScroll(region->scroll(), ASSERT_NO_EXCEPTION);
213 } 213 }
214 214
215 void TextTrackRegion::setRegionSettings(const String& input) 215 void VTTRegion::setRegionSettings(const String& input)
216 { 216 {
217 m_settings = input; 217 m_settings = input;
218 unsigned position = 0; 218 unsigned position = 0;
219 219
220 while (position < input.length()) { 220 while (position < input.length()) {
221 while (position < input.length() && WebVTTParser::isValidSettingDelimite r(input[position])) 221 while (position < input.length() && WebVTTParser::isValidSettingDelimite r(input[position]))
222 position++; 222 position++;
223 223
224 if (position >= input.length()) 224 if (position >= input.length())
225 break; 225 break;
226 226
227 parseSetting(input, &position); 227 parseSetting(input, &position);
228 } 228 }
229 } 229 }
230 230
231 TextTrackRegion::RegionSetting TextTrackRegion::getSettingFromString(const Strin g& setting) 231 VTTRegion::RegionSetting VTTRegion::getSettingFromString(const String& setting)
232 { 232 {
233 DEFINE_STATIC_LOCAL(const AtomicString, idKeyword, ("id", AtomicString::Cons tructFromLiteral)); 233 DEFINE_STATIC_LOCAL(const AtomicString, idKeyword, ("id", AtomicString::Cons tructFromLiteral));
234 DEFINE_STATIC_LOCAL(const AtomicString, heightKeyword, ("height", AtomicStri ng::ConstructFromLiteral)); 234 DEFINE_STATIC_LOCAL(const AtomicString, heightKeyword, ("height", AtomicStri ng::ConstructFromLiteral));
235 DEFINE_STATIC_LOCAL(const AtomicString, widthKeyword, ("width", AtomicString ::ConstructFromLiteral)); 235 DEFINE_STATIC_LOCAL(const AtomicString, widthKeyword, ("width", AtomicString ::ConstructFromLiteral));
236 DEFINE_STATIC_LOCAL(const AtomicString, regionAnchorKeyword, ("regionanchor" , AtomicString::ConstructFromLiteral)); 236 DEFINE_STATIC_LOCAL(const AtomicString, regionAnchorKeyword, ("regionanchor" , AtomicString::ConstructFromLiteral));
237 DEFINE_STATIC_LOCAL(const AtomicString, viewportAnchorKeyword, ("viewportanc hor", AtomicString::ConstructFromLiteral)); 237 DEFINE_STATIC_LOCAL(const AtomicString, viewportAnchorKeyword, ("viewportanc hor", AtomicString::ConstructFromLiteral));
238 DEFINE_STATIC_LOCAL(const AtomicString, scrollKeyword, ("scroll", AtomicStri ng::ConstructFromLiteral)); 238 DEFINE_STATIC_LOCAL(const AtomicString, scrollKeyword, ("scroll", AtomicStri ng::ConstructFromLiteral));
239 239
240 if (setting == idKeyword) 240 if (setting == idKeyword)
241 return Id; 241 return Id;
242 if (setting == heightKeyword) 242 if (setting == heightKeyword)
243 return Height; 243 return Height;
244 if (setting == widthKeyword) 244 if (setting == widthKeyword)
245 return Width; 245 return Width;
246 if (setting == viewportAnchorKeyword) 246 if (setting == viewportAnchorKeyword)
247 return ViewportAnchor; 247 return ViewportAnchor;
248 if (setting == regionAnchorKeyword) 248 if (setting == regionAnchorKeyword)
249 return RegionAnchor; 249 return RegionAnchor;
250 if (setting == scrollKeyword) 250 if (setting == scrollKeyword)
251 return Scroll; 251 return Scroll;
252 252
253 return None; 253 return None;
254 } 254 }
255 255
256 void TextTrackRegion::parseSettingValue(RegionSetting setting, const String& val ue) 256 void VTTRegion::parseSettingValue(RegionSetting setting, const String& value)
257 { 257 {
258 DEFINE_STATIC_LOCAL(const AtomicString, scrollUpValueKeyword, ("up", AtomicS tring::ConstructFromLiteral)); 258 DEFINE_STATIC_LOCAL(const AtomicString, scrollUpValueKeyword, ("up", AtomicS tring::ConstructFromLiteral));
259 259
260 bool isValidSetting; 260 bool isValidSetting;
261 String numberAsString; 261 String numberAsString;
262 int number; 262 int number;
263 unsigned position; 263 unsigned position;
264 FloatPoint anchorPosition; 264 FloatPoint anchorPosition;
265 265
266 switch (setting) { 266 switch (setting) {
267 case Id: 267 case Id:
268 if (value.find("-->") == kNotFound) 268 if (value.find("-->") == kNotFound)
269 m_id = value; 269 m_id = value;
270 break; 270 break;
271 case Width: 271 case Width:
272 number = WebVTTParser::parseFloatPercentageValue(value, isValidSetting); 272 number = WebVTTParser::parseFloatPercentageValue(value, isValidSetting);
273 if (isValidSetting) 273 if (isValidSetting)
274 m_width = number; 274 m_width = number;
275 else 275 else
276 LOG(Media, "TextTrackRegion::parseSettingValue, invalid Width"); 276 LOG(Media, "VTTRegion::parseSettingValue, invalid Width");
277 break; 277 break;
278 case Height: 278 case Height:
279 position = 0; 279 position = 0;
280 280
281 numberAsString = WebVTTParser::collectDigits(value, &position); 281 numberAsString = WebVTTParser::collectDigits(value, &position);
282 number = value.toInt(&isValidSetting); 282 number = value.toInt(&isValidSetting);
283 283
284 if (isValidSetting && number >= 0) 284 if (isValidSetting && number >= 0)
285 m_heightInLines = number; 285 m_heightInLines = number;
286 else 286 else
287 LOG(Media, "TextTrackRegion::parseSettingValue, invalid Height"); 287 LOG(Media, "VTTRegion::parseSettingValue, invalid Height");
288 break; 288 break;
289 case RegionAnchor: 289 case RegionAnchor:
290 anchorPosition = WebVTTParser::parseFloatPercentageValuePair(value, ',', isValidSetting); 290 anchorPosition = WebVTTParser::parseFloatPercentageValuePair(value, ',', isValidSetting);
291 if (isValidSetting) 291 if (isValidSetting)
292 m_regionAnchor = anchorPosition; 292 m_regionAnchor = anchorPosition;
293 else 293 else
294 LOG(Media, "TextTrackRegion::parseSettingValue, invalid RegionAnchor "); 294 LOG(Media, "VTTRegion::parseSettingValue, invalid RegionAnchor");
295 break; 295 break;
296 case ViewportAnchor: 296 case ViewportAnchor:
297 anchorPosition = WebVTTParser::parseFloatPercentageValuePair(value, ',', isValidSetting); 297 anchorPosition = WebVTTParser::parseFloatPercentageValuePair(value, ',', isValidSetting);
298 if (isValidSetting) 298 if (isValidSetting)
299 m_viewportAnchor = anchorPosition; 299 m_viewportAnchor = anchorPosition;
300 else 300 else
301 LOG(Media, "TextTrackRegion::parseSettingValue, invalid ViewportAnch or"); 301 LOG(Media, "VTTRegion::parseSettingValue, invalid ViewportAnchor");
302 break; 302 break;
303 case Scroll: 303 case Scroll:
304 if (value == scrollUpValueKeyword) 304 if (value == scrollUpValueKeyword)
305 m_scroll = true; 305 m_scroll = true;
306 else 306 else
307 LOG(Media, "TextTrackRegion::parseSettingValue, invalid Scroll"); 307 LOG(Media, "VTTRegion::parseSettingValue, invalid Scroll");
308 break; 308 break;
309 case None: 309 case None:
310 break; 310 break;
311 } 311 }
312 } 312 }
313 313
314 void TextTrackRegion::parseSetting(const String& input, unsigned* position) 314 void VTTRegion::parseSetting(const String& input, unsigned* position)
315 { 315 {
316 String setting = WebVTTParser::collectWord(input, position); 316 String setting = WebVTTParser::collectWord(input, position);
317 317
318 size_t equalOffset = setting.find('=', 1); 318 size_t equalOffset = setting.find('=', 1);
319 if (equalOffset == kNotFound || !equalOffset || equalOffset == setting.lengt h() - 1) 319 if (equalOffset == kNotFound || !equalOffset || equalOffset == setting.lengt h() - 1)
320 return; 320 return;
321 321
322 RegionSetting name = getSettingFromString(setting.substring(0, equalOffset)) ; 322 RegionSetting name = getSettingFromString(setting.substring(0, equalOffset)) ;
323 String value = setting.substring(equalOffset + 1, setting.length() - 1); 323 String value = setting.substring(equalOffset + 1, setting.length() - 1);
324 324
325 parseSettingValue(name, value); 325 parseSettingValue(name, value);
326 } 326 }
327 327
328 const AtomicString& TextTrackRegion::textTrackCueContainerShadowPseudoId() 328 const AtomicString& VTTRegion::textTrackCueContainerShadowPseudoId()
329 { 329 {
330 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerPseudoId, 330 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerPseudoId,
331 ("-webkit-media-text-track-region-container", AtomicString::ConstructFro mLiteral)); 331 ("-webkit-media-text-track-region-container", AtomicString::ConstructFro mLiteral));
332 332
333 return trackRegionCueContainerPseudoId; 333 return trackRegionCueContainerPseudoId;
334 } 334 }
335 335
336 const AtomicString& TextTrackRegion::textTrackCueContainerScrollingClass() 336 const AtomicString& VTTRegion::textTrackCueContainerScrollingClass()
337 { 337 {
338 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerScrollingClas s, 338 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionCueContainerScrollingClas s,
339 ("scrolling", AtomicString::ConstructFromLiteral)); 339 ("scrolling", AtomicString::ConstructFromLiteral));
340 340
341 return trackRegionCueContainerScrollingClass; 341 return trackRegionCueContainerScrollingClass;
342 } 342 }
343 343
344 const AtomicString& TextTrackRegion::textTrackRegionShadowPseudoId() 344 const AtomicString& VTTRegion::textTrackRegionShadowPseudoId()
345 { 345 {
346 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionShadowPseudoId, 346 DEFINE_STATIC_LOCAL(const AtomicString, trackRegionShadowPseudoId,
347 ("-webkit-media-text-track-region", AtomicString::ConstructFromLiteral)) ; 347 ("-webkit-media-text-track-region", AtomicString::ConstructFromLiteral)) ;
348 348
349 return trackRegionShadowPseudoId; 349 return trackRegionShadowPseudoId;
350 } 350 }
351 351
352 PassRefPtr<HTMLDivElement> TextTrackRegion::getDisplayTree(Document& document) 352 PassRefPtr<HTMLDivElement> VTTRegion::getDisplayTree(Document& document)
353 { 353 {
354 if (!m_regionDisplayTree) { 354 if (!m_regionDisplayTree) {
355 m_regionDisplayTree = HTMLDivElement::create(document); 355 m_regionDisplayTree = HTMLDivElement::create(document);
356 prepareRegionDisplayTree(); 356 prepareRegionDisplayTree();
357 } 357 }
358 358
359 return m_regionDisplayTree; 359 return m_regionDisplayTree;
360 } 360 }
361 361
362 void TextTrackRegion::willRemoveTextTrackCueBox(TextTrackCueBox* box) 362 void VTTRegion::willRemoveTextTrackCueBox(TextTrackCueBox* box)
363 { 363 {
364 LOG(Media, "TextTrackRegion::willRemoveTextTrackCueBox"); 364 LOG(Media, "VTTRegion::willRemoveTextTrackCueBox");
365 ASSERT(m_cueContainer->contains(box)); 365 ASSERT(m_cueContainer->contains(box));
366 366
367 double boxHeight = box->getBoundingClientRect()->bottom() - box->getBounding ClientRect()->top(); 367 double boxHeight = box->getBoundingClientRect()->bottom() - box->getBounding ClientRect()->top();
368 368
369 m_cueContainer->classList()->remove(textTrackCueContainerScrollingClass(), A SSERT_NO_EXCEPTION); 369 m_cueContainer->classList()->remove(textTrackCueContainerScrollingClass(), A SSERT_NO_EXCEPTION);
370 370
371 m_currentTop += boxHeight; 371 m_currentTop += boxHeight;
372 m_cueContainer->setInlineStyleProperty(CSSPropertyTop, m_currentTop, CSSPrim itiveValue::CSS_PX); 372 m_cueContainer->setInlineStyleProperty(CSSPropertyTop, m_currentTop, CSSPrim itiveValue::CSS_PX);
373 } 373 }
374 374
375 375
376 void TextTrackRegion::appendTextTrackCueBox(PassRefPtr<TextTrackCueBox> displayB ox) 376 void VTTRegion::appendTextTrackCueBox(PassRefPtr<TextTrackCueBox> displayBox)
377 { 377 {
378 ASSERT(m_cueContainer); 378 ASSERT(m_cueContainer);
379 379
380 if (m_cueContainer->contains(displayBox.get())) 380 if (m_cueContainer->contains(displayBox.get()))
381 return; 381 return;
382 382
383 m_cueContainer->appendChild(displayBox); 383 m_cueContainer->appendChild(displayBox);
384 displayLastTextTrackCueBox(); 384 displayLastTextTrackCueBox();
385 } 385 }
386 386
387 void TextTrackRegion::displayLastTextTrackCueBox() 387 void VTTRegion::displayLastTextTrackCueBox()
388 { 388 {
389 LOG(Media, "TextTrackRegion::displayLastTextTrackCueBox"); 389 LOG(Media, "VTTRegion::displayLastTextTrackCueBox");
390 ASSERT(m_cueContainer); 390 ASSERT(m_cueContainer);
391 391
392 // FIXME: This should not be causing recalc styles in a loop to set the "top " css 392 // FIXME: This should not be causing recalc styles in a loop to set the "top " css
393 // property to move elements. We should just scroll the text track cues on t he 393 // property to move elements. We should just scroll the text track cues on t he
394 // compositor with an animation. 394 // compositor with an animation.
395 395
396 if (m_scrollTimer.isActive()) 396 if (m_scrollTimer.isActive())
397 return; 397 return;
398 398
399 // If it's a scrolling region, add the scrolling class. 399 // If it's a scrolling region, add the scrolling class.
(...skipping 12 matching lines...) Expand all
412 412
413 float height = childBottom - childTop; 413 float height = childBottom - childTop;
414 414
415 m_currentTop -= std::min(height, childBottom - regionBottom); 415 m_currentTop -= std::min(height, childBottom - regionBottom);
416 m_cueContainer->setInlineStyleProperty(CSSPropertyTop, m_currentTop, CSS PrimitiveValue::CSS_PX); 416 m_cueContainer->setInlineStyleProperty(CSSPropertyTop, m_currentTop, CSS PrimitiveValue::CSS_PX);
417 417
418 startTimer(); 418 startTimer();
419 } 419 }
420 } 420 }
421 421
422 void TextTrackRegion::prepareRegionDisplayTree() 422 void VTTRegion::prepareRegionDisplayTree()
423 { 423 {
424 ASSERT(m_regionDisplayTree); 424 ASSERT(m_regionDisplayTree);
425 425
426 // 7.2 Prepare region CSS boxes 426 // 7.2 Prepare region CSS boxes
427 427
428 // FIXME: Change the code below to use viewport units when 428 // FIXME: Change the code below to use viewport units when
429 // http://crbug/244618 is fixed. 429 // http://crbug/244618 is fixed.
430 430
431 // Let regionWidth be the text track region width. 431 // Let regionWidth be the text track region width.
432 // Let width be 'regionWidth vw' ('vw' is a CSS unit) 432 // Let width be 'regionWidth vw' ('vw' is a CSS unit)
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 0.0, 466 0.0,
467 CSSPrimitiveValue::CSS_PX); 467 CSSPrimitiveValue::CSS_PX);
468 468
469 m_cueContainer->setPart(textTrackCueContainerShadowPseudoId()); 469 m_cueContainer->setPart(textTrackCueContainerShadowPseudoId());
470 m_regionDisplayTree->appendChild(m_cueContainer); 470 m_regionDisplayTree->appendChild(m_cueContainer);
471 471
472 // 7.5 Every WebVTT region object is initialised with the following CSS 472 // 7.5 Every WebVTT region object is initialised with the following CSS
473 m_regionDisplayTree->setPart(textTrackRegionShadowPseudoId()); 473 m_regionDisplayTree->setPart(textTrackRegionShadowPseudoId());
474 } 474 }
475 475
476 void TextTrackRegion::startTimer() 476 void VTTRegion::startTimer()
477 { 477 {
478 LOG(Media, "TextTrackRegion::startTimer"); 478 LOG(Media, "VTTRegion::startTimer");
479 479
480 if (m_scrollTimer.isActive()) 480 if (m_scrollTimer.isActive())
481 return; 481 return;
482 482
483 double duration = isScrollingRegion() ? scrollTime : 0; 483 double duration = isScrollingRegion() ? scrollTime : 0;
484 m_scrollTimer.startOneShot(duration); 484 m_scrollTimer.startOneShot(duration);
485 } 485 }
486 486
487 void TextTrackRegion::stopTimer() 487 void VTTRegion::stopTimer()
488 { 488 {
489 LOG(Media, "TextTrackRegion::stopTimer"); 489 LOG(Media, "VTTRegion::stopTimer");
490 490
491 if (m_scrollTimer.isActive()) 491 if (m_scrollTimer.isActive())
492 m_scrollTimer.stop(); 492 m_scrollTimer.stop();
493 } 493 }
494 494
495 void TextTrackRegion::scrollTimerFired(Timer<TextTrackRegion>*) 495 void VTTRegion::scrollTimerFired(Timer<VTTRegion>*)
496 { 496 {
497 LOG(Media, "TextTrackRegion::scrollTimerFired"); 497 LOG(Media, "VTTRegion::scrollTimerFired");
498 498
499 stopTimer(); 499 stopTimer();
500 displayLastTextTrackCueBox(); 500 displayLastTextTrackCueBox();
501 } 501 }
502 502
503 } // namespace WebCore 503 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/track/VTTRegion.h ('k') | Source/core/html/track/VTTRegion.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698