| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 'use strict'; | 5 'use strict'; |
| 6 (function() { | 6 (function() { |
| 7 var testCount = 0; | 7 var testCount = 0; |
| 8 var animationEventCount = 0; | 8 var animationEventCount = 0; |
| 9 | 9 |
| 10 var durationSeconds = 0.001; | 10 var durationSeconds = 0.001; |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 return String(elements); | 195 return String(elements); |
| 196 } | 196 } |
| 197 | 197 |
| 198 function serializeSVGNumberList(numberList) { | 198 function serializeSVGNumberList(numberList) { |
| 199 var elements = []; | 199 var elements = []; |
| 200 for (var index = 0; index < numberList.numberOfItems; ++index) | 200 for (var index = 0; index < numberList.numberOfItems; ++index) |
| 201 elements.push(numberList.getItem(index).value); | 201 elements.push(numberList.getItem(index).value); |
| 202 return String(elements); | 202 return String(elements); |
| 203 } | 203 } |
| 204 | 204 |
| 205 function serializeSVGPathSegList(pathSegList) { | |
| 206 var elements = []; | |
| 207 for (var index = 0; index < pathSegList.numberOfItems; ++index) { | |
| 208 var pathSeg = pathSegList.getItem(index); | |
| 209 switch (pathSeg.pathSegType) { | |
| 210 case SVGPathSeg.PATHSEG_CLOSEPATH: | |
| 211 elements.push('z'); | |
| 212 break; | |
| 213 case SVGPathSeg.PATHSEG_MOVETO_ABS: | |
| 214 elements.push('M'); | |
| 215 elements.push(pathSeg.x); | |
| 216 elements.push(pathSeg.y); | |
| 217 break; | |
| 218 case SVGPathSeg.PATHSEG_MOVETO_REL: | |
| 219 elements.push('m'); | |
| 220 elements.push(pathSeg.x); | |
| 221 elements.push(pathSeg.y); | |
| 222 break; | |
| 223 case SVGPathSeg.PATHSEG_LINETO_ABS: | |
| 224 elements.push('L'); | |
| 225 elements.push(pathSeg.x); | |
| 226 elements.push(pathSeg.y); | |
| 227 break; | |
| 228 case SVGPathSeg.PATHSEG_LINETO_REL: | |
| 229 elements.push('l'); | |
| 230 elements.push(pathSeg.x); | |
| 231 elements.push(pathSeg.y); | |
| 232 break; | |
| 233 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS: | |
| 234 elements.push('C'); | |
| 235 elements.push(pathSeg.x1); | |
| 236 elements.push(pathSeg.y1); | |
| 237 elements.push(pathSeg.x2); | |
| 238 elements.push(pathSeg.y2); | |
| 239 elements.push(pathSeg.x); | |
| 240 elements.push(pathSeg.y); | |
| 241 break; | |
| 242 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL: | |
| 243 elements.push('c'); | |
| 244 elements.push(pathSeg.x1); | |
| 245 elements.push(pathSeg.y1); | |
| 246 elements.push(pathSeg.x2); | |
| 247 elements.push(pathSeg.y2); | |
| 248 elements.push(pathSeg.x); | |
| 249 elements.push(pathSeg.y); | |
| 250 break; | |
| 251 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS: | |
| 252 elements.push('Q'); | |
| 253 elements.push(pathSeg.x1); | |
| 254 elements.push(pathSeg.y1); | |
| 255 elements.push(pathSeg.x); | |
| 256 elements.push(pathSeg.y); | |
| 257 break; | |
| 258 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL: | |
| 259 elements.push('q'); | |
| 260 elements.push(pathSeg.x1); | |
| 261 elements.push(pathSeg.y1); | |
| 262 elements.push(pathSeg.x); | |
| 263 elements.push(pathSeg.y); | |
| 264 break; | |
| 265 case SVGPathSeg.PATHSEG_ARC_ABS: | |
| 266 elements.push('A'); | |
| 267 elements.push(pathSeg.r1); | |
| 268 elements.push(pathSeg.r2); | |
| 269 elements.push(pathSeg.angle); | |
| 270 elements.push(pathSeg.largeArcFlag); | |
| 271 elements.push(pathSeg.sweepFlag); | |
| 272 elements.push(pathSeg.x); | |
| 273 elements.push(pathSeg.y); | |
| 274 break; | |
| 275 case SVGPathSeg.PATHSEG_ARC_REL: | |
| 276 elements.push('a'); | |
| 277 elements.push(pathSeg.r1); | |
| 278 elements.push(pathSeg.r2); | |
| 279 elements.push(pathSeg.angle); | |
| 280 elements.push(pathSeg.largeArcFlag); | |
| 281 elements.push(pathSeg.sweepFlag); | |
| 282 elements.push(pathSeg.x); | |
| 283 elements.push(pathSeg.y); | |
| 284 break; | |
| 285 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS: | |
| 286 elements.push('H'); | |
| 287 elements.push(pathSeg.x); | |
| 288 break; | |
| 289 case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL: | |
| 290 elements.push('h'); | |
| 291 elements.push(pathSeg.x); | |
| 292 break; | |
| 293 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS: | |
| 294 elements.push('V'); | |
| 295 elements.push(pathSeg.y); | |
| 296 break; | |
| 297 case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL: | |
| 298 elements.push('v'); | |
| 299 elements.push(pathSeg.y); | |
| 300 break; | |
| 301 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: | |
| 302 elements.push('S'); | |
| 303 elements.push(pathSeg.x2); | |
| 304 elements.push(pathSeg.y2); | |
| 305 elements.push(pathSeg.x); | |
| 306 elements.push(pathSeg.y); | |
| 307 break; | |
| 308 case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL: | |
| 309 elements.push('s'); | |
| 310 elements.push(pathSeg.x2); | |
| 311 elements.push(pathSeg.y2); | |
| 312 elements.push(pathSeg.x); | |
| 313 elements.push(pathSeg.y); | |
| 314 break; | |
| 315 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: | |
| 316 elements.push('T'); | |
| 317 elements.push(pathSeg.x); | |
| 318 elements.push(pathSeg.y); | |
| 319 break; | |
| 320 case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: | |
| 321 elements.push('t'); | |
| 322 elements.push(pathSeg.x); | |
| 323 elements.push(pathSeg.y); | |
| 324 break; | |
| 325 default: | |
| 326 console.log('Invalid path segment type ' + pathSeg.pathSegType); | |
| 327 return null; | |
| 328 } | |
| 329 } | |
| 330 return elements.join(' ').replace('false', '0').replace('true', '1'); | |
| 331 } | |
| 332 | |
| 333 function serializeSVGPointList(pointList) { | 205 function serializeSVGPointList(pointList) { |
| 334 var elements = []; | 206 var elements = []; |
| 335 for (var index = 0; index < pointList.numberOfItems; ++index) { | 207 for (var index = 0; index < pointList.numberOfItems; ++index) { |
| 336 var point = pointList.getItem(index); | 208 var point = pointList.getItem(index); |
| 337 elements.push(point.x); | 209 elements.push(point.x); |
| 338 elements.push(point.y); | 210 elements.push(point.y); |
| 339 } | 211 } |
| 340 return String(elements); | 212 return String(elements); |
| 341 } | 213 } |
| 342 | 214 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 | 267 |
| 396 // The attribute 'orient' is exposed in IDL as 'orientType' and 'orientAngle
' | 268 // The attribute 'orient' is exposed in IDL as 'orientType' and 'orientAngle
' |
| 397 if (attributeName === 'orient') { | 269 if (attributeName === 'orient') { |
| 398 if (element['orientType'] && element['orientType'].animVal === SVGMarkerEl
ement.SVG_MARKER_ORIENT_AUTO) | 270 if (element['orientType'] && element['orientType'].animVal === SVGMarkerEl
ement.SVG_MARKER_ORIENT_AUTO) |
| 399 return 'auto'; | 271 return 'auto'; |
| 400 attributeName = 'orientAngle'; | 272 attributeName = 'orientAngle'; |
| 401 } | 273 } |
| 402 | 274 |
| 403 var result; | 275 var result; |
| 404 if (attributeName === 'd') | 276 if (attributeName === 'd') |
| 405 result = element['animatedPathSegList']; | 277 result = element.getAttribute('d'); |
| 406 else if (attributeName === 'points') | 278 else if (attributeName === 'points') |
| 407 result = element['animatedPoints']; | 279 result = element['animatedPoints']; |
| 408 else | 280 else |
| 409 result = element[attributeName].animVal; | 281 result = element[attributeName].animVal; |
| 410 | 282 |
| 411 if (!result) { | 283 if (!result) { |
| 412 if (attributeName === 'pathLength') | 284 if (attributeName === 'pathLength') |
| 413 return '0'; | 285 return '0'; |
| 414 if (attributeName === 'preserveAlpha') | 286 if (attributeName === 'preserveAlpha') |
| 415 return 'false'; | 287 return 'false'; |
| 416 | 288 |
| 417 console.log('Unknown attribute, cannot get ' + element.className.baseVal +
' ' + attributeName); | 289 console.log('Unknown attribute, cannot get ' + element.className.baseVal +
' ' + attributeName); |
| 418 return null; | 290 return null; |
| 419 } | 291 } |
| 420 | 292 |
| 421 if (result instanceof SVGAngle || result instanceof SVGLength) | 293 if (result instanceof SVGAngle || result instanceof SVGLength) |
| 422 result = result.value; | 294 result = result.value; |
| 423 else if (result instanceof SVGLengthList) | 295 else if (result instanceof SVGLengthList) |
| 424 result = serializeSVGLengthList(result); | 296 result = serializeSVGLengthList(result); |
| 425 else if (result instanceof SVGNumberList) | 297 else if (result instanceof SVGNumberList) |
| 426 result = serializeSVGNumberList(result); | 298 result = serializeSVGNumberList(result); |
| 427 else if (result instanceof SVGPathSegList) | |
| 428 result = serializeSVGPathSegList(result); | |
| 429 else if (result instanceof SVGPointList) | 299 else if (result instanceof SVGPointList) |
| 430 result = serializeSVGPointList(result); | 300 result = serializeSVGPointList(result); |
| 431 else if (result instanceof SVGPreserveAspectRatio) | 301 else if (result instanceof SVGPreserveAspectRatio) |
| 432 result = serializeSVGPreserveAspectRatio(result); | 302 result = serializeSVGPreserveAspectRatio(result); |
| 433 else if (result instanceof SVGRect) | 303 else if (result instanceof SVGRect) |
| 434 result = serializeSVGRect(result); | 304 result = serializeSVGRect(result); |
| 435 else if (result instanceof SVGTransformList) | 305 else if (result instanceof SVGTransformList) |
| 436 result = serializeSVGTransformList(result); | 306 result = serializeSVGTransformList(result); |
| 437 | 307 |
| 438 if (typeof result !== 'string' && typeof result !== 'number' && typeof resul
t !== 'boolean') { | 308 if (typeof result !== 'string' && typeof result !== 'number' && typeof resul
t !== 'boolean') { |
| 439 console.log('Attribute value has unexpected type: ' + result); | 309 console.log('Attribute value has unexpected type: ' + result); |
| 440 } | 310 } |
| 441 | 311 |
| 442 return String(result); | 312 return String(result); |
| 443 } | 313 } |
| 444 | 314 |
| 445 function setAttributeValue(element, attributeName, expectation) { | 315 function setAttributeValue(element, attributeName, expectation) { |
| 446 if (!element[attributeName] | 316 if (!element[attributeName] |
| 447 && attributeName !== 'class' | 317 && attributeName !== 'class' |
| 448 && (attributeName !== 'd' || !element['pathSegList']) | 318 && attributeName !== 'd' |
| 449 && (attributeName !== 'in' || !element['in1']) | 319 && (attributeName !== 'in' || !element['in1']) |
| 450 && (attributeName !== 'orient' || !element['orientType']) | 320 && (attributeName !== 'orient' || !element['orientType']) |
| 451 && (animatedNumberOptionalNumberAttributes.indexOf(attributeName) === -1
|| !element[attributeName + 'X'])) { | 321 && (animatedNumberOptionalNumberAttributes.indexOf(attributeName) === -1
|| !element[attributeName + 'X'])) { |
| 452 console.log('Unknown attribute, cannot set ' + element.className.baseVal +
' ' + attributeName); | 322 console.log('Unknown attribute, cannot set ' + element.className.baseVal +
' ' + attributeName); |
| 453 return; | 323 return; |
| 454 } | 324 } |
| 455 | 325 |
| 456 if (attributeName === 'class') { | 326 if (attributeName === 'class') { |
| 457 // Preserve the existing classes as we use them to select elements. | 327 // Preserve the existing classes as we use them to select elements. |
| 458 expectation = element['className'].baseVal + ' ' + expectation; | 328 expectation = element['className'].baseVal + ' ' + expectation; |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 setTimeout(function() { | 525 setTimeout(function() { |
| 656 if (finished) { | 526 if (finished) { |
| 657 return; | 527 return; |
| 658 } | 528 } |
| 659 finishTest(); | 529 finishTest(); |
| 660 }, 5000); | 530 }, 5000); |
| 661 } | 531 } |
| 662 | 532 |
| 663 window.assertAttributeInterpolation = assertAttributeInterpolation; | 533 window.assertAttributeInterpolation = assertAttributeInterpolation; |
| 664 })(); | 534 })(); |
| OLD | NEW |