<html><!-- webkit-test-runner [ KeygenElementEnabled=true ] -->
<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)
{
    shouldBe("tagJSWrapperClass('" + tagName + "')", "'" + className + "'");
    shouldBe("tagJSWrapperPrototypeClass('" + tagName + "')", "'" + className + "'");
    shouldBe("tagJSWrapperConstructorClass('" + tagName + "')", "'Function'");
}

function test(expression, className)
{
    shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + className + "'");
    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("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>
