1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/reftests/canvas/ctm-singular-sanity.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,53 @@ 1.4 +<html> 1.5 +<head> 1.6 + <script type="text/javascript"> 1.7 + 1.8 +function assert(cond, msg) { if (!cond) { throw msg; } } 1.9 + 1.10 +function isSameTM(m1, m2) { 1.11 + // XXX this is probably the ugliest possible way to write this function, 1.12 + // but it's intended to be lowest-common-denominator 1.13 + if (!(m1.length === 6 && m1.length === m2.length)) { 1.14 + return false; 1.15 + } 1.16 + for (var i = 0; i < m1.length; ++i) { 1.17 + if (m1[i] !== m2[i]) { 1.18 + return false; 1.19 + } 1.20 + } 1.21 + return true; 1.22 +} 1.23 + 1.24 +window.onload = function() { 1.25 + var IM = [ 1, 0, 0, 1, 0, 0 ]; 1.26 + 1.27 + try { 1.28 + var ctx = document.getElementById("c1").getContext("2d"); 1.29 + 1.30 + var singular = [ 0, 0, 0, 0, 0, 0 ]; 1.31 + ctx.mozCurrentTransform = singular; 1.32 + assert(isSameTM(singular, ctx.mozCurrentTransform), 1.33 + "Expected setting CTM to a singular matrix to work"); 1.34 + var inv = ctx.mozCurrentTransformInverse; 1.35 + assert(!isSameTM(inv, inv), 1.36 + "Expected to get back matrix of NaN's from currentTransformInverse"); 1.37 + ctx.mozCurrentTransform = IM; 1.38 + 1.39 + var m = [ 1, 2, 3, 4, 5, 6 ]; 1.40 + ctx.mozCurrentTransform = m; 1.41 + ctx.mozCurrentTransformInverse = singular; 1.42 + assert(isSameTM(m, ctx.mozCurrentTransform), 1.43 + "Setting currentTransformInverse to a singular matrix is a no-op"); 1.44 + ctx.mozCurrentTransform = IM; 1.45 + } catch (e) { 1.46 + document.body.innerHTML = "FAIL: "+ e.toString(); 1.47 + return; 1.48 + } 1.49 + document.body.innerHTML = "Pass"; 1.50 +} 1.51 + </script> 1.52 +</head> 1.53 +<body> 1.54 + <div><canvas id="c1" width="300" height="300"></canvas></div> 1.55 +</body> 1.56 +</html>