diff options
Diffstat (limited to 'testing/web-platform/tests/svg/linking/scripted/href-mpath-element.html')
-rw-r--r-- | testing/web-platform/tests/svg/linking/scripted/href-mpath-element.html | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/testing/web-platform/tests/svg/linking/scripted/href-mpath-element.html b/testing/web-platform/tests/svg/linking/scripted/href-mpath-element.html new file mode 100644 index 000000000..8fb9f0f1a --- /dev/null +++ b/testing/web-platform/tests/svg/linking/scripted/href-mpath-element.html @@ -0,0 +1,103 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Href - mpath element tests</title> +<script src='/resources/testharness.js'></script> +<script src='/resources/testharnessreport.js'></script> +<script src='testcommon.js'></script> +<body> +<div id='log'></div> +<svg id='svg' width='100' height='100' viewBox='0 0 100 100'></svg> +<script> +'use strict'; + +promise_test(function(t) { + var svg = document.getElementById('svg'); + var path1 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); + var path2 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); + var rect = createSVGElement(t, 'rect', svg, + { 'width': '10px', 'height': '10px' }); + var animateMotion = createSVGElement(t, 'animateMotion', rect, + { 'dur': '10s' }); + var mpath = createSVGElement(t, 'mpath', animateMotion); + mpath.setAttribute('href', '#MyPath1'); + mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); + assert_equals(mpath.href.baseVal, '#MyPath1'); + + return waitEvent(animateMotion, 'begin').then(function() { + svg.pauseAnimations(); + svg.setCurrentTime(1); + var ctm = rect.getCTM(); + assert_equals(ctm.e, 10); + assert_equals(ctm.f, 0); + + svg.setCurrentTime(5); + ctm = rect.getCTM(); + assert_equals(ctm.e, 50); + assert_equals(ctm.f, 0); + }); +}, 'Test for mpath when setting both href and xlink:href'); + +promise_test(function(t) { + var svg = document.getElementById('svg'); + var path1 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); + var path2 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); + var rect = createSVGElement(t, 'rect', svg, + { 'width': '10px', 'height': '10px' }); + var animateMotion = createSVGElement(t, 'animateMotion', rect, + { 'dur': '10s' }); + var mpath = createSVGElement(t, 'mpath', animateMotion); + mpath.setAttribute('href', '#MyPath1'); + mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); + + return waitEvent(animateMotion, 'begin').then(function() { + svg.pauseAnimations(); + svg.setCurrentTime(5); + var ctm = rect.getCTM(); + assert_equals(ctm.e, 50); + assert_equals(ctm.f, 0); + + mpath.removeAttribute('href'); + assert_equals(mpath.href.baseVal, '#MyPath2'); + + ctm = rect.getCTM(); + assert_equals(ctm.e, 0); + assert_equals(ctm.f, 50); + }); +}, 'Test for mpath when removing href but we still have xlink:href'); + +promise_test(function(t) { + var svg = document.getElementById('svg'); + var path1 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); + var path2 = createSVGElement(t, 'path', svg, + { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); + var rect = createSVGElement(t, 'rect', svg, + { 'width': '10px', 'height': '10px' }); + var animateMotion = createSVGElement(t, 'animateMotion', rect, + { 'dur': '10s' }); + var mpath = createSVGElement(t, 'mpath', animateMotion); + mpath.setAttribute('href', '#MyPath1'); + mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); + + return waitEvent(animateMotion, 'begin').then(function() { + svg.pauseAnimations(); + svg.setCurrentTime(5); + var ctm = rect.getCTM(); + assert_equals(ctm.e, 50); + assert_equals(ctm.f, 0); + + mpath.removeAttributeNS(XLINKNS, 'href'); + assert_equals(mpath.href.baseVal, '#MyPath1'); + + ctm = rect.getCTM(); + assert_equals(ctm.e, 50); + assert_equals(ctm.f, 0); + }); +}, 'Test for mpath when removing xlink:href but we still have href'); + +</script> +</body> |