<!DOCTYPE html> <style> #shadow { overflow: hidden; position: absolute; box-shadow: 0 0 50px #000; height: 100px; width: 100px; } #content { display: block; height: 200px; width: 200px; background: rgba(0,255,0,0.3); } </style> <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) testRunner.dumpAsText(); function click(x, y) { if (window.eventSender) { eventSender.mouseMoveTo(x, y); eventSender.mouseDown(); eventSender.mouseUp(); } } function test(name, fn) { debug("<br>" + name); fn(); } description("This test checks that div block should not get events on clicking the shadow outside div block."); function runTests() { test("Focus should remain in the textarea", function() { var textarea = document.getElementById("content"); var rect = textarea.getBoundingClientRect(); click(rect.left + 5, rect.top + 5); shouldBeEqualToString("document.activeElement.tagName", "TEXTAREA"); }); // Click on the shadow at right of the div block. test("Focus should move to the body", function() { var shadow = document.getElementById("shadow"); var rect = shadow.getBoundingClientRect(); var x = rect.left + shadow.offsetWidth + 5; var y = rect.top + 5; click(x, y); shouldBeEqualToString("document.activeElement.tagName", "BODY"); }); // Focus on the textarea to prepare for the next test. test("Focus should remain in the textarea", function() { var textarea = document.getElementById("content"); var rect = textarea.getBoundingClientRect(); click(rect.left + 5, rect.top + 5); shouldBeEqualToString("document.activeElement.tagName", "TEXTAREA"); }); // Click on the shadow at bottom of the div block. test("Focus should move to the body", function() { var shadow = document.getElementById("shadow"); var rect = shadow.getBoundingClientRect(); var x = rect.left + 5; var y = rect.top + shadow.offsetHeight + 5; click(x, y); shouldBeEqualToString("document.activeElement.tagName", "BODY"); }); } </script> <body onload="runTests();"> <div id="shadow"> <textarea id="content"></textarea> </div> </body>