test_compatmode.html (3008B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 5 <title>Mochitest for DOCTYPE parsing</title> 6 7 <script src="/tests/SimpleTest/SimpleTest.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 9 </head> 10 <body> 11 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=363883">Mozilla Bug 363883</a> 12 13 <p id="display"></p> 14 <div id="content" style="display: none"> 15 16 </div> 17 18 <pre id="test"> 19 <script class="testbody" type="text/javascript"> 20 21 var doctypes = [ 22 /* from bug 363883 */ 23 "BackCompat", "<!DOCTYPE>", 24 "BackCompat", "<!DOCTYPEz>", 25 "BackCompat", "<! DOCTYPE>", 26 "BackCompat", "<!zDOCTYPE>", 27 "CSS1Compat", "<!DOCTYPEHTML>", 28 "BackCompat", "<!DOCTYPEz HTML>", 29 "CSS1Compat", "<!DOCTYPE HTML>", 30 "BackCompat", "<!zDOCTYPE HTML>", 31 "BackCompat", "<!DOCTYPE HTMLz>", 32 "BackCompat", "<!DOCTYPE zHTML>", 33 "BackCompat", "<!DOCTYPE XHTML>", 34 "BackCompat", "<!DOCTYPE zzHTML>", 35 "BackCompat", "<!DOCTYPEzHTML>", 36 "BackCompat", "<!DOCTYPEzzHTML>", 37 "BackCompat", '<!DOCTYPE "bla">', 38 "BackCompat", '<!DOCTYPE HTML "bla">', 39 "BackCompat", '<!DOCTYPE HTML "html">', 40 "BackCompat", "<!DOCTYPE PUBLIC>", 41 "BackCompat", '<!DOCTYPE PUBLIC "bla">', 42 "BackCompat", '<!DOCTYPE PUBLIC "html">', 43 "CSS1Compat", '<!DOCTYPE HTML PUBLIC "bla">', 44 "BackCompat", '<!DOCTYPE HTML PUBLIC "html">', 45 "BackCompat", '<!DOCTYPEz HTML PUBLIC "html">', 46 "BackCompat", '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//en">', 47 "BackCompat", '<!DOCTYPEz HTML PUBLIC "-//IETF//DTD HTML 3.2//en">', 48 "BackCompat", '<!DOCTYPE HTMLz PUBLIC "DTD HTML 3.2">', 49 "BackCompat", '<!DOCTYPE "DTD HTML 3.2">', 50 /* end from bug 363883 */ 51 // from bug 502600 52 "BackCompat", '<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">', 53 ]; 54 55 window.addEventListener("message", verifyResult); 56 57 function verifyResult(event) { 58 let i = event.data.index; 59 let curFrame = document.getElementById("test" + i); 60 let mode = SpecialPowers.wrap(curFrame).contentDocument.compatMode; 61 is(mode, doctypes[i], doctypes[i + 1]); 62 if (i == doctypes.length - 2) { 63 window.removeEventListener("message", verifyResult); 64 SimpleTest.finish(); 65 } 66 } 67 68 // // 69 // Insert a hidden iframe into the document, with the src 70 // containing the test doctype. The iframe's onload 71 // function is set to call the test's verification step. 72 // 73 function insert_iframe(index, doctype) { 74 var elm = document.createElement("iframe"); 75 elm.setAttribute("id", "test" + index); 76 elm.setAttribute("src", "data:text/html," + doctype + 77 '<html><body onload="parent.postMessage({index:' + index + '},\'*\');"></body>'); 78 elm.setAttribute("style", "display:none"); 79 document.getElementsByTagName("body")[0].appendChild(elm); 80 } 81 82 // // 83 // Iterate over the tests 84 // 85 function doTest() { 86 for (var i = 0; i < doctypes.length; i += 2) { 87 insert_iframe(i, doctypes[i + 1]); 88 } 89 } 90 91 // // 92 // Run the compatbility mode tests. 93 // 94 SimpleTest.waitForExplicitFinish(); 95 doTest(); 96 97 </script> 98 </pre> 99 </body> 100 </html>