aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArseniy Ivanov <freeatnet@freeatnet.com>2017-02-02 17:51:54 -0500
committerArseniy Ivanov <freeatnet@freeatnet.com>2017-02-02 19:14:49 -0500
commitca73b30fcfd0ffc18f1e834c4d3bf9760fc01e8f (patch)
treedd1423dc402da83e7506c12ed40e5878f4765310
parent94e3c900294372fd4bc95e694668b2b07aa1c93a (diff)
downloadservo-ca73b30fcfd0ffc18f1e834c4d3bf9760fc01e8f.tar.gz
servo-ca73b30fcfd0ffc18f1e834c4d3bf9760fc01e8f.zip
Add tests for windowless element's event handler behaviour
-rw-r--r--tests/wpt/metadata/MANIFEST.json6
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html48
2 files changed, 54 insertions, 0 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 51d045d6c52..26692c67f87 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -45890,6 +45890,12 @@
"path": "html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html",
"url": "/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html"
}
+ ],
+ "html/webappapis/scripting/events/body-exposed-window-event-handlers.html": [
+ {
+ "path": "html/webappapis/scripting/events/body-exposed-window-event-handlers.html",
+ "url": "/html/webappapis/scripting/events/body-exposed-window-event-handlers.html"
+ }
]
}
},
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html
new file mode 100644
index 00000000000..e771b64a27e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<meta charset="utf-8">
+<title></title>
+<body></body>
+<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+var elements = ['body', 'frameset'];
+var handlers = [
+ 'afterprint', 'beforeprint', 'beforeunload', 'hashchange',
+ 'languagechange', 'message', 'offline', 'online', 'pagehide',
+ 'pageshow', 'popstate', 'rejectionhandled', 'storage',
+ 'unhandledrejection', 'unload'];
+
+elements.forEach(function (elementName) {
+ handlers.forEach(function (eventName) {
+ var handlerName = "on" + eventName;
+
+ test(function() {
+ var windowHandler = function () { return "Handler attached to the window"; };
+ window[handlerName] = windowHandler;
+
+ var d = (new DOMParser).parseFromString('', 'text/html');
+ var b = d.createElement(elementName);
+
+ assert_equals(b[handlerName], null);
+
+ window[handlerName] = null;
+ }, "Return null when getting the " + eventName + " event handler of a windowless " + elementName);
+
+ test(function() {
+ var windowHandler = function () { return "Handler attached to the window"; };
+ window[handlerName] = windowHandler;
+
+ var d = (new DOMParser).parseFromString('', 'text/html');
+ var b = d.createElement(elementName);
+ b[handlerName] = function() { return "Handler attached to windowless element"; };
+
+ assert_equals(window[handlerName], windowHandler);
+ assert_equals(b[handlerName], null);
+
+ // Clean up window event handler
+ window[handlerName] = null;
+ }, "Ignore setting of " + eventName + " window event handlers on windowless " + elementName);
+ });
+});
+</script>