<script>
if (window.testRunner)
     testRunner.dumpAsText();

if (window.testRunner)
    testRunner.waitUntilDone();

function foo() {
    var frame = frames[0];
    var sel = frame.getSelection();
    var doc = frame.document;
    doc.execCommand("SelectAll");
    doc.execCommand("Copy");

    var p1 = document.getElementById("pastehere");
    var s = window.getSelection();
    s.collapse(p1, 0);
    document.execCommand("Paste");
    log(document.getElementById("pastehere").innerHTML);

    if (window.testRunner)
        testRunner.notifyDone();
}

function log(str) {
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(str));
    var console = document.getElementById("console");
    console.appendChild(li);
}
</script>
<div id="description">
This test copies the content of an iframe and pastes it
in an editable area and verifies that no script, handlers or javascript urls are copied.
</div>
<div id="pastehere" contenteditable="true"></div>
<ul id="console"></ul>
<iframe id="iframe1" src="../resources/svgcontent.xhtml" onload="foo()"></iframe>
