<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1075702
-->
<head>
  <meta charset="utf-8">
  <title> Test for Bug 1075702 </title>
  <script src="/tests/SimpleTest/SimpleTest.js"> </script>
  <script src="/tests/SimpleTest/EventUtils.js"> </script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1075702"> Mozilla Bug 1075702 </a>
<p id="display"></p>

<pre id="test">
<script type="application/javascript">

  /** Test for Bug 1075702 **/
  // test: Element.removeAttributeNode()

  var a1 = document.createAttribute("aa");
  a1.nodeValue = "lowercase";

  var a2 = document.createAttributeNS("", "AA");
  a2.nodeValue = "UPPERCASE";

  document.documentElement.setAttributeNode(a1);
  document.documentElement.setAttributeNode(a2);

  is(document.documentElement.getAttributeNS("", "aa"), "lowercase", "Should be lowercase!");
  is(document.documentElement.getAttributeNS("", "AA"), "UPPERCASE", "Should be UPPERCASE!");

  var a3 = document.createAttribute("AA");
  a3.nodeValue = "UPPERCASE AGAIN";
  document.documentElement.setAttributeNode(a3);

  is(document.documentElement.getAttributeNS("", "aa"), "UPPERCASE AGAIN",
  "Should be UPPERCASE AGAIN!");
  is(document.documentElement.getAttributeNS("", "AA"), "UPPERCASE", "Should be UPPERCASE!");

  var removedNodeAccordingToEvent;

  function mutationHandler(aEvent) {
    removedNodeAccordingToEvent = aEvent.relatedNode;
  }

  var test1 = document.createElement("div");
  test1.setAttribute("x", "y");
  removedNodeAccordingToEvent = null;

  function testremoveNamedItemNS() {
    test1.addEventListener("DOMAttrModified", mutationHandler, true);
    var removedNodeAccordingToRemoveNamedItemNS = test1.attributes.removeNamedItemNS(null, "x");
    test1.removeEventListener("DOMAttrModified", mutationHandler, true);
    is(removedNodeAccordingToEvent, removedNodeAccordingToRemoveNamedItemNS, "Node removed according to event is not same as node removed by removeNamedItemNS.");
  }

  testremoveNamedItemNS();

  var test2 = document.createElement("div");
  test2.setAttribute("x", "y");
  removedNodeAccordingToEvent = null;

  function testremoveNamedItem() {
    test2.addEventListener("DOMAttrModified", mutationHandler, true);
    var removedNodeAccordingToRemoveNamedItem = test2.attributes.removeNamedItem("x");
    test2.removeEventListener("DOMAttrModified", mutationHandler, true);
    is(removedNodeAccordingToEvent, removedNodeAccordingToRemoveNamedItem, "Node removed according to event is not same as node removed by removeNamedItem.");
  }

  testremoveNamedItem();

</script>
</body>
</html>
