Sweden-Number/dlls/mshtml/tests/documentmode.js

207 lines
6.3 KiB
JavaScript

/*
* 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);
test_exposed("addEventListener", v >= 9);
test_exposed("removeEventListener", v >= 9);
test_exposed("dispatchEvent", 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("addEventListener", v >= 9);
test_exposed("removeEventListener", v >= 9);
test_exposed("dispatchEvent", v >= 9);
test_exposed("createEvent", v >= 9);
test_exposed("parentWindow", true);
if(v >= 9) ok(document.defaultView === document.parentWindow, "defaultView != parentWindow");
next_test();
}
function test_window_props() {
function test_exposed(prop, expect) {
if(expect)
ok(prop in window, prop + " not found in window.");
else
ok(!(prop in window), prop + " found in window.");
}
var v = document.documentMode;
test_exposed("addEventListener", v >= 9);
test_exposed("removeEventListener", v >= 9);
test_exposed("dispatchEvent", v >= 9);
next_test();
}
function test_xhr_props() {
var xhr = new XMLHttpRequest();
function test_exposed(prop, expect) {
if(expect)
ok(prop in xhr, prop + " not found in XMLHttpRequest.");
else
ok(!(prop in xhr), prop + " found in XMLHttpRequest.");
}
var v = document.documentMode;
test_exposed("addEventListener", v >= 9);
test_exposed("removeEventListener", v >= 9);
test_exposed("dispatchEvent", v >= 9);
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_window_props,
test_xhr_props,
test_elem_by_id,
test_conditional_comments
];