dom/tests/browser/browser_bug396843.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 function test() {
     2     /** Test for Bug 396843 **/
     3     waitForExplicitFinish();
     5     function testInDocument(doc, documentID) {
     7         var allNodes = [];
     8         var XMLNodes = [];
    10         // HTML
    11         function HTML_TAG(name) {
    12             allNodes.push(doc.createElement(name));
    13         }
    15         /* List copy/pasted from nsHTMLTagList.h */
    16         HTML_TAG("a", "Anchor")
    17         HTML_TAG("abbr", "Span")
    18         HTML_TAG("acronym", "Span")
    19         HTML_TAG("address", "Span")
    20         HTML_TAG("applet", "SharedObject")
    21         HTML_TAG("area", "Area")
    22         HTML_TAG("b", "Span")
    23         HTML_TAG("base", "Shared")
    24         HTML_TAG("basefont", "Span")
    25         HTML_TAG("bdo", "Span")
    26         HTML_TAG("bgsound", "Span")
    27         HTML_TAG("big", "Span")
    28         HTML_TAG("blockquote", "Shared")
    29         HTML_TAG("body", "Body")
    30         HTML_TAG("br", "BR")
    31         HTML_TAG("button", "Button")
    32         HTML_TAG("canvas", "Canvas")
    33         HTML_TAG("caption", "TableCaption")
    34         HTML_TAG("center", "Span")
    35         HTML_TAG("cite", "Span")
    36         HTML_TAG("code", "Span")
    37         HTML_TAG("col", "TableCol")
    38         HTML_TAG("colgroup", "TableCol")
    39         HTML_TAG("dd", "Span")
    40         HTML_TAG("del", "Mod")
    41         HTML_TAG("dfn", "Span")
    42         HTML_TAG("dir", "Shared")
    43         HTML_TAG("div", "Div")
    44         HTML_TAG("dl", "SharedList")
    45         HTML_TAG("dt", "Span")
    46         HTML_TAG("em", "Span")
    47         HTML_TAG("embed", "SharedObject")
    48         HTML_TAG("fieldset", "FieldSet")
    49         HTML_TAG("font", "Font")
    50         HTML_TAG("form", "Form")
    51         HTML_TAG("frame", "Frame")
    52         HTML_TAG("frameset", "FrameSet")
    53         HTML_TAG("h1", "Heading")
    54         HTML_TAG("h2", "Heading")
    55         HTML_TAG("h3", "Heading")
    56         HTML_TAG("h4", "Heading")
    57         HTML_TAG("h5", "Heading")
    58         HTML_TAG("h6", "Heading")
    59         HTML_TAG("head", "Head")
    60         HTML_TAG("hr", "HR")
    61         HTML_TAG("html", "Html")
    62         HTML_TAG("i", "Span")
    63         HTML_TAG("iframe", "IFrame")
    64         HTML_TAG("image", "")
    65         HTML_TAG("img", "Image")
    66         HTML_TAG("input", "Input")
    67         HTML_TAG("ins", "Mod")
    68         HTML_TAG("isindex", "Unknown")
    69         HTML_TAG("kbd", "Span")
    70         HTML_TAG("keygen", "Span")
    71         HTML_TAG("label", "Label")
    72         HTML_TAG("legend", "Legend")
    73         HTML_TAG("li", "LI")
    74         HTML_TAG("link", "Link")
    75         HTML_TAG("listing", "Span")
    76         HTML_TAG("map", "Map")
    77         HTML_TAG("marquee", "Div")
    78         HTML_TAG("menu", "Shared")
    79         HTML_TAG("meta", "Meta")
    80         HTML_TAG("multicol", "Unknown")
    81         HTML_TAG("nobr", "Span")
    82         HTML_TAG("noembed", "Div")
    83         HTML_TAG("noframes", "Div")
    84         HTML_TAG("noscript", "Div")
    85         HTML_TAG("object", "Object")
    86         HTML_TAG("ol", "SharedList")
    87         HTML_TAG("optgroup", "OptGroup")
    88         HTML_TAG("option", "Option")
    89         HTML_TAG("p", "Paragraph")
    90         HTML_TAG("param", "Shared")
    91         HTML_TAG("plaintext", "Span")
    92         HTML_TAG("pre", "Pre")
    93         HTML_TAG("q", "Shared")
    94         HTML_TAG("s", "Span")
    95         HTML_TAG("samp", "Span")
    96         HTML_TAG("script", "Script")
    97         HTML_TAG("select", "Select")
    98         HTML_TAG("small", "Span")
    99         HTML_TAG("spacer", "Unknown")
   100         HTML_TAG("span", "Span")
   101         HTML_TAG("strike", "Span")
   102         HTML_TAG("strong", "Span")
   103         HTML_TAG("style", "Style")
   104         HTML_TAG("sub", "Span")
   105         HTML_TAG("sup", "Span")
   106         HTML_TAG("table", "Table")
   107         HTML_TAG("tbody", "TableSection")
   108         HTML_TAG("td", "TableCell")
   109         HTML_TAG("textarea", "TextArea")
   110         HTML_TAG("tfoot", "TableSection")
   111         HTML_TAG("th", "TableCell")
   112         HTML_TAG("thead", "TableSection")
   113         HTML_TAG("template", "Template")
   114         HTML_TAG("title", "Title")
   115         HTML_TAG("tr", "TableRow")
   116         HTML_TAG("tt", "Span")
   117         HTML_TAG("u", "Span")
   118         HTML_TAG("ul", "SharedList")
   119         HTML_TAG("var", "Span")
   120         HTML_TAG("wbr", "Shared")
   121         HTML_TAG("xmp", "Span")
   123         function SVG_TAG(name) {
   124             allNodes.push(doc.createElementNS("http://www.w3.org/2000/svg", name));
   125         }
   127         // List sorta stolen from SVG element factory.
   128         SVG_TAG("a")
   129         SVG_TAG("polyline")
   130         SVG_TAG("polygon")
   131         SVG_TAG("circle")
   132         SVG_TAG("ellipse")
   133         SVG_TAG("line")
   134         SVG_TAG("rect")
   135         SVG_TAG("svg")
   136         SVG_TAG("g")
   137         SVG_TAG("foreignObject")
   138         SVG_TAG("path")
   139         SVG_TAG("text")
   140         SVG_TAG("tspan")
   141         SVG_TAG("image")
   142         SVG_TAG("style")
   143         SVG_TAG("linearGradient")
   144         SVG_TAG("metadata")
   145         SVG_TAG("radialGradient")
   146         SVG_TAG("stop")
   147         SVG_TAG("defs")
   148         SVG_TAG("desc")
   149         SVG_TAG("script")
   150         SVG_TAG("use")
   151         SVG_TAG("symbol")
   152         SVG_TAG("marker")
   153         SVG_TAG("title")
   154         SVG_TAG("clipPath")
   155         SVG_TAG("textPath")
   156         SVG_TAG("filter")
   157         SVG_TAG("feBlend")
   158         SVG_TAG("feColorMatrix")
   159         SVG_TAG("feComponentTransfer")
   160         SVG_TAG("feComposite")
   161         SVG_TAG("feFuncR")
   162         SVG_TAG("feFuncG")
   163         SVG_TAG("feFuncB")
   164         SVG_TAG("feFuncA")
   165         SVG_TAG("feGaussianBlur")
   166         SVG_TAG("feMerge")
   167         SVG_TAG("feMergeNode")
   168         SVG_TAG("feMorphology")
   169         SVG_TAG("feOffset")
   170         SVG_TAG("feFlood")
   171         SVG_TAG("feTile")
   172         SVG_TAG("feTurbulence")
   173         SVG_TAG("feConvolveMatrix")
   174         SVG_TAG("feDistantLight")
   175         SVG_TAG("fePointLight")
   176         SVG_TAG("feSpotLight")
   177         SVG_TAG("feDiffuseLighting")
   178         SVG_TAG("feSpecularLighting")
   179         SVG_TAG("feDisplacementMap")
   180         SVG_TAG("feImage")
   181         SVG_TAG("pattern")
   182         SVG_TAG("mask")
   183         SVG_TAG("svgSwitch")
   185         // Toss in some other namespaced stuff too, for good measure
   186         // XUL stuff might not be creatable in content documents
   187         try {
   188             allNodes.push(doc.createElementNS(
   189                 "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
   190                 "window"));
   191         } catch (e) {}
   192         allNodes.push(doc.createElementNS("http://www.w3.org/1998/Math/MathML",
   193                                           "math"));
   194         allNodes.push(doc.createElementNS("http://www.w3.org/2001/xml-events",
   195                                           "testname"));
   196         allNodes.push(doc.createElementNS("bogus.namespace", "testname"));
   198         var XMLDoc = doc.implementation.createDocument("", "", null);
   200         // And non-elements
   201         allNodes.push(doc.createTextNode("some text"));
   202         allNodes.push(doc.createComment("some text"));
   203         allNodes.push(doc.createDocumentFragment());
   204         XMLNodes.push(XMLDoc.createCDATASection("some text"));
   205         XMLNodes.push(XMLDoc.createProcessingInstruction("PI", "data"));
   207         function runTestUnwrapped() {
   208             if (!("wrappedJSObject" in doc)) {
   209                 return;
   210             }
   211             ok(doc.wrappedJSObject.nodePrincipal === undefined,
   212                "Must not have document principal for " + documentID);
   213             ok(doc.wrappedJSObject.baseURIObject === undefined,
   214                "Must not have document base URI for " + documentID);
   215             ok(doc.wrappedJSObject.documentURIObject === undefined,
   216                "Must not have document URI for " + documentID);
   218             for (var i = 0; i < allNodes.length; ++i) {
   219                 ok(allNodes[i].wrappedJSObject.nodePrincipal === undefined,
   220                    "Unexpected principal appears for " + allNodes[i].nodeName +
   221                    " in " + documentID);
   222                 ok(allNodes[i].wrappedJSObject.baseURIObject === undefined,
   223                    "Unexpected base URI appears for " + allNodes[i].nodeName +
   224                    " in " + documentID);
   225             }
   226         }
   228         function runTestProps() {
   229             isnot(doc.nodePrincipal, null,
   230                   "Must have document principal in " + documentID);
   231             is(doc.nodePrincipal instanceof Components.interfaces.nsIPrincipal,
   232                true, "document principal must be a principal in " + documentID);
   233             isnot(doc.baseURIObject, null,
   234                   "Must have document base URI in" + documentID);
   235             is(doc.baseURIObject instanceof Components.interfaces.nsIURI,
   236                true, "document base URI must be a URI in " + documentID);
   237             isnot(doc.documentURIObject, null,
   238                   "Must have document URI " + documentID);
   239             is(doc.documentURIObject instanceof Components.interfaces.nsIURI,
   240                true, "document URI must be a URI in " + documentID);
   241             is(doc.documentURIObject.spec, doc.documentURI,
   242                "document URI must be the right URI in " + documentID);
   244             for (var i = 0; i < allNodes.length; ++i) {
   245                 is(allNodes[i].nodePrincipal, doc.nodePrincipal,
   246                    "Unexpected principal for " + allNodes[i].nodeName +
   247                    " in " + documentID);
   248                 is(allNodes[i].baseURIObject, doc.baseURIObject,
   249                    "Unexpected base URI for " + allNodes[i].nodeName +
   250                    " in " + documentID);
   251             }
   253             for (i = 0; i < XMLNodes.length; ++i) {
   254                 is(XMLNodes[i].nodePrincipal, doc.nodePrincipal,
   255                    "Unexpected principal for " + XMLNodes[i].nodeName +
   256                    " in " + documentID);
   257                 is(XMLNodes[i].baseURIObject.spec, "about:blank",
   258                    "Unexpected base URI for " + XMLNodes[i].nodeName +
   259                    " in " + documentID);
   260             }
   261         }
   263         runTestUnwrapped();
   264         runTestProps();
   265         runTestUnwrapped();
   266     }
   268     var testsRunning = 2;
   270     testInDocument(document, "browser window");
   272     function newTabTest(url) {
   273         var newTab = gBrowser.addTab();
   274         var newBrowser = gBrowser.getBrowserForTab(newTab);
   275         newBrowser.contentWindow.location.href = url;
   276         function testBrowser(event) {
   277             newBrowser.removeEventListener("load", testBrowser, true);
   278             is(event.target, newBrowser.contentDocument,
   279                "Unexpected target in " + url);
   280             testInDocument(newBrowser.contentDocument, url);
   282             gBrowser.removeTab(newTab);
   284             --testsRunning;
   285             if (testsRunning == 0) {
   286                 finish();
   287             }
   288         }
   289         newBrowser.addEventListener("load", testBrowser, true);
   290     }
   292     newTabTest("about:blank");
   293     newTabTest("about:config");
   294 }

mercurial