<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test for base URIs</title>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <base href="/tests/dom/base/" />
  <style>
    #bound { -moz-binding: url("test/file_base_xbl.xml#test"); }
  </style>
</head>
<body>
<div id="1" xml:base="supercalifragilisticexpialidocious"><p><p xml:base="hello/"><p xml:base="world"><span xml:base="#iamtheverymodelofamodernmajorgeneral">text</span></p></p></p></div>
<div id="bound"/>
<pre id="test">
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
addLoadEvent(function() {
  is(document.baseURI, "http://mochi.test:8888/tests/dom/base/",
     "document base");
  is(document.body.baseURI, "http://mochi.test:8888/tests/dom/base/",
     "body base");

  var expected =
    ["http://mochi.test:8888/tests/dom/base/supercalifragilisticexpialidocious",
     "http://mochi.test:8888/tests/dom/base/supercalifragilisticexpialidocious",
     "http://mochi.test:8888/tests/dom/base/hello/",
     "http://mochi.test:8888/tests/dom/base/hello/world",
     "http://mochi.test:8888/tests/dom/base/hello/world#iamtheverymodelofamodernmajorgeneral",
     "http://mochi.test:8888/tests/dom/base/hello/world#iamtheverymodelofamodernmajorgeneral",
     ];
  var node = document.getElementById("1");
  while(node) {
    is(node.baseURI, expected.shift(), "node base");
    node = node.firstChild;
  }
  is(expected.length, 0, "found all expected nodes");

  var svgExpected =
    ["http://mochi.test:8888/tests/dom/base/test/file_base_xbl.xml",
     "http://mochi.test:8888/tests/dom/base/test/file_base_xbl.xml",
     "http://mochi.test:8888/tests/dom/base/test/file_base_xbl.xml#shesellsseashellsbytheseashore",
     ];
  node = SpecialPowers.wrap(document).getAnonymousNodes(document.getElementById("bound"))[0];
  while(node) {
    is(node.baseURI, svgExpected.shift(), "node base");
    node = node.firstChild;
  }
  is(svgExpected.length, 0, "found all expected nodes");

  SimpleTest.finish();
});
</script>
</pre>
</body>
</html>