1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.general;
16
17 import static java.nio.charset.StandardCharsets.ISO_8859_1;
18 import static org.htmlunit.junit.SetExpectedAlertsBeforeTestExecutionCallback.firstDefinedOrGiven;
19 import static org.htmlunit.junit.SetExpectedAlertsBeforeTestExecutionCallback.isDefined;
20
21 import java.awt.Color;
22 import java.awt.GradientPaint;
23 import java.io.File;
24 import java.io.IOException;
25 import java.lang.reflect.Method;
26 import java.util.ArrayList;
27 import java.util.Arrays;
28 import java.util.Collections;
29 import java.util.Comparator;
30 import java.util.List;
31
32 import javax.imageio.ImageIO;
33
34 import org.apache.commons.io.FileUtils;
35 import org.htmlunit.BrowserVersion;
36 import org.htmlunit.WebDriverTestCase;
37 import org.htmlunit.javascript.host.Location;
38 import org.htmlunit.javascript.host.Screen;
39 import org.htmlunit.javascript.host.crypto.Crypto;
40 import org.htmlunit.javascript.host.crypto.SubtleCrypto;
41 import org.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration;
42 import org.htmlunit.javascript.host.dom.CDATASection;
43 import org.htmlunit.javascript.host.dom.NodeList;
44 import org.htmlunit.javascript.host.dom.XPathEvaluator;
45 import org.htmlunit.javascript.host.dom.XPathExpression;
46 import org.htmlunit.javascript.host.dom.XPathResult;
47 import org.htmlunit.javascript.host.html.HTMLCollection;
48 import org.htmlunit.javascript.host.performance.Performance;
49 import org.htmlunit.junit.annotation.Alerts;
50 import org.htmlunit.junit.annotation.HtmlUnitNYI;
51 import org.jfree.chart.ChartFactory;
52 import org.jfree.chart.JFreeChart;
53 import org.jfree.chart.axis.NumberAxis;
54 import org.jfree.chart.plot.CategoryPlot;
55 import org.jfree.chart.plot.PlotOrientation;
56 import org.jfree.chart.renderer.category.LayeredBarRenderer;
57 import org.jfree.chart.util.SortOrder;
58 import org.jfree.data.category.DefaultCategoryDataset;
59 import org.junit.jupiter.api.AfterAll;
60 import org.junit.jupiter.api.BeforeAll;
61 import org.junit.jupiter.api.Test;
62
63
64
65
66
67
68 public class ElementOwnPropertySymbolsTest extends WebDriverTestCase {
69
70 private static BrowserVersion BROWSER_VERSION_;
71
72 private void test(final String tagName) throws Exception {
73 testString("", "document.createElement('" + tagName + "')");
74 }
75
76
77 private void testString(final String preparation, final String string) throws Exception {
78 testString(preparation, string, true);
79 }
80
81 private void testInstanceString(final String preparation, final String string) throws Exception {
82 testString(preparation, string, false);
83 }
84
85 private void testString(final String preparation,
86 final String string, final boolean fromCtor) throws Exception {
87 final String html = DOCTYPE_HTML
88 + "<html><head><script>\n"
89 + LOG_TEXTAREA_FUNCTION
90 + " function test(event) {\n"
91 + " var xmlDocument = document.implementation.createDocument('', '', null);\n"
92 + " var element = xmlDocument.createElement('wakwak');\n"
93 + " var unknown = document.createElement('harhar');\n"
94 + " var div = document.createElement('div');\n"
95 + " var svg = document.getElementById('mySvg');\n"
96 + " try{\n"
97 + " " + preparation + "\n"
98 + " process(" + string + ");\n"
99 + " } catch(e) {logEx(e);return;}\n"
100 + " }\n"
101 + "\n"
102 + " /*\n"
103 + " * Alerts all properties (including functions) of the specified object.\n"
104 + " *\n"
105 + " * @param object the object to write the property of\n"
106 + " */\n"
107 + " function process(object) {\n"
108 + " var all = [];\n"
109 + " var props = Object.getOwnPropertySymbols(object"
110 + (fromCtor ? ".constructor.prototype" : "") + ");\n"
111 + " for (i = 0; i < props.length; i++) {\n"
112 + " var str = props[i].toString();\n"
113
114 + " let desc = Object.getOwnPropertyDescriptor(object"
115 + (fromCtor ? ".constructor.prototype" : "") + ", props[i]);\n"
116 + " str += ' [';\n"
117 + " if (desc.get != undefined) str += 'G';\n"
118 + " if (desc.set != undefined) str += 'S';\n"
119 + " if (desc.writable) str += 'W';\n"
120 + " if (desc.configurable) str += 'C';\n"
121 + " if (desc.enumerable) str += 'E';\n"
122 + " str += ']'\n"
123
124 + " var val = object[props[i]];\n"
125 + " if (typeof val === 'function') {\n"
126 + " str = str + ' [function]';\n"
127 + " } else if (typeof val === 'string') {\n"
128 + " str = str + ' [' + val + ']';\n"
129 + " } else {\n"
130 + " str = str + ' [' + JSON.stringify(val) + ']';\n"
131 + " }\n"
132 + " all.push(str);\n"
133 + " }\n"
134
135 + " all.sort(sortFunction);\n"
136 + " if (all.length == 0) { all = '-' };\n"
137 + " log(all);\n"
138 + " }\n"
139 + " function sortFunction(s1, s2) {\n"
140 + " var s1lc = s1.toLowerCase();\n"
141 + " var s2lc = s2.toLowerCase();\n"
142 + " if (s1lc > s2lc) { return 1; }\n"
143 + " if (s1lc < s2lc) { return -1; }\n"
144 + " return s1 > s2 ? 1 : -1;\n"
145 + " }\n"
146 + "</script></head>\n"
147 + "<body onload='test(event)'>\n"
148 + " <svg xmlns='http://www.w3.org/2000/svg' version='1.1'>\n"
149 + " <invalid id='mySvg'/>\n"
150 + " </svg>\n"
151
152 + " <style>\n"
153 + " @page { margin: 1cm; }\n"
154 + " </style>\n"
155 + " <style>\n"
156 + " @media screen { p { background-color:#FFFFFF; }};\n"
157 + " </style>\n"
158 + " <style>\n"
159 + " @font-face { font-family: Delicious; src: url('Delicious-Bold.otf'); };\n"
160 + " </style>\n"
161 + " <style>\n"
162 + " @import 'imp.css';\n"
163 + " </style>\n"
164 + " <style>\n"
165 + " h3 { color: blue; }\n"
166 + " </style>\n"
167
168 + " <form name='myForm', id='myFormId'>"
169 + " <input type='radio' name='first'/><input type='radio' name='first'/>"
170 + " <input id='fileItem' type='file' />"
171 + " </form>"
172
173 + LOG_TEXTAREA
174 + "</body></html>";
175
176 if (BROWSER_VERSION_ == null) {
177 BROWSER_VERSION_ = getBrowserVersion();
178 }
179
180 loadPageVerifyTextArea2(html);
181 }
182
183 private static List<String> stringAsArray(final String string) {
184 if (string.isEmpty()) {
185 return Collections.emptyList();
186 }
187 return Arrays.asList(string.split(","));
188 }
189
190
191
192
193 @BeforeAll
194 public static void beforeClass() {
195 BROWSER_VERSION_ = null;
196 }
197
198
199
200
201
202
203 @AfterAll
204 public static void saveAll() throws IOException {
205 final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
206 final int[] counts = {0, 0};
207 final StringBuilder html = new StringBuilder();
208 html.setLength(0);
209
210 collectStatistics(BROWSER_VERSION_, dataset, html, counts);
211 saveChart(dataset);
212
213 FileUtils.writeStringToFile(new File(getTargetDirectory()
214 + "/ownsymbols-" + BROWSER_VERSION_.getNickname() + ".html"),
215 htmlHeader()
216 .append(overview(counts))
217 .append(htmlDetailsHeader())
218 .append(html)
219 .append(htmlDetailsFooter())
220 .append(htmlFooter()).toString(), ISO_8859_1);
221 }
222
223 private static void collectStatistics(final BrowserVersion browserVersion, final DefaultCategoryDataset dataset,
224 final StringBuilder html, final int[] counts) {
225 final Method[] methods = ElementOwnPropertySymbolsTest.class.getMethods();
226 Arrays.sort(methods, Comparator.comparing(Method::getName));
227 for (final Method method : methods) {
228 if (method.isAnnotationPresent(Test.class)) {
229
230 final Alerts alerts = method.getAnnotation(Alerts.class);
231 String[] expectedAlerts = {};
232 if (isDefined(alerts.value())) {
233 expectedAlerts = alerts.value();
234 }
235 else if (browserVersion == BrowserVersion.EDGE) {
236 expectedAlerts = firstDefinedOrGiven(expectedAlerts, alerts.EDGE(), alerts.DEFAULT());
237 }
238 else if (browserVersion == BrowserVersion.FIREFOX_ESR) {
239 expectedAlerts = firstDefinedOrGiven(expectedAlerts, alerts.FF_ESR(), alerts.DEFAULT());
240 }
241 else if (browserVersion == BrowserVersion.FIREFOX) {
242 expectedAlerts = firstDefinedOrGiven(expectedAlerts, alerts.FF(), alerts.DEFAULT());
243 }
244 else if (browserVersion == BrowserVersion.CHROME) {
245 expectedAlerts = firstDefinedOrGiven(expectedAlerts, alerts.CHROME(), alerts.DEFAULT());
246 }
247
248 final List<String> realProperties = stringAsArray(String.join(",", expectedAlerts));
249 List<String> simulatedProperties = stringAsArray(String.join(",", expectedAlerts));
250
251 final HtmlUnitNYI htmlUnitNYI = method.getAnnotation(HtmlUnitNYI.class);
252 String[] nyiAlerts = {};
253 if (htmlUnitNYI != null) {
254 if (browserVersion == BrowserVersion.EDGE) {
255 nyiAlerts = firstDefinedOrGiven(expectedAlerts, htmlUnitNYI.EDGE());
256 }
257 else if (browserVersion == BrowserVersion.FIREFOX_ESR) {
258 nyiAlerts = firstDefinedOrGiven(expectedAlerts, htmlUnitNYI.FF_ESR());
259 }
260 else if (browserVersion == BrowserVersion.FIREFOX) {
261 nyiAlerts = firstDefinedOrGiven(expectedAlerts, htmlUnitNYI.FF());
262 }
263 else if (browserVersion == BrowserVersion.CHROME) {
264 nyiAlerts = firstDefinedOrGiven(expectedAlerts, htmlUnitNYI.CHROME());
265 }
266
267 simulatedProperties = stringAsArray(String.join(",", nyiAlerts));
268 }
269
270 final List<String> erroredProperties = new ArrayList<>(simulatedProperties);
271 erroredProperties.removeAll(realProperties);
272
273 final List<String> implementedProperties = new ArrayList<>(simulatedProperties);
274 implementedProperties.retainAll(realProperties);
275
276 counts[1] += implementedProperties.size();
277 counts[0] += realProperties.size();
278
279 htmlDetails(method.getName(), html, realProperties, implementedProperties, erroredProperties);
280
281 dataset.addValue(implementedProperties.size(), "Implemented", method.getName());
282 dataset.addValue(realProperties.size(),
283 browserVersion.getNickname().replace("FF", "Firefox "),
284 method.getName());
285 dataset.addValue(erroredProperties.size(), "Should not be implemented", method.getName());
286 }
287 }
288 }
289
290 private static void saveChart(final DefaultCategoryDataset dataset) throws IOException {
291 final JFreeChart chart = ChartFactory.createBarChart(
292 "HtmlUnit implemented properties and methods for " + BROWSER_VERSION_.getNickname(), "Objects",
293 "Count", dataset, PlotOrientation.HORIZONTAL, true, true, false);
294 final CategoryPlot plot = (CategoryPlot) chart.getPlot();
295 final NumberAxis axis = (NumberAxis) plot.getRangeAxis();
296 axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
297 final LayeredBarRenderer renderer = new LayeredBarRenderer();
298 plot.setRenderer(renderer);
299 plot.setRowRenderingOrder(SortOrder.DESCENDING);
300 renderer.setSeriesPaint(0, new GradientPaint(0, 0, Color.green, 0, 0, new Color(0, 64, 0)));
301 renderer.setSeriesPaint(1, new GradientPaint(0, 0, Color.blue, 0, 0, new Color(0, 0, 64)));
302 renderer.setSeriesPaint(2, new GradientPaint(0, 0, Color.red, 0, 0, new Color(64, 0, 0)));
303 ImageIO.write(chart.createBufferedImage(1200, 2400), "png",
304 new File(getTargetDirectory() + "/ownsymbols-" + BROWSER_VERSION_.getNickname() + ".png"));
305 }
306
307
308
309
310
311 public static String getTargetDirectory() {
312 final String dirName = "./target";
313 final File dir = new File(dirName);
314 if (!dir.exists()) {
315 if (!dir.mkdir()) {
316 throw new RuntimeException("Could not create artifacts directory");
317 }
318 }
319 return dirName;
320 }
321
322 private static StringBuilder htmlHeader() {
323 final StringBuilder html = new StringBuilder();
324 html.append(DOCTYPE_HTML);
325 html.append("<html><head>\n");
326 html.append("<style type=\"text/css\">\n");
327 html.append("table.bottomBorder { border-collapse:collapse; }\n");
328 html.append("table.bottomBorder td, table.bottomBorder th { "
329 + "border-bottom:1px dotted black;padding:5px; }\n");
330 html.append("table.bottomBorder td.numeric { text-align:right; }\n");
331 html.append("</style>\n");
332 html.append("</head><body>\n");
333
334 html.append("<div align='center'>").append("<h2>")
335 .append("HtmlUnit implemented symbols for " + BROWSER_VERSION_.getNickname())
336 .append("</h2>").append("</div>\n");
337 return html;
338 }
339
340 private static StringBuilder overview(final int[] counts) {
341 final StringBuilder html = new StringBuilder();
342 html.append("<table class='bottomBorder'>");
343 html.append("<tr>\n");
344
345 html.append("<th>Total Implemented:</th>\n");
346 html.append("<td>" + counts[1])
347 .append(" (" + Math.round(((double) counts[1]) / counts[0] * 100))
348 .append("%)</td>\n");
349
350 html.append("</tr>\n");
351 html.append("</table>\n");
352
353 html.append("<p><br></p>\n");
354
355 return html;
356 }
357
358 private static StringBuilder htmlFooter() {
359 final StringBuilder html = new StringBuilder();
360
361 html.append("<br>").append("Legend:").append("<br>")
362 .append("<span style='color: blue'>").append("To be implemented").append("</span>").append("<br>")
363 .append("<span style='color: green'>").append("Implemented").append("</span>").append("<br>")
364 .append("<span style='color: red'>").append("Should not be implemented").append("</span>");
365 html.append("\n");
366
367 html.append("</body>\n");
368 html.append("</html>\n");
369 return html;
370 }
371
372 private static StringBuilder htmlDetailsHeader() {
373 final StringBuilder html = new StringBuilder();
374
375 html.append("<table class='bottomBorder' width='100%'>");
376 html.append("<tr>\n");
377 html.append("<th>Class</th><th>Symbols</th><th>Counts</th>\n");
378 html.append("</tr>");
379 return html;
380 }
381
382 private static StringBuilder htmlDetails(final String name, final StringBuilder html,
383 final List<String> realProperties,
384 final List<String> implementedProperties, final List<String> erroredProperties) {
385 html.append("<tr>").append('\n').append("<td rowspan='2'>").append("<a name='" + name + "'>").append(name)
386 .append("</a>").append("</td>").append('\n').append("<td>");
387 int implementedCount = 0;
388
389 if (realProperties.isEmpty()) {
390 html.append(" ");
391 }
392 else if (realProperties.size() == 1
393 && realProperties.contains("exception")
394 && implementedProperties.size() == 1
395 && implementedProperties.contains("exception")
396 && erroredProperties.size() == 0) {
397 html.append(" ");
398 }
399 else {
400 for (int i = 0; i < realProperties.size(); i++) {
401 final String color;
402 if (implementedProperties.contains(realProperties.get(i))) {
403 color = "green";
404 implementedCount++;
405 }
406 else {
407 color = "blue";
408 }
409 html.append("<span style='color: " + color + "'>").append(realProperties.get(i)).append("</span>");
410 if (i < realProperties.size() - 1) {
411 html.append(',').append(' ');
412 }
413 }
414 }
415
416 html.append("</td>").append("<td>").append(implementedCount).append('/')
417 .append(realProperties.size()).append("</td>").append("</tr>").append('\n');
418 html.append("<tr>").append("<td>");
419 for (int i = 0; i < erroredProperties.size(); i++) {
420 html.append("<span style='color: red'>").append(erroredProperties.get(i)).append("</span>");
421 if (i < erroredProperties.size() - 1) {
422 html.append(',').append(' ');
423 }
424 }
425 if (erroredProperties.isEmpty()) {
426 html.append(" ");
427 }
428 html.append("</td>")
429 .append("<td>").append(erroredProperties.size()).append("</td>").append("</tr>\n");
430
431 return html;
432 }
433
434 private static StringBuilder htmlDetailsFooter() {
435 final StringBuilder html = new StringBuilder();
436 html.append("</table>");
437 return html;
438 }
439
440
441
442
443 @Test
444 @Alerts("Symbol(Symbol.toStringTag) [C] [Text]")
445 public void text() throws Exception {
446 testString("", "document.createTextNode('some text')");
447 }
448
449
450
451
452 @Test
453 @Alerts("Symbol(Symbol.toStringTag) [C] [Attr]")
454 public void attr() throws Exception {
455 testString("", "document.createAttribute('some_attrib')");
456 }
457
458
459
460
461 @Test
462 @Alerts("Symbol(Symbol.toStringTag) [C] [Comment]")
463 public void comment() throws Exception {
464 testString("", "document.createComment('come_comment')");
465 }
466
467
468
469
470 @Test
471 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
472 public void unknown() throws Exception {
473 testString("", "unknown");
474 }
475
476
477
478
479 @Test
480 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
481 public void htmlElement() throws Exception {
482 testString("", "unknown");
483 }
484
485
486
487
488
489
490 @Test
491 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [Element],"
492 + "Symbol(Symbol.unscopables) [C] [{\"after\":true,\"append\":true,\"before\":true,"
493 + "\"prepend\":true,\"remove\":true,\"replaceChildren\":true,"
494 + "\"replaceWith\":true,\"slot\":true}]",
495 FF = "Symbol(Symbol.toStringTag) [C] [Element],"
496 + "Symbol(Symbol.unscopables) [C] [{\"slot\":true,\"before\":true,\"after\":true,"
497 + "\"replaceWith\":true,\"remove\":true,\"prepend\":true,"
498 + "\"append\":true,\"replaceChildren\":true}]",
499 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Element],"
500 + "Symbol(Symbol.unscopables) [C] [{\"slot\":true,\"before\":true,\"after\":true,"
501 + "\"replaceWith\":true,\"remove\":true,\"prepend\":true,"
502 + "\"append\":true,\"replaceChildren\":true}]")
503 @HtmlUnitNYI(CHROME = "Symbol(Symbol.toStringTag) [C] [Element]",
504 EDGE = "Symbol(Symbol.toStringTag) [C] [Element]",
505 FF = "Symbol(Symbol.toStringTag) [C] [Element]",
506 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Element]")
507 public void element() throws Exception {
508 testString("", "element");
509 }
510
511
512
513
514
515
516 @Test
517 @Alerts(DEFAULT =
518 "Symbol(Symbol.toStringTag) [C] [Element],"
519 + "Symbol(Symbol.unscopables) [C] [{\"after\":true,\"append\":true,"
520 + "\"before\":true,\"prepend\":true,\"remove\":true,\"replaceChildren\":true,\"replaceWith\":true,"
521 + "\"slot\":true}]",
522 FF = "Symbol(Symbol.toStringTag) [C] [Element],"
523 + "Symbol(Symbol.unscopables) [C] [{\"slot\":true,\"before\":true,\"after\":true,\"replaceWith\":true,"
524 + "\"remove\":true,\"prepend\":true,\"append\":true,\"replaceChildren\":true}]",
525 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Element],"
526 + "Symbol(Symbol.unscopables) [C] [{\"slot\":true,\"before\":true,\"after\":true,\"replaceWith\":true,"
527 + "\"remove\":true,\"prepend\":true,\"append\":true,\"replaceChildren\":true}]")
528 @HtmlUnitNYI(CHROME = "Symbol(Symbol.toStringTag) [C] [Element]",
529 EDGE = "Symbol(Symbol.toStringTag) [C] [Element]",
530 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Element]",
531 FF = "Symbol(Symbol.toStringTag) [C] [Element]")
532 public void element2() throws Exception {
533 testString("", "element, document.createDocumentFragment()");
534 }
535
536
537
538
539 @Test
540 @Alerts("TypeError")
541 public void currentStyle() throws Exception {
542 testString("", "document.body.currentStyle");
543 }
544
545
546
547
548 @Test
549 @Alerts("Symbol(Symbol.toStringTag) [C] [Event]")
550 public void event() throws Exception {
551 testString("", "event");
552 }
553
554
555
556
557 @Test
558 @Alerts("Symbol(Symbol.toStringTag) [C] [Window]")
559 public void window() throws Exception {
560 testString("", "window");
561 }
562
563
564
565
566
567
568 @Test
569 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
570 public void abbr() throws Exception {
571 test("abbr");
572 }
573
574
575
576
577
578
579 @Test
580 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
581 public void acronym() throws Exception {
582 test("acronym");
583 }
584
585
586
587
588
589
590 @Test
591 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLAnchorElement]")
592 public void a() throws Exception {
593 test("a");
594 }
595
596
597
598
599
600
601 @Test
602 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
603 public void address() throws Exception {
604 test("address");
605 }
606
607
608
609
610
611
612 @Test
613 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
614 public void applet() throws Exception {
615 test("applet");
616 }
617
618
619
620
621
622
623 @Test
624 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLAreaElement]")
625 public void area() throws Exception {
626 test("area");
627 }
628
629
630
631
632
633
634 @Test
635 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
636 public void article() throws Exception {
637 test("article");
638 }
639
640
641
642
643
644
645 @Test
646 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
647 public void aside() throws Exception {
648 test("aside");
649 }
650
651
652
653
654
655
656 @Test
657 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLAudioElement]")
658 public void audio() throws Exception {
659 test("audio");
660 }
661
662
663
664
665
666
667 @Test
668 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
669 public void bgsound() throws Exception {
670 test("bgsound");
671 }
672
673
674
675
676
677
678 @Test
679 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLBaseElement]")
680 public void base() throws Exception {
681 test("base");
682 }
683
684
685
686
687
688
689 @Test
690 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
691 public void basefont() throws Exception {
692 test("basefont");
693 }
694
695
696
697
698
699
700 @Test
701 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
702 public void bdi() throws Exception {
703 test("bdi");
704 }
705
706
707
708
709
710
711 @Test
712 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
713 public void bdo() throws Exception {
714 test("bdo");
715 }
716
717
718
719
720
721
722 @Test
723 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
724 public void big() throws Exception {
725 test("big");
726 }
727
728
729
730
731
732
733 @Test
734 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
735 public void blink() throws Exception {
736 test("blink");
737 }
738
739
740
741
742
743
744 @Test
745 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLQuoteElement]")
746 public void blockquote() throws Exception {
747 test("blockquote");
748 }
749
750
751
752
753
754
755 @Test
756 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLBodyElement]")
757 public void body() throws Exception {
758 test("body");
759 }
760
761
762
763
764
765
766 @Test
767 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
768 public void b() throws Exception {
769 test("b");
770 }
771
772
773
774
775
776
777 @Test
778 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLBRElement]")
779 public void br() throws Exception {
780 test("br");
781 }
782
783
784
785
786
787
788 @Test
789 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLButtonElement]")
790 public void button() throws Exception {
791 test("button");
792 }
793
794
795
796
797
798
799 @Test
800 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLCanvasElement]")
801 public void canvas() throws Exception {
802 test("canvas");
803 }
804
805
806
807
808
809
810 @Test
811 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableCaptionElement]")
812 public void caption() throws Exception {
813 test("caption");
814 }
815
816
817
818
819
820
821 @Test
822 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
823 public void center() throws Exception {
824 test("center");
825 }
826
827
828
829
830
831
832 @Test
833 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
834 public void cite() throws Exception {
835 test("cite");
836 }
837
838
839
840
841
842
843 @Test
844 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
845 public void code() throws Exception {
846 test("code");
847 }
848
849
850
851
852
853
854 @Test
855 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
856 public void command() throws Exception {
857 test("command");
858 }
859
860
861
862
863
864
865 @Test
866 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDataListElement]")
867 public void datalist() throws Exception {
868 test("datalist");
869 }
870
871
872
873
874
875
876 @Test
877 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
878 public void dfn() throws Exception {
879 test("dfn");
880 }
881
882
883
884
885
886
887 @Test
888 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
889 public void dd() throws Exception {
890 test("dd");
891 }
892
893
894
895
896
897
898 @Test
899 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLModElement]")
900 public void del() throws Exception {
901 test("del");
902 }
903
904
905
906
907
908
909 @Test
910 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDetailsElement]")
911 public void details() throws Exception {
912 test("details");
913 }
914
915
916
917
918
919
920 @Test
921 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDialogElement]")
922 public void dialog() throws Exception {
923 test("dialog");
924 }
925
926
927
928
929
930
931 @Test
932 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDirectoryElement]")
933 public void dir() throws Exception {
934 test("dir");
935 }
936
937
938
939
940
941
942 @Test
943 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDivElement]")
944 public void div() throws Exception {
945 test("div");
946 }
947
948
949
950
951
952
953 @Test
954 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDListElement]")
955 public void dl() throws Exception {
956 test("dl");
957 }
958
959
960
961
962
963
964 @Test
965 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
966 public void dt() throws Exception {
967 test("dt");
968 }
969
970
971
972
973
974
975 @Test
976 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLEmbedElement]")
977 public void embed() throws Exception {
978 test("embed");
979 }
980
981
982
983
984
985
986 @Test
987 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
988 public void em() throws Exception {
989 test("em");
990 }
991
992
993
994
995
996
997 @Test
998 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLFieldSetElement]")
999 public void fieldset() throws Exception {
1000 test("fieldset");
1001 }
1002
1003
1004
1005
1006
1007
1008 @Test
1009 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1010 public void figcaption() throws Exception {
1011 test("figcaption");
1012 }
1013
1014
1015
1016
1017
1018
1019 @Test
1020 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1021 public void figure() throws Exception {
1022 test("figure");
1023 }
1024
1025
1026
1027
1028
1029
1030 @Test
1031 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLFontElement]")
1032 public void font() throws Exception {
1033 test("font");
1034 }
1035
1036
1037
1038
1039
1040
1041 @Test
1042 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLFormElement]")
1043 public void form() throws Exception {
1044 test("form");
1045 }
1046
1047
1048
1049
1050
1051
1052 @Test
1053 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FormData]")
1054 public void formData() throws Exception {
1055 testString("", "new FormData()");
1056 }
1057
1058
1059
1060
1061
1062
1063 @Test
1064 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1065 public void footer() throws Exception {
1066 test("footer");
1067 }
1068
1069
1070
1071
1072
1073
1074 @Test
1075 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLFrameElement]")
1076 public void frame() throws Exception {
1077 test("frame");
1078 }
1079
1080
1081
1082
1083
1084
1085 @Test
1086 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLFrameSetElement]")
1087 public void frameset() throws Exception {
1088 test("frameset");
1089 }
1090
1091
1092
1093
1094
1095
1096 @Test
1097 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadElement]")
1098 public void head() throws Exception {
1099 test("head");
1100 }
1101
1102
1103
1104
1105
1106
1107 @Test
1108 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1109 public void header() throws Exception {
1110 test("header");
1111 }
1112
1113
1114
1115
1116
1117
1118 @Test
1119 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1120 public void h1() throws Exception {
1121 test("h1");
1122 }
1123
1124
1125
1126
1127
1128
1129 @Test
1130 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1131 public void h2() throws Exception {
1132 test("h2");
1133 }
1134
1135
1136
1137
1138
1139
1140 @Test
1141 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1142 public void h3() throws Exception {
1143 test("h3");
1144 }
1145
1146
1147
1148
1149
1150
1151 @Test
1152 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1153 public void h4() throws Exception {
1154 test("h4");
1155 }
1156
1157
1158
1159
1160
1161
1162 @Test
1163 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1164 public void h5() throws Exception {
1165 test("h5");
1166 }
1167
1168
1169
1170
1171
1172
1173 @Test
1174 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHeadingElement]")
1175 public void h6() throws Exception {
1176 test("h6");
1177 }
1178
1179
1180
1181
1182
1183
1184 @Test
1185 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHRElement]")
1186 public void hr() throws Exception {
1187 test("hr");
1188 }
1189
1190
1191
1192
1193
1194
1195 @Test
1196 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLHtmlElement]")
1197 public void html() throws Exception {
1198 test("html");
1199 }
1200
1201
1202
1203
1204
1205
1206 @Test
1207 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLIFrameElement]")
1208 public void iframe() throws Exception {
1209 test("iframe");
1210 }
1211
1212
1213
1214
1215
1216
1217 @Test
1218 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLQuoteElement]")
1219 public void q() throws Exception {
1220 test("q");
1221 }
1222
1223
1224
1225
1226
1227
1228 @Test
1229 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLImageElement]")
1230 public void img() throws Exception {
1231 test("img");
1232 }
1233
1234
1235
1236
1237
1238
1239 @Test
1240 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]",
1241 FF = "Symbol(Symbol.toStringTag) [C] [HTMLElement]",
1242 FF_ESR = "Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1243 public void image() throws Exception {
1244 test("image");
1245 }
1246
1247
1248
1249
1250
1251
1252 @Test
1253 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLModElement]")
1254 public void ins() throws Exception {
1255 test("ins");
1256 }
1257
1258
1259
1260
1261
1262
1263 @Test
1264 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1265 public void isindex() throws Exception {
1266 test("isindex");
1267 }
1268
1269
1270
1271
1272
1273
1274 @Test
1275 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1276 public void i() throws Exception {
1277 test("i");
1278 }
1279
1280
1281
1282
1283
1284
1285 @Test
1286 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1287 public void kbd() throws Exception {
1288 test("kbd");
1289 }
1290
1291
1292
1293
1294 @Test
1295 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1296 public void keygen() throws Exception {
1297 test("keygen");
1298 }
1299
1300
1301
1302
1303
1304
1305 @Test
1306 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLLabelElement]")
1307 public void label() throws Exception {
1308 test("label");
1309 }
1310
1311
1312
1313
1314
1315
1316 @Test
1317 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [HTMLElement]",
1318 FF = "Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]",
1319 FF_ESR = "Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1320 public void layer() throws Exception {
1321 test("layer");
1322 }
1323
1324
1325
1326
1327
1328
1329 @Test
1330 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLLegendElement]")
1331 public void legend() throws Exception {
1332 test("legend");
1333 }
1334
1335
1336
1337
1338
1339
1340 @Test
1341 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLPreElement]")
1342 public void listing() throws Exception {
1343 test("listing");
1344 }
1345
1346
1347
1348
1349
1350
1351 @Test
1352 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLLIElement]")
1353 public void li() throws Exception {
1354 test("li");
1355 }
1356
1357
1358
1359
1360
1361
1362 @Test
1363 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLLinkElement]")
1364 public void link() throws Exception {
1365 test("link");
1366 }
1367
1368
1369
1370
1371
1372
1373 @Test
1374 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1375 public void main() throws Exception {
1376 test("main");
1377 }
1378
1379
1380
1381
1382
1383
1384 @Test
1385 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLMapElement]")
1386 public void map() throws Exception {
1387 test("map");
1388 }
1389
1390
1391
1392
1393
1394
1395 @Test
1396 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1397 public void mark() throws Exception {
1398 test("mark");
1399 }
1400
1401
1402
1403
1404
1405
1406 @Test
1407 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLMarqueeElement]")
1408 public void marquee() throws Exception {
1409 test("marquee");
1410 }
1411
1412
1413
1414
1415
1416
1417 @Test
1418 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLMenuElement]")
1419 public void menu() throws Exception {
1420 test("menu");
1421 }
1422
1423
1424
1425
1426
1427
1428 @Test
1429 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1430 public void menuitem() throws Exception {
1431 test("menuitem");
1432 }
1433
1434
1435
1436
1437
1438
1439 @Test
1440 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLMetaElement]")
1441 public void meta() throws Exception {
1442 test("meta");
1443 }
1444
1445
1446
1447
1448
1449
1450 @Test
1451 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLMeterElement]")
1452 public void meter() throws Exception {
1453 test("meter");
1454 }
1455
1456
1457
1458
1459
1460
1461 @Test
1462 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1463 public void multicol() throws Exception {
1464 test("multicol");
1465 }
1466
1467
1468
1469
1470
1471
1472 @Test
1473 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1474 public void nav() throws Exception {
1475 test("nav");
1476 }
1477
1478
1479
1480
1481
1482
1483 @Test
1484 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1485 public void nextid() throws Exception {
1486 test("nextid");
1487 }
1488
1489
1490
1491
1492
1493
1494 @Test
1495 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1496 public void nobr() throws Exception {
1497 test("nobr");
1498 }
1499
1500
1501
1502
1503
1504
1505 @Test
1506 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1507 public void noembed() throws Exception {
1508 test("noembed");
1509 }
1510
1511
1512
1513
1514
1515
1516 @Test
1517 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1518 public void noframes() throws Exception {
1519 test("noframes");
1520 }
1521
1522
1523
1524
1525
1526
1527 @Test
1528 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [HTMLElement]",
1529 FF = "Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]",
1530 FF_ESR = "Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1531 public void nolayer() throws Exception {
1532 test("nolayer");
1533 }
1534
1535
1536
1537
1538
1539
1540 @Test
1541 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1542 public void noscript() throws Exception {
1543 test("noscript");
1544 }
1545
1546
1547
1548
1549
1550
1551 @Test
1552 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLObjectElement]")
1553 public void object() throws Exception {
1554 test("object");
1555 }
1556
1557
1558
1559
1560
1561
1562 @Test
1563 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLOListElement]")
1564 public void ol() throws Exception {
1565 test("ol");
1566 }
1567
1568
1569
1570
1571
1572
1573 @Test
1574 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLOptGroupElement]")
1575 public void optgroup() throws Exception {
1576 test("optgroup");
1577 }
1578
1579
1580
1581
1582
1583
1584 @Test
1585 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLOptionElement]")
1586 public void option() throws Exception {
1587 test("option");
1588 }
1589
1590
1591
1592
1593
1594
1595 @Test
1596 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLOutputElement]")
1597 public void output() throws Exception {
1598 test("output");
1599 }
1600
1601
1602
1603
1604
1605
1606 @Test
1607 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLParagraphElement]")
1608 public void p() throws Exception {
1609 test("p");
1610 }
1611
1612
1613
1614
1615
1616
1617 @Test
1618 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLParamElement]")
1619 public void param() throws Exception {
1620 test("param");
1621 }
1622
1623
1624
1625
1626
1627
1628 @Test
1629 @Alerts("Symbol(Symbol.toStringTag) [C] [Performance]")
1630 public void performance() throws Exception {
1631 testString("", "performance");
1632 }
1633
1634
1635
1636
1637
1638
1639 @Test
1640 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1641 public void plaintext() throws Exception {
1642 test("plaintext");
1643 }
1644
1645
1646
1647
1648
1649
1650 @Test
1651 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLPreElement]")
1652 public void pre() throws Exception {
1653 test("pre");
1654 }
1655
1656
1657
1658
1659
1660
1661 @Test
1662 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLProgressElement]")
1663 public void progress() throws Exception {
1664 test("progress");
1665 }
1666
1667
1668
1669
1670
1671
1672 @Test
1673 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1674 public void rb() throws Exception {
1675 test("rb");
1676 }
1677
1678
1679
1680
1681
1682
1683 @Test
1684 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1685 public void rbc() throws Exception {
1686 test("rbc");
1687 }
1688
1689
1690
1691
1692
1693
1694 @Test
1695 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1696 public void rp() throws Exception {
1697 test("rp");
1698 }
1699
1700
1701
1702
1703
1704
1705 @Test
1706 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1707 public void rt() throws Exception {
1708 test("rt");
1709 }
1710
1711
1712
1713
1714
1715
1716 @Test
1717 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1718 public void rtc() throws Exception {
1719 test("rtc");
1720 }
1721
1722
1723
1724
1725
1726
1727 @Test
1728 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1729 public void ruby() throws Exception {
1730 test("ruby");
1731 }
1732
1733
1734
1735
1736
1737
1738 @Test
1739 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1740 public void s() throws Exception {
1741 test("s");
1742 }
1743
1744
1745
1746
1747
1748
1749 @Test
1750 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1751 public void samp() throws Exception {
1752 test("samp");
1753 }
1754
1755
1756
1757
1758
1759
1760 @Test
1761 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLScriptElement]")
1762 public void script() throws Exception {
1763 test("script");
1764 }
1765
1766
1767
1768
1769
1770
1771 @Test
1772 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1773 public void section() throws Exception {
1774 test("section");
1775 }
1776
1777
1778
1779
1780
1781
1782 @Test
1783 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLSelectElement]")
1784 public void select() throws Exception {
1785 test("select");
1786 }
1787
1788
1789
1790
1791
1792
1793 @Test
1794 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLOptionsCollection]")
1795 public void optionsCollection() throws Exception {
1796 testString("var sel = document.createElement('select')", "sel.options");
1797 }
1798
1799
1800
1801
1802
1803
1804 @Test
1805 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1806 public void small() throws Exception {
1807 test("small");
1808 }
1809
1810
1811
1812
1813
1814
1815 @Test
1816 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLSourceElement]")
1817 public void source() throws Exception {
1818 test("source");
1819 }
1820
1821
1822
1823
1824
1825
1826 @Test
1827 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLSpanElement]")
1828 public void span() throws Exception {
1829 test("span");
1830 }
1831
1832
1833
1834
1835
1836
1837 @Test
1838 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1839 public void strike() throws Exception {
1840 test("strike");
1841 }
1842
1843
1844
1845
1846
1847
1848 @Test
1849 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1850 public void strong() throws Exception {
1851 test("strong");
1852 }
1853
1854
1855
1856
1857
1858
1859 @Test
1860 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLStyleElement]")
1861 public void style() throws Exception {
1862 test("style");
1863 }
1864
1865
1866
1867
1868
1869
1870 @Test
1871 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1872 public void sub() throws Exception {
1873 test("sub");
1874 }
1875
1876
1877
1878
1879
1880
1881 @Test
1882 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1883 public void summary() throws Exception {
1884 test("summary");
1885 }
1886
1887
1888
1889
1890
1891
1892 @Test
1893 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
1894 public void sup() throws Exception {
1895 test("sup");
1896 }
1897
1898
1899
1900
1901
1902
1903 @Test
1904 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
1905 public void svg() throws Exception {
1906 test("svg");
1907 }
1908
1909
1910
1911
1912
1913
1914 @Test
1915 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableElement]")
1916 public void table() throws Exception {
1917 test("table");
1918 }
1919
1920
1921
1922
1923
1924
1925 @Test
1926 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableColElement]")
1927 public void col() throws Exception {
1928 test("col");
1929 }
1930
1931
1932
1933
1934
1935
1936 @Test
1937 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableColElement]")
1938 public void colgroup() throws Exception {
1939 test("colgroup");
1940 }
1941
1942
1943
1944
1945
1946
1947 @Test
1948 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableSectionElement]")
1949 public void tbody() throws Exception {
1950 test("tbody");
1951 }
1952
1953
1954
1955
1956
1957
1958 @Test
1959 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableCellElement]")
1960 public void td() throws Exception {
1961 test("td");
1962 }
1963
1964
1965
1966
1967
1968
1969 @Test
1970 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableCellElement]")
1971 public void th() throws Exception {
1972 test("th");
1973 }
1974
1975
1976
1977
1978
1979
1980 @Test
1981 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableRowElement]")
1982 public void tr() throws Exception {
1983 test("tr");
1984 }
1985
1986
1987
1988
1989
1990
1991 @Test
1992 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTextAreaElement]")
1993 public void textarea() throws Exception {
1994 test("textarea");
1995 }
1996
1997
1998
1999
2000
2001
2002 @Test
2003 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableSectionElement]")
2004 public void tfoot() throws Exception {
2005 test("tfoot");
2006 }
2007
2008
2009
2010
2011
2012
2013 @Test
2014 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTableSectionElement]")
2015 public void thead() throws Exception {
2016 test("thead");
2017 }
2018
2019
2020
2021
2022
2023
2024 @Test
2025 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
2026 public void tt() throws Exception {
2027 test("tt");
2028 }
2029
2030
2031
2032
2033
2034
2035 @Test
2036 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTimeElement]")
2037 public void time() throws Exception {
2038 test("time");
2039 }
2040
2041
2042
2043
2044
2045
2046 @Test
2047 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTitleElement]")
2048 public void title() throws Exception {
2049 test("title");
2050 }
2051
2052
2053
2054
2055
2056
2057 @Test
2058 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTrackElement]")
2059 public void track() throws Exception {
2060 test("track");
2061 }
2062
2063
2064
2065
2066
2067
2068 @Test
2069 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
2070 public void u() throws Exception {
2071 test("u");
2072 }
2073
2074
2075
2076
2077
2078
2079 @Test
2080 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUListElement]")
2081 public void ul() throws Exception {
2082 test("ul");
2083 }
2084
2085
2086
2087
2088
2089
2090 @Test
2091 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
2092 public void var() throws Exception {
2093 test("var");
2094 }
2095
2096
2097
2098
2099
2100
2101 @Test
2102 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLVideoElement]")
2103 public void video() throws Exception {
2104 test("video");
2105 }
2106
2107
2108
2109
2110
2111
2112 @Test
2113 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLElement]")
2114 public void wbr() throws Exception {
2115 test("wbr");
2116 }
2117
2118
2119
2120
2121
2122
2123 @Test
2124 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLPreElement]")
2125 public void xmp() throws Exception {
2126 test("xmp");
2127 }
2128
2129
2130
2131
2132
2133
2134 @Test
2135 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLInputElement]")
2136 public void input() throws Exception {
2137 test("input");
2138 }
2139
2140
2141
2142
2143
2144
2145 @Test
2146 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDataElement]")
2147 public void data() throws Exception {
2148 test("data");
2149 }
2150
2151
2152
2153
2154
2155
2156 @Test
2157 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLUnknownElement]")
2158 public void content() throws Exception {
2159 test("content");
2160 }
2161
2162
2163
2164
2165
2166
2167 @Test
2168 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLPictureElement]")
2169 public void picutre() throws Exception {
2170 test("picture");
2171 }
2172
2173
2174
2175
2176
2177
2178 @Test
2179 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLTemplateElement]")
2180 public void template() throws Exception {
2181 test("template");
2182 }
2183
2184
2185
2186
2187
2188
2189 @Test
2190 @Alerts("Symbol(Symbol.toStringTag) [C] [KeyboardEvent]")
2191 public void keyboardEvent() throws Exception {
2192 testString("", "document.createEvent('KeyboardEvent')");
2193 }
2194
2195
2196
2197
2198
2199
2200 @Test
2201 @Alerts("Symbol(Symbol.toStringTag) [C] [Event]")
2202 public void event2() throws Exception {
2203 testString("", "document.createEvent('Event')");
2204 }
2205
2206
2207
2208
2209
2210
2211 @Test
2212 @Alerts("Symbol(Symbol.toStringTag) [C] [UIEvent]")
2213 public void uiEvent() throws Exception {
2214 testString("", "document.createEvent('UIEvent')");
2215 }
2216
2217
2218
2219
2220
2221
2222 @Test
2223 @Alerts("Symbol(Symbol.toStringTag) [C] [URL]")
2224 public void url() throws Exception {
2225 testString("", "new URL('http://developer.mozilla.org')");
2226 }
2227
2228
2229
2230
2231
2232
2233 @Test
2234 @Alerts("Symbol(Symbol.toStringTag) [C] [URL]")
2235 public void webkitURL() throws Exception {
2236 testString("", "new webkitURL('http://developer.mozilla.org')");
2237 }
2238
2239
2240
2241
2242
2243
2244 @Test
2245 @Alerts("Symbol(Symbol.toStringTag) [C] [DragEvent]")
2246 public void dragEvent() throws Exception {
2247 testString("", "document.createEvent('DragEvent')");
2248 }
2249
2250
2251
2252
2253
2254
2255 @Test
2256 @Alerts("Symbol(Symbol.toStringTag) [C] [PointerEvent]")
2257 public void pointerEvent() throws Exception {
2258 testString("", "new PointerEvent('click')");
2259 }
2260
2261
2262
2263
2264
2265
2266 @Test
2267 @Alerts("NotSupportedError/DOMException")
2268 public void pointerEvent2() throws Exception {
2269 testString("", " document.createEvent('PointerEvent')");
2270 }
2271
2272
2273
2274
2275
2276
2277 @Test
2278 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [WheelEvent]",
2279 FF = "NotSupportedError/DOMException",
2280 FF_ESR = "NotSupportedError/DOMException")
2281 public void wheelEvent() throws Exception {
2282 testString("", "document.createEvent('WheelEvent')");
2283 }
2284
2285
2286
2287
2288
2289
2290 @Test
2291 @Alerts("Symbol(Symbol.toStringTag) [C] [MouseEvent]")
2292 public void mouseEvent() throws Exception {
2293 testString("", "document.createEvent('MouseEvent')");
2294 }
2295
2296
2297
2298
2299
2300
2301
2302
2303 @Test
2304 @Alerts("Symbol(Symbol.toStringTag) [C] [CompositionEvent]")
2305 public void compositionEvent() throws Exception {
2306 testString("", "document.createEvent('CompositionEvent')");
2307 }
2308
2309
2310
2311
2312
2313
2314 @Test
2315 @Alerts("Symbol(Symbol.toStringTag) [C] [FocusEvent]")
2316 public void focusEvent() throws Exception {
2317 testString("", "document.createEvent('FocusEvent')");
2318 }
2319
2320
2321
2322
2323
2324
2325 @Test
2326 @Alerts("Symbol(Symbol.toStringTag) [C] [InputEvent]")
2327 public void inputEvent() throws Exception {
2328 testString("", "new InputEvent('input')");
2329 }
2330
2331
2332
2333
2334
2335
2336 @Test
2337 @Alerts("NotSupportedError/DOMException")
2338 public void mouseWheelEvent() throws Exception {
2339 testString("", "document.createEvent('MouseWheelEvent')");
2340 }
2341
2342
2343
2344
2345
2346
2347 @Test
2348 @Alerts("NotSupportedError/DOMException")
2349 public void svgZoomEvent() throws Exception {
2350 testString("", "document.createEvent('SVGZoomEvent')");
2351 }
2352
2353
2354
2355
2356
2357
2358 @Test
2359 @Alerts("Symbol(Symbol.toStringTag) [C] [TextEvent]")
2360 public void textEvent() throws Exception {
2361 testString("", "document.createEvent('TextEvent')");
2362 }
2363
2364
2365
2366
2367
2368
2369 @Test
2370 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [TouchEvent]",
2371 FF = "ReferenceError",
2372 FF_ESR = "ReferenceError")
2373 public void touchEvent2() throws Exception {
2374 testString("", "new TouchEvent('touch')");
2375 }
2376
2377
2378
2379
2380
2381
2382 @Test
2383 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLSlotElement]")
2384 public void slot() throws Exception {
2385 test("slot");
2386 }
2387
2388
2389
2390
2391
2392
2393 @Test
2394 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [Document],"
2395 + "Symbol(Symbol.unscopables) [C] [{\"append\":true,\"fullscreen\":true,"
2396 + "\"prepend\":true,\"replaceChildren\":true}]",
2397 FF = "Symbol(Symbol.toStringTag) [C] [Document],"
2398 + "Symbol(Symbol.unscopables) [C] [{\"fullscreen\":true,\"prepend\":true,"
2399 + "\"append\":true,\"replaceChildren\":true}]",
2400 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Document],"
2401 + "Symbol(Symbol.unscopables) [C] [{\"fullscreen\":true,\"prepend\":true,"
2402 + "\"append\":true,\"replaceChildren\":true}]")
2403 @HtmlUnitNYI(CHROME = "TypeError",
2404 EDGE = "TypeError",
2405 FF = "TypeError",
2406 FF_ESR = "TypeError")
2407 public void document() throws Exception {
2408 testString("", "new Document()");
2409 }
2410
2411
2412
2413
2414
2415
2416 @Test
2417 @Alerts("Symbol(Symbol.toStringTag) [C] [HTMLDocument]")
2418 public void htmlDocument() throws Exception {
2419 testString("", "document");
2420 }
2421
2422
2423
2424
2425
2426
2427 @Test
2428 @Alerts("Symbol(Symbol.toStringTag) [C] [XMLDocument]")
2429 public void xmlDocument() throws Exception {
2430 testString("", "xmlDocument");
2431 }
2432
2433
2434
2435
2436 @Test
2437 @Alerts("Symbol(Symbol.toStringTag) [C] [SVGElement]")
2438 public void svgElement() throws Exception {
2439 testString("", "svg");
2440 }
2441
2442
2443
2444
2445 @Test
2446 @Alerts("Symbol(Symbol.toStringTag) [C] [Attr]")
2447 public void nodeAndAttr() throws Exception {
2448 testString("", "document.createAttribute('some_attrib')");
2449 }
2450
2451
2452
2453
2454 @Test
2455 @Alerts("Symbol(Symbol.toStringTag) [C] [Range]")
2456 public void range() throws Exception {
2457 testString("", "document.createRange()");
2458 }
2459
2460
2461
2462
2463 @Test
2464 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [DocumentFragment],"
2465 + "Symbol(Symbol.unscopables) [C] [{\"append\":true,\"prepend\":true,\"replaceChildren\":true}]",
2466 FF = "Symbol(Symbol.toStringTag) [C] [DocumentFragment],"
2467 + "Symbol(Symbol.unscopables) [C] [{\"prepend\":true,\"append\":true,\"replaceChildren\":true}]",
2468 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DocumentFragment],"
2469 + "Symbol(Symbol.unscopables) [C] [{\"prepend\":true,\"append\":true,\"replaceChildren\":true}]")
2470 @HtmlUnitNYI(CHROME = "Symbol(Symbol.toStringTag) [C] [DocumentFragment]",
2471 EDGE = "Symbol(Symbol.toStringTag) [C] [DocumentFragment]",
2472 FF = "Symbol(Symbol.toStringTag) [C] [DocumentFragment]",
2473 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DocumentFragment]")
2474 public void documentFragment() throws Exception {
2475 testString("", "document.createDocumentFragment()");
2476 }
2477
2478
2479
2480
2481 @Test
2482 @Alerts("Symbol(Symbol.toStringTag) [C] [AudioContext]")
2483 public void audioContext() throws Exception {
2484 testString("", "new AudioContext()");
2485 }
2486
2487
2488
2489
2490 @Test
2491 @Alerts("Symbol(Symbol.toStringTag) [C] [OfflineAudioContext]")
2492 public void offlineAudioContext() throws Exception {
2493 testString("", "new OfflineAudioContext({length: 44100 * 1, sampleRate: 44100})");
2494 }
2495
2496
2497
2498
2499 @Test
2500 @Alerts("Symbol(Symbol.toStringTag) [C] [AudioParam]")
2501 public void audioParam() throws Exception {
2502 testString("var audioCtx = new AudioContext(); var gainNode = new GainNode(audioCtx);", "gainNode.gain");
2503 }
2504
2505
2506
2507
2508 @Test
2509 @Alerts("Symbol(Symbol.toStringTag) [C] [GainNode]")
2510 public void gainNode() throws Exception {
2511 testString("var audioCtx = new AudioContext();", "new GainNode(audioCtx)");
2512 }
2513
2514
2515
2516
2517 @Test
2518 @Alerts("Symbol(Symbol.toStringTag) [C] [BeforeUnloadEvent]")
2519 public void beforeUnloadEvent() throws Exception {
2520 testString("", "document.createEvent('BeforeUnloadEvent')");
2521 }
2522
2523
2524
2525
2526 @Test
2527 @Alerts("Symbol(Symbol.toStringTag) [C] [CloseEvent]")
2528 public void closeEvent() throws Exception {
2529 testString("", "new CloseEvent('type-close')");
2530 }
2531
2532
2533
2534
2535 @Test
2536 @Alerts("Symbol(Symbol.toStringTag) [C] [BlobEvent]")
2537 public void blobEvent() throws Exception {
2538 testString("var debug = {hello: 'world'};"
2539 + "var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});",
2540 "new BlobEvent('blob', { 'data': blob })");
2541 }
2542
2543
2544
2545
2546
2547
2548 @Test
2549 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [TouchEvent]",
2550 FF = "ReferenceError",
2551 FF_ESR = "ReferenceError")
2552 public void touchEvent() throws Exception {
2553 testString("", "new TouchEvent('touch')");
2554 }
2555
2556
2557
2558
2559
2560
2561 @Test
2562 @Alerts("Symbol(Symbol.toStringTag) [C] [DeviceMotionEvent]")
2563 public void deviceMotionEvent() throws Exception {
2564 testString("", "new DeviceMotionEvent('motion')");
2565 }
2566
2567
2568
2569
2570
2571
2572 @Test
2573 @Alerts("Symbol(Symbol.toStringTag) [C] [ErrorEvent]")
2574 public void errorEvent() throws Exception {
2575 testString("", "new ErrorEvent('error')");
2576 }
2577
2578
2579
2580
2581
2582
2583 @Test
2584 @Alerts("Symbol(Symbol.toStringTag) [C] [GamepadEvent]")
2585 public void gamepadEvent() throws Exception {
2586 testString("", "new GamepadEvent('gamepad')");
2587 }
2588
2589
2590
2591
2592
2593
2594 @Test
2595 @Alerts(DEFAULT = "NotSupportedError/DOMException",
2596 FF_ESR = "Symbol(Symbol.toStringTag) [C] [MutationEvent]")
2597 public void mutationEvent() throws Exception {
2598 testString("", "document.createEvent('MutationEvent')");
2599 }
2600
2601
2602
2603
2604
2605
2606 @Test
2607 @Alerts("NotSupportedError/DOMException")
2608 public void offlineAudioCompletionEvent() throws Exception {
2609 testString("", "document.createEvent('OfflineAudioCompletionEvent')");
2610 }
2611
2612
2613
2614
2615 @Test
2616 @Alerts("Symbol(Symbol.toStringTag) [C] [PageTransitionEvent]")
2617 public void pageTransitionEvent() throws Exception {
2618 testString("", "new PageTransitionEvent('transition')");
2619 }
2620
2621
2622
2623
2624
2625
2626 @Test
2627 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [SourceBufferList]")
2628 @HtmlUnitNYI(CHROME = "TypeError",
2629 EDGE = "TypeError",
2630 FF = "TypeError",
2631 FF_ESR = "TypeError")
2632 public void sourceBufferList() throws Exception {
2633 testString("var mediaSource = new MediaSource;", "mediaSource.sourceBuffers");
2634 }
2635
2636
2637
2638
2639
2640
2641 @Test
2642 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2643 public void htmlCollection() throws Exception {
2644 testString("", "document.getElementsByTagName('div')");
2645 }
2646
2647
2648
2649
2650
2651
2652 @Test
2653 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2654 public void htmlCollectionDocumentAnchors() throws Exception {
2655 testString("", "document.anchors");
2656 }
2657
2658
2659
2660
2661
2662
2663 @Test
2664 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2665 public void htmlCollectionDocumentApplets() throws Exception {
2666 testString("", "document.applets");
2667 }
2668
2669
2670
2671
2672
2673
2674 @Test
2675 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2676 public void htmlCollectionDocumentEmbeds() throws Exception {
2677 testString("", "document.embeds");
2678 }
2679
2680
2681
2682
2683
2684
2685 @Test
2686 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2687 public void htmlCollectionDocumentForms() throws Exception {
2688 testString("", "document.forms");
2689 }
2690
2691
2692
2693
2694
2695
2696 @Test
2697 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2698 public void htmlCollectionDocumentImages() throws Exception {
2699 testString("", "document.images");
2700 }
2701
2702
2703
2704
2705
2706
2707 @Test
2708 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2709 public void htmlCollectionDocumentLinks() throws Exception {
2710 testString("", "document.links");
2711 }
2712
2713
2714
2715
2716
2717
2718 @Test
2719 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [HTMLCollection]")
2720 public void htmlCollectionDocumentScripts() throws Exception {
2721 testString("", "document.scripts");
2722 }
2723
2724
2725
2726
2727
2728
2729 @Test
2730 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [NodeList]")
2731 public void nodeListElementById() throws Exception {
2732 testString("", "document.getElementById('myLog').childNodes");
2733 }
2734
2735
2736
2737
2738
2739
2740 @Test
2741 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [NodeList]")
2742 public void nodeListElementsByName() throws Exception {
2743 testString("", "document.getElementsByName('myLog')");
2744 }
2745
2746
2747
2748
2749
2750
2751 @Test
2752 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [NodeList]")
2753 public void nodeListButtonLabels() throws Exception {
2754 testString("var button = document.createElement('button');", "button.labels");
2755 }
2756
2757
2758
2759
2760
2761
2762 @Test
2763 @Alerts(DEFAULT = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleDeclaration]",
2764 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleProperties]",
2765 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSS2Properties]")
2766 public void computedStyle() throws Exception {
2767 testString("", "window.getComputedStyle(document.body)");
2768 }
2769
2770
2771
2772
2773
2774
2775 @Test
2776 @Alerts(DEFAULT = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleDeclaration]",
2777 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleProperties]",
2778 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSS2Properties]")
2779 @HtmlUnitNYI(FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleDeclaration]",
2780 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [CSSStyleDeclaration]")
2781 public void cssStyleDeclaration() throws Exception {
2782 testString("", "document.body.style");
2783 }
2784
2785
2786
2787
2788
2789
2790 @Test
2791 @Alerts("Symbol(Symbol.toStringTag) [C] [Location]")
2792 public void location() throws Exception {
2793 testString("", "window.location");
2794 testString("", "document.location");
2795 }
2796
2797
2798
2799
2800
2801
2802 @Test
2803 @Alerts("Symbol(Symbol.toStringTag) [C] [Screen]")
2804 public void screen() throws Exception {
2805 testString("", "window.screen");
2806 }
2807
2808
2809
2810
2811
2812
2813 @Test
2814 @Alerts("Symbol(Symbol.toStringTag) [C] [ScreenOrientation]")
2815 public void screenOrientation() throws Exception {
2816 testString("", "window.screen.orientation");
2817 }
2818
2819
2820
2821
2822
2823
2824 @Test
2825 @Alerts("Symbol(Symbol.toStringTag) [C] [Crypto]")
2826 public void crypto() throws Exception {
2827 testString("", "window.crypto");
2828 }
2829
2830
2831
2832
2833
2834
2835 @Test
2836 @Alerts("Symbol(Symbol.toStringTag) [C] [SubtleCrypto]")
2837 public void cryptoSubtle() throws Exception {
2838 testString("", "window.crypto.subtle");
2839 }
2840
2841
2842
2843
2844
2845
2846 @Test
2847 @Alerts("Symbol(Symbol.toStringTag) [C] [XPathEvaluator]")
2848 public void xPathEvaluator() throws Exception {
2849 testString("", "new XPathEvaluator()");
2850 }
2851
2852
2853
2854
2855
2856
2857 @Test
2858 @Alerts("Symbol(Symbol.toStringTag) [C] [XPathExpression]")
2859 public void xPathExpression() throws Exception {
2860 testString("var res = new XPathEvaluator().createExpression('//span')", "res");
2861 }
2862
2863
2864
2865
2866
2867
2868 @Test
2869 @Alerts("Symbol(Symbol.toStringTag) [C] [XPathResult]")
2870 public void xPathResult() throws Exception {
2871 testString("var res = document.evaluate('/html/body', document, null, XPathResult.ANY_TYPE, null);", "res");
2872 }
2873
2874
2875
2876
2877
2878
2879 @Test
2880 @Alerts("Symbol(Symbol.toStringTag) [C] [CDATASection]")
2881 public void cDATASection() throws Exception {
2882 final String setup = " var doc = document.implementation.createDocument('', '', null);\n"
2883 + "var root = doc.appendChild(doc.createElement('root'));\n"
2884 + "var cdata = root.appendChild(doc.createCDATASection('abcdef'));\n";
2885
2886 testString(setup, "cdata");
2887 }
2888
2889
2890
2891
2892
2893
2894 @Test
2895 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [DocumentType],"
2896 + "Symbol(Symbol.unscopables) [C] "
2897 + "[{\"after\":true,\"before\":true,\"remove\":true,\"replaceWith\":true}]",
2898 FF = "Symbol(Symbol.toStringTag) [C] [DocumentType],"
2899 + "Symbol(Symbol.unscopables) [C] "
2900 + "[{\"before\":true,\"after\":true,\"replaceWith\":true,\"remove\":true}]",
2901 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DocumentType],"
2902 + "Symbol(Symbol.unscopables) [C] "
2903 + "[{\"before\":true,\"after\":true,\"replaceWith\":true,\"remove\":true}]")
2904 @HtmlUnitNYI(CHROME = "Symbol(Symbol.toStringTag) [C] [DocumentType]",
2905 EDGE = "Symbol(Symbol.toStringTag) [C] [DocumentType]",
2906 FF = "Symbol(Symbol.toStringTag) [C] [DocumentType]",
2907 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DocumentType]")
2908 public void documentType() throws Exception {
2909 testString("", "document.firstChild");
2910 }
2911
2912
2913
2914
2915
2916
2917 @Test
2918 @Alerts("Symbol(Symbol.toStringTag) [C] [Blob]")
2919 public void blob() throws Exception {
2920 testString("", "new Blob([1, 2], { type: \"text/html\" })");
2921 }
2922
2923
2924
2925
2926
2927
2928 @Test
2929 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [URLSearchParams]")
2930 public void urlSearchParams() throws Exception {
2931 testString("", "new URLSearchParams('q=URLUtils.searchParams&topic=api')");
2932 }
2933
2934
2935
2936
2937
2938
2939 @Test
2940 @Alerts("Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [NamedNodeMap]")
2941 public void namedNodeMap() throws Exception {
2942 testString("", "element.attributes");
2943 }
2944
2945
2946
2947
2948
2949
2950 @Test
2951 @Alerts("Symbol(Symbol.toStringTag) [C] [MutationObserver]")
2952 public void mutationObserver() throws Exception {
2953 testString("", "new MutationObserver(function(m) {})");
2954 }
2955
2956
2957
2958
2959
2960
2961 @Test
2962 @Alerts(DEFAULT = "Symbol(Symbol.toStringTag) [C] [MutationObserver]",
2963 FF = "ReferenceError",
2964 FF_ESR = "ReferenceError")
2965 public void webKitMutationObserver() throws Exception {
2966 testString("", "new WebKitMutationObserver(function(m) {})");
2967 }
2968
2969
2970
2971
2972
2973
2974 @Test
2975 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSStyleSheet]")
2976 public void cssStyleSheet() throws Exception {
2977 testString("", "document.styleSheets[0]");
2978 }
2979
2980
2981
2982
2983
2984
2985 @Test
2986 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSPageRule]")
2987 public void cssPageRule() throws Exception {
2988 testString("", "document.styleSheets[0].cssRules[0]");
2989 }
2990
2991
2992
2993
2994
2995
2996 @Test
2997 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSMediaRule]")
2998 public void cssMediaRule() throws Exception {
2999 testString("", "document.styleSheets[1].cssRules[0]");
3000 }
3001
3002
3003
3004
3005
3006
3007 @Test
3008 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSFontFaceRule]")
3009 public void cssFontFaceRule() throws Exception {
3010 testString("", "document.styleSheets[2].cssRules[0]");
3011 }
3012
3013
3014
3015
3016
3017
3018 @Test
3019 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSImportRule]")
3020 public void cssImportRule() throws Exception {
3021 testString("", "document.styleSheets[3].cssRules[0]");
3022 }
3023
3024
3025
3026
3027
3028
3029 @Test
3030 @Alerts("Symbol(Symbol.toStringTag) [C] [CSSStyleRule]")
3031 public void cssStyleRule() throws Exception {
3032 testString("", "document.styleSheets[4].cssRules[0]");
3033 }
3034
3035
3036
3037
3038
3039
3040 @Test
3041 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [Geolocation]",
3042 EDGE = "Symbol(Symbol.toStringTag) [C] [Geolocation]",
3043 FF = "Symbol(Symbol.toStringTag) [C] [Geolocation]",
3044 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Geolocation]")
3045 public void geolocation() throws Exception {
3046 testString("", " navigator.geolocation");
3047 }
3048
3049
3050
3051
3052
3053
3054 @Test
3055 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [XMLHttpRequest]",
3056 EDGE = "Symbol(Symbol.toStringTag) [C] [XMLHttpRequest]",
3057 FF = "Symbol(Symbol.toStringTag) [C] [XMLHttpRequest]",
3058 FF_ESR = "Symbol(Symbol.toStringTag) [C] [XMLHttpRequest]")
3059 public void xmlHttpRequest() throws Exception {
3060 testString("", "new XMLHttpRequest()");
3061 }
3062
3063
3064
3065
3066
3067
3068 @Test
3069 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [Request]",
3070 EDGE = "Symbol(Symbol.toStringTag) [C] [Request]",
3071 FF = "Symbol(Symbol.toStringTag) [C] [Request]",
3072 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Request]")
3073 public void request() throws Exception {
3074 testString("", "new Request('https://www.htmlunit.org')");
3075 }
3076
3077
3078
3079
3080
3081
3082 @Test
3083 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [Response]",
3084 EDGE = "Symbol(Symbol.toStringTag) [C] [Response]",
3085 FF = "Symbol(Symbol.toStringTag) [C] [Response]",
3086 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Response]")
3087 public void response() throws Exception {
3088 testString("", "new Response()");
3089 }
3090
3091
3092
3093
3094
3095
3096 @Test
3097 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [RadioNodeList]",
3098 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [RadioNodeList]",
3099 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [RadioNodeList]",
3100 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [RadioNodeList]")
3101 public void radioNodeList() throws Exception {
3102 testString("", "document.myForm.first");
3103 }
3104
3105
3106
3107
3108
3109
3110 @Test
3111 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],"
3112 + "Symbol(Symbol.toStringTag) [C] [HTMLFormControlsCollection]",
3113 EDGE = "Symbol(Symbol.iterator) [WC] [function],"
3114 + "Symbol(Symbol.toStringTag) [C] [HTMLFormControlsCollection]",
3115 FF = "Symbol(Symbol.iterator) [WC] [function],"
3116 + "Symbol(Symbol.toStringTag) [C] [HTMLFormControlsCollection]",
3117 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],"
3118 + "Symbol(Symbol.toStringTag) [C] [HTMLFormControlsCollection]")
3119 public void htmlFormControlsCollection() throws Exception {
3120 testString("", "document.myForm.elements");
3121 }
3122
3123
3124
3125
3126
3127
3128 @Test
3129 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [AbortController]",
3130 EDGE = "Symbol(Symbol.toStringTag) [C] [AbortController]",
3131 FF = "Symbol(Symbol.toStringTag) [C] [AbortController]",
3132 FF_ESR = "Symbol(Symbol.toStringTag) [C] [AbortController]")
3133 public void abortController() throws Exception {
3134 testString("", "new AbortController()");
3135 }
3136
3137
3138
3139
3140
3141
3142 @Test
3143 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [AbortSignal]",
3144 EDGE = "Symbol(Symbol.toStringTag) [C] [AbortSignal]",
3145 FF = "Symbol(Symbol.toStringTag) [C] [AbortSignal]",
3146 FF_ESR = "Symbol(Symbol.toStringTag) [C] [AbortSignal]")
3147 public void abortSignal() throws Exception {
3148 testString("", "new AbortController().signal");
3149 }
3150
3151
3152
3153
3154
3155
3156 @Test
3157 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DOMTokenList]",
3158 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DOMTokenList]",
3159 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DOMTokenList]",
3160 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DOMTokenList]")
3161 public void domTokenList() throws Exception {
3162 testString("", "document.body.classList");
3163 }
3164
3165
3166
3167
3168
3169
3170 @Test
3171 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [DataTransfer]",
3172 EDGE = "Symbol(Symbol.toStringTag) [C] [DataTransfer]",
3173 FF = "Symbol(Symbol.toStringTag) [C] [DataTransfer]",
3174 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DataTransfer]")
3175 public void dataTransfer() throws Exception {
3176 testString("", "new DataTransfer()");
3177 }
3178
3179
3180
3181
3182
3183
3184 @Test
3185 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DataTransferItemList]",
3186 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DataTransferItemList]",
3187 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DataTransferItemList]",
3188 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [DataTransferItemList]")
3189 public void dataTransferItemList() throws Exception {
3190 testString("", "new DataTransfer().items");
3191 }
3192
3193
3194
3195
3196
3197
3198 @Test
3199 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3200 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3201 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3202 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]")
3203 public void fileList() throws Exception {
3204 testString("", "new DataTransfer().files");
3205 }
3206
3207
3208
3209
3210
3211
3212 @Test
3213 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3214 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3215 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]",
3216 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FileList]")
3217 public void fileList2() throws Exception {
3218 testString("", "document.getElementById('fileItem').files");
3219 }
3220
3221
3222
3223
3224
3225
3226 @Test
3227 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [PluginArray]",
3228 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [PluginArray]",
3229 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [PluginArray]",
3230 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [PluginArray]")
3231 public void pluginArray() throws Exception {
3232 testString("", "navigator.plugins");
3233 }
3234
3235
3236
3237
3238
3239
3240 @Test
3241 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [Plugin]",
3242 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [Plugin]",
3243 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [Plugin]",
3244 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [Plugin]")
3245 public void plugin() throws Exception {
3246 testString("", "navigator.plugins[0]");
3247 }
3248
3249
3250
3251
3252
3253
3254 @Test
3255 @Alerts(CHROME = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [MimeTypeArray]",
3256 EDGE = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [MimeTypeArray]",
3257 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [MimeTypeArray]",
3258 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [MimeTypeArray]")
3259 public void mimeTypeArray() throws Exception {
3260 testString("", "navigator.mimeTypes");
3261 }
3262
3263
3264
3265
3266
3267
3268 @Test
3269 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [MimeType]",
3270 EDGE = "Symbol(Symbol.toStringTag) [C] [MimeType]",
3271 FF = "Symbol(Symbol.toStringTag) [C] [MimeType]",
3272 FF_ESR = "Symbol(Symbol.toStringTag) [C] [MimeType]")
3273 public void mimeType() throws Exception {
3274 testString("", "navigator.mimeTypes[0]");
3275 }
3276
3277
3278
3279
3280
3281
3282 @Test
3283 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [Navigator]",
3284 EDGE = "Symbol(Symbol.toStringTag) [C] [Navigator]",
3285 FF = "Symbol(Symbol.toStringTag) [C] [Navigator]",
3286 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Navigator]")
3287 public void navigator() throws Exception {
3288 testString("", "navigator");
3289 }
3290
3291
3292
3293
3294
3295
3296 @Test
3297 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [DOMException]",
3298 EDGE = "Symbol(Symbol.toStringTag) [C] [DOMException]",
3299 FF = "Symbol(Symbol.toStringTag) [C] [DOMException]",
3300 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DOMException]")
3301 public void domException() throws Exception {
3302 testString("", "new DOMException('message', 'name')");
3303 }
3304
3305
3306
3307
3308
3309
3310 @Test
3311 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [FontFaceSet]",
3312 EDGE = "Symbol(Symbol.toStringTag) [C] [FontFaceSet]",
3313 FF = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FontFaceSet]",
3314 FF_ESR = "Symbol(Symbol.iterator) [WC] [function],Symbol(Symbol.toStringTag) [C] [FontFaceSet]")
3315 @HtmlUnitNYI(FF = "Symbol(Symbol.toStringTag) [C] [FontFaceSet]",
3316 FF_ESR = "Symbol(Symbol.toStringTag) [C] [FontFaceSet]")
3317 public void fontFaceSet() throws Exception {
3318 testString("", "document.fonts");
3319 }
3320
3321
3322
3323
3324
3325
3326 @Test
3327 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [External]",
3328 EDGE = "Symbol(Symbol.toStringTag) [C] [External]",
3329 FF = "-",
3330 FF_ESR = "-")
3331 @HtmlUnitNYI(FF = "Symbol(Symbol.toStringTag) [C] [External]",
3332 FF_ESR = "Symbol(Symbol.toStringTag) [C] [External]")
3333 public void external() throws Exception {
3334 testString("", "window.external");
3335 }
3336
3337
3338
3339
3340
3341
3342 @Test
3343 @Alerts(CHROME = "-",
3344 EDGE = "-",
3345 FF = "TypeError",
3346 FF_ESR = "TypeError")
3347 @HtmlUnitNYI(CHROME = "Symbol(Symbol.toStringTag) [C] [StyleMedia]",
3348 EDGE = "Symbol(Symbol.toStringTag) [C] [StyleMedia]")
3349 public void styleMedia() throws Exception {
3350 testString("", "window.styleMedia");
3351 }
3352
3353
3354
3355
3356
3357
3358 @Test
3359 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [DOMMatrixReadOnly]",
3360 EDGE = "Symbol(Symbol.toStringTag) [C] [DOMMatrixReadOnly]",
3361 FF = "Symbol(Symbol.toStringTag) [C] [DOMMatrixReadOnly]",
3362 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DOMMatrixReadOnly]")
3363 public void domMatrixReadOnly() throws Exception {
3364 testString("", "new DOMMatrixReadOnly()");
3365 }
3366
3367
3368
3369
3370
3371
3372 @Test
3373 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [DOMMatrix]",
3374 EDGE = "Symbol(Symbol.toStringTag) [C] [DOMMatrix]",
3375 FF = "Symbol(Symbol.toStringTag) [C] [DOMMatrix]",
3376 FF_ESR = "Symbol(Symbol.toStringTag) [C] [DOMMatrix]")
3377 public void domMatrix() throws Exception {
3378 testString("", "new DOMMatrix()");
3379 }
3380
3381
3382
3383
3384
3385
3386 @Test
3387 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [Notification]",
3388 EDGE = "Symbol(Symbol.toStringTag) [C] [Notification]",
3389 FF = "Symbol(Symbol.toStringTag) [C] [Notification]",
3390 FF_ESR = "Symbol(Symbol.toStringTag) [C] [Notification]")
3391 public void notification() throws Exception {
3392 testString("", "new Notification('not')");
3393 }
3394
3395
3396
3397
3398
3399
3400 @Test
3401 @Alerts(CHROME = "Symbol(Symbol.toStringTag) [C] [console]",
3402 EDGE = "Symbol(Symbol.toStringTag) [C] [console]",
3403 FF = "Symbol(Symbol.toStringTag) [C] [console]",
3404 FF_ESR = "Symbol(Symbol.toStringTag) [C] [console]")
3405 @HtmlUnitNYI(CHROME = "-", EDGE = "-", FF = "-", FF_ESR = "-")
3406 public void console() throws Exception {
3407 testInstanceString("", "console");
3408 }
3409 }