mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-12 02:07:33 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
267
dom/html/test/test_bug389797.html
Normal file
267
dom/html/test/test_bug389797.html
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=389797
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 389797</title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.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=389797">Mozilla Bug 389797</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
/** Test for Bug 389797 **/
|
||||
var allTags = [];
|
||||
var classInfos = {};
|
||||
var interfaces = {};
|
||||
var interfacesNonClassinfo = {};
|
||||
|
||||
function getClassName(tag) {
|
||||
return "HTML" + classInfos[tag] + "Element";
|
||||
}
|
||||
|
||||
function HTML_TAG(aTagName, aImplClass) {
|
||||
allTags.push(aTagName);
|
||||
classInfos[aTagName] = aImplClass;
|
||||
interfaces[aTagName] = [ "nsIDOMEventTarget" ];
|
||||
|
||||
// Some interfaces don't appear in classinfo because other interfaces that
|
||||
// inherit from them do.
|
||||
interfacesNonClassinfo[aTagName] =
|
||||
[ "nsIDOMNode",
|
||||
"nsIDOMElement" ];
|
||||
|
||||
var interfaceName = "nsIDOM" + getClassName(aTagName);
|
||||
if (interfaceName in SpecialPowers.Ci) { // no nsIDOMHTMLSpanElement
|
||||
interfaces[aTagName].push(interfaceName);
|
||||
interfacesNonClassinfo[aTagName].push("nsIDOMHTMLElement");
|
||||
} else {
|
||||
// Inherits directly from nsIDOMHTMLElement.
|
||||
interfaces[aTagName].push("nsIDOMHTMLElement");
|
||||
}
|
||||
|
||||
var interfaceNameNS = "nsIDOMNS" + getClassName(aTagName);
|
||||
if (interfaceNameNS in SpecialPowers.Ci) {
|
||||
interfaces[aTagName].push(interfaceNameNS);
|
||||
}
|
||||
|
||||
if (arguments.length > 2) {
|
||||
for (var i = 0; i < arguments[2].length; ++i) {
|
||||
interfaces[aTagName].push(arguments[2][i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (arguments.length > 3) {
|
||||
for (i = 0; i < arguments[3].length; ++i) {
|
||||
interfacesNonClassinfo[aTagName].push(arguments[3][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const objectIfaces = [
|
||||
"imgINotificationObserver", "nsIRequestObserver", "nsIStreamListener",
|
||||
"nsIFrameLoaderOwner", "nsIObjectLoadingContent", "nsIChannelEventSink"
|
||||
];
|
||||
|
||||
var objectIfaces2 = [];
|
||||
for (var iface of objectIfaces) {
|
||||
objectIfaces2.push(iface);
|
||||
}
|
||||
objectIfaces2.push("nsIImageLoadingContent");
|
||||
|
||||
/* List copy/pasted from nsHTMLTagList.h, with the second field modified to the
|
||||
correct classinfo (instead of the impl class) in the following cases:
|
||||
|
||||
applet
|
||||
base
|
||||
blockquote
|
||||
dir
|
||||
dl
|
||||
embed
|
||||
menu
|
||||
ol
|
||||
param
|
||||
q
|
||||
ul
|
||||
wbr
|
||||
head
|
||||
html
|
||||
*/
|
||||
|
||||
HTML_TAG("a", "Anchor");
|
||||
HTML_TAG("abbr", "");
|
||||
HTML_TAG("acronym", "");
|
||||
HTML_TAG("address", "");
|
||||
HTML_TAG("applet", "Applet", [], objectIfaces);
|
||||
HTML_TAG("area", "Area");
|
||||
HTML_TAG("article", "");
|
||||
HTML_TAG("aside", "");
|
||||
HTML_TAG("b", "");
|
||||
HTML_TAG("base", "Base");
|
||||
HTML_TAG("bdo", "");
|
||||
HTML_TAG("bgsound", "Unknown");
|
||||
HTML_TAG("big", "");
|
||||
HTML_TAG("blockquote", "Quote");
|
||||
HTML_TAG("body", "Body");
|
||||
HTML_TAG("br", "BR");
|
||||
HTML_TAG("button", "Button");
|
||||
HTML_TAG("canvas", "Canvas");
|
||||
HTML_TAG("caption", "TableCaption");
|
||||
HTML_TAG("center", "");
|
||||
HTML_TAG("cite", "");
|
||||
HTML_TAG("code", "");
|
||||
HTML_TAG("col", "TableCol");
|
||||
HTML_TAG("colgroup", "TableCol");
|
||||
HTML_TAG("data", "Data");
|
||||
HTML_TAG("datalist", "DataList");
|
||||
HTML_TAG("dd", "");
|
||||
HTML_TAG("del", "Mod");
|
||||
HTML_TAG("dfn", "");
|
||||
HTML_TAG("dir", "Directory");
|
||||
HTML_TAG("div", "Div");
|
||||
HTML_TAG("dl", "DList");
|
||||
HTML_TAG("dt", "");
|
||||
HTML_TAG("em", "");
|
||||
HTML_TAG("embed", "Embed", [], objectIfaces);
|
||||
HTML_TAG("fieldset", "FieldSet");
|
||||
HTML_TAG("figcaption", "")
|
||||
HTML_TAG("figure", "")
|
||||
HTML_TAG("font", "Font");
|
||||
HTML_TAG("footer", "")
|
||||
HTML_TAG("form", "Form", [], [ "nsIWebProgressListener" ]);
|
||||
HTML_TAG("frame", "Frame", [ "nsIDOMMozBrowserFrame" ], [ "nsIFrameLoaderOwner" ]);
|
||||
HTML_TAG("frameset", "FrameSet");
|
||||
HTML_TAG("h1", "Heading");
|
||||
HTML_TAG("h2", "Heading");
|
||||
HTML_TAG("h3", "Heading");
|
||||
HTML_TAG("h4", "Heading");
|
||||
HTML_TAG("h5", "Heading");
|
||||
HTML_TAG("h6", "Heading");
|
||||
HTML_TAG("head", "Head");
|
||||
HTML_TAG("header", "")
|
||||
HTML_TAG("hgroup", "")
|
||||
HTML_TAG("hr", "HR");
|
||||
HTML_TAG("html", "Html");
|
||||
HTML_TAG("i", "");
|
||||
HTML_TAG("iframe", "IFrame", [ "nsIDOMMozBrowserFrame" ],
|
||||
[ "nsIFrameLoaderOwner" ]);
|
||||
HTML_TAG("image", "");
|
||||
HTML_TAG("img", "Image", [ "nsIImageLoadingContent" ], []);
|
||||
HTML_TAG("input", "Input", [], [ "imgINotificationObserver",
|
||||
"nsIImageLoadingContent",
|
||||
"nsIDOMNSEditableElement" ]);
|
||||
HTML_TAG("ins", "Mod");
|
||||
HTML_TAG("kbd", "");
|
||||
HTML_TAG("keygen", "Span");
|
||||
HTML_TAG("label", "Label");
|
||||
HTML_TAG("legend", "Legend");
|
||||
HTML_TAG("li", "LI");
|
||||
HTML_TAG("link", "Link");
|
||||
HTML_TAG("listing", "Pre");
|
||||
HTML_TAG("main", "");
|
||||
HTML_TAG("map", "Map");
|
||||
HTML_TAG("mark", "");
|
||||
HTML_TAG("marquee", "Div");
|
||||
HTML_TAG("menu", "Menu");
|
||||
HTML_TAG("meta", "Meta");
|
||||
HTML_TAG("meter", "Meter");
|
||||
HTML_TAG("multicol", "Unknown");
|
||||
HTML_TAG("nav", "")
|
||||
HTML_TAG("nobr", "");
|
||||
HTML_TAG("noembed", "");
|
||||
HTML_TAG("noframes", "");
|
||||
HTML_TAG("noscript", "");
|
||||
HTML_TAG("object", "Object", [],
|
||||
objectIfaces.concat([ "nsIImageLoadingContent" ]));
|
||||
HTML_TAG("ol", "OList");
|
||||
HTML_TAG("optgroup", "OptGroup");
|
||||
HTML_TAG("option", "Option");
|
||||
HTML_TAG("p", "Paragraph");
|
||||
HTML_TAG("param", "Param");
|
||||
HTML_TAG("plaintext", "");
|
||||
HTML_TAG("pre", "Pre");
|
||||
HTML_TAG("q", "Quote");
|
||||
HTML_TAG("rb", "");
|
||||
HTML_TAG("rp", "");
|
||||
HTML_TAG("rt", "");
|
||||
HTML_TAG("rtc", "");
|
||||
HTML_TAG("ruby", "");
|
||||
HTML_TAG("s", "");
|
||||
HTML_TAG("samp", "");
|
||||
HTML_TAG("script", "Script", [ "nsIScriptLoaderObserver" ], []);
|
||||
HTML_TAG("section", "")
|
||||
HTML_TAG("select", "Select", ["nsIDOMHTMLSelectElement"]);
|
||||
HTML_TAG("small", "");
|
||||
HTML_TAG("span", "Span");
|
||||
HTML_TAG("strike", "");
|
||||
HTML_TAG("strong", "");
|
||||
HTML_TAG("style", "Style");
|
||||
HTML_TAG("sub", "");
|
||||
HTML_TAG("sup", "");
|
||||
HTML_TAG("table", "Table");
|
||||
HTML_TAG("tbody", "TableSection");
|
||||
HTML_TAG("td", "TableCell");
|
||||
HTML_TAG("textarea", "TextArea", [], [ "nsIDOMNSEditableElement" ]);
|
||||
HTML_TAG("tfoot", "TableSection");
|
||||
HTML_TAG("th", "TableCell");
|
||||
HTML_TAG("thead", "TableSection");
|
||||
HTML_TAG("template", "Template");
|
||||
HTML_TAG("time", "Time");
|
||||
HTML_TAG("title", "Title");
|
||||
HTML_TAG("tr", "TableRow");
|
||||
HTML_TAG("tt", "");
|
||||
HTML_TAG("u", "");
|
||||
HTML_TAG("ul", "UList");
|
||||
HTML_TAG("var", "");
|
||||
HTML_TAG("wbr", "");
|
||||
HTML_TAG("xmp", "Pre");
|
||||
|
||||
function tagName(aTag) {
|
||||
return "<" + aTag + ">";
|
||||
}
|
||||
|
||||
for (var tag of allTags) {
|
||||
var node = document.createElement(tag);
|
||||
|
||||
// Have to use the proto's toString(), since HTMLAnchorElement and company
|
||||
// override toString().
|
||||
var nodeString = HTMLElement.prototype.toString.apply(node);
|
||||
|
||||
// Debug builds have extra info, so chop off after "Element" if it's followed
|
||||
// by ' ' or ']'
|
||||
nodeString = nodeString.replace(/Element[\] ].*/, "Element");
|
||||
|
||||
var classInfoString = getClassName(tag);
|
||||
is(nodeString, "[object " + classInfoString,
|
||||
"Unexpected classname for " + tagName(tag));
|
||||
is(node instanceof window[classInfoString], true,
|
||||
tagName(tag) + " not an instance of " + classInfos[tag]);
|
||||
|
||||
if (classInfoString != 'HTMLUnknownElement') {
|
||||
is(node instanceof HTMLUnknownElement, false,
|
||||
tagName(tag) + " is an instance of HTMLUnknownElement");
|
||||
} else {
|
||||
is(node instanceof HTMLUnknownElement, true,
|
||||
tagName(tag) + " is an instance of HTMLUnknownElement");
|
||||
}
|
||||
|
||||
// Check that each node QIs to all the things we expect it to QI to
|
||||
for (var iface of interfaces[tag].concat(interfacesNonClassinfo[tag])) {
|
||||
is(iface in SpecialPowers.Ci, true,
|
||||
iface + " not in Components.interfaces");
|
||||
is(node instanceof SpecialPowers.Ci[iface], true,
|
||||
tagName(tag) + " does not QI to " + iface);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue