This tests inserting content with an event handler. WebKit should never execute event handlers.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".



Inserting with load event handler
PASS event.dataTransfer.getData('text/html').includes('onload="') is true
PASS event.dataTransfer.getData('text/html').includes('onmouseover="') is true
PASS didExecute is false

Inserting with script element
PASS event.dataTransfer.getData('text/html').includes('script') is true
PASS didExecute is false

Inserting iframe with a name into plaintext-only
PASS event.dataTransfer.getData("text/html").includes("iframe name=") is true
PASS didExecute is false
PASS successfullyParsed is true

TEST COMPLETE

