| OLD | NEW |
| (Empty) |
| 1 <html> | |
| 2 <head> | |
| 3 <script src="../../../http/tests/inspector/inspector-test.js"></script> | |
| 4 <script> | |
| 5 | |
| 6 var CanvasRenderingContext2DResource = {}; | |
| 7 | |
| 8 /** | |
| 9 * @const | |
| 10 * @type {Array.<string>} | |
| 11 */ | |
| 12 CanvasRenderingContext2DResource.AttributeProperties = [ | |
| 13 "strokeStyle", | |
| 14 "fillStyle", | |
| 15 "globalAlpha", | |
| 16 "lineWidth", | |
| 17 "lineCap", | |
| 18 "lineJoin", | |
| 19 "miterLimit", | |
| 20 "shadowOffsetX", | |
| 21 "shadowOffsetY", | |
| 22 "shadowBlur", | |
| 23 "shadowColor", | |
| 24 "globalCompositeOperation", | |
| 25 "font", | |
| 26 "textAlign", | |
| 27 "textBaseline", | |
| 28 "lineDashOffset", | |
| 29 "imageSmoothingEnabled", | |
| 30 // FIXME: Temporary properties implemented in JSC, but not in V8. | |
| 31 "webkitLineDash", | |
| 32 "webkitLineDashOffset" | |
| 33 ]; | |
| 34 | |
| 35 /** | |
| 36 * @const | |
| 37 * @type {Array.<string>} | |
| 38 */ | |
| 39 CanvasRenderingContext2DResource.PathMethods = [ | |
| 40 "beginPath", | |
| 41 "moveTo", | |
| 42 "closePath", | |
| 43 "lineTo", | |
| 44 "quadraticCurveTo", | |
| 45 "bezierCurveTo", | |
| 46 "arcTo", | |
| 47 "arc", | |
| 48 "rect", | |
| 49 "ellipse" | |
| 50 ]; | |
| 51 | |
| 52 /** | |
| 53 * @const | |
| 54 * @type {Array.<string>} | |
| 55 */ | |
| 56 CanvasRenderingContext2DResource.TransformationMatrixMethods = [ | |
| 57 "scale", | |
| 58 "rotate", | |
| 59 "translate", | |
| 60 "transform", | |
| 61 "setTransform", | |
| 62 "resetTransform" | |
| 63 ]; | |
| 64 | |
| 65 /** | |
| 66 * @const | |
| 67 * @type {Array.<string>} | |
| 68 */ | |
| 69 CanvasRenderingContext2DResource.IgnoreProperties = [ | |
| 70 "canvas", | |
| 71 "createLinearGradient", | |
| 72 "createRadialGradient", | |
| 73 "createPattern", | |
| 74 "save", | |
| 75 "restore", | |
| 76 "clip", | |
| 77 "getLineDash", | |
| 78 "setLineDash", | |
| 79 // Ignore the properties below. | |
| 80 "clearRect", | |
| 81 "clearShadow", | |
| 82 "createImageData", | |
| 83 "drawFocusIfNeeded", | |
| 84 "drawImage", | |
| 85 "drawImageFromRect", | |
| 86 "fill", | |
| 87 "fillRect", | |
| 88 "fillText", | |
| 89 "getContextAttributes", | |
| 90 "getImageData", | |
| 91 "isPointInPath", | |
| 92 "isPointInStroke", | |
| 93 "measureText", | |
| 94 "putImageData", | |
| 95 "setAlpha", | |
| 96 "setCompositeOperation", | |
| 97 "setFillColor", | |
| 98 "setLineCap", | |
| 99 "setLineJoin", | |
| 100 "setLineWidth", | |
| 101 "setMiterLimit", | |
| 102 "setShadow", | |
| 103 "setStrokeColor", | |
| 104 "stroke", | |
| 105 "strokeRect", | |
| 106 "strokeText", | |
| 107 ]; | |
| 108 | |
| 109 function collectPropertyNames(obj) | |
| 110 { | |
| 111 var propertyNames = []; | |
| 112 for (var property in obj) | |
| 113 propertyNames.push(property); | |
| 114 propertyNames.sort(); | |
| 115 return propertyNames; | |
| 116 } | |
| 117 | |
| 118 function test() | |
| 119 { | |
| 120 var canvas = document.createElement("canvas"); | |
| 121 var ctx = canvas.getContext("2d"); | |
| 122 if (!ctx) { | |
| 123 output("ERROR: Could not create canvas 2D context."); | |
| 124 return; | |
| 125 } | |
| 126 output("New properties and functions that should be manually examined (shoul
d be empty to pass the test):"); | |
| 127 var propertyNames = collectPropertyNames(ctx); | |
| 128 var trackedProperties = CanvasRenderingContext2DResource.AttributeProperties
.concat(CanvasRenderingContext2DResource.PathMethods, CanvasRenderingContext2DRe
source.TransformationMatrixMethods, CanvasRenderingContext2DResource.IgnorePrope
rties); | |
| 129 for (var i = 0; i < propertyNames.length; ++i) { | |
| 130 var property = propertyNames[i]; | |
| 131 if (trackedProperties.indexOf(property) !== -1) | |
| 132 continue; | |
| 133 output(property); | |
| 134 } | |
| 135 | |
| 136 var gradient = ctx.createLinearGradient(0, 0, 1, 1); | |
| 137 if (!gradient) { | |
| 138 output("ERROR: Could not create a gradient object."); | |
| 139 return; | |
| 140 } | |
| 141 output("New properties and functions of CanvasGradient object that should be
manually examined (should be empty to pass the test):"); | |
| 142 propertyNames = collectPropertyNames(gradient); | |
| 143 for (var i = 0; i < propertyNames.length; ++i) { | |
| 144 var property = propertyNames[i]; | |
| 145 if (property === "addColorStop") | |
| 146 continue; | |
| 147 output(property); | |
| 148 } | |
| 149 | |
| 150 var pattern = ctx.createPattern(canvas, "repeat"); | |
| 151 if (!pattern) { | |
| 152 output("ERROR: Could not create a pattern object."); | |
| 153 return; | |
| 154 } | |
| 155 output("New properties and functions of CanvasPattern object that should be
manually examined (should be empty to pass the test):"); | |
| 156 for (var property in pattern) { | |
| 157 if (property == "setTransform") | |
| 158 continue; | |
| 159 output(property); | |
| 160 } | |
| 161 } | |
| 162 | |
| 163 function runTest() | |
| 164 { | |
| 165 if (window.testRunner) { | |
| 166 testRunner.dumpAsText(); | |
| 167 testRunner.waitUntilDone(); | |
| 168 } | |
| 169 try { | |
| 170 test(); | |
| 171 } finally { | |
| 172 if (window.testRunner) | |
| 173 testRunner.notifyDone(); | |
| 174 } | |
| 175 } | |
| 176 | |
| 177 </script> | |
| 178 </head> | |
| 179 <body onload="runTest()"> | |
| 180 <p> | |
| 181 Test to catch Canvas 2D API changes. | |
| 182 If this test should ever fail, we should re-examine the Canvas 2D state saving/r
estoring logic in the | |
| 183 InjectedScriptModule to include any latest changes to the API. | |
| 184 | |
| 185 </p> | |
| 186 </body> | |
| 187 </html> | |
| OLD | NEW |