Index: LayoutTests/fast/canvas/canvas-hit-regions-basic-test.html |
diff --git a/LayoutTests/fast/canvas/canvas-hit-regions-basic-test.html b/LayoutTests/fast/canvas/canvas-hit-regions-basic-test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4d8179ed4d3091345ec58743d56b5aaf4449e954 |
--- /dev/null |
+++ b/LayoutTests/fast/canvas/canvas-hit-regions-basic-test.html |
@@ -0,0 +1,98 @@ |
+<!DOCTYPE html> |
+<html> |
+<head> |
+ <title>Canvas Hit Regions: basic test</title> |
+ <script src="../../resources/js-test.js"></script> |
+</head> |
+<body> |
+<canvas id="canvas" width="400" height="400"> |
+ <button id="face"></button> |
+ <button id="eyes"></button> |
+</canvas> |
+<script> |
+ |
+ var canvas = document.getElementById("canvas"); |
+ var context = canvas.getContext("2d"); |
+ |
+ function clickCanvas(x, y) |
+ { |
+ if (!window.eventSender) |
+ return "This test requires eventSender"; |
+ |
+ var result = null; |
+ function listener(event) |
+ { |
+ result = event.region; |
+ } |
+ |
+ var rect = canvas.getBoundingClientRect(); |
+ canvas.addEventListener("click", listener, false); |
+ eventSender.mouseMoveTo(rect.left + x, rect.top + y); |
+ eventSender.mouseDown(); |
+ eventSender.mouseUp(); |
+ canvas.removeEventListener("click", listener, false); |
+ |
+ return result; |
+ } |
+ |
+ context.fillStyle = "pink"; |
+ context.arc(200, 175, 150, 0, Math.PI * 2, true); |
+ context.fill(); |
+ context.addHitRegion({ id : "face", control : document.getElementById("face") }); |
+ |
+ context.beginPath(); |
+ context.fillStyle = "black"; |
+ context.globalAlpha = .5; |
+ context.moveTo(200, 165); |
+ context.lineTo(240, 205); |
+ context.lineTo(160, 205); |
+ context.closePath(); |
+ context.fill(); |
+ context.addHitRegion({ id : "nose" }); |
+ |
+ context.beginPath(); |
+ context.fillStyle = "red"; |
+ context.rect(125, 240, 150, 20); |
+ context.fill(); |
+ context.addHitRegion({ id : "mouth" }); |
+ |
+ context.beginPath(); |
+ context.globalAlpha = 1; |
+ context.fillStyle = "blue"; |
+ context.arc(150, 125, 25, 0, Math.PI * 2, true); |
+ context.arc(250, 125, 25, 0, Math.PI * 2, true); |
+ context.fill(); |
+ context.addHitRegion({ id: "eye", control : document.getElementById("eyes") }); |
+ |
+ debug("Hit detection and mouse event tests"); |
+ shouldBe("clickCanvas(100, 100)", "'face'"); |
+ shouldBe("clickCanvas(200, 200)", "'nose'"); |
+ shouldBe("clickCanvas(127, 242)", "'mouth'"); |
+ shouldBe("clickCanvas(150, 125)", "'eye'"); |
+ shouldBe("clickCanvas(250, 125)", "'eye'"); |
+ shouldBe("clickCanvas(200, 125)", "'face'"); |
+ shouldBe("clickCanvas(20, 10)", "null"); |
+ debug(""); |
+ |
+ debug("NotSupportedError exception tests"); |
+ shouldThrow("context.addHitRegion()"); |
+ shouldThrow("context.addHitRegion({ id : '' })"); |
+ shouldThrow("context.addHitRegion({ id : null })"); |
+ shouldThrow("context.addHitRegion({ id : undefined })"); |
+ shouldThrow("context.addHitRegion({ control : {} })"); |
+ shouldThrow("context.addHitRegion({ control : null })"); |
+ shouldThrow("context.addHitRegion({ control : undefined })"); |
+ shouldThrow("context.addHitRegion({ id : '', control : {} })"); |
+ shouldThrow("context.addHitRegion({ id : null, control : {} })"); |
+ shouldThrow("context.addHitRegion({ id : undefined, control : {} })"); |
+ shouldThrow("context.addHitRegion({ id : '', control : null })"); |
+ shouldThrow("context.addHitRegion({ id : null, control : null })"); |
+ shouldThrow("context.addHitRegion({ id : undefined, control : null })"); |
+ shouldThrow("context.addHitRegion({ id : '', control : undefined })"); |
+ shouldThrow("context.addHitRegion({ id : null, control : undefined })"); |
+ shouldThrow("context.addHitRegion({ id : undefined, control : undefined })"); |
+ debug(""); |
+ |
+</script> |
+</body> |
+</html> |