<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=368835
-->
  <head>
    <title>Test for Bug 368835</title>

    <link rel="stylesheet" type="text/css" href="http://mochi.test:8888/tests/SimpleTest/test.css" />

    <script type="text/javascript" src="http://mochi.test:8888/tests/SimpleTest/SimpleTest.js"></script>
  </head>

  <body>
    <a target="_blank"
       href="https://bugzilla.mozilla.org/show_bug.cgi?id=368835">
      Mozilla Bug 368835
    </a>
    <p id="display"></p>
    <div id="content" style="display: none">
    </div>
    <pre id="test">
    <script class="testbody" type="text/javascript">
      function dataContainerEventHandler(aEvent)
      {
        var value = "";
        var isPassed = true;
        try {
          value = aEvent.getData("data1");
          isPassed = true;
        } catch (e) {
          isPassed = false;
        }

        ok(isPassed, "getData shouldn't fail.");
        ok(value == "data1", "Wrong value of data.");

        is(aEvent.getData("document"), document);
        is(aEvent.getData("window"), window);
        is(aEvent.getData("event"), aEvent);
        is(aEvent.getData("null"), null);
        is(aEvent.getData("1"), 1);
        is(aEvent.getData("1.1"), 1.1);
        is(aEvent.getData("true"), true);

        try {
          aEvent.setData("data3", "data3");
          isPassed = false;
        } catch (e) {
          isPassed = true;
        }

        ok(isPassed, "setData should fail during event dispatching.");
      }

      function doTest()
      {
        var isPassed;
        var event = null;

        try {
          event = document.createEvent("datacontainerevents");
          isPassed = true;
        } catch (e) {
          isPassed = false;
        }

        ok(isPassed, "Document should know about 'datacontainerevents' event class.");
        ok(("setData" in event), "nsIDOMDataContainerEvent isn't available.");

        event.initEvent("dataContainerEvent", true, true);

        try {
          event.setData("data1", "data1");
          event.setData("document", document);
          event.setData("window", window);
          event.setData("event", event);
          event.setData("null", null);
          event.setData("1", 1);
          event.setData("1.1", 1.1);
          event.setData("true", true);
          isPassed = true;
        } catch (e) {
          isPassed = false;
        }

        ok(isPassed, "setData shouldn't fail when event is initialized.");

        document.body.addEventListener("dataContainerEvent",
                                       dataContainerEventHandler, true);
        document.body.dispatchEvent(event);
        SimpleTest.finish();
      }

      SimpleTest.waitForExplicitFinish();
      addLoadEvent(doTest);
    </script>
    </pre>
  </body>
</html>