1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_bug384003.xhtml Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,84 @@ 1.4 +<?xml version="1.0"?> 1.5 +<html xmlns="http://www.w3.org/1999/xhtml" attr="value"> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=384003 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 384003</title> 1.11 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.13 +</head> 1.14 +<body> 1.15 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=384003">Mozilla Bug 384003</a> 1.16 +<p id="display"></p> 1.17 +<div id="content" style="display: none"> 1.18 + 1.19 +</div> 1.20 +<pre id="test" xmlns:foo="http://www.foo.org"><foo:foo/> 1.21 +<script type="application/javascript"> 1.22 +<![CDATA[ 1.23 + 1.24 +/** Test for Bug 384003 **/ 1.25 + 1.26 + 1.27 +function resolverTest(expr, resolver, result, extype) { 1.28 + if (!extype) { 1.29 + extype = 0; 1.30 + } 1.31 + try { 1.32 + is(document.evaluate(expr, document, resolver, 1.33 + XPathResult.FIRST_ORDERED_NODE_TYPE, null). 1.34 + singleNodeValue, 1.35 + result, 1.36 + "Wrong XPathResult"); 1.37 + if (extype) { 1.38 + ok(false, "Should have got an exception!"); 1.39 + } 1.40 + } catch(ex) { 1.41 + is(ex.name, extype, "Wrong exception"); 1.42 + } 1.43 +} 1.44 + 1.45 +// Expression should return document element. 1.46 +// Document resolver 1.47 +resolverTest("*", document, document.documentElement); 1.48 +// Element resolver 1.49 +resolverTest("*", document.documentElement, document.documentElement); 1.50 +// Attribute resolver 1.51 +resolverTest("*", document.documentElement.getAttributeNode("attr"), 1.52 + document.documentElement); 1.53 +// Text node resolver 1.54 +resolverTest("*", document.documentElement.firstChild, 1.55 + document.documentElement); 1.56 +// Comment node resolver 1.57 +resolverTest("*", document.documentElement.firstChild.nextSibling, 1.58 + document.documentElement); 1.59 + 1.60 +// Expression should return foo element, but because of the 1.61 +// resolver it may throw an exception. 1.62 +var foo = document.getElementById("test").firstChild; 1.63 +// Document resolver 1.64 +resolverTest("//foo:foo", document, foo, "NamespaceError"); 1.65 +// Element resolver 1.66 +resolverTest("//foo:foo", document.documentElement, foo, "NamespaceError"); 1.67 +// Attribute resolver 1.68 +resolverTest("//foo:foo", document.documentElement.getAttributeNode("attr"), 1.69 + foo, "NamespaceError"); 1.70 +// Text node resolver 1.71 +resolverTest("//foo:foo", document.documentElement.firstChild, 1.72 + foo, "NamespaceError"); 1.73 +// Comment node resolver 1.74 +resolverTest("//foo:foo", document.documentElement.firstChild.nextSibling, 1.75 + foo, "NamespaceError"); 1.76 +// Function resolver 1.77 +resolverTest("//foo:foo", 1.78 + function(p) { return (p == "foo") ? "http://www.foo.org" : ""; }, 1.79 + foo); 1.80 +// Element resolver, which has definition for foo namespace 1.81 +resolverTest("//foo:foo", foo.parentNode, foo); 1.82 + 1.83 +]]> 1.84 +</script> 1.85 +</pre> 1.86 +</body> 1.87 +</html>