test_getCTM.html (6284B)
1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=366697 5 --> 6 <head> 7 <title>Test for Bug 366697</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 <style> 11 #padsvg1 { padding-left: 27px; padding-top: 43px; } 12 #transrect1 { transform: scale(2,3); } 13 </style> 14 </head> 15 <body> 16 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=366697">Mozilla Bug 366697</a> 17 <p id="display"></p> 18 <div id="content" style="display: none"></div> 19 20 <iframe id="svg" src="getCTM-helper.svg"></iframe> 21 22 <svg id="padsvg1" width="100" height="100"> 23 <rect id="transrect1" width="10" height="10" /> 24 </svg> 25 26 <pre id="test"> 27 <script class="testbody" type="application/javascript"> 28 SimpleTest.waitForExplicitFinish(); 29 30 function isMatrix(actual, expected, s) { 31 is(actual.a, expected.a, s + " a"); 32 is(actual.b, expected.b, s + " b"); 33 is(actual.c, expected.c, s + " c"); 34 is(actual.d, expected.d, s + " d"); 35 is(actual.e, expected.e, s + " e"); 36 is(actual.f, expected.f, s + " f"); 37 } 38 39 function runTest() { 40 let doc = $("svg").contentWindow.document; 41 42 /* Minimal */ 43 let buggy = doc.getElementById("buggy"); 44 is(buggy.getCTM().e, 30, "buggy.getCTM().e"); 45 is(buggy.getCTM().f, 40, "buggy.getCTM().f"); 46 47 let transrect1 = document.getElementById("transrect1"); 48 is(transrect1.getCTM().a, 2, "transrect1.getCTM().a"); 49 is(transrect1.getCTM().d, 3, "transrect1.getCTM().d"); 50 51 let padsvg1 = document.getElementById("padsvg1"); 52 let ctm = padsvg1.getScreenCTM(); 53 let rect = padsvg1.getBoundingClientRect(); 54 isfuzzy(ctm.e - rect.x, 27, 0.0001, "padsvg1.getScreenCTM().e"); 55 is(ctm.f - rect.y, 43, "padsvg1.getScreenCTM().f"); 56 57 let root = doc.documentElement; 58 const identity = root.createSVGMatrix(); 59 let inner = doc.getElementById("inner"); 60 let g1 = doc.getElementById("g1"); 61 let outer = doc.getElementById("outer"); 62 let outer2 = doc.getElementById("outer2"); 63 let g2 = doc.getElementById("g2"); 64 let g3 = doc.getElementById("g3"); 65 let g4 = doc.getElementById("g4"); 66 let g5 = doc.getElementById("g5"); 67 let symbolRect = doc.getElementById("symbolRect"); 68 let fO = doc.getElementById("fO"); 69 isMatrix((function() { try { return root.getCTM(); } catch (e) { return e; } })(), identity, "root.getCTM()"); 70 is((function() { try { return inner.getCTM().e; } catch (e) { return e; } })(), 1, "inner.getCTM().e"); 71 is((function() { try { return inner.getCTM().f; } catch (e) { return e; } })(), 2, "inner.getCTM().f"); 72 is((function() { try { return g1.getCTM().e; } catch (e) { return e; } })(), 30, "g1.getCTM().e"); 73 is((function() { try { return g1.getCTM().f; } catch (e) { return e; } })(), 40, "g1.getCTM().f"); 74 isMatrix((function() { try { return outer.getCTM(); } catch (e) { return e; } })(), identity, "outer.getCTM()"); 75 is((function() { try { return g2.getCTM().e; } catch (e) { return e; } })(), 600, "g2.getCTM().e"); 76 is((function() { try { return g2.getCTM().f; } catch (e) { return e; } })(), 700, "g2.getCTM().f"); 77 isMatrix((function() { try { return g3.getCTM(); } catch (e) { return e; } })(), identity, "g3.getCTM()"); 78 is((function() { try { return g4.getCTM().e; } catch (e) { return e; } })(), 1, "g4.getCTM().e"); 79 is((function() { try { return g4.getCTM().f; } catch (e) { return e; } })(), 2, "g4.getCTM().f"); 80 is((function() { try { return symbolRect.getCTM().e; } catch (e) { return e; } })(), 71, "symbolRect.getCTM().e"); 81 is((function() { try { return symbolRect.getCTM().f; } catch (e) { return e; } })(), 82, "symbolRect.getCTM().f"); 82 is((function() { try { return fO.getCTM().e; } catch (e) { return e; } })(), 2, "fO.getCTM().e"); 83 is((function() { try { return fO.getCTM().f; } catch (e) { return e; } })(), 3, "fO.getCTM().f"); 84 let m = root.createSVGMatrix(); 85 m.e = 439; 86 isMatrix((function() { try { return g5.getCTM(); } catch (e) { return e; } })(), m, "g5.getCTM()"); 87 88 is((function() { try { return root.getScreenCTM().e; } catch (e) { return e; } })(), 11, "root.getScreenCTM().e"); 89 is((function() { try { return root.getScreenCTM().f; } catch (e) { return e; } })(), 22, "root.getScreenCTM().f"); 90 is((function() { try { return inner.getScreenCTM().e; } catch (e) { return e; } })(), 15, "inner.getScreenCTM().e"); 91 is((function() { try { return inner.getScreenCTM().f; } catch (e) { return e; } })(), 28, "inner.getScreenCTM().f"); 92 is((function() { try { return g1.getScreenCTM().e; } catch (e) { return e; } })(), 45, "g1.getScreenCTM().e"); 93 is((function() { try { return g1.getScreenCTM().f; } catch (e) { return e; } })(), 68, "g1.getScreenCTM().f"); 94 is((function() { try { return outer.getScreenCTM().e; } catch (e) { return e; } })(), 46, "outer.getScreenCTM().e"); 95 is((function() { try { return outer.getScreenCTM().f; } catch (e) { return e; } })(), 69, "outer.getScreenCTM().f"); 96 is((function() { try { return outer2.getScreenCTM().e; } catch (e) { return e; } })(), -4, "outer2.getScreenCTM().e"); 97 is((function() { try { return outer2.getScreenCTM().f; } catch (e) { return e; } })(), 19, "outer2.getScreenCTM().f"); 98 is((function() { try { return g2.getScreenCTM().e; } catch (e) { return e; } })(), 646, "g2.getScreenCTM().e"); 99 is((function() { try { return g2.getScreenCTM().f; } catch (e) { return e; } })(), 769, "g2.getScreenCTM().f"); 100 isMatrix((function() { try { return g3.getScreenCTM(); } catch (e) { return e; } })(), identity, "g3.getScreenCTM()"); 101 is((function() { try { return symbolRect.getScreenCTM().e; } catch (e) { return e; } })(), 85, "symbolRect.getScreenCTM().e"); 102 is((function() { try { return symbolRect.getScreenCTM().f; } catch (e) { return e; } })(), 108, "symbolRect.getScreenCTM().f"); 103 is((function() { try { return fO.getScreenCTM().e; } catch (e) { return e; } })(), 16, "symbolRect.getScreenCTM().e"); 104 is((function() { try { return fO.getScreenCTM().f; } catch (e) { return e; } })(), 29, "symbolRect.getScreenCTM().f"); 105 m.e = 454; 106 m.f = 28; 107 isMatrix((function() { try { return g5.getScreenCTM(); } catch (e) { return e; } })(), m, "g5.getScreenCTM()"); 108 109 SimpleTest.finish(); 110 } 111 112 window.addEventListener("load", runTest); 113 </script> 114 </pre> 115 </body> 116 </html>