| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <style id="style" media="screen"> |
| .non-existent-class { |
| color: rgb(0, 0, 0); |
| clip: rect(0, 0, 1, 1); |
| content: counter(dummy, square); |
| } |
| </style> |
| </head> |
| <body> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| function jsWrapperClass(node) |
| { |
| if (!node) |
| return "[null]"; |
| var string = Object.prototype.toString.apply(node); |
| return string.substr(8, string.length - 9); |
| } |
| |
| function tagJSWrapperClass(tagName) |
| { |
| return jsWrapperClass(document.createElement(tagName)); |
| } |
| |
| function tagJSWrapperPrototypeClass(tagName) |
| { |
| return jsWrapperClass(document.createElement(tagName).__proto__); |
| } |
| |
| function tagJSWrapperConstructorClass(tagName) |
| { |
| return jsWrapperClass(document.createElement(tagName).constructor); |
| } |
| |
| function testTag(tagName, className, prototypeName, constructorName) |
| { |
| if (!prototypeName) |
| prototypeName = className + "Prototype"; |
| if (!constructorName) |
| constructorName = className + "Constructor"; |
| shouldBe("tagJSWrapperClass('" + tagName + "')", "'" + className + "'"); |
| shouldBe("tagJSWrapperPrototypeClass('" + tagName + "')", "'" + prototypeName + "'"); |
| shouldBe("tagJSWrapperConstructorClass('" + tagName + "')", "'Function'"); |
| } |
| |
| function test(expression, className, prototypeName, constructorName) |
| { |
| if (!prototypeName) |
| prototypeName = className + "Prototype"; |
| if (!constructorName) |
| constructorName = className + "Constructor"; |
| shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'"); |
| shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'"); |
| shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'"); |
| } |
| |
| function runTest() |
| { |
| // NOTE: This is a sister test to platform/mac/fast/dom/wrapper-class-objc.html which test the Objective-C wrapper classes. Update accordingly. |
| description("This tests wrapper class names for JavaScript."); |
| |
| stylesheet = document.getElementById("style").sheet; |
| root = document.documentElement; |
| xmlDocument = document.getElementById("xmlframe").contentDocument; |
| |
| debug('Basics'); |
| debug(''); |
| |
| test("document.createAttribute('test')", "Attr"); |
| test("document.createComment('test')", "Comment"); |
| test("document.createDocumentFragment()", "DocumentFragment"); |
| test("document.implementation", "DOMImplementation"); |
| test("root.attributes", "NamedNodeMap"); |
| test("document.createNodeIterator(root, 0, null, false)", "NodeIterator"); |
| test("document.getElementsByTagName('div')", "HTMLCollection"); |
| test("document.createRange()", "Range"); |
| test("document.createTextNode('test')", "Text"); |
| test("document.createTreeWalker(root, 0, null, false)", "TreeWalker"); |
| |
| debug(''); |
| debug('XML'); |
| debug(''); |
| |
| test("xmlDocument", "XMLDocument"); |
| test("xmlDocument.createCDATASection('test')", "CDATASection"); |
| test("xmlDocument.createElementNS('x', 'x', 'x')", "Element"); |
| test("xmlDocument.createProcessingInstruction('target', 'test')", "ProcessingInstruction"); |
| |
| debug(''); |
| debug('Events'); |
| debug(''); |
| |
| test("document.createEvent('Event')", "Event"); |
| test("document.createEvent('KeyboardEvent')", "KeyboardEvent"); |
| test("document.createEvent('MouseEvent')", "MouseEvent"); |
| test("document.createEvent('MutationEvent')", "MutationEvent"); |
| test("document.createEvent('OverflowEvent')", "OverflowEvent"); |
| test("document.createEvent('TextEvent')", "TextEvent"); |
| test("document.createEvent('UIEvent')", "UIEvent"); |
| test("document.createEvent('WheelEvent')", "WheelEvent"); |
| |
| debug(''); |
| debug('CSS DOM'); |
| debug(''); |
| |
| test("document.styleSheets", "StyleSheetList"); |
| test("stylesheet", "CSSStyleSheet"); |
| test("stylesheet.cssRules", "CSSRuleList"); |
| test("stylesheet.cssRules.item(0)", "CSSStyleRule"); |
| test("stylesheet.cssRules.item(0).style", "CSSStyleDeclaration"); |
| test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('color')", "CSSPrimitiveValue"); |
| test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue()", "RGBColor"); |
| test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue()", "Rect"); |
| test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('content')", "CSSValueList"); |
| test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue()", "Counter"); |
| test("stylesheet.media", "MediaList"); |
| |
| debug(''); |
| debug('XPath'); |
| debug(''); |
| |
| test("document.createExpression('//*', document.createNSResolver(document))", "XPathExpression"); |
| test("document.evaluate('//*', document, document.createNSResolver(document), 0, null)", "XPathResult"); |
| |
| debug(''); |
| debug('Other'); |
| debug(''); |
| |
| test("window", "Window"); |
| |
| debug(''); |
| debug('HTML DOM'); |
| debug(''); |
| |
| test("root.children", "HTMLCollection"); |
| test("document", "HTMLDocument"); |
| test("document.createElement('select').options", "HTMLOptionsCollection"); |
| |
| debug(''); |
| debug('HTML Elements'); |
| debug(''); |
| |
| testTag("a", "HTMLAnchorElement"); |
| testTag("abbr", "HTMLElement"); |
| testTag("acronym", "HTMLElement"); |
| testTag("address", "HTMLElement"); |
| testTag("applet", "HTMLAppletElement"); |
| testTag("area", "HTMLAreaElement"); |
| testTag("article", "HTMLElement"); |
| testTag("aside", "HTMLElement"); |
| testTag("b", "HTMLElement"); |
| testTag("base", "HTMLBaseElement"); |
| testTag("bdo", "HTMLElement"); |
| testTag("big", "HTMLElement"); |
| testTag("blockquote", "HTMLQuoteElement"); |
| testTag("body", "HTMLBodyElement"); |
| testTag("br", "HTMLBRElement"); |
| testTag("button", "HTMLButtonElement"); |
| testTag("canvas", "HTMLCanvasElement"); |
| testTag("caption", "HTMLTableCaptionElement"); |
| testTag("center", "HTMLElement"); |
| testTag("cite", "HTMLElement"); |
| testTag("code", "HTMLElement"); |
| testTag("col", "HTMLTableColElement"); |
| testTag("colgroup", "HTMLTableColElement"); |
| testTag("dd", "HTMLElement"); |
| testTag("del", "HTMLModElement"); |
| testTag("dfn", "HTMLElement"); |
| testTag("dir", "HTMLDirectoryElement"); |
| testTag("div", "HTMLDivElement"); |
| testTag("dl", "HTMLDListElement"); |
| testTag("dt", "HTMLElement"); |
| testTag("em", "HTMLElement"); |
| testTag("embed", "HTMLEmbedElement"); |
| testTag("fieldset", "HTMLFieldSetElement"); |
| testTag("font", "HTMLFontElement"); |
| testTag("footer", "HTMLElement"); |
| testTag("form", "HTMLFormElement"); |
| testTag("frame", "HTMLFrameElement"); |
| testTag("frameset", "HTMLFrameSetElement"); |
| testTag("head", "HTMLHeadElement"); |
| testTag("h1", "HTMLHeadingElement"); |
| testTag("h2", "HTMLHeadingElement"); |
| testTag("h3", "HTMLHeadingElement"); |
| testTag("h4", "HTMLHeadingElement"); |
| testTag("h5", "HTMLHeadingElement"); |
| testTag("h6", "HTMLHeadingElement"); |
| testTag("head", "HTMLHeadElement"); |
| testTag("header", "HTMLElement"); |
| testTag("hgroup", "HTMLElement"); |
| testTag("hr", "HTMLHRElement"); |
| testTag("html", "HTMLHtmlElement"); |
| testTag("i", "HTMLElement"); |
| testTag("iframe", "HTMLIFrameElement"); |
| testTag("image", "HTMLUnknownElement"); |
| testTag("img", "HTMLImageElement"); |
| testTag("input", "HTMLInputElement"); |
| testTag("ins", "HTMLModElement"); |
| testTag("kbd", "HTMLElement"); |
| testTag("keygen", "HTMLKeygenElement"); |
| testTag("label", "HTMLLabelElement"); |
| testTag("layer", "HTMLElement"); |
| testTag("legend", "HTMLLegendElement"); |
| testTag("li", "HTMLLIElement"); |
| testTag("link", "HTMLLinkElement"); |
| testTag("listing", "HTMLPreElement"); |
| testTag("main", "HTMLElement"); |
| testTag("map", "HTMLMapElement"); |
| testTag("marquee", "HTMLMarqueeElement"); |
| testTag("menu", "HTMLMenuElement"); |
| testTag("meta", "HTMLMetaElement"); |
| testTag("nav", "HTMLElement"); |
| testTag("nobr", "HTMLElement"); |
| testTag("noembed", "HTMLElement"); |
| testTag("noframes", "HTMLElement"); |
| testTag("nolayer", "HTMLElement"); |
| testTag("noscript", "HTMLElement"); |
| testTag("object", "HTMLObjectElement"); |
| testTag("ol", "HTMLOListElement"); |
| testTag("optgroup", "HTMLOptGroupElement"); |
| testTag("option", "HTMLOptionElement"); |
| testTag("p", "HTMLParagraphElement"); |
| testTag("param", "HTMLParamElement"); |
| testTag("plaintext", "HTMLElement"); |
| testTag("pre", "HTMLPreElement"); |
| testTag("q", "HTMLQuoteElement"); |
| testTag("rp", "HTMLElement"); |
| testTag("rt", "HTMLElement"); |
| testTag("ruby", "HTMLElement"); |
| testTag("s", "HTMLElement"); |
| testTag("samp", "HTMLElement"); |
| testTag("script", "HTMLScriptElement"); |
| testTag("section", "HTMLElement"); |
| testTag("select", "HTMLSelectElement"); |
| testTag("small", "HTMLElement"); |
| testTag("span", "HTMLSpanElement"); |
| testTag("strike", "HTMLElement"); |
| testTag("strong", "HTMLElement"); |
| testTag("style", "HTMLStyleElement"); |
| testTag("sub", "HTMLElement"); |
| testTag("sup", "HTMLElement"); |
| testTag("table", "HTMLTableElement"); |
| testTag("tbody", "HTMLTableSectionElement"); |
| testTag("td", "HTMLTableCellElement"); |
| testTag("textarea", "HTMLTextAreaElement"); |
| testTag("tfoot", "HTMLTableSectionElement"); |
| testTag("th", "HTMLTableCellElement"); |
| testTag("thead", "HTMLTableSectionElement"); |
| testTag("title", "HTMLTitleElement"); |
| testTag("tr", "HTMLTableRowElement"); |
| testTag("tt", "HTMLElement"); |
| testTag("u", "HTMLElement"); |
| testTag("ul", "HTMLUListElement"); |
| testTag("var", "HTMLElement"); |
| testTag("wbr", "HTMLElement"); |
| testTag("xmp", "HTMLPreElement"); |
| |
| // Not yet tested: |
| |
| // CSSCharsetRule |
| // CSSFontFaceRule |
| // CSSImportRule |
| // CSSMediaRule |
| // CSSPageRule |
| // CSSRule |
| // CSSVariablesRule |
| // CSSKeyframeRule |
| // CSSKeyframesRule |
| // CSSValue |
| // SVGColor |
| // SVGPaint |
| // SVGZoomEvent |
| |
| // Conditional elements, VIDEO, RUBY, DATALIST_ELEMENT, METER_ELEMENT. |
| |
| // the various window sub-objects |
| |
| // what else is missing? |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| function frameLoaded() |
| { |
| runTest(); |
| } |
| |
| </script> |
| <iframe id="xmlframe" onload="frameLoaded()" style="height:0px" src="data:application/xhtml+xml,<?xml version='1.0' encoding='UTF-8'?><body/>"></iframe> |
| </body> |
| </html> |