<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[180952] trunk/LayoutTests</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/180952">180952</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-03-03 13:20:14 -0800 (Tue, 03 Mar 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Test legacy event handler attributes (ones with names like "onclick")
https://bugs.webkit.org/show_bug.cgi?id=142221
Reviewed by Anders Carlsson.
* fast/dom/legacy-event-handler-attributes-expected.txt: Added.
* fast/dom/legacy-event-handler-attributes.html: Added.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomlegacyeventhandlerattributesexpectedtxt">trunk/LayoutTests/fast/dom/legacy-event-handler-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomlegacyeventhandlerattributeshtml">trunk/LayoutTests/fast/dom/legacy-event-handler-attributes.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (180951 => 180952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-03-03 21:13:48 UTC (rev 180951)
+++ trunk/LayoutTests/ChangeLog        2015-03-03 21:20:14 UTC (rev 180952)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-03-03 Darin Adler <darin@apple.com>
+
+ Test legacy event handler attributes (ones with names like "onclick")
+ https://bugs.webkit.org/show_bug.cgi?id=142221
+
+ Reviewed by Anders Carlsson.
+
+ * fast/dom/legacy-event-handler-attributes-expected.txt: Added.
+ * fast/dom/legacy-event-handler-attributes.html: Added.
+
</ins><span class="cx"> 2015-03-03 Timothy Horton <timothy_horton@apple.com>
</span><span class="cx">
</span><span class="cx"> <attachment> label can get very wide, doesn't wrap/truncate
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomlegacyeventhandlerattributesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/legacy-event-handler-attributes-expected.txt (0 => 180952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/legacy-event-handler-attributes-expected.txt         (rev 0)
+++ trunk/LayoutTests/fast/dom/legacy-event-handler-attributes-expected.txt        2015-03-03 21:20:14 UTC (rev 180952)
</span><span class="lines">@@ -0,0 +1,821 @@
</span><ins>+Test which event listeners are set up by legacy event handler attributes (the ones with names like onclick).
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Event names we expect to be able to set on the window object
+
+PASS testScriptAttribute(window, "abort") is "window"
+PASS testScriptAttribute(window, "animationend") is "window"
+PASS testScriptAttribute(window, "animationiteration") is "window"
+PASS testScriptAttribute(window, "animationstart") is "window"
+PASS testScriptAttribute(window, "beforeunload") is "window"
+PASS testScriptAttribute(window, "blur") is "window"
+PASS testScriptAttribute(window, "canplay") is "window"
+PASS testScriptAttribute(window, "canplaythrough") is "window"
+PASS testScriptAttribute(window, "change") is "window"
+PASS testScriptAttribute(window, "click") is "window"
+PASS testScriptAttribute(window, "contextmenu") is "window"
+PASS testScriptAttribute(window, "dblclick") is "window"
+PASS testScriptAttribute(window, "drag") is "window"
+PASS testScriptAttribute(window, "dragend") is "window"
+PASS testScriptAttribute(window, "dragenter") is "window"
+PASS testScriptAttribute(window, "dragleave") is "window"
+PASS testScriptAttribute(window, "dragover") is "window"
+PASS testScriptAttribute(window, "dragstart") is "window"
+PASS testScriptAttribute(window, "drop") is "window"
+PASS testScriptAttribute(window, "durationchange") is "window"
+PASS testScriptAttribute(window, "emptied") is "window"
+PASS testScriptAttribute(window, "ended") is "window"
+PASS testScriptAttribute(window, "error") is "window"
+PASS testScriptAttribute(window, "focus") is "window"
+PASS testScriptAttribute(window, "hashchange") is "window"
+PASS testScriptAttribute(window, "input") is "window"
+PASS testScriptAttribute(window, "invalid") is "window"
+PASS testScriptAttribute(window, "keydown") is "window"
+PASS testScriptAttribute(window, "keypress") is "window"
+PASS testScriptAttribute(window, "keyup") is "window"
+PASS testScriptAttribute(window, "load") is "window"
+PASS testScriptAttribute(window, "loadeddata") is "window"
+PASS testScriptAttribute(window, "loadedmetadata") is "window"
+PASS testScriptAttribute(window, "loadstart") is "window"
+PASS testScriptAttribute(window, "message") is "window"
+PASS testScriptAttribute(window, "mousedown") is "window"
+PASS testScriptAttribute(window, "mouseenter") is "window"
+PASS testScriptAttribute(window, "mouseleave") is "window"
+PASS testScriptAttribute(window, "mousemove") is "window"
+PASS testScriptAttribute(window, "mouseout") is "window"
+PASS testScriptAttribute(window, "mouseover") is "window"
+PASS testScriptAttribute(window, "mouseup") is "window"
+PASS testScriptAttribute(window, "mousewheel") is "window"
+PASS testScriptAttribute(window, "offline") is "window"
+PASS testScriptAttribute(window, "online") is "window"
+PASS testScriptAttribute(window, "pagehide") is "window"
+PASS testScriptAttribute(window, "pageshow") is "window"
+PASS testScriptAttribute(window, "pause") is "window"
+PASS testScriptAttribute(window, "play") is "window"
+PASS testScriptAttribute(window, "playing") is "window"
+PASS testScriptAttribute(window, "popstate") is "window"
+PASS testScriptAttribute(window, "progress") is "window"
+PASS testScriptAttribute(window, "ratechange") is "window"
+PASS testScriptAttribute(window, "reset") is "window"
+PASS testScriptAttribute(window, "resize") is "window"
+PASS testScriptAttribute(window, "scroll") is "window"
+PASS testScriptAttribute(window, "search") is "window"
+PASS testScriptAttribute(window, "seeked") is "window"
+PASS testScriptAttribute(window, "seeking") is "window"
+PASS testScriptAttribute(window, "select") is "window"
+PASS testScriptAttribute(window, "stalled") is "window"
+PASS testScriptAttribute(window, "storage") is "window"
+PASS testScriptAttribute(window, "submit") is "window"
+PASS testScriptAttribute(window, "suspend") is "window"
+PASS testScriptAttribute(window, "timeupdate") is "window"
+PASS testScriptAttribute(window, "transitionend") is "window"
+PASS testScriptAttribute(window, "unload") is "window"
+PASS testScriptAttribute(window, "volumechange") is "window"
+PASS testScriptAttribute(window, "waiting") is "window"
+PASS testScriptAttribute(window, "webkitanimationend") is "window"
+PASS testScriptAttribute(window, "webkitanimationiteration") is "window"
+PASS testScriptAttribute(window, "webkitanimationstart") is "window"
+PASS testScriptAttribute(window, "webkittransitionend") is "window"
+PASS testScriptAttribute(window, "wheel") is "window"
+
+Event names we expect not to be able to set on the window object
+
+PASS testScriptAttribute(window, "beforecopy") is "none"
+PASS testScriptAttribute(window, "beforecut") is "none"
+PASS testScriptAttribute(window, "beforepaste") is "none"
+PASS testScriptAttribute(window, "copy") is "none"
+PASS testScriptAttribute(window, "cut") is "none"
+PASS testScriptAttribute(window, "focusin") is "none"
+PASS testScriptAttribute(window, "focusout") is "none"
+PASS testScriptAttribute(window, "noneventname") is "none"
+PASS testScriptAttribute(window, "paste") is "none"
+PASS testScriptAttribute(window, "readystatechange") is "none"
+PASS testScriptAttribute(window, "selectionchange") is "none"
+PASS testScriptAttribute(window, "selectstart") is "none"
+PASS testScriptAttribute(window, "touchcancel") is "none"
+PASS testScriptAttribute(window, "touchend") is "none"
+PASS testScriptAttribute(window, "touchmove") is "none"
+PASS testScriptAttribute(window, "touchstart") is "none"
+PASS testScriptAttribute(window, "webkitkeyadded") is "none"
+PASS testScriptAttribute(window, "webkitkeyerror") is "none"
+PASS testScriptAttribute(window, "webkitkeymessage") is "none"
+PASS testScriptAttribute(window, "webkitpresentationmodechanged") is "none"
+
+Event names we expect to be able to set on the document
+
+FAIL testScriptAttribute(document, "abort") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "beforecopy") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "beforecut") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "beforepaste") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "blur") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "change") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "click") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "contextmenu") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "copy") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "cut") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dblclick") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "drag") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dragend") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dragenter") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dragleave") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dragover") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "dragstart") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "drop") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "error") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "focus") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "input") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "invalid") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "keydown") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "keypress") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "keyup") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "load") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mousedown") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mouseenter") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mouseleave") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mousemove") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mouseout") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mouseover") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mouseup") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "mousewheel") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "paste") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "readystatechange") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "reset") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "scroll") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "search") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "select") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "selectionchange") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "selectstart") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "submit") should be document. Was document, remove failed.
+FAIL testScriptAttribute(document, "wheel") should be document. Was document, remove failed.
+
+Event names we expect not to be able to set on the document
+
+PASS testScriptAttribute(document, "animationend") is "none"
+PASS testScriptAttribute(document, "animationiteration") is "none"
+PASS testScriptAttribute(document, "animationstart") is "none"
+PASS testScriptAttribute(document, "beforeunload") is "none"
+PASS testScriptAttribute(document, "canplay") is "none"
+PASS testScriptAttribute(document, "canplaythrough") is "none"
+PASS testScriptAttribute(document, "durationchange") is "none"
+PASS testScriptAttribute(document, "emptied") is "none"
+PASS testScriptAttribute(document, "ended") is "none"
+PASS testScriptAttribute(document, "focusin") is "none"
+PASS testScriptAttribute(document, "focusout") is "none"
+PASS testScriptAttribute(document, "hashchange") is "none"
+PASS testScriptAttribute(document, "loadeddata") is "none"
+PASS testScriptAttribute(document, "loadedmetadata") is "none"
+PASS testScriptAttribute(document, "loadstart") is "none"
+PASS testScriptAttribute(document, "message") is "none"
+PASS testScriptAttribute(document, "noneventname") is "none"
+PASS testScriptAttribute(document, "offline") is "none"
+PASS testScriptAttribute(document, "online") is "none"
+PASS testScriptAttribute(document, "pagehide") is "none"
+PASS testScriptAttribute(document, "pageshow") is "none"
+PASS testScriptAttribute(document, "pause") is "none"
+PASS testScriptAttribute(document, "play") is "none"
+PASS testScriptAttribute(document, "playing") is "none"
+PASS testScriptAttribute(document, "popstate") is "none"
+PASS testScriptAttribute(document, "progress") is "none"
+PASS testScriptAttribute(document, "ratechange") is "none"
+PASS testScriptAttribute(document, "resize") is "none"
+PASS testScriptAttribute(document, "seeked") is "none"
+PASS testScriptAttribute(document, "seeking") is "none"
+PASS testScriptAttribute(document, "stalled") is "none"
+PASS testScriptAttribute(document, "storage") is "none"
+PASS testScriptAttribute(document, "suspend") is "none"
+PASS testScriptAttribute(document, "timeupdate") is "none"
+PASS testScriptAttribute(document, "touchcancel") is "none"
+PASS testScriptAttribute(document, "touchend") is "none"
+PASS testScriptAttribute(document, "touchmove") is "none"
+PASS testScriptAttribute(document, "touchstart") is "none"
+PASS testScriptAttribute(document, "transitionend") is "none"
+PASS testScriptAttribute(document, "unload") is "none"
+PASS testScriptAttribute(document, "volumechange") is "none"
+PASS testScriptAttribute(document, "waiting") is "none"
+PASS testScriptAttribute(document, "webkitanimationend") is "none"
+PASS testScriptAttribute(document, "webkitanimationiteration") is "none"
+PASS testScriptAttribute(document, "webkitanimationstart") is "none"
+PASS testScriptAttribute(document, "webkitkeyadded") is "none"
+PASS testScriptAttribute(document, "webkitkeyerror") is "none"
+PASS testScriptAttribute(document, "webkitkeymessage") is "none"
+PASS testScriptAttribute(document, "webkitpresentationmodechanged") is "none"
+PASS testScriptAttribute(document, "webkittransitionend") is "none"
+
+Event names we expect to be able to set on an element (tested on the <html> element)
+
+PASS testElementAttribute(element, "abort") is "target"
+FAIL testElementAttribute(element, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "beforecopy") is "target"
+PASS testElementAttribute(element, "beforecut") is "target"
+PASS testElementAttribute(element, "beforepaste") is "target"
+PASS testElementAttribute(element, "blur") is "target"
+FAIL testElementAttribute(element, "canplay") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "canplaythrough") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "change") is "target"
+PASS testElementAttribute(element, "click") is "target"
+PASS testElementAttribute(element, "contextmenu") is "target"
+PASS testElementAttribute(element, "copy") is "target"
+PASS testElementAttribute(element, "cut") is "target"
+PASS testElementAttribute(element, "dblclick") is "target"
+PASS testElementAttribute(element, "drag") is "target"
+PASS testElementAttribute(element, "dragend") is "target"
+PASS testElementAttribute(element, "dragenter") is "target"
+PASS testElementAttribute(element, "dragleave") is "target"
+PASS testElementAttribute(element, "dragover") is "target"
+PASS testElementAttribute(element, "dragstart") is "target"
+PASS testElementAttribute(element, "drop") is "target"
+FAIL testElementAttribute(element, "durationchange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "emptied") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "ended") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "error") is "target"
+PASS testElementAttribute(element, "focus") is "target"
+FAIL testElementAttribute(element, "focusin") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "focusout") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "input") is "target"
+PASS testElementAttribute(element, "invalid") is "target"
+PASS testElementAttribute(element, "keydown") is "target"
+PASS testElementAttribute(element, "keypress") is "target"
+PASS testElementAttribute(element, "keyup") is "target"
+PASS testElementAttribute(element, "load") is "target"
+FAIL testElementAttribute(element, "loadeddata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "loadedmetadata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "mousedown") is "target"
+PASS testElementAttribute(element, "mouseenter") is "target"
+PASS testElementAttribute(element, "mouseleave") is "target"
+PASS testElementAttribute(element, "mousemove") is "target"
+PASS testElementAttribute(element, "mouseout") is "target"
+PASS testElementAttribute(element, "mouseover") is "target"
+PASS testElementAttribute(element, "mouseup") is "target"
+PASS testElementAttribute(element, "mousewheel") is "target"
+PASS testElementAttribute(element, "paste") is "target"
+FAIL testElementAttribute(element, "pause") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "play") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "playing") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "progress") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "ratechange") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "reset") is "target"
+PASS testElementAttribute(element, "scroll") is "target"
+FAIL testElementAttribute(element, "search") should be target. Was script: target; content: none.
+FAIL testElementAttribute(element, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "select") is "target"
+PASS testElementAttribute(element, "selectstart") is "target"
+FAIL testElementAttribute(element, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "submit") is "target"
+FAIL testElementAttribute(element, "suspend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "timeupdate") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "transitionend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "volumechange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "waiting") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(element, "webkitkeyadded") should be target. Was none.
+FAIL testElementAttribute(element, "webkitkeyerror") should be target. Was none.
+FAIL testElementAttribute(element, "webkitkeymessage") should be target. Was none.
+FAIL testElementAttribute(element, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(element, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(element, "wheel") is "target"
+
+Event names we expect not to be able to set on an element (tested on the <html> element)
+
+PASS testElementAttribute(element, "beforeunload") is "none"
+PASS testElementAttribute(element, "hashchange") is "none"
+PASS testElementAttribute(element, "message") is "none"
+PASS testElementAttribute(element, "noneventname") is "none"
+PASS testElementAttribute(element, "offline") is "none"
+PASS testElementAttribute(element, "online") is "none"
+PASS testElementAttribute(element, "pagehide") is "none"
+PASS testElementAttribute(element, "pageshow") is "none"
+PASS testElementAttribute(element, "popstate") is "none"
+PASS testElementAttribute(element, "readystatechange") is "none"
+PASS testElementAttribute(element, "resize") is "none"
+PASS testElementAttribute(element, "selectionchange") is "none"
+PASS testElementAttribute(element, "storage") is "none"
+PASS testElementAttribute(element, "unload") is "none"
+
+Event names we expect to be able to set on an element (tested on the <input> element)
+
+PASS testElementAttribute(inputElement, "abort") is "target"
+FAIL testElementAttribute(inputElement, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "beforecopy") is "target"
+PASS testElementAttribute(inputElement, "beforecut") is "target"
+PASS testElementAttribute(inputElement, "beforepaste") is "target"
+PASS testElementAttribute(inputElement, "blur") is "target"
+FAIL testElementAttribute(inputElement, "canplay") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "canplaythrough") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "change") is "target"
+PASS testElementAttribute(inputElement, "click") is "target"
+PASS testElementAttribute(inputElement, "contextmenu") is "target"
+PASS testElementAttribute(inputElement, "copy") is "target"
+PASS testElementAttribute(inputElement, "cut") is "target"
+PASS testElementAttribute(inputElement, "dblclick") is "target"
+PASS testElementAttribute(inputElement, "drag") is "target"
+PASS testElementAttribute(inputElement, "dragend") is "target"
+PASS testElementAttribute(inputElement, "dragenter") is "target"
+PASS testElementAttribute(inputElement, "dragleave") is "target"
+PASS testElementAttribute(inputElement, "dragover") is "target"
+PASS testElementAttribute(inputElement, "dragstart") is "target"
+PASS testElementAttribute(inputElement, "drop") is "target"
+FAIL testElementAttribute(inputElement, "durationchange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "emptied") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "ended") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "error") is "target"
+PASS testElementAttribute(inputElement, "focus") is "target"
+FAIL testElementAttribute(inputElement, "focusin") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "focusout") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "input") is "target"
+PASS testElementAttribute(inputElement, "invalid") is "target"
+PASS testElementAttribute(inputElement, "keydown") is "target"
+PASS testElementAttribute(inputElement, "keypress") is "target"
+PASS testElementAttribute(inputElement, "keyup") is "target"
+PASS testElementAttribute(inputElement, "load") is "target"
+FAIL testElementAttribute(inputElement, "loadeddata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "loadedmetadata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "mousedown") is "target"
+PASS testElementAttribute(inputElement, "mouseenter") is "target"
+PASS testElementAttribute(inputElement, "mouseleave") is "target"
+PASS testElementAttribute(inputElement, "mousemove") is "target"
+PASS testElementAttribute(inputElement, "mouseout") is "target"
+PASS testElementAttribute(inputElement, "mouseover") is "target"
+PASS testElementAttribute(inputElement, "mouseup") is "target"
+PASS testElementAttribute(inputElement, "mousewheel") is "target"
+PASS testElementAttribute(inputElement, "paste") is "target"
+FAIL testElementAttribute(inputElement, "pause") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "play") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "playing") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "progress") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "ratechange") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "reset") is "target"
+PASS testElementAttribute(inputElement, "scroll") is "target"
+PASS testElementAttribute(inputElement, "search") is "target"
+FAIL testElementAttribute(inputElement, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "select") is "target"
+PASS testElementAttribute(inputElement, "selectstart") is "target"
+FAIL testElementAttribute(inputElement, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "submit") is "target"
+FAIL testElementAttribute(inputElement, "suspend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "timeupdate") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "transitionend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "volumechange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "waiting") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(inputElement, "webkitkeyadded") should be target. Was none.
+FAIL testElementAttribute(inputElement, "webkitkeyerror") should be target. Was none.
+FAIL testElementAttribute(inputElement, "webkitkeymessage") should be target. Was none.
+FAIL testElementAttribute(inputElement, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(inputElement, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(inputElement, "wheel") is "target"
+
+Event names we expect not to be able to set on an element (tested on the <input> element)
+
+PASS testElementAttribute(inputElement, "beforeunload") is "none"
+PASS testElementAttribute(inputElement, "hashchange") is "none"
+PASS testElementAttribute(inputElement, "message") is "none"
+PASS testElementAttribute(inputElement, "noneventname") is "none"
+PASS testElementAttribute(inputElement, "offline") is "none"
+PASS testElementAttribute(inputElement, "online") is "none"
+PASS testElementAttribute(inputElement, "pagehide") is "none"
+PASS testElementAttribute(inputElement, "pageshow") is "none"
+PASS testElementAttribute(inputElement, "popstate") is "none"
+PASS testElementAttribute(inputElement, "readystatechange") is "none"
+PASS testElementAttribute(inputElement, "resize") is "none"
+PASS testElementAttribute(inputElement, "selectionchange") is "none"
+PASS testElementAttribute(inputElement, "storage") is "none"
+PASS testElementAttribute(inputElement, "unload") is "none"
+
+Event names we expect to be able to set on an element (tested on the <audio> element)
+
+PASS testElementAttribute(audioElement, "abort") is "target"
+FAIL testElementAttribute(audioElement, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "beforecopy") is "target"
+PASS testElementAttribute(audioElement, "beforecut") is "target"
+PASS testElementAttribute(audioElement, "beforepaste") is "target"
+PASS testElementAttribute(audioElement, "blur") is "target"
+PASS testElementAttribute(audioElement, "canplay") is "target"
+PASS testElementAttribute(audioElement, "canplaythrough") is "target"
+PASS testElementAttribute(audioElement, "change") is "target"
+PASS testElementAttribute(audioElement, "click") is "target"
+PASS testElementAttribute(audioElement, "contextmenu") is "target"
+PASS testElementAttribute(audioElement, "copy") is "target"
+PASS testElementAttribute(audioElement, "cut") is "target"
+PASS testElementAttribute(audioElement, "dblclick") is "target"
+PASS testElementAttribute(audioElement, "drag") is "target"
+PASS testElementAttribute(audioElement, "dragend") is "target"
+PASS testElementAttribute(audioElement, "dragenter") is "target"
+PASS testElementAttribute(audioElement, "dragleave") is "target"
+PASS testElementAttribute(audioElement, "dragover") is "target"
+PASS testElementAttribute(audioElement, "dragstart") is "target"
+PASS testElementAttribute(audioElement, "drop") is "target"
+PASS testElementAttribute(audioElement, "durationchange") is "target"
+PASS testElementAttribute(audioElement, "emptied") is "target"
+PASS testElementAttribute(audioElement, "ended") is "target"
+PASS testElementAttribute(audioElement, "error") is "target"
+PASS testElementAttribute(audioElement, "focus") is "target"
+FAIL testElementAttribute(audioElement, "focusin") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "focusout") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "input") is "target"
+PASS testElementAttribute(audioElement, "invalid") is "target"
+PASS testElementAttribute(audioElement, "keydown") is "target"
+PASS testElementAttribute(audioElement, "keypress") is "target"
+PASS testElementAttribute(audioElement, "keyup") is "target"
+PASS testElementAttribute(audioElement, "load") is "target"
+PASS testElementAttribute(audioElement, "loadeddata") is "target"
+PASS testElementAttribute(audioElement, "loadedmetadata") is "target"
+FAIL testElementAttribute(audioElement, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "mousedown") is "target"
+PASS testElementAttribute(audioElement, "mouseenter") is "target"
+PASS testElementAttribute(audioElement, "mouseleave") is "target"
+PASS testElementAttribute(audioElement, "mousemove") is "target"
+PASS testElementAttribute(audioElement, "mouseout") is "target"
+PASS testElementAttribute(audioElement, "mouseover") is "target"
+PASS testElementAttribute(audioElement, "mouseup") is "target"
+PASS testElementAttribute(audioElement, "mousewheel") is "target"
+PASS testElementAttribute(audioElement, "paste") is "target"
+PASS testElementAttribute(audioElement, "pause") is "target"
+PASS testElementAttribute(audioElement, "play") is "target"
+PASS testElementAttribute(audioElement, "playing") is "target"
+FAIL testElementAttribute(audioElement, "progress") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "ratechange") is "target"
+PASS testElementAttribute(audioElement, "reset") is "target"
+PASS testElementAttribute(audioElement, "scroll") is "target"
+FAIL testElementAttribute(audioElement, "search") should be target. Was script: target; content: none.
+FAIL testElementAttribute(audioElement, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "select") is "target"
+PASS testElementAttribute(audioElement, "selectstart") is "target"
+FAIL testElementAttribute(audioElement, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "submit") is "target"
+FAIL testElementAttribute(audioElement, "suspend") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "timeupdate") is "target"
+FAIL testElementAttribute(audioElement, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "transitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "volumechange") is "target"
+PASS testElementAttribute(audioElement, "waiting") is "target"
+FAIL testElementAttribute(audioElement, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(audioElement, "webkitkeyadded") should be target. Was script: target; content: none.
+FAIL testElementAttribute(audioElement, "webkitkeyerror") should be target. Was script: target; content: none.
+FAIL testElementAttribute(audioElement, "webkitkeymessage") should be target. Was script: target; content: none.
+FAIL testElementAttribute(audioElement, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(audioElement, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(audioElement, "wheel") is "target"
+
+Event names we expect not to be able to set on an element (tested on the <audio> element)
+
+PASS testElementAttribute(audioElement, "beforeunload") is "none"
+PASS testElementAttribute(audioElement, "hashchange") is "none"
+PASS testElementAttribute(audioElement, "message") is "none"
+PASS testElementAttribute(audioElement, "noneventname") is "none"
+PASS testElementAttribute(audioElement, "offline") is "none"
+PASS testElementAttribute(audioElement, "online") is "none"
+PASS testElementAttribute(audioElement, "pagehide") is "none"
+PASS testElementAttribute(audioElement, "pageshow") is "none"
+PASS testElementAttribute(audioElement, "popstate") is "none"
+PASS testElementAttribute(audioElement, "readystatechange") is "none"
+PASS testElementAttribute(audioElement, "resize") is "none"
+PASS testElementAttribute(audioElement, "selectionchange") is "none"
+PASS testElementAttribute(audioElement, "storage") is "none"
+PASS testElementAttribute(audioElement, "unload") is "none"
+
+Event names we expect to be able to set on an element (tested on the <video> element)
+
+PASS testElementAttribute(videoElement, "abort") is "target"
+FAIL testElementAttribute(videoElement, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "beforecopy") is "target"
+PASS testElementAttribute(videoElement, "beforecut") is "target"
+PASS testElementAttribute(videoElement, "beforepaste") is "target"
+PASS testElementAttribute(videoElement, "blur") is "target"
+PASS testElementAttribute(videoElement, "canplay") is "target"
+PASS testElementAttribute(videoElement, "canplaythrough") is "target"
+PASS testElementAttribute(videoElement, "change") is "target"
+PASS testElementAttribute(videoElement, "click") is "target"
+PASS testElementAttribute(videoElement, "contextmenu") is "target"
+PASS testElementAttribute(videoElement, "copy") is "target"
+PASS testElementAttribute(videoElement, "cut") is "target"
+PASS testElementAttribute(videoElement, "dblclick") is "target"
+PASS testElementAttribute(videoElement, "drag") is "target"
+PASS testElementAttribute(videoElement, "dragend") is "target"
+PASS testElementAttribute(videoElement, "dragenter") is "target"
+PASS testElementAttribute(videoElement, "dragleave") is "target"
+PASS testElementAttribute(videoElement, "dragover") is "target"
+PASS testElementAttribute(videoElement, "dragstart") is "target"
+PASS testElementAttribute(videoElement, "drop") is "target"
+PASS testElementAttribute(videoElement, "durationchange") is "target"
+PASS testElementAttribute(videoElement, "emptied") is "target"
+PASS testElementAttribute(videoElement, "ended") is "target"
+PASS testElementAttribute(videoElement, "error") is "target"
+PASS testElementAttribute(videoElement, "focus") is "target"
+FAIL testElementAttribute(videoElement, "focusin") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "focusout") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "input") is "target"
+PASS testElementAttribute(videoElement, "invalid") is "target"
+PASS testElementAttribute(videoElement, "keydown") is "target"
+PASS testElementAttribute(videoElement, "keypress") is "target"
+PASS testElementAttribute(videoElement, "keyup") is "target"
+PASS testElementAttribute(videoElement, "load") is "target"
+PASS testElementAttribute(videoElement, "loadeddata") is "target"
+PASS testElementAttribute(videoElement, "loadedmetadata") is "target"
+FAIL testElementAttribute(videoElement, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "mousedown") is "target"
+PASS testElementAttribute(videoElement, "mouseenter") is "target"
+PASS testElementAttribute(videoElement, "mouseleave") is "target"
+PASS testElementAttribute(videoElement, "mousemove") is "target"
+PASS testElementAttribute(videoElement, "mouseout") is "target"
+PASS testElementAttribute(videoElement, "mouseover") is "target"
+PASS testElementAttribute(videoElement, "mouseup") is "target"
+PASS testElementAttribute(videoElement, "mousewheel") is "target"
+PASS testElementAttribute(videoElement, "paste") is "target"
+PASS testElementAttribute(videoElement, "pause") is "target"
+PASS testElementAttribute(videoElement, "play") is "target"
+PASS testElementAttribute(videoElement, "playing") is "target"
+FAIL testElementAttribute(videoElement, "progress") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "ratechange") is "target"
+PASS testElementAttribute(videoElement, "reset") is "target"
+PASS testElementAttribute(videoElement, "scroll") is "target"
+FAIL testElementAttribute(videoElement, "search") should be target. Was script: target; content: none.
+FAIL testElementAttribute(videoElement, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "select") is "target"
+PASS testElementAttribute(videoElement, "selectstart") is "target"
+FAIL testElementAttribute(videoElement, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "submit") is "target"
+FAIL testElementAttribute(videoElement, "suspend") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "timeupdate") is "target"
+FAIL testElementAttribute(videoElement, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "transitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "volumechange") is "target"
+PASS testElementAttribute(videoElement, "waiting") is "target"
+FAIL testElementAttribute(videoElement, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(videoElement, "webkitkeyadded") should be target. Was script: target; content: none.
+FAIL testElementAttribute(videoElement, "webkitkeyerror") should be target. Was script: target; content: none.
+FAIL testElementAttribute(videoElement, "webkitkeymessage") should be target. Was script: target; content: none.
+FAIL testElementAttribute(videoElement, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(videoElement, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(videoElement, "wheel") is "target"
+
+Event names we expect not to be able to set on an element (tested on the <video> element)
+
+PASS testElementAttribute(videoElement, "beforeunload") is "none"
+PASS testElementAttribute(videoElement, "hashchange") is "none"
+PASS testElementAttribute(videoElement, "message") is "none"
+PASS testElementAttribute(videoElement, "noneventname") is "none"
+PASS testElementAttribute(videoElement, "offline") is "none"
+PASS testElementAttribute(videoElement, "online") is "none"
+PASS testElementAttribute(videoElement, "pagehide") is "none"
+PASS testElementAttribute(videoElement, "pageshow") is "none"
+PASS testElementAttribute(videoElement, "popstate") is "none"
+PASS testElementAttribute(videoElement, "readystatechange") is "none"
+PASS testElementAttribute(videoElement, "resize") is "none"
+PASS testElementAttribute(videoElement, "selectionchange") is "none"
+PASS testElementAttribute(videoElement, "storage") is "none"
+PASS testElementAttribute(videoElement, "unload") is "none"
+
+Event names we expect to be forwarded from <body> element to window object)
+
+PASS testElementAttribute(bodyElement, "beforeunload") is "window"
+PASS testElementAttribute(bodyElement, "blur") is "window"
+FAIL testElementAttribute(bodyElement, "error") should be window. Was script: window; content: target.
+PASS testElementAttribute(bodyElement, "focus") is "window"
+PASS testElementAttribute(bodyElement, "hashchange") is "window"
+PASS testElementAttribute(bodyElement, "load") is "window"
+FAIL testElementAttribute(bodyElement, "message") should be window. Was script: window; content: none.
+PASS testElementAttribute(bodyElement, "offline") is "window"
+PASS testElementAttribute(bodyElement, "online") is "window"
+FAIL testElementAttribute(bodyElement, "pagehide") should be window. Was script: none; content: window.
+FAIL testElementAttribute(bodyElement, "pageshow") should be window. Was script: none; content: window.
+PASS testElementAttribute(bodyElement, "popstate") is "window"
+PASS testElementAttribute(bodyElement, "resize") is "window"
+PASS testElementAttribute(bodyElement, "storage") is "window"
+PASS testElementAttribute(bodyElement, "unload") is "window"
+
+Event names we expect to be forwarded from <body> element to document)
+
+FAIL testElementAttribute(bodyElement, "selectionchange") should be document. Was script: none; content: document, remove failed.
+
+Non-forwarded event names on <body> element
+
+PASS testElementAttribute(bodyElement, "abort") is "target"
+FAIL testElementAttribute(bodyElement, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "beforecopy") is "target"
+PASS testElementAttribute(bodyElement, "beforecut") is "target"
+PASS testElementAttribute(bodyElement, "beforepaste") is "target"
+FAIL testElementAttribute(bodyElement, "canplay") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "canplaythrough") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "change") is "target"
+PASS testElementAttribute(bodyElement, "click") is "target"
+PASS testElementAttribute(bodyElement, "contextmenu") is "target"
+PASS testElementAttribute(bodyElement, "copy") is "target"
+PASS testElementAttribute(bodyElement, "cut") is "target"
+PASS testElementAttribute(bodyElement, "dblclick") is "target"
+PASS testElementAttribute(bodyElement, "drag") is "target"
+PASS testElementAttribute(bodyElement, "dragend") is "target"
+PASS testElementAttribute(bodyElement, "dragenter") is "target"
+PASS testElementAttribute(bodyElement, "dragleave") is "target"
+PASS testElementAttribute(bodyElement, "dragover") is "target"
+PASS testElementAttribute(bodyElement, "dragstart") is "target"
+PASS testElementAttribute(bodyElement, "drop") is "target"
+FAIL testElementAttribute(bodyElement, "durationchange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "emptied") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "ended") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "focusin") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "focusout") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "input") is "target"
+PASS testElementAttribute(bodyElement, "invalid") is "target"
+PASS testElementAttribute(bodyElement, "keydown") is "target"
+PASS testElementAttribute(bodyElement, "keypress") is "target"
+PASS testElementAttribute(bodyElement, "keyup") is "target"
+FAIL testElementAttribute(bodyElement, "loadeddata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "loadedmetadata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "mousedown") is "target"
+PASS testElementAttribute(bodyElement, "mouseenter") is "target"
+PASS testElementAttribute(bodyElement, "mouseleave") is "target"
+PASS testElementAttribute(bodyElement, "mousemove") is "target"
+PASS testElementAttribute(bodyElement, "mouseout") is "target"
+PASS testElementAttribute(bodyElement, "mouseover") is "target"
+PASS testElementAttribute(bodyElement, "mouseup") is "target"
+PASS testElementAttribute(bodyElement, "mousewheel") is "target"
+PASS testElementAttribute(bodyElement, "paste") is "target"
+FAIL testElementAttribute(bodyElement, "pause") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "play") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "playing") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "progress") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "ratechange") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "reset") is "target"
+FAIL testElementAttribute(bodyElement, "scroll") should be target. Was script: target; content: window.
+FAIL testElementAttribute(bodyElement, "search") should be target. Was script: target; content: none.
+FAIL testElementAttribute(bodyElement, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "select") is "target"
+PASS testElementAttribute(bodyElement, "selectstart") is "target"
+FAIL testElementAttribute(bodyElement, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "submit") is "target"
+FAIL testElementAttribute(bodyElement, "suspend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "timeupdate") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "transitionend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "volumechange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "waiting") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(bodyElement, "webkitkeyadded") should be target. Was none.
+FAIL testElementAttribute(bodyElement, "webkitkeyerror") should be target. Was none.
+FAIL testElementAttribute(bodyElement, "webkitkeymessage") should be target. Was none.
+FAIL testElementAttribute(bodyElement, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(bodyElement, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(bodyElement, "wheel") is "target"
+
+Event names we expect to not be able to set on <body> element
+
+PASS testElementAttribute(bodyElement, "noneventname") is "none"
+PASS testElementAttribute(bodyElement, "readystatechange") is "none"
+
+Event names we expect to be forwarded from <frameset> element to window object)
+
+PASS testElementAttribute(framesetElement, "beforeunload") is "window"
+PASS testElementAttribute(framesetElement, "blur") is "window"
+FAIL testElementAttribute(framesetElement, "error") should be window. Was script: window; content: target.
+PASS testElementAttribute(framesetElement, "focus") is "window"
+PASS testElementAttribute(framesetElement, "hashchange") is "window"
+PASS testElementAttribute(framesetElement, "load") is "window"
+FAIL testElementAttribute(framesetElement, "message") should be window. Was script: window; content: none.
+PASS testElementAttribute(framesetElement, "offline") is "window"
+PASS testElementAttribute(framesetElement, "online") is "window"
+FAIL testElementAttribute(framesetElement, "pagehide") should be window. Was none.
+FAIL testElementAttribute(framesetElement, "pageshow") should be window. Was none.
+PASS testElementAttribute(framesetElement, "popstate") is "window"
+PASS testElementAttribute(framesetElement, "resize") is "window"
+PASS testElementAttribute(framesetElement, "storage") is "window"
+PASS testElementAttribute(framesetElement, "unload") is "window"
+
+Event names we expect to be forwarded from <frameset> element to document)
+
+FAIL testElementAttribute(framesetElement, "selectionchange") should be document. Was none.
+
+Non-forwarded event names on <frameset> element
+
+PASS testElementAttribute(framesetElement, "abort") is "target"
+FAIL testElementAttribute(framesetElement, "animationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "animationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "animationstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "beforecopy") is "target"
+PASS testElementAttribute(framesetElement, "beforecut") is "target"
+PASS testElementAttribute(framesetElement, "beforepaste") is "target"
+FAIL testElementAttribute(framesetElement, "canplay") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "canplaythrough") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "change") is "target"
+PASS testElementAttribute(framesetElement, "click") is "target"
+PASS testElementAttribute(framesetElement, "contextmenu") is "target"
+PASS testElementAttribute(framesetElement, "copy") is "target"
+PASS testElementAttribute(framesetElement, "cut") is "target"
+PASS testElementAttribute(framesetElement, "dblclick") is "target"
+PASS testElementAttribute(framesetElement, "drag") is "target"
+PASS testElementAttribute(framesetElement, "dragend") is "target"
+PASS testElementAttribute(framesetElement, "dragenter") is "target"
+PASS testElementAttribute(framesetElement, "dragleave") is "target"
+PASS testElementAttribute(framesetElement, "dragover") is "target"
+PASS testElementAttribute(framesetElement, "dragstart") is "target"
+PASS testElementAttribute(framesetElement, "drop") is "target"
+FAIL testElementAttribute(framesetElement, "durationchange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "emptied") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "ended") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "focusin") should be target. Was script: none; content: window.
+FAIL testElementAttribute(framesetElement, "focusout") should be target. Was script: none; content: window.
+PASS testElementAttribute(framesetElement, "input") is "target"
+PASS testElementAttribute(framesetElement, "invalid") is "target"
+PASS testElementAttribute(framesetElement, "keydown") is "target"
+PASS testElementAttribute(framesetElement, "keypress") is "target"
+PASS testElementAttribute(framesetElement, "keyup") is "target"
+FAIL testElementAttribute(framesetElement, "loadeddata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "loadedmetadata") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "loadstart") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "mousedown") is "target"
+PASS testElementAttribute(framesetElement, "mouseenter") is "target"
+PASS testElementAttribute(framesetElement, "mouseleave") is "target"
+PASS testElementAttribute(framesetElement, "mousemove") is "target"
+PASS testElementAttribute(framesetElement, "mouseout") is "target"
+PASS testElementAttribute(framesetElement, "mouseover") is "target"
+PASS testElementAttribute(framesetElement, "mouseup") is "target"
+PASS testElementAttribute(framesetElement, "mousewheel") is "target"
+PASS testElementAttribute(framesetElement, "paste") is "target"
+FAIL testElementAttribute(framesetElement, "pause") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "play") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "playing") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "progress") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "ratechange") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "reset") is "target"
+FAIL testElementAttribute(framesetElement, "scroll") should be target. Was script: target; content: window.
+FAIL testElementAttribute(framesetElement, "search") should be target. Was script: target; content: none.
+FAIL testElementAttribute(framesetElement, "seeked") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "seeking") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "select") is "target"
+PASS testElementAttribute(framesetElement, "selectstart") is "target"
+FAIL testElementAttribute(framesetElement, "stalled") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "submit") is "target"
+FAIL testElementAttribute(framesetElement, "suspend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "timeupdate") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "touchcancel") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "touchend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "touchmove") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "touchstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "transitionend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "volumechange") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "waiting") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "webkitanimationend") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "webkitanimationiteration") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "webkitanimationstart") should be target. Was script: none; content: target.
+FAIL testElementAttribute(framesetElement, "webkitkeyadded") should be target. Was none.
+FAIL testElementAttribute(framesetElement, "webkitkeyerror") should be target. Was none.
+FAIL testElementAttribute(framesetElement, "webkitkeymessage") should be target. Was none.
+FAIL testElementAttribute(framesetElement, "webkitpresentationmodechanged") should be target. Was none.
+FAIL testElementAttribute(framesetElement, "webkittransitionend") should be target. Was script: none; content: target.
+PASS testElementAttribute(framesetElement, "wheel") is "target"
+
+Event names we expect to not be able to set on <frameset> element
+
+PASS testElementAttribute(framesetElement, "noneventname") is "none"
+PASS testElementAttribute(framesetElement, "readystatechange") is "none"
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomlegacyeventhandlerattributeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/legacy-event-handler-attributes.html (0 => 180952)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/legacy-event-handler-attributes.html         (rev 0)
+++ trunk/LayoutTests/fast/dom/legacy-event-handler-attributes.html        2015-03-03 21:20:14 UTC (rev 180952)
</span><span class="lines">@@ -0,0 +1,622 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<body>
+<script src="../../resources/js-test-pre.js"></script>
+<script>
+description("Test which event listeners are set up by legacy event handler attributes (the ones with names like onclick).");
+
+const unusualEventNames = {
+ "webkitanimationend": "webkitAnimationEnd",
+ "webkitanimationiteration": "webkitAnimationIteration",
+ "webkitanimationstart": "webkitAnimationStart",
+ "webkittransitionend": "webkitTransitionEnd",
+};
+
+const windowEvents = [
+ "abort",
+ "animationend",
+ "animationiteration",
+ "animationstart",
+ "beforeunload",
+ "blur",
+ "canplay",
+ "canplaythrough",
+ "change",
+ "click",
+ "contextmenu",
+ "dblclick",
+ "drag",
+ "dragend",
+ "dragenter",
+ "dragleave",
+ "dragover",
+ "dragstart",
+ "drop",
+ "durationchange",
+ "emptied",
+ "ended",
+ "error",
+ "focus",
+ "hashchange",
+ "input",
+ "invalid",
+ "keydown",
+ "keypress",
+ "keyup",
+ "load",
+ "loadeddata",
+ "loadedmetadata",
+ "loadstart",
+ "message",
+ "mousedown",
+ "mouseenter",
+ "mouseleave",
+ "mousemove",
+ "mouseout",
+ "mouseover",
+ "mouseup",
+ "mousewheel",
+ "offline",
+ "online",
+ "pagehide",
+ "pageshow",
+ "pause",
+ "play",
+ "playing",
+ "popstate",
+ "progress",
+ "ratechange",
+ "reset",
+ "resize",
+ "scroll",
+ "search",
+ "seeked",
+ "seeking",
+ "select",
+ "stalled",
+ "storage",
+ "submit",
+ "suspend",
+ "timeupdate",
+ "transitionend",
+ "unload",
+ "volumechange",
+ "waiting",
+ "webkitanimationend",
+ "webkitanimationiteration",
+ "webkitanimationstart",
+ "webkittransitionend",
+ "wheel",
+];
+
+const documentEvents = [
+ "abort",
+ "beforecopy",
+ "beforecut",
+ "beforepaste",
+ "blur",
+ "change",
+ "click",
+ "contextmenu",
+ "copy",
+ "cut",
+ "dblclick",
+ "drag",
+ "dragend",
+ "dragenter",
+ "dragleave",
+ "dragover",
+ "dragstart",
+ "drop",
+ "error",
+ "focus",
+ "input",
+ "invalid",
+ "keydown",
+ "keypress",
+ "keyup",
+ "load",
+ "mousedown",
+ "mouseenter",
+ "mouseleave",
+ "mousemove",
+ "mouseout",
+ "mouseover",
+ "mouseup",
+ "mousewheel",
+ "paste",
+ "readystatechange",
+ "reset",
+ "scroll",
+ "search",
+ "select",
+ "selectionchange",
+ "selectstart",
+ "submit",
+ "wheel",
+];
+
+const elementEvents = [
+ "abort",
+ "animationend",
+ "animationiteration",
+ "animationstart",
+ "beforecopy",
+ "beforecut",
+ "beforepaste",
+ "blur",
+ "canplay",
+ "canplaythrough",
+ "change",
+ "click",
+ "contextmenu",
+ "copy",
+ "cut",
+ "dblclick",
+ "drag",
+ "dragend",
+ "dragenter",
+ "dragleave",
+ "dragover",
+ "dragstart",
+ "drop",
+ "durationchange",
+ "emptied",
+ "ended",
+ "error",
+ "focus",
+ "focusin",
+ "focusout",
+ "input",
+ "invalid",
+ "keydown",
+ "keypress",
+ "keyup",
+ "load",
+ "loadeddata",
+ "loadedmetadata",
+ "loadstart",
+ "mousedown",
+ "mouseenter",
+ "mouseleave",
+ "mousemove",
+ "mouseout",
+ "mouseover",
+ "mouseup",
+ "mousewheel",
+ "paste",
+ "pause",
+ "play",
+ "playing",
+ "progress",
+ "ratechange",
+ "reset",
+ "scroll",
+ "search",
+ "seeked",
+ "seeking",
+ "select",
+ "selectstart",
+ "stalled",
+ "submit",
+ "suspend",
+ "timeupdate",
+ "touchcancel",
+ "touchend",
+ "touchmove",
+ "touchstart",
+ "transitionend",
+ "volumechange",
+ "waiting",
+ "webkitanimationend",
+ "webkitanimationiteration",
+ "webkitanimationstart",
+ "webkitkeyadded",
+ "webkitkeyerror",
+ "webkitkeymessage",
+ "webkitpresentationmodechanged",
+ "webkittransitionend",
+ "wheel",
+];
+
+const bodyElementWindowForwardedEvents = [
+ "beforeunload",
+ "blur",
+ "error",
+ "focus",
+ "hashchange",
+ "load",
+ "message",
+ "offline",
+ "online",
+ "pagehide",
+ "pageshow",
+ "popstate",
+ "resize",
+ "storage",
+ "unload",
+];
+
+const bodyElementDocumentForwardedEvents = [
+ "selectionchange",
+];
+
+const nonEventNames = [
+ "noneventname",
+];
+
+var magicNumber = 2;
+var sideEffect;
+
+function testHandler(object, install, remove, eventName)
+{
+ const capturedMagicNumber = ++magicNumber;
+ install(capturedMagicNumber);
+
+ if (unusualEventNames[eventName])
+ eventName = unusualEventNames[eventName];
+
+ sideEffect = capturedMagicNumber - 1;
+ if (object !== window && object !== document)
+ object.dispatchEvent(new Event(eventName));
+ const handlerOnTarget = sideEffect === capturedMagicNumber;
+ sideEffect = capturedMagicNumber - 1;
+ window.dispatchEvent(new Event(eventName));
+ const handlerOnWindow = sideEffect === capturedMagicNumber;
+ sideEffect = capturedMagicNumber - 1;
+ document.dispatchEvent(new Event(eventName));
+ const handlerOnDocument = sideEffect === capturedMagicNumber;
+
+ remove();
+
+ object.dispatchEvent(new Event(eventName));
+ window.dispatchEvent(new Event(eventName));
+ document.dispatchEvent(new Event(eventName));
+
+ const misfire = sideEffect === capturedMagicNumber;
+
+ var result;
+
+ if (!handlerOnTarget && !handlerOnWindow && !handlerOnDocument)
+ result = "none";
+ else
+ result = ((handlerOnTarget ? ", target" : "") + (handlerOnWindow ? ", window" : "") + (handlerOnDocument ? ", document" : "")).substring(2);
+
+ if (misfire)
+ result += ", remove failed";
+
+ return result;
+}
+
+function testScriptAttribute(object, eventName)
+{
+ const attributeName = "on" + eventName;
+ return testHandler(object, function(capturedMagicNumber) {
+ object[attributeName] = function() { sideEffect = capturedMagicNumber };
+ }, function() {
+ object[attributeName] = null;
+ }, eventName);
+}
+
+function testContentAttribute(element, eventName)
+{
+ const attributeName = "on" + eventName;
+ return testHandler(element, function(capturedMagicNumber) {
+ element.setAttribute(attributeName, "sideEffect = " + capturedMagicNumber);
+ }, function() {
+ element.removeAttribute(attributeName);
+ }, eventName);
+}
+
+function testElementAttribute(object, eventName)
+{
+ const scriptAttributeResult = testScriptAttribute(object, eventName);
+ const contentAttributeResult = testContentAttribute(object, eventName);
+ if (scriptAttributeResult === contentAttributeResult)
+ return scriptAttributeResult;
+ return "script: " + scriptAttributeResult + "; content: " + contentAttributeResult;
+}
+
+function sortUnique(array)
+{
+ return array.sort().filter(function(item, i) {
+ return i === 0 || item !== array[i - 1];
+ });
+}
+
+function arrayUnion()
+{
+ var combined = [];
+ for (var i = 0; i < arguments.length; ++i)
+ combined = combined.concat(arguments[i]);
+ return sortUnique(combined);
+}
+
+function arrayDifference(a, b)
+{
+ return a.filter(function(item) {
+ return b.indexOf(item) < 0;
+ });
+}
+
+const allEventNames = arrayUnion(windowEvents, documentEvents, elementEvents, bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents, nonEventNames);
+
+var sectionOpen = false;
+
+function endSection()
+{
+ if (sectionOpen) {
+ debug("");
+ sectionOpen = false;
+ }
+}
+
+function section(title)
+{
+ endSection();
+ debug(title);
+ debug("");
+ sectionOpen = true;
+}
+
+function testArray(array, prefix, expected, sectionName)
+{
+ section(sectionName);
+ for (var i = 0; i < array.length; ++i) {
+ shouldBeEqualToString(prefix + ", \"" + array[i] + "\")", expected);
+ }
+}
+
+const element = document.documentElement;
+const bodyElement = document.body;
+const audioElement = document.createElement("video");
+const framesetElement = document.createElement("frameset");
+const inputElement = document.createElement("input");
+const videoElement = document.createElement("video");
+
+testArray(windowEvents, "testScriptAttribute(window", "window", "Event names we expect to be able to set on the window object");
+testArray(arrayDifference(allEventNames, windowEvents), "testScriptAttribute(window", "none", "Event names we expect not to be able to set on the window object");
+
+testArray(documentEvents, "testScriptAttribute(document", "document", "Event names we expect to be able to set on the document");
+testArray(arrayDifference(allEventNames, documentEvents), "testScriptAttribute(document", "none", "Event names we expect not to be able to set on the document");
+
+testArray(elementEvents, "testElementAttribute(element", "target", "Event names we expect to be able to set on an element (tested on the &lt;html> element)");
+testArray(arrayDifference(allEventNames, elementEvents), "testElementAttribute(element", "none", "Event names we expect not to be able to set on an element (tested on the &lt;html> element)");
+
+testArray(elementEvents, "testElementAttribute(inputElement", "target", "Event names we expect to be able to set on an element (tested on the &lt;input> element)");
+testArray(arrayDifference(allEventNames, elementEvents), "testElementAttribute(inputElement", "none", "Event names we expect not to be able to set on an element (tested on the &lt;input> element)");
+
+testArray(elementEvents, "testElementAttribute(audioElement", "target", "Event names we expect to be able to set on an element (tested on the &lt;audio> element)");
+testArray(arrayDifference(allEventNames, elementEvents), "testElementAttribute(audioElement", "none", "Event names we expect not to be able to set on an element (tested on the &lt;audio> element)");
+
+testArray(elementEvents, "testElementAttribute(videoElement", "target", "Event names we expect to be able to set on an element (tested on the &lt;video> element)");
+testArray(arrayDifference(allEventNames, elementEvents), "testElementAttribute(videoElement", "none", "Event names we expect not to be able to set on an element (tested on the &lt;video> element)");
+
+testArray(bodyElementWindowForwardedEvents, "testElementAttribute(bodyElement", "window", "Event names we expect to be forwarded from &lt;body> element to window object)");
+testArray(bodyElementDocumentForwardedEvents, "testElementAttribute(bodyElement", "document", "Event names we expect to be forwarded from &lt;body> element to document)");
+testArray(arrayDifference(elementEvents, arrayUnion(bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(bodyElement", "target", "Non-forwarded event names on &lt;body> element");
+testArray(arrayDifference(allEventNames, arrayUnion(elementEvents, bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(bodyElement", "none", "Event names we expect to not be able to set on &lt;body> element");
+
+testArray(bodyElementWindowForwardedEvents, "testElementAttribute(framesetElement", "window", "Event names we expect to be forwarded from &lt;frameset> element to window object)");
+testArray(bodyElementDocumentForwardedEvents, "testElementAttribute(framesetElement", "document", "Event names we expect to be forwarded from &lt;frameset> element to document)");
+testArray(arrayDifference(elementEvents, arrayUnion(bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(framesetElement", "target", "Non-forwarded event names on &lt;frameset> element");
+testArray(arrayDifference(allEventNames, arrayUnion(elementEvents, bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(framesetElement", "none", "Event names we expect to not be able to set on &lt;frameset> element");
+
+endSection();
+
+/*
+
+----------------
+
+To make the results of this test platform independent, there is no testing here for conditional events.
+An alternative would be to always make these event handler attributes work even if the feature
+that sends the events is turned off. See list here of IDL files that indicate these conditional events.
+
+page/DOMWindow.idl:#if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
+page/DOMWindow.idl: attribute EventListener onorientationchange;
+page/DOMWindow.idl:#endif
+page/DOMWindow.idl: [Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
+page/DOMWindow.idl: [Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
+page/DOMWindow.idl: [Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
+page/DOMWindow.idl: [Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
+page/DOMWindow.idl: [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturestart;
+page/DOMWindow.idl: [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongesturechange;
+page/DOMWindow.idl: [Conditional=IOS_GESTURE_EVENTS] attribute EventListener ongestureend;
+page/DOMWindow.idl: [Conditional=DEVICE_ORIENTATION] attribute EventListener ondevicemotion;
+page/DOMWindow.idl: [Conditional=DEVICE_ORIENTATION] attribute EventListener ondeviceorientation;
+page/DOMWindow.idl: [Conditional=PROXIMITY_EVENTS] attribute EventListener onwebkitdeviceproximity;
+page/DOMWindow.idl: [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
+page/DOMWindow.idl: [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
+page/DOMWindow.idl: [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
+page/DOMWindow.idl: [Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
+
+dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
+dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
+dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
+dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
+dom/Document.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
+dom/Document.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
+dom/Document.idl: [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockchange;
+dom/Document.idl: [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onpointerlockerror;
+dom/Document.idl: [NotEnumerable, Conditional=CSP_NEXT] attribute EventListener onsecuritypolicyviolation;
+dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
+dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
+dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
+dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
+
+dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchstart;
+dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchmove;
+dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchend;
+dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventListener ontouchcancel;
+dom/Element.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenchange;
+dom/Element.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventListener onwebkitfullscreenerror;
+dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealbottom;
+dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealleft;
+dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealright;
+dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventListener onwebkitwillrevealtop;
+
+html/HTMLBodyElement.idl: [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
+
+html/HTMLFrameSetElement.idl: [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
+
+html/HTMLFormElement.idl: [Conditional=REQUEST_AUTOCOMPLETE, NotEnumerable] attribute EventListener onautocomplete;
+html/HTMLFormElement.idl: [Conditional=REQUEST_AUTOCOMPLETE, NotEnumerable] attribute EventListener onautocompleteerror;
+
+html/HTMLMediaElement.idl: [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventListener onwebkitneedkey;
+html/HTMLMediaElement.idl: [Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitcurrentplaybacktargetiswirelesschanged;
+html/HTMLMediaElement.idl: [Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventListener onwebkitplaybacktargetavailabilitychanged;
+
+----------------
+
+It would be good to extend this test to cover more objects.
+See list below of IDL files that indicate objects have these attributes as of the writing of this test.
+
+Modules/battery/BatteryManager.idl: attribute EventListener onchargingchange;
+Modules/battery/BatteryManager.idl: attribute EventListener onchargingtimechange;
+Modules/battery/BatteryManager.idl: attribute EventListener ondischargingtimechange;
+Modules/battery/BatteryManager.idl: attribute EventListener onlevelchange;
+
+Modules/encryptedmedia/MediaKeySession.idl: attribute EventListener onwebkitkeyadded;
+Modules/encryptedmedia/MediaKeySession.idl: attribute EventListener onwebkitkeyerror;
+Modules/encryptedmedia/MediaKeySession.idl: attribute EventListener onwebkitkeymessage;
+
+Modules/indexeddb/IDBDatabase.idl: attribute EventListener onabort;
+Modules/indexeddb/IDBDatabase.idl: attribute EventListener onerror;
+Modules/indexeddb/IDBDatabase.idl: attribute EventListener onversionchange;
+
+Modules/indexeddb/IDBOpenDBRequest.idl: attribute EventListener onblocked;
+Modules/indexeddb/IDBOpenDBRequest.idl: attribute EventListener onupgradeneeded;
+
+Modules/indexeddb/IDBRequest.idl: attribute EventListener onsuccess;
+Modules/indexeddb/IDBRequest.idl: attribute EventListener onerror;
+
+Modules/indexeddb/IDBTransaction.idl: attribute EventListener onabort;
+Modules/indexeddb/IDBTransaction.idl: attribute EventListener oncomplete;
+Modules/indexeddb/IDBTransaction.idl: attribute EventListener onerror;
+
+Modules/mediastream/MediaStream.idl: attribute EventListener onactive;
+Modules/mediastream/MediaStream.idl: attribute EventListener oninactive;
+Modules/mediastream/MediaStream.idl: attribute EventListener onaddtrack;
+Modules/mediastream/MediaStream.idl: attribute EventListener onremovetrack;
+Modules/mediastream/MediaStreamTrack.idl: attribute EventListener onmute;
+Modules/mediastream/MediaStreamTrack.idl: attribute EventListener onunmute;
+Modules/mediastream/MediaStreamTrack.idl: attribute EventListener onstarted;
+Modules/mediastream/MediaStreamTrack.idl: attribute EventListener onended;
+Modules/mediastream/MediaStreamTrack.idl: attribute EventListener onoverconstrained;
+Modules/mediastream/RTCDTMFSender.idl: attribute EventListener ontonechange;
+Modules/mediastream/RTCDataChannel.idl: attribute EventListener onopen;
+Modules/mediastream/RTCDataChannel.idl: attribute EventListener onerror;
+Modules/mediastream/RTCDataChannel.idl: attribute EventListener onclose;
+Modules/mediastream/RTCDataChannel.idl: attribute EventListener onmessage;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener onnegotiationneeded;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener onicecandidate;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener onsignalingstatechange;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener onaddstream;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener onremovestream;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener oniceconnectionstatechange;
+Modules/mediastream/RTCPeerConnection.idl: attribute EventListener ondatachannel;
+
+Modules/notifications/Notification.idl: attribute EventListener onshow;
+Modules/notifications/Notification.idl: attribute EventListener ondisplay;
+Modules/notifications/Notification.idl: attribute EventListener onerror;
+Modules/notifications/Notification.idl: attribute EventListener onclose;
+Modules/notifications/Notification.idl: attribute EventListener onclick;
+
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onstart;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onend;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onerror;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onpause;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onresume;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onmark;
+Modules/speech/SpeechSynthesisUtterance.idl: attribute EventListener onboundary;
+
+Modules/webaudio/AudioBufferSourceNode.idl: attribute EventListener onended;
+Modules/webaudio/AudioContext.idl: attribute EventListener oncomplete;
+Modules/webaudio/OscillatorNode.idl: attribute EventListener onended;
+Modules/webaudio/ScriptProcessorNode.idl: attribute EventListener onaudioprocess;
+
+Modules/websockets/WebSocket.idl: attribute EventListener onopen;
+Modules/websockets/WebSocket.idl: attribute EventListener onmessage;
+Modules/websockets/WebSocket.idl: attribute EventListener onerror;
+Modules/websockets/WebSocket.idl: attribute EventListener onclose;
+
+css/FontLoader.idl: attribute EventListener onloading;
+css/FontLoader.idl: attribute EventListener onloadingdone;
+css/FontLoader.idl: attribute EventListener onloadstart;
+css/FontLoader.idl: attribute EventListener onload;
+css/FontLoader.idl: attribute EventListener onerror;
+
+dom/MessagePort.idl: attribute EventListener onmessage;
+
+fileapi/FileReader.idl: attribute EventListener onloadstart;
+fileapi/FileReader.idl: attribute EventListener onprogress;
+fileapi/FileReader.idl: attribute EventListener onload;
+fileapi/FileReader.idl: attribute EventListener onabort;
+fileapi/FileReader.idl: attribute EventListener onerror;
+fileapi/FileReader.idl: attribute EventListener onloadend;
+
+html/track/AudioTrackList.idl: attribute EventListener onchange;
+html/track/AudioTrackList.idl: attribute EventListener onaddtrack;
+html/track/AudioTrackList.idl: attribute EventListener onremovetrack;
+
+html/track/TextTrack.idl: attribute EventListener oncuechange;
+html/track/TextTrackCue.idl: attribute EventListener onenter;
+
+html/track/TextTrackCue.idl: attribute EventListener onexit;
+html/track/TextTrackList.idl: attribute EventListener onaddtrack;
+html/track/TextTrackList.idl: attribute EventListener onchange;
+html/track/TextTrackList.idl: attribute EventListener onremovetrack;
+
+html/track/VideoTrackList.idl: attribute EventListener onchange;
+html/track/VideoTrackList.idl: attribute EventListener onaddtrack;
+html/track/VideoTrackList.idl: attribute EventListener onremovetrack;
+
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onchecking;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onerror;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onnoupdate;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener ondownloading;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onprogress;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onupdateready;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener oncached;
+loader/appcache/DOMApplicationCache.idl: attribute EventListener onobsolete;
+
+page/EventSource.idl: attribute EventListener onopen;
+page/EventSource.idl: attribute EventListener onmessage;
+page/EventSource.idl: attribute EventListener onerror;
+
+page/Performance.idl: attribute EventListener onwebkitresourcetimingbufferfull;
+
+workers/AbstractWorker.idl: attribute EventListener onerror;
+
+workers/DedicatedWorkerGlobalScope.idl: attribute EventListener onmessage;
+
+workers/Worker.idl: attribute EventListener onmessage;
+
+workers/WorkerGlobalScope.idl: attribute EventListener onerror;
+workers/WorkerGlobalScope.idl: attribute EventListener onoffline;
+workers/WorkerGlobalScope.idl: attribute EventListener ononline;
+
+xml/XMLHttpRequest.idl: attribute EventListener onabort;
+xml/XMLHttpRequest.idl: attribute EventListener onerror;
+xml/XMLHttpRequest.idl: attribute EventListener onload;
+xml/XMLHttpRequest.idl: attribute EventListener onloadend;
+xml/XMLHttpRequest.idl: attribute EventListener onloadstart;
+xml/XMLHttpRequest.idl: attribute EventListener onprogress;
+xml/XMLHttpRequest.idl: [Conditional=XHR_TIMEOUT] attribute EventListener ontimeout;
+xml/XMLHttpRequest.idl: attribute EventListener onreadystatechange;
+
+xml/XMLHttpRequestUpload.idl: attribute EventListener onabort;
+xml/XMLHttpRequestUpload.idl: attribute EventListener onerror;
+xml/XMLHttpRequestUpload.idl: attribute EventListener onload;
+xml/XMLHttpRequestUpload.idl: attribute EventListener onloadend;
+xml/XMLHttpRequestUpload.idl: attribute EventListener onloadstart;
+xml/XMLHttpRequestUpload.idl: attribute EventListener onprogress;
+
+----------------
+
+*/
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre>
</div>
</div>
</body>
</html>