3 <script src="resources/TestDoctype.js"></script>
5 if (window.layoutTestController)
6 layoutTestController.dumpAsText();
8 test = function(mode, doctype)
10 var doc = document.getElementsByTagName('iframe')[0].contentDocument
12 doc.write(doctype + "\n<html><body></body></html>")
14 testDoctype(doc, mode, doctype);
22 // Test Doctypes that force Standards mode
23 test('Standards', '<!DOCTYPE HTML>');
24 test('Standards', '<!DOCTYPE HTML SYSTEM "http://www.w3.org/TR/REC-html40/strict.dtd">');
25 test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">');
26 test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">');
27 test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">');
28 test('Standards', '<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN">');
29 test('Standards', '<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">');
30 test('Standards', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML i18n//EN">');
31 test('Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">');
33 // Test Doctypes that force Almost-Standards mode
34 test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">');
35 test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN">');
36 test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
37 test('Almost Standards', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">');
39 // Test Doctypes that force Quirks mode
40 test('Quirks', '<!DOCTYPE HTML NOT UNDERSTOOD>');
41 test('Quirks', '<!DOCTYPE HTML [ <!ELEMENT TEST - - (P) > ]>');
42 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">');
43 test('Quirks', '<!DOCTYPE html SYSTEM "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd">');
44 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">');
45 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');
46 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">');
47 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//EN">');
48 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//EN">');
49 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//3.0">');
50 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN//">');
51 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN">');
52 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3 1995-03-24//EN">');
53 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">');
54 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//">');
55 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">');
56 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN">');
57 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN//3.0">');
58 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">');
59 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//EN">');
60 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN//3.0">');
61 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML Strict 3.0//EN//">');
62 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 3//EN">');
63 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 3//EN//3.0">');
64 test('Quirks', '<!DOCTYPE HTML PUBLIC "HTML">');
65 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">');
66 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN//2.0">');
67 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">');
68 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN">');
69 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN//2.0">');
70 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN">');
71 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 1//EN">');
72 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 1//EN//2.0".');
73 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 1//EN".');
74 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 0//EN".');
75 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 0//EN//2.0".');
76 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN".');
77 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict//EN//2.0".');
78 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 2//EN".');
79 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 2//EN//2.0".');
80 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict//EN".');
81 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN".');
82 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 1//EN".');
83 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 1//EN//2.0".');
84 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 1//EN".');
85 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 0//EN".');
86 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Strict Level 0//EN//2.0".');
87 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//WebTechs//DTD Mozilla HTML//EN".');
88 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//WebTechs//DTD Mozilla HTML 2.0//EN".');
89 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD HTML//EN".');
90 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD HTML//EN".');
91 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Netscape Comm. Corp.//DTD Strict HTML//EN".');
92 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML//EN".');
93 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN".');
94 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 Tables//EN".');
95 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN".');
96 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//EN".');
97 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 Tables//EN".');
98 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Sun Microsystems Corp.//DTD HotJava HTML//EN".');
99 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Sun Microsystems Corp.//DTD HotJava Strict HTML//EN".');
100 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.1E//EN".');
101 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML Extended 1.0//EN".');
102 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML Extended Relaxed 1.0//EN".');
103 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//O\'Reilly and Associates//DTD HTML 2.0//EN".');
104 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN".');
105 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Spyglass//DTD HTML 2.0 Extended//EN".');
106 test('Quirks', '<!DOCTYPE HTML PUBLIC "+//Silmaril//DTD HTML Pro v0r11 19970101//EN".');
107 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960712//EN".');
108 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN".');
109 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN".');
110 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN".');
111 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 970421//EN".');
112 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2S Draft//EN".');
113 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN".');
114 test('Quirks', '<!DOCTYPE HTML PUBLIC "-//Metrius//DTD Metrius Presentational//EN".');
116 // Test malformed Doctypes
117 test('Quirks', '<!DOCTYPE>');
118 test('Standards', '<!DOCTYPEhtml>');
119 test('Quirks', '<!DOCTYPEfoo>');
120 test('Standards', '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML Transitional 4.01//EN">');
121 test('Quirks', '<!DOCTYPE html PUBLIC');
122 test('Quirks', '<!DOCTYPE html PUBLIC \'');
123 test('Quirks', '<!DOCTYPE html PUBLIC \'x');
124 test('Standards', '<!DOCTYPE html SYSTEM "-//W3C//DTD HTML Transitional 4.01//EN">');
125 test('Standards', '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML Transitional 4.01//EN" "-//W3C//DTD HTML Transitional 4.01//EN">');
126 test('Quirks', '<!DOCTYPE html PUBLIC \">x');
127 test('Quirks', '<!DOCTYPE html PUBLIC \'>x');
128 test('Quirks', '<!DOCTYPE html PUBLIC "foo" \">x');
129 test('Quirks', '<!DOCTYPE html PUBLIC \'foo\' \'>x');
130 test('Quirks', '<!DOCTYPE html ');
132 // Test Doctypes not at the beginning of the Document
133 test('Quirks', '<html><body></body></html><!DOCTYPE html>');
134 test('Quirks', '<html><body><!DOCTYPE html></body></html>');
135 test('Standards', '<!-- comment --><!DOCTYPE html>');
140 <pre id='console'></pre>
141 <iframe src="resources/subframe.html"></iframe>