554 lines
27 KiB
HTML
554 lines
27 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
description("Test which event listeners are set up by event handler attributes (the ones with names like onclick).");
|
|
|
|
const unusualEventNames = {
|
|
"webkitanimationend": "webkitAnimationEnd",
|
|
"webkitanimationiteration": "webkitAnimationIteration",
|
|
"webkitanimationstart": "webkitAnimationStart",
|
|
"webkittransitionend": "webkitTransitionEnd",
|
|
};
|
|
|
|
const eventsInGlobalEventHandlers = [
|
|
"abort",
|
|
"animationend",
|
|
"animationiteration",
|
|
"animationstart",
|
|
"blur",
|
|
"canplay",
|
|
"canplaythrough",
|
|
"change",
|
|
"click",
|
|
"contextmenu",
|
|
"dblclick",
|
|
"drag",
|
|
"dragend",
|
|
"dragenter",
|
|
"dragleave",
|
|
"dragover",
|
|
"dragstart",
|
|
"drop",
|
|
"durationchange",
|
|
"emptied",
|
|
"ended",
|
|
"error",
|
|
"focus",
|
|
"input",
|
|
"invalid",
|
|
"keydown",
|
|
"keypress",
|
|
"keyup",
|
|
"load",
|
|
"loadeddata",
|
|
"loadedmetadata",
|
|
"loadstart",
|
|
"mousedown",
|
|
"mouseenter",
|
|
"mouseleave",
|
|
"mousemove",
|
|
"mouseout",
|
|
"mouseover",
|
|
"mouseup",
|
|
"mousewheel",
|
|
"pause",
|
|
"play",
|
|
"playing",
|
|
"progress",
|
|
"ratechange",
|
|
"reset",
|
|
"resize",
|
|
"scroll",
|
|
"seeked",
|
|
"seeking",
|
|
"select",
|
|
"selectionchange",
|
|
"selectstart",
|
|
"stalled",
|
|
"submit",
|
|
"suspend",
|
|
"timeupdate",
|
|
"transitionend",
|
|
"volumechange",
|
|
"waiting",
|
|
"search",
|
|
"wheel",
|
|
"webkitanimationend",
|
|
"webkitanimationiteration",
|
|
"webkitanimationstart",
|
|
"webkittransitionend"
|
|
];
|
|
|
|
const eventsInWindowEventHandlers = [
|
|
"beforeunload",
|
|
"hashchange",
|
|
"message",
|
|
"offline",
|
|
"online",
|
|
"pagehide",
|
|
"pageshow",
|
|
"popstate",
|
|
"storage",
|
|
"unload",
|
|
];
|
|
|
|
const elementAndDocumentEvents = [
|
|
"beforecopy",
|
|
"beforecut",
|
|
"beforepaste",
|
|
"copy",
|
|
"cut",
|
|
"paste"
|
|
];
|
|
|
|
const elementAndWindowEvents = [
|
|
"webkitanimationend",
|
|
"webkitanimationiteration",
|
|
"webkitanimationstart",
|
|
"webkittransitionend"
|
|
];
|
|
|
|
const uniqueDocumentEvents = [
|
|
"readystatechange"
|
|
];
|
|
|
|
const uniqueElementEvents = [
|
|
"beforeload"
|
|
];
|
|
|
|
const elementBodyAndFrameSetEvents = [
|
|
"focusin",
|
|
"focusout"
|
|
];
|
|
|
|
const bodyElementWindowForwardedEvents = [
|
|
"beforeunload",
|
|
"blur",
|
|
"error",
|
|
"focus",
|
|
"focusin",
|
|
"focusout",
|
|
"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();
|
|
|
|
sideEffect = capturedMagicNumber - 1;
|
|
|
|
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 windowEvents = arrayUnion(eventsInGlobalEventHandlers, eventsInWindowEventHandlers, elementAndWindowEvents);
|
|
const documentEvents = arrayUnion(eventsInGlobalEventHandlers, elementAndDocumentEvents, uniqueDocumentEvents);
|
|
const elementEvents = arrayUnion(eventsInGlobalEventHandlers, elementAndDocumentEvents, elementAndWindowEvents, elementBodyAndFrameSetEvents, uniqueElementEvents);
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
var nonHTMLElement = document.createElementNS("foo", "foo");
|
|
var element = document.documentElement;
|
|
var bodyElement = document.body;
|
|
var audioElement = document.createElement("video");
|
|
var framesetElement = document.createElement("frameset");
|
|
var inputElement = document.createElement("input");
|
|
var videoElement = document.createElement("video");
|
|
var rectElement = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
|
|
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 <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 <html> element)");
|
|
|
|
testArray(elementEvents, "testElementAttribute(inputElement", "target", "Event names we expect to be able to set on an element (tested on the <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 <input> element)");
|
|
|
|
testArray(elementEvents, "testElementAttribute(audioElement", "target", "Event names we expect to be able to set on an element (tested on the <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 <audio> element)");
|
|
|
|
testArray(elementEvents, "testElementAttribute(videoElement", "target", "Event names we expect to be able to set on an element (tested on the <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 <video> element)");
|
|
|
|
testArray(bodyElementWindowForwardedEvents, "testElementAttribute(bodyElement", "window", "Event names we expect to be forwarded from <body> element to window object)");
|
|
testArray(bodyElementDocumentForwardedEvents, "testElementAttribute(bodyElement", "document", "Event names we expect to be forwarded from <body> element to document)");
|
|
testArray(arrayDifference(elementEvents, arrayUnion(bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(bodyElement", "target", "Non-forwarded event names on <body> element");
|
|
testArray(arrayDifference(allEventNames, arrayUnion(elementEvents, bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(bodyElement", "none", "Event names we expect to not be able to set on <body> element");
|
|
|
|
testArray(bodyElementWindowForwardedEvents, "testElementAttribute(framesetElement", "window", "Event names we expect to be forwarded from <frameset> element to window object)");
|
|
testArray(bodyElementDocumentForwardedEvents, "testElementAttribute(framesetElement", "document", "Event names we expect to be forwarded from <frameset> element to document)");
|
|
testArray(arrayDifference(elementEvents, arrayUnion(bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(framesetElement", "target", "Non-forwarded event names on <frameset> element");
|
|
testArray(arrayDifference(allEventNames, arrayUnion(elementEvents, bodyElementWindowForwardedEvents, bodyElementDocumentForwardedEvents)), "testElementAttribute(framesetElement", "none", "Event names we expect to not be able to set on <frameset> element");
|
|
|
|
testArray(elementEvents, "testElementAttribute(rectElement", "target", "Event names we expect to be able to set on an element (tested on the SVG <rect> element)");
|
|
testArray(arrayDifference(allEventNames, elementEvents), "testElementAttribute(rectElement", "none", "Event names we expect not to be able to set on an element (tested on the SVG <rect> element)");
|
|
|
|
testArray(allEventNames, "testElementAttribute(nonHTMLElement", "none", "Event names on a non-HTML 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 include these conditional events.
|
|
|
|
html/HTMLBodyElement.idl: [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
|
|
|
|
html/HTMLFrameSetElement.idl: [Conditional=ORIENTATION_EVENTS, NotEnumerable, JSWindowEventListener] attribute EventListener onorientationchange;
|
|
|
|
----------------
|
|
|
|
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/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/DOMWindow.idl: [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondevicemotion;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=DEVICE_ORIENTATION] attribute EventHandler ondeviceorientation;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchcancel;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchend;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchmove;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchstart;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturechange;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongestureend;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=IOS_GESTURE_EVENTS] attribute EventHandler ongesturestart;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=PROXIMITY_EVENTS] attribute EventHandler onwebkitdeviceproximity;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealbottom;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealleft;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealright;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealtop;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcecancelled;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcechanged;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceclick;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcedown;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceup;
|
|
page/DOMWindow.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcewillbegin;
|
|
|
|
dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchcancel;
|
|
dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchend;
|
|
dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchmove;
|
|
dom/Document.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchstart;
|
|
dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealbottom;
|
|
dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealleft;
|
|
dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealright;
|
|
dom/Document.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealtop;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcecancelled;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcechanged;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceclick;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcedown;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceup;
|
|
dom/Document.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcewillbegin;
|
|
dom/Document.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
|
|
dom/Document.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
|
|
dom/Document.idl: [NotEnumerable, Conditional=POINTER_LOCK] attribute EventHandler onpointerlockchange;
|
|
dom/Document.idl: [NotEnumerable, Conditional=POINTER_LOCK] attribute EventHandler onpointerlockerror;
|
|
|
|
dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchcancel;
|
|
dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchend;
|
|
dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchmove;
|
|
dom/Element.idl: [NotEnumerable, Conditional=TOUCH_EVENTS] attribute EventHandler ontouchstart;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealbottom;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealleft;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealright;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WILL_REVEAL_EDGE_EVENTS] attribute EventHandler onwebkitwillrevealtop;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcecancelled;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcechanged;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceclick;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcedown;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforcewillbegin;
|
|
dom/Element.idl: [NotEnumerable, Conditional=MOUSE_FORCE_EVENTS] attribute EventHandler onwebkitmouseforceup;
|
|
dom/Element.idl: [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyadded;
|
|
dom/Element.idl: [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeyerror;
|
|
dom/Element.idl: [NotEnumerable, Conditional=ENCRYPTED_MEDIA] attribute EventHandler onwebkitkeymessage;
|
|
dom/Element.idl: [NotEnumerable, Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2] attribute EventHandler onwebkitneedkey;
|
|
dom/Element.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenchange;
|
|
dom/Element.idl: [NotEnumerable, Conditional=FULLSCREEN_API] attribute EventHandler onwebkitfullscreenerror;
|
|
dom/Element.idl: [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventHandler onautocomplete;
|
|
dom/Element.idl: [NotEnumerable, Conditional=REQUEST_AUTOCOMPLETE] attribute EventHandler onautocompleteerror;
|
|
dom/Element.idl: [NotEnumerable, Conditional=VIDEO_PRESENTATION_MODE] attribute EventHandler onwebkitpresentationmodechanged;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitcurrentplaybacktargetiswirelesschanged;
|
|
dom/Element.idl: [NotEnumerable, Conditional=WIRELESS_PLAYBACK_TARGET] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
|
|
|
|
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>
|