summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js')
-rw-r--r--third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js
new file mode 100644
index 0000000..f8c0833
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-imageSmoothingEnabled-repaint.js
@@ -0,0 +1,73 @@
+// This is a regression test for bug https://bugs.webkit.org/show_bug.cgi?id=89018
+
+description("Tests that disabling the imageSmoothingEnabled attribute still works after multiple repaints");
+var dstCanvas = document.getElementById("destination");
+var dstCtx = dstCanvas.getContext('2d');
+var srcCanvas = document.getElementById("source");
+var srcCtx = srcCanvas.getContext('2d');
+
+
+var srcCanvas, srcCtx, dstCanvas, dstCtx;
+
+function draw()
+{
+ srcCtx.clearRect(0, 0, 300, 300);
+ dstCtx.clearRect(0, 0, 300, 300);
+ srcCtx.fillStyle = "rgb(255, 0, 0)";
+ srcCtx.fillRect(0, 0, 1, 1);
+ srcCtx.fillStyle = "rgb(0, 255, 0)";
+ srcCtx.fillRect(1, 0, 1, 1);
+ dstCtx.webkitImageSmoothingEnabled = false;
+ dstCtx.drawImage(srcCanvas, 0, 0, 2, 1, 0, 0, 300, 300);
+}
+
+function testResult() {
+ debug("Test that the image is not filtered");
+ left_of_center_pixel = dstCtx.getImageData(149, 150, 1, 1);
+ shouldBe("left_of_center_pixel.data[0]", "255");
+ shouldBe("left_of_center_pixel.data[1]", "0");
+ shouldBe("left_of_center_pixel.data[2]", "0");
+ right_of_center_pixel = dstCtx.getImageData(150, 150, 1, 1);
+ shouldBe("right_of_center_pixel.data[0]", "0");
+ shouldBe("right_of_center_pixel.data[1]", "255");
+ shouldBe("right_of_center_pixel.data[2]", "0");
+ finishJSTest();
+}
+
+// Bug 89018 requires 2 draw iteration in order to manifest itself.
+var drawIterations = 2;
+
+// Unrolled repaint loop for running the test in DumpRenderTree
+function TestControllerPaint() {
+ while (drawIterations > 0) {
+ draw();
+ layoutTestController.display();
+ drawIterations = drawIterations - 1;
+ }
+ draw();
+ testResult();
+}
+
+// Repaint loop for running the test in the browser
+function BrowserPaint(){
+ draw();
+ if (drawIterations > 0) {
+ drawIterations = drawIterations - 1;
+ window.webkitRequestAnimationFrame(BrowserPaint);
+ } else {
+ testResult();
+ }
+}
+
+function onLoadHandler()
+{
+ if (window.layoutTestController) {
+ TestControllerPaint();
+ } else {
+ BrowserPaint();
+ }
+}
+
+window.jsTestIsAsync = true;
+window.onload = onLoadHandler;
+