href-mpath-element.html (3867B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <title>Href - mpath element tests</title> 4 <script src='/resources/testharness.js'></script> 5 <script src='/resources/testharnessreport.js'></script> 6 <script src='testcommon.js'></script> 7 <body> 8 <div id='log'></div> 9 <svg id='svg' width='100' height='100' viewBox='0 0 100 100'></svg> 10 <script> 11 'use strict'; 12 13 promise_test(function(t) { 14 var svg = document.getElementById('svg'); 15 var path1 = createSVGElement(t, 'path', svg, 16 { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); 17 var path2 = createSVGElement(t, 'path', svg, 18 { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); 19 var rect = createSVGElement(t, 'rect', svg, 20 { 'width': '10px', 'height': '10px' }); 21 var animateMotion = createSVGElement(t, 'animateMotion', rect, 22 { 'dur': '10s' }); 23 var mpath = createSVGElement(t, 'mpath', animateMotion); 24 mpath.setAttribute('href', '#MyPath1'); 25 mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); 26 assert_equals(mpath.href.baseVal, '#MyPath1'); 27 28 return waitEvent(animateMotion, 'beginEvent').then(function() { 29 svg.pauseAnimations(); 30 svg.setCurrentTime(1); 31 var ctm = rect.getCTM(); 32 assert_equals(ctm.e, 10); 33 assert_equals(ctm.f, 0); 34 35 svg.setCurrentTime(5); 36 ctm = rect.getCTM(); 37 assert_equals(ctm.e, 50); 38 assert_equals(ctm.f, 0); 39 }); 40 }, 'Test for mpath when setting both href and xlink:href'); 41 42 promise_test(function(t) { 43 var svg = document.getElementById('svg'); 44 var path1 = createSVGElement(t, 'path', svg, 45 { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); 46 var path2 = createSVGElement(t, 'path', svg, 47 { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); 48 var rect = createSVGElement(t, 'rect', svg, 49 { 'width': '10px', 'height': '10px' }); 50 var animateMotion = createSVGElement(t, 'animateMotion', rect, 51 { 'dur': '10s' }); 52 var mpath = createSVGElement(t, 'mpath', animateMotion); 53 mpath.setAttribute('href', '#MyPath1'); 54 mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); 55 56 return waitEvent(animateMotion, 'beginEvent').then(function() { 57 svg.pauseAnimations(); 58 svg.setCurrentTime(5); 59 var ctm = rect.getCTM(); 60 assert_equals(ctm.e, 50); 61 assert_equals(ctm.f, 0); 62 63 mpath.removeAttribute('href'); 64 assert_equals(mpath.href.baseVal, '#MyPath2'); 65 66 ctm = rect.getCTM(); 67 assert_equals(ctm.e, 0); 68 assert_equals(ctm.f, 50); 69 }); 70 }, 'Test for mpath when removing href but we still have xlink:href'); 71 72 promise_test(function(t) { 73 var svg = document.getElementById('svg'); 74 var path1 = createSVGElement(t, 'path', svg, 75 { 'id': 'MyPath1', 'd': 'M 0,0 L 100,0' }); 76 var path2 = createSVGElement(t, 'path', svg, 77 { 'id': 'MyPath2', 'd': 'M 0,0 L 0,100' }); 78 var rect = createSVGElement(t, 'rect', svg, 79 { 'width': '10px', 'height': '10px' }); 80 var animateMotion = createSVGElement(t, 'animateMotion', rect, 81 { 'dur': '10s' }); 82 var mpath = createSVGElement(t, 'mpath', animateMotion); 83 mpath.setAttribute('href', '#MyPath1'); 84 mpath.setAttributeNS(XLINKNS, 'xlink:href', '#MyPath2'); 85 86 return waitEvent(animateMotion, 'beginEvent').then(function() { 87 svg.pauseAnimations(); 88 svg.setCurrentTime(5); 89 var ctm = rect.getCTM(); 90 assert_equals(ctm.e, 50); 91 assert_equals(ctm.f, 0); 92 93 mpath.removeAttributeNS(XLINKNS, 'href'); 94 assert_equals(mpath.href.baseVal, '#MyPath1'); 95 96 ctm = rect.getCTM(); 97 assert_equals(ctm.e, 50); 98 assert_equals(ctm.f, 0); 99 }); 100 }, 'Test for mpath when removing xlink:href but we still have href'); 101 102 </script> 103 </body>