| Index: LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-ancestor-is-inert.html
|
| diff --git a/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-ancestor-is-inert.html b/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-ancestor-is-inert.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..554664cda1ea95290005c63cf299aa4ab54ef81a
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/dom/HTMLDialogElement/modal-dialog-ancestor-is-inert.html
|
| @@ -0,0 +1,111 @@
|
| +<!doctype html>
|
| +<html>
|
| +<head>
|
| +<style>
|
| +#ancestor {
|
| + position: absolute;
|
| + height: 50px;
|
| + width: 50px;
|
| + top: 200px;
|
| + left: 100px;
|
| + border: 1px solid;
|
| +}
|
| +
|
| +dialog {
|
| + height: 50px;
|
| + width: 50px;
|
| + top: 200px;
|
| + left: 200px;
|
| + margin: 0;
|
| +}
|
| +
|
| +dialog::backdrop {
|
| + display: none;
|
| +}
|
| +</style>
|
| +<script src="../../../resources/js-test.js"></script>
|
| +</head>
|
| +<body>
|
| +<div id="ancestor">
|
| + <dialog></dialog>
|
| +</div>
|
| +<script>
|
| +function clickOn(element)
|
| +{
|
| + var rect = element.getBoundingClientRect();
|
| + eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2);
|
| + eventSender.mouseDown();
|
| + eventSender.mouseUp();
|
| +}
|
| +
|
| +// For manual testing, indicate success only if automatic testing would also
|
| +// print success for all ancestor nodes.
|
| +function turnDivGreenOnSuccess()
|
| +{
|
| + if (handledEvent['document'] && handledEvent['body'] && handledEvent['div'])
|
| + div.style.backgroundColor = 'green';
|
| +}
|
| +
|
| +description('Test that ancestors of modal <dialog> are inert. To test manually, ' +
|
| + 'click the left box. There should be no change. Then click the right box. ' +
|
| + 'If both boxes turn green, the test passes.');
|
| +div = document.querySelector('#ancestor');
|
| +dialog = document.querySelector('dialog');
|
| +dialog.showModal();
|
| +
|
| +handledEvent = {};
|
| +document.addEventListener('click', function(event) {
|
| + handledEvent['document'] = true;
|
| + turnDivGreenOnSuccess();
|
| +});
|
| +
|
| +document.body.addEventListener('click', function(event) {
|
| + handledEvent['body'] = true;
|
| + turnDivGreenOnSuccess();
|
| + // body should get a event only via bubbling.
|
| + if (event.target != dialog) {
|
| + testFailed('body was targeted for an click event');
|
| + div.style.backgroundColor = 'red';
|
| + }
|
| +});
|
| +
|
| +div.addEventListener('click', function(event) {
|
| + handledEvent['div'] = true;
|
| + turnDivGreenOnSuccess();
|
| + // div should get a event only via bubbling.
|
| + if (event.target != dialog) {
|
| + testFailed('div was targeted for an click event');
|
| + div.style.backgroundColor = 'red';
|
| + }
|
| +});
|
| +
|
| +dialog.addEventListener('click', function(event) {
|
| + handledEvent['dialog'] = true;
|
| + dialog.style.backgroundColor = 'green';
|
| + if (event.target != dialog) {
|
| + testFailed('dialog was not targeted for a click event');
|
| + dialog.style.backgroundColor = 'red';
|
| + }
|
| +});
|
| +
|
| +if (window.eventSender) {
|
| + nodes = [ 'document', 'body', 'div', 'dialog' ];
|
| + nodes.map(function(node) { handledEvent[node] = false; });
|
| + debug('Clicking on ancestor');
|
| + clickOn(div);
|
| + shouldBeTrue('handledEvent.document');
|
| + shouldBeFalse('handledEvent.body');
|
| + shouldBeFalse('handledEvent.dialog');
|
| + shouldBeFalse('handledEvent.div');
|
| + handledEvent.document = false;
|
| +
|
| + debug('Clicking on dialog');
|
| + clickOn(dialog);
|
| + shouldBeTrue('handledEvent.document');
|
| + shouldBeTrue('handledEvent.body');
|
| + shouldBeTrue('handledEvent.dialog');
|
| + shouldBeTrue('handledEvent.div');
|
| +}
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|