| Index: LayoutTests/fast/html/details-open-toggle-event.html
|
| diff --git a/LayoutTests/fast/html/details-open-toggle-event.html b/LayoutTests/fast/html/details-open-toggle-event.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f086cb8ae6bc8cd40201f0d29331ffd131d84a12
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/html/details-open-toggle-event.html
|
| @@ -0,0 +1,61 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<link rel="help" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#attr-details-open">
|
| +<script src="../../resources/js-test.js"></script>
|
| +</head>
|
| +<body>
|
| +<details id="details">
|
| + <summary>details</summary>
|
| + <input>
|
| +</details>
|
| +<script>
|
| +description("Tests that a 'toggle' event is fired asynchronously whenever the open attribute is added to or removed from a details element.");
|
| +window.jsTestIsAsync = true;
|
| +
|
| +var toggleEventCount = 0;
|
| +var testEvent;
|
| +
|
| +function handleToggleEvent(ev) {
|
| + testEvent = ev;
|
| + shouldBe("testEvent.__proto__", "Event.prototype");
|
| + shouldBeEqualToString("testEvent.type", "toggle");
|
| + ++toggleEventCount;
|
| +}
|
| +
|
| +function checkSingleToggleEvent() {
|
| + shouldBe("toggleEventCount", "1");
|
| + shouldBeTrue("details.open");
|
| + testEventsCoalesced();
|
| +}
|
| +
|
| +function testToogleEventFired() {
|
| + shouldBe("toggleEventCount", "0");
|
| + details.open = true;
|
| + shouldBe("toggleEventCount", "0");
|
| + setTimeout(checkSingleToggleEvent, 0);
|
| +}
|
| +
|
| +function checkEventsCoalesced() {
|
| + shouldBe("toggleEventCount", "2");
|
| + shouldBeFalse("details.open");
|
| + finishJSTest();
|
| +}
|
| +
|
| +function testEventsCoalesced() {
|
| + // When the open attribute is toggled several times in succession,
|
| + // these steps essentially get coalesced so that only one event is
|
| + // fired.
|
| + details.open = false;
|
| + details.open = true;
|
| + details.open = false;
|
| + setTimeout(checkEventsCoalesced, 0);
|
| +}
|
| +
|
| +var details = document.getElementById("details");
|
| +details.addEventListener("toggle", handleToggleEvent);
|
| +shouldBeFalse("details.open");
|
| +testToogleEventFired();
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|