summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/test_hitregion_event.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/test_hitregion_event.html')
-rw-r--r--dom/canvas/test/test_hitregion_event.html93
1 files changed, 93 insertions, 0 deletions
diff --git a/dom/canvas/test/test_hitregion_event.html b/dom/canvas/test/test_hitregion_event.html
new file mode 100644
index 000000000..4f74d8200
--- /dev/null
+++ b/dom/canvas/test/test_hitregion_event.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Test click events on canvas hit regions</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<p id="display">
+<canvas id="input">
+</canvas>
+</p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script type="application/javascript">
+SpecialPowers.pushPrefEnv({"set": [["canvas.hitregions.enabled", true]]}, function() {
+
+ var input = document.getElementById("input");
+ var regionId = "";
+ input.addEventListener('mousedown', function(evt){
+ regionId = evt.region;
+ })
+
+ function runTests()
+ {
+ try {
+ var ctx = input.getContext("2d");
+ ctx.beginPath();
+ ctx.rect(20, 20, 100, 75);
+ ctx.fill();
+ ctx.addHitRegion({id: "a"});
+
+ ctx.beginPath();
+ ctx.fillStyle = "red";
+ ctx.rect(60, 40, 100, 75);
+ ctx.fill();
+ ctx.addHitRegion({id: "b"});
+
+ var mypath = new Path2D();
+ mypath.rect(80, 60, 10, 10);
+
+ ctx.beginPath();
+ ctx.fillStyle = "yellow";
+ ctx.rect(80, 60, 10, 10);
+ ctx.fill();
+ ctx.addHitRegion({id: "c", path: mypath});
+
+ ctx.beginPath();
+ ctx.fillStyle = "green";
+ ctx.rect(60, 60, 10, 10); // This region is on purpose not the hit region
+ ctx.fill();
+ var mypath = new Path2D();
+ mypath.rect(70, 30, 10, 10);
+ ctx.addHitRegion({id: "d", path: mypath});
+
+ synthesizeMouse(input, 25,25, {type: "mousedown"});
+ is(regionId, "a", "Hit region a", ". Found: " + regionId);
+
+ synthesizeMouse(input, 5,5, {type: "mousedown", button: 1});
+ is(regionId, "", "Hit region null", ". Found: " + regionId);
+
+ synthesizeMouse(input, 65,45, {type: "mousedown"});
+ is(regionId, "b", "Hit region b", ". Found: " + regionId);
+
+ synthesizeMouse(input, 85,65, {type: "mousedown"});
+ is(regionId, "c", "Hit region c", ". Found: " + regionId);
+
+ synthesizeMouse(input, 75,35, {type: "mousedown"});
+ is(regionId, "d", "Hit region d", ". Found: " + regionId);
+
+ ctx.removeHitRegion("c");
+ synthesizeMouse(input, 85,65, {type: "mousedown"});
+ is(regionId, "b", "Hit region b", ". Found: " + regionId);
+ } catch (e) {
+ ok(false, "unexpected exception thrown: " + e);
+ }
+
+ SimpleTest.finish();
+ }
+
+ runTests();
+});
+
+SimpleTest.waitForExplicitFinish();
+
+
+</script>
+</pre>
+</body>
+</html>