Index: LayoutTests/fast/events/hit-test-clip-path-reference.html |
diff --git a/LayoutTests/fast/events/hit-test-clip-path-reference.html b/LayoutTests/fast/events/hit-test-clip-path-reference.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9605445c5648756d511bfa49af15353d317bf78e |
--- /dev/null |
+++ b/LayoutTests/fast/events/hit-test-clip-path-reference.html |
@@ -0,0 +1,77 @@ |
+<!DOCTYPE html> |
+<style> |
+#d { |
+ width: 180px; |
+ height: 180px; |
+ border: 1px solid black; |
+} |
+#clip { |
+ width: 160px; |
+ height: 160px; |
+ margin: 10px; |
+ background-color: green; |
+ z-index: 1; |
+ -webkit-clip-path: url(#c1); |
+} |
+#reference-box { |
+ width: 64px; |
+ height: 64px; |
+ background-color: red; |
+ position: relative; |
+ top: -122px; |
+ left: 58px; |
+ z-index: -1; |
+} |
+</style> |
+<svg height="0"> |
+ <clipPath id="c1" clipPathUnits="objectBoundingBox"> |
+ <circle cx="0.5" cy="0.5" r="0.2"> |
+ </clipPath> |
+</svg> |
+<div id="d"> |
+ <div id="clip"></div> |
+ <div id="reference-box"></div> |
+</div> |
+ |
+<script src="../../resources/js-test.js"></script> |
+<script> |
+description("Test that hit-test work with clip-path using svg reference"); |
+ |
+onload = function() { |
+ var clipElement = document.getElementById('clip'); |
+ var referenceElement = document.getElementById('reference-box'); |
+ var resultString = ""; |
+ |
+ var circleBoundingRect = referenceElement.getBoundingClientRect(); |
+ var center_x = (circleBoundingRect.left + circleBoundingRect.right) / 2; |
+ var center_y = (circleBoundingRect.top + circleBoundingRect.bottom) / 2; |
+ var pointsInPath = [ |
+ {x: center_x, y: center_y}, |
+ {x: center_x - 5, y: center_y - 5}, |
+ {x: center_x + 5, y: center_y + 5}, |
+ {x: center_x - 5, y: center_y + 5}, |
+ {x: center_x + 5, y: center_y - 5}, |
+ ]; |
+ |
+ var pointsNotInPath = [ |
+ {x: circleBoundingRect.left, |
+ y: circleBoundingRect.top}, |
+ {x: circleBoundingRect.left - 1, |
+ y: circleBoundingRect.top - 1}, |
+ {x: circleBoundingRect.left + 1, |
+ y: circleBoundingRect.top + 1}, |
+ ]; |
+ |
+ pointsInPath.forEach( function(point) { |
+ var pass = (clipElement == document.elementFromPoint(point.x, point.y)); |
+ resultString += ((pass) ? "PASS" : "FAIL") + " path contains point at (" + point.x + ", " + point.y + ")\n"; |
+ }); |
+ |
+ pointsNotInPath.forEach( function(point) { |
+ var pass = (clipElement != document.elementFromPoint(point.x, point.y)); |
+ resultString += ((pass) ? "PASS" : "FAIL") + " path does not contain point at (" + point.x + ", " + point.y + ")\n"; |
+ }); |
+ debug(resultString); |
+} |
+ |
+</script> |