Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Unified Diff: LayoutTests/fast/events/elementsFromPoint-iframes.html

Issue 869813003: Implement elementsFromPoint (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix Internals.cpp for touch adjustment Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/events/elementsFromPoint-iframes.html
diff --git a/LayoutTests/fast/events/elementsFromPoint-iframes.html b/LayoutTests/fast/events/elementsFromPoint-iframes.html
new file mode 100644
index 0000000000000000000000000000000000000000..7dbda36cccce7ba19a8be7c3964ebcb8578b78e2
--- /dev/null
+++ b/LayoutTests/fast/events/elementsFromPoint-iframes.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML>
+<script src="../../resources/js-test.js"></script>
+<style>
+html, body {
+ margin: 0;
+ padding: 0;
+}
+body {
+ height: 500px;
+}
+#iframe {
+ width: 200px;
+ height: 200px;
+}
+#iframeScrollbars {
+ position: absolute;
+ top: 0;
+ left: 0;
+ transform: translate(50px, 50px);
+ width: 150px;
+ height: 150px;
+ overflow-y: scroll;
Rick Byers 2015/02/20 20:02:24 great test case - I've also seen hit-testing probl
+ overflow-x: scroll;
+}
+</style>
+<iframe id="iframe" src="data:text/html,<div id='div' style='width: 100px; height: 100px; background: red'></div>"></iframe>
+<iframe id="iframeScrollbars" src="data:text/html,<div id='big' style='width: 500px; height: 500px; background: blue;'></div><div id='div' style='position: absolute; top: 0; left: 0; width: 100px; height: 100px; background: green;'>"></iframe>
+<div id="console"></div>
+<script>
+window.jsTestIsAsync = true;
+if (window.testRunner)
+ testRunner.dumpAsText();
+
+function assertElementInSequence(sequence, value, expectedInSequence) {
+ if (expectedInSequence)
+ shouldBeGreaterThanOrEqual(sequence + '.indexOf(' + value + ')', '0');
+ else
+ shouldBeEqualToNumber(sequence + '.indexOf(' + value + ')', -1);
+}
+
+function checkElementsFromPointFourCorners(evalDoc, evalElement) {
+ var element = eval(evalElement);
+ var shouldReceivePointerEvents = window.getComputedStyle(element).pointerEvents != "none";
+ var rect = element.getBoundingClientRect();
+
+ var topLeft = (rect.left + 1) + ', ' + (rect.top + 1);
+ var topRight = (rect.right - 1) + ', ' + (rect.top + 1);
+ var bottomLeft = (rect.left + 1) + ', ' + (rect.bottom - 1);
+ var bottomRight = (rect.right - 1) + ', ' + (rect.bottom - 1);
+ assertElementInSequence(evalDoc + '.elementsFromPoint(' + topLeft + ')', evalElement, shouldReceivePointerEvents);
+ assertElementInSequence(evalDoc + '.elementsFromPoint(' + topRight + ')', evalElement, shouldReceivePointerEvents);
+ assertElementInSequence(evalDoc + '.elementsFromPoint(' + bottomLeft + ')', evalElement, shouldReceivePointerEvents);
+ assertElementInSequence(evalDoc + '.elementsFromPoint(' + bottomRight + ')', evalElement, shouldReceivePointerEvents);
+}
+
+onload = function() {
+ checkElementsFromPointFourCorners('document', 'iframe');
+ checkElementsFromPointFourCorners('document.getElementById(\'iframe\').contentDocument', 'document.getElementById(\'iframe\').contentDocument.getElementById(\'div\')');
+ checkElementsFromPointFourCorners('document', 'iframeScrollbars');
+ checkElementsFromPointFourCorners('document.getElementById(\'iframeScrollbars\').contentDocument', 'document.getElementById(\'iframeScrollbars\').contentDocument.getElementById(\'div\')');
+
+ // Ensure that elements outside the inner document's viewport are not returned.
+ shouldBeEqualToNumber('document.getElementById(\'iframeScrollbars\').contentDocument.elementsFromPoint(-1, -1).length', 0);
+ shouldBeEqualToNumber('document.getElementById(\'iframeScrollbars\').contentDocument.elementsFromPoint(1, 1).length', 2);
+ shouldBeEqualToNumber('document.getElementById(\'iframeScrollbars\').contentDocument.elementsFromPoint(500, 500).length', 0);
+ shouldBeEqualToNumber('document.getElementById(\'iframeScrollbars\').contentDocument.elementsFromPoint(140, 140).length', 0);
+
+ finishJSTest();
+}
+</script>

Powered by Google App Engine
This is Rietveld 408576698