<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin"
                 type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
                 type="text/css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=490879
-->
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        title="Mozilla Bug 490879" onload="runTest();">
  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>

  <body xmlns="http://www.w3.org/1999/xhtml">
  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490879"
     target="_blank">Mozilla Bug 490879</a>
  <p/>
  <iframe id="i1" width="200" height="100" src="about:blank" /><br />
  <img id="i" src="green.png" />
  <p/>
  <pre id="test">
  </pre>
  </body>
  <script class="testbody" type="application/javascript">
  <![CDATA[

function runTest() {
  function verifyContent() {
    const kExpectedImgSpec = "data:image/png;base64,";
    var e = document.getElementById('i1');
    var doc = e.contentDocument;
    is(doc.getElementsByTagName("img")[0].src.substring(0, kExpectedImgSpec.length),
       kExpectedImgSpec, "The pasted image is a base64-encoded data: URI");
  }

  function pasteInto() {
    var e = document.getElementById('i1');
    var doc = e.contentDocument;
    doc.designMode = "on";
    doc.defaultView.focus();
    var selection = doc.defaultView.getSelection();
    selection.removeAllRanges();
    selection.selectAllChildren(doc.body);
    selection.collapseToEnd();
    doc.execCommand("paste", false, null);
  }

  function copyToClipBoard() {
    var tmpNode = document.popupNode;
    document.popupNode = document.getElementById("i");

    const kCmd = "cmd_copyImageContents";
    var controller = top.document.commandDispatcher
                     .getControllerForCommand(kCmd);
    ok((controller && controller.isCommandEnabled(kCmd)), "have copy command");
    controller.doCommand(kCmd);

    document.popupNode = tmpNode;
  }

  copyToClipBoard();
  pasteInto();
  verifyContent();

  SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish();
]]>
</script>
</window>
