| /* | |
| * Copyright 2016 Jacek Caban for CodeWeavers | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| var compat_version; | |
| function test_elem_props() { | |
| var elem = document.documentElement; | |
| function test_exposed(prop, expect) { | |
| if(expect) | |
| ok(prop in elem, prop + " not found in element."); | |
| else | |
| ok(!(prop in elem), prop + " found in element."); | |
| } | |
| var v = document.documentMode; | |
| test_exposed("doScroll", v < 11); | |
| test_exposed("querySelectorAll", v >= 8); | |
| test_exposed("textContent", v >= 9); | |
| test_exposed("prefix", v >= 9); | |
| test_exposed("firstElementChild", v >= 9); | |
| test_exposed("onsubmit", v >= 9); | |
| test_exposed("getElementsByClassName", v >= 9); | |
| test_exposed("removeAttributeNS", v >= 9); | |
| next_test(); | |
| } | |
| function test_doc_props() { | |
| function test_exposed(prop, expect) { | |
| if(expect) | |
| ok(prop in document, prop + " not found in document."); | |
| else | |
| ok(!(prop in document), prop + " found in document."); | |
| } | |
| var v = document.documentMode; | |
| test_exposed("textContent", v >= 9); | |
| test_exposed("prefix", v >= 9); | |
| test_exposed("defaultView", v >= 9); | |
| test_exposed("head", v >= 9); | |
| test_exposed("parentWindow", true); | |
| if(v >= 9) ok(document.defaultView === document.parentWindow, "defaultView != parentWindow"); | |
| next_test(); | |
| } | |
| function test_elem_by_id() { | |
| document.body.innerHTML = '<form id="testid" name="testname"></form>'; | |
| var id_elem = document.getElementById("testid"); | |
| ok(id_elem.tagName === "FORM", "id_elem.tagName = " + id_elem.tagName); | |
| var name_elem = document.getElementById("testname"); | |
| if(document.documentMode < 8) | |
| ok(id_elem === name_elem, "id_elem != id_elem"); | |
| else | |
| ok(name_elem === null, "name_elem != null"); | |
| next_test(); | |
| } | |
| function test_doc_mode() { | |
| compat_version = parseInt(document.location.search.substring(1)); | |
| trace("Testing compatibility mode " + compat_version); | |
| if(compat_version > 6 && compat_version > document.documentMode) { | |
| win_skip("Document mode not supported (expected " + compat_version + " got " + document.documentMode + ")"); | |
| reportSuccess(); | |
| return; | |
| } | |
| ok(Math.max(compat_version, 5) === document.documentMode, "documentMode = " + document.documentMode); | |
| if(document.documentMode > 5) | |
| ok(document.compatMode === "CSS1Compat", "document.compatMode = " + document.compatMode); | |
| else | |
| ok(document.compatMode === "BackCompat", "document.compatMode = " + document.compatMode); | |
| next_test(); | |
| } | |
| function test_iframe_doc_mode() { | |
| var iframe = document.createElement("iframe"); | |
| iframe.onload = function() { | |
| var iframe_mode = iframe.contentWindow.document.documentMode; | |
| if(document.documentMode < 9) | |
| ok(iframe_mode === 5, "iframe_mode = " + iframe_mode); | |
| else | |
| ok(iframe_mode === document.documentMode, "iframe_mode = " + iframe_mode); | |
| next_test(); | |
| } | |
| iframe.src = "about:blank"; | |
| document.body.appendChild(iframe); | |
| } | |
| function test_conditional_comments() { | |
| var div = document.createElement("div"); | |
| document.body.appendChild(div); | |
| function test_version(v) { | |
| var version = compat_version ? compat_version : 7; | |
| /* Uncomment and fix tests below once we support that. */ | |
| if(version >= 9) | |
| return; | |
| div.innerHTML = "<!--[if lte IE " + v + "]>true<![endif]-->"; | |
| ok(div.innerText === (version <= v ? "true" : ""), | |
| "div.innerText = " + div.innerText + " for version (<=) " + v); | |
| div.innerHTML = "<!--[if lt IE " + v + "]>true<![endif]-->"; | |
| ok(div.innerText === (version < v ? "true" : ""), | |
| "div.innerText = " + div.innerText + " for version (<) " + v); | |
| div.innerHTML = "<!--[if gte IE " + v + "]>true<![endif]-->"; | |
| ok(div.innerText === (version >= v ? "true" : ""), | |
| "div.innerText = " + div.innerText + " for version (>=) " + v); | |
| div.innerHTML = "<!--[if gt IE " + v + "]>true<![endif]-->"; | |
| ok(div.innerText === (version > v ? "true" : ""), | |
| "div.innerText = " + div.innerText + " for version (>) " + v); | |
| } | |
| test_version(5); | |
| test_version(6); | |
| test_version(7); | |
| test_version(8); | |
| next_test(); | |
| } | |
| var tests = [ | |
| test_doc_mode, | |
| test_iframe_doc_mode, | |
| test_elem_props, | |
| test_doc_props, | |
| test_elem_by_id, | |
| test_conditional_comments | |
| ]; |