[CSS Parser] Remove WebkitCSSTransformValue
[WebKit-https.git] / LayoutTests / platform / mac / fast / dom / wrapper-classes-objc.html
1 <html>
2 <head>
3 <script src="../../../../resources/js-test-pre.js"></script>
4 <style id="style" media="screen">
5 .non-existent-class {
6     color: rgb(0, 0, 0);
7     clip: rect(0, 0, 1, 1);
8     content: counter(dummy, square);
9 }
10 </style>
11 </head>
12 <body>
13 <script>
14
15 if (window.testRunner)
16     testRunner.waitUntilDone();
17
18 function objCWrapperIsInstanceOf(node, className)
19 {
20     if (!window.objCController)
21         return "only works under DumpRenderTree";
22     return !!objCController.isObjectInstanceOf(node, className);
23 }
24
25 function objCWrapperClass(node)
26 {
27     if (!window.objCController)
28         return "only works under DumpRenderTree";
29     return objCController.className(node);
30 }
31
32 function objCObjectOfClass(name)
33 {
34     if (!window.objCController)
35         return "only works under DumpRenderTree";
36     return objCController.objectOfClass(name);
37 }
38
39 function objCArrayOfString()
40 {
41     if (!window.objCController)
42         return "only works under DumpRenderTree";
43     return objCController.arrayOfString();
44 }
45
46 function concatenateArray(array)
47 {
48     var result = '';
49     for (i in array)
50         result += array[i];
51     return result;
52 }
53
54 function tagObjCWrapperClass(tagName)
55 {
56     return objCWrapperClass(document.createElement(tagName));
57 }
58
59 function testTag(tagName, className, objCClassName)
60 {
61     if (!objCClassName)
62         objCClassName = "DOM" + className;
63     if (window.objCController)
64         shouldBe("tagObjCWrapperClass('" + tagName + "')", "'" + objCClassName + "'");
65 }
66
67 function test(expression, className, objCClassName)
68 {
69     if (!objCClassName)
70         objCClassName = "DOM" + className;
71     if (window.objCController)
72         shouldBe("objCWrapperClass(" + expression + ")", "'" + objCClassName + "'");
73 }
74
75 function runTest()
76 {
77     // NOTE: This is a sister test to fast/dom/wrapper-class.html which test the JS wrapper classes.  Update accordingly.
78     description("This tests wrapper class names for Objective-C.");
79
80     stylesheet = document.getElementById("style").sheet;
81     root = document.documentElement;
82     xmlDocument = document.getElementById("xmlframe").contentDocument;
83
84     debug('Basics');
85     debug('');
86
87     test("document.createAttribute('test')", "Attr");
88     test("document.createComment('test')", "Comment");
89     test("document.createDocumentFragment()", "DocumentFragment");
90     test("document.implementation", "DOMImplementation", "DOMImplementation");
91     test("root.attributes", "NamedNodeMap");
92     test("document.createNodeIterator(root, 0, null, false)", "NodeIterator");
93     test("document.getElementsByTagName('div')", "HTMLCollection");
94     test("document.createRange()", "Range");
95     test("document.createTextNode('test')", "Text");
96     test("document.createTreeWalker(root, 0, null, false)", "TreeWalker");
97
98     debug('');
99     debug('XML');
100     debug('');
101
102     test("xmlDocument", "Document");
103     test("xmlDocument.createCDATASection('test')", "CDATASection");
104     test("xmlDocument.createElementNS('x', 'x', 'x')", "Element");
105     test("xmlDocument.createProcessingInstruction('target', 'test')", "ProcessingInstruction");
106
107     debug('');
108     debug('Events');
109     debug('');
110
111     test("document.createEvent('Event')", "Event");
112     test("document.createEvent('KeyboardEvent')", "KeyboardEvent");
113     test("document.createEvent('MouseEvent')", "MouseEvent");
114     test("document.createEvent('MutationEvent')", "MutationEvent");
115     test("document.createEvent('OverflowEvent')", "OverflowEvent");
116     test("document.createEvent('TextEvent')", "TextEvent");
117     test("document.createEvent('UIEvent')", "UIEvent");
118     test("document.createEvent('WheelEvent')", "WheelEvent");
119
120     debug('');
121     debug('CSS DOM');
122     debug('');
123
124     test("document.styleSheets", "StyleSheetList");
125     test("stylesheet", "CSSStyleSheet");
126     test("stylesheet.cssRules", "CSSRuleList");
127     test("stylesheet.cssRules.item(0)", "CSSStyleRule");
128     test("stylesheet.cssRules.item(0).style", "CSSStyleDeclaration");
129     test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('color')", "CSSPrimitiveValue");
130     test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('color').getRGBColorValue()", "RGBColor");
131     test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('clip').getRectValue()", "Rect");
132     test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('content')", "CSSValueList");
133     test("stylesheet.cssRules.item(0).style.getPropertyCSSValue('content').item(0).getCounterValue()", "Counter");
134     test("stylesheet.media", "MediaList");
135
136     debug('');
137     debug('XPath');
138     debug('');
139
140     test("document.createExpression('//*', document.createNSResolver(document))", "XPathExpression");
141     test("document.evaluate('//*', document, document.createNSResolver(document), 0, null)", "XPathResult");
142
143     debug('');
144     debug('Other');
145     debug('');
146
147     test("window", "Window", "DOMAbstractView");
148
149     debug('');
150     debug('HTML DOM');
151     debug('');
152
153     test("root.children", "HTMLCollection");
154     test("document", "HTMLDocument");
155     test("document.createElement('select').options", "HTMLOptionsCollection");
156
157     debug('');
158     debug('HTML Elements');
159     debug('');
160
161     testTag("a", "HTMLAnchorElement");
162     testTag("abbr", "HTMLElement");
163     testTag("acronym", "HTMLElement");
164     testTag("address", "HTMLElement");
165     testTag("applet", "HTMLAppletElement");
166     testTag("area", "HTMLAreaElement");
167     testTag("b", "HTMLElement");
168     testTag("base", "HTMLBaseElement");
169     testTag("basefont", "HTMLBaseFontElement");
170     testTag("bdo", "HTMLElement");
171     testTag("big", "HTMLElement");
172     testTag("blockquote", "HTMLBlockquoteElement", "DOMHTMLElement");
173     testTag("body", "HTMLBodyElement");
174     testTag("br", "HTMLBRElement");
175     testTag("button", "HTMLButtonElement");
176     testTag("canvas", "HTMLCanvasElement");
177     testTag("caption", "HTMLTableCaptionElement");
178     testTag("center", "HTMLElement");
179     testTag("cite", "HTMLElement");
180     testTag("code", "HTMLElement");
181     testTag("col", "HTMLTableColElement");
182     testTag("colgroup", "HTMLTableColElement");
183     testTag("dd", "HTMLElement");
184     testTag("del", "HTMLModElement");
185     testTag("dfn", "HTMLElement");
186     testTag("dir", "HTMLDirectoryElement");
187     testTag("div", "HTMLDivElement");
188     testTag("dl", "HTMLDListElement");
189     testTag("dt", "HTMLElement");
190     testTag("em", "HTMLElement");
191     testTag("embed", "HTMLEmbedElement");
192     testTag("fieldset", "HTMLFieldSetElement");
193     testTag("font", "HTMLFontElement");
194     testTag("form", "HTMLFormElement");
195     testTag("frame", "HTMLFrameElement");
196     testTag("frameset", "HTMLFrameSetElement");
197     testTag("head", "HTMLHeadElement");
198     testTag("h1", "HTMLHeadingElement");
199     testTag("h2", "HTMLHeadingElement");
200     testTag("h3", "HTMLHeadingElement");
201     testTag("h4", "HTMLHeadingElement");
202     testTag("h5", "HTMLHeadingElement");
203     testTag("h6", "HTMLHeadingElement");
204     testTag("hr", "HTMLHRElement");
205     testTag("html", "HTMLHtmlElement");
206     testTag("i", "HTMLElement");
207     testTag("iframe", "HTMLIFrameElement");
208     testTag("image", "HTMLElement");
209     testTag("img", "HTMLImageElement");
210     testTag("input", "HTMLInputElement");
211     testTag("ins", "HTMLModElement");
212     testTag("kbd", "HTMLElement");
213     testTag("keygen", "HTMLElement");
214     testTag("label", "HTMLLabelElement");
215     testTag("layer", "HTMLElement");
216     testTag("legend", "HTMLLegendElement");
217     testTag("li", "HTMLLIElement");
218     testTag("link", "HTMLLinkElement");
219     testTag("listing", "HTMLPreElement");
220     testTag("map", "HTMLMapElement");
221     testTag("marquee", "HTMLMarqueeElement");
222     testTag("menu", "HTMLMenuElement");
223     testTag("meta", "HTMLMetaElement");
224     testTag("nobr", "HTMLElement");
225     testTag("noembed", "HTMLElement");
226     testTag("noframes", "HTMLElement");
227     testTag("nolayer", "HTMLElement");
228     testTag("noscript", "HTMLElement");
229     testTag("object", "HTMLObjectElement");
230     testTag("ol", "HTMLOListElement");
231     testTag("optgroup", "HTMLOptGroupElement");
232     testTag("option", "HTMLOptionElement");
233     testTag("p", "HTMLParagraphElement");
234     testTag("param", "HTMLParamElement");
235     testTag("plaintext", "HTMLElement");
236     testTag("pre", "HTMLPreElement");
237     testTag("q", "HTMLQuoteElement");
238     testTag("s", "HTMLElement");
239     testTag("samp", "HTMLElement");
240     testTag("script", "HTMLScriptElement");
241     testTag("select", "HTMLSelectElement");
242     testTag("small", "HTMLElement");
243     testTag("span", "HTMLElement");
244     testTag("strike", "HTMLElement");
245     testTag("strong", "HTMLElement");
246     testTag("style", "HTMLStyleElement");
247     testTag("sub", "HTMLElement");
248     testTag("sup", "HTMLElement");
249     testTag("table", "HTMLTableElement");
250     testTag("tbody", "HTMLTableSectionElement");
251     testTag("td", "HTMLTableCellElement");
252     testTag("textarea", "HTMLTextAreaElement");
253     testTag("tfoot", "HTMLTableSectionElement");
254     testTag("th", "HTMLTableCellElement");
255     testTag("thead", "HTMLTableSectionElement");
256     testTag("title", "HTMLTitleElement");
257     testTag("tr", "HTMLTableRowElement");
258     testTag("tt", "HTMLElement");
259     testTag("u", "HTMLElement");
260     testTag("ul", "HTMLUListElement");
261     testTag("var", "HTMLElement");
262     testTag("wbr", "HTMLElement");
263     testTag("xmp", "HTMLPreElement");
264     
265     debug('');
266     debug('JavaScript types');
267     debug('');
268
269     shouldBeTrue("objCWrapperIsInstanceOf(null, 'nil')");
270     shouldBeTrue("objCWrapperIsInstanceOf(undefined, 'WebUndefined')");
271     shouldBeTrue("objCWrapperIsInstanceOf(0, 'NSNumber')");
272     shouldBeTrue("objCWrapperIsInstanceOf(1, 'NSNumber')");
273     shouldBeTrue("objCWrapperIsInstanceOf(false, 'NSNumber')");
274     shouldBeTrue("objCWrapperIsInstanceOf(true, 'NSNumber')");
275     shouldBeTrue("objCWrapperIsInstanceOf('', 'NSString')");
276     shouldBeTrue("objCWrapperIsInstanceOf({ }, 'WebScriptObject')");
277     shouldBeTrue("objCWrapperIsInstanceOf([ ], 'WebScriptObject')");
278
279     shouldBe("objCObjectOfClass('NSNull')", "null"); // can't test with typeof because typeof null is 'object'
280     shouldBe("typeof objCObjectOfClass('')", "'undefined'");
281     shouldBe("typeof objCObjectOfClass('WebUndefined')", "'undefined'");
282     shouldBe("typeof objCObjectOfClass('NSCFBoolean')", "'boolean'");
283     shouldBe("typeof objCObjectOfClass('NSCFNumber')", "'number'");
284     shouldBe("typeof objCObjectOfClass('NSCFString')", "'string'");
285     shouldBe("typeof objCObjectOfClass('WebScriptObject')", "'object'");
286     shouldBeTrue("objCObjectOfClass('NSArray') instanceof Array");
287
288     shouldBe("concatenateArray(objCArrayOfString())", "'onetwothree'");
289
290     shouldBe("let arr = objCArrayOfString(); arr.length", "3");
291     shouldThrow("let arr = objCArrayOfString(); arr.length = 0");
292     shouldThrow("let arr = objCArrayOfString(); arr.length = 5");
293     shouldThrow("let arr = objCArrayOfString(); arr.length = 0x40000000");
294     shouldBe("let arr = objCArrayOfString(); try { arr.length = 0 } catch(e) { } arr.length", "3");
295
296     // Not yet tested:
297
298     // CSSCharsetRule
299     // CSSFontFaceRule
300     // CSSImportRule
301     // CSSMediaRule
302     // CSSPageRule
303     // CSSRule
304     // CSSValue
305     // SVGColor
306     // SVGPaint
307     // SVGZoomEvent
308
309     // the various window sub-objects
310
311     // what else is missing?
312
313     if (window.testRunner)
314         testRunner.notifyDone();
315 }
316
317 function frameLoaded()
318 {
319     runTest();
320 }
321
322 </script>
323 <p id="description"></p>
324 <div id="console"></div>
325 <iframe id="xmlframe" onload="frameLoaded()" style="height:0px" src="data:application/xhtml+xml,<?xml version='1.0' encoding='UTF-8'?><body/>"></iframe>
326 </body>
327 </html>