2008-07-26 20:14:49 +04:00
<!DOCTYPE HTML>
< html >
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=156716
-->
<!--
This is test 46 from the Acid3 test, http://acid3.acidtests.org/
extracted from the test framework there and put into Mochitest.
(from irc.mozilla.org, developers)
[2008-05-14 18:07:38] < Hixie > dbaron: I hereby grant all files available from the server http://acid3.acidtests.org/ under the following license: (c) copyright 2008 Ian Hickson. These documents may be used under the terms of any of the following licenses: MPL. GPL. LGPL. BSD.
-->
< head >
< title > Test for Bug 156716< / title >
< script type = "text/javascript" src = "/tests/SimpleTest/SimpleTest.js" > < / script >
< style type = "text/css" >
iframe#selectors { width: 0; height: 0; }
< / style >
< link rel = "stylesheet" type = "text/css" href = "/tests/SimpleTest/test.css" / >
< / head >
< body >
< a target = "_blank" href = "https://bugzilla.mozilla.org/show_bug.cgi?id=156716" > Mozilla Bug 156716< / a >
< div id = "content" style = "display: none" >
< / div >
< pre id = "test" >
< script class = "testbody" type = "text/javascript" >
/** Test for Bug 156716 **/
2011-10-22 10:30:56 +04:00
SimpleTest.waitForExplicitFinish();
2010-04-28 17:21:07 +04:00
function runTest() {
2008-07-26 20:14:49 +04:00
function getTestDocument() {
var iframe = document.getElementById("selectors");
var doc = iframe.contentDocument;
for (var i = doc.documentElement.childNodes.length-1; i >= 0; i -= 1)
doc.documentElement.removeChild(doc.documentElement.childNodes[i]);
doc.documentElement.appendChild(doc.createElement('head'));
doc.documentElement.firstChild.appendChild(doc.createElement('title'));
doc.documentElement.appendChild(doc.createElement('body'));
return doc;
}
// test 46: media queries
var doc = getTestDocument();
var style = doc.createElement('style');
style.setAttribute('type', 'text/css');
style.appendChild(doc.createTextNode('@media all and (min-color: 0) { #a { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media not all and (min-color: 0) { #b { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media only all and (min-color: 0) { #c { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media (bogus) { #d { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and (bogus) { #e { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media not all and (bogus) { #f { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media only all and (bogus) { #g { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media (bogus), all { #h { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all and (bogus), all { #i { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media not all and (bogus), all { #j { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media only all and (bogus), all { #k { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all, (bogus) { #l { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all, all and (bogus) { #m { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all, not all and (bogus) { #n { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all, only all and (bogus) { #o { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all and color { #p { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and min-color: 0 { #q { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all, all and color { #r { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all, all and min-color: 0 { #s { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and min-color: 0, all { #t { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media (max-color: 0) and (max-monochrome: 0) { #u { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media (min-color: 1), (min-monochrome: 1) { #v { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all and (min-color: 0) and (min-monochrome: 0) { #w { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media not all and (min-color: 1), not all and (min-monochrome: 1) { #x { text-transform: uppercase; } }')); // matches
style.appendChild(doc.createTextNode('@media all and (min-height: 1em) and (min-width: 1em) { #y1 { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and (max-height: 1em) and (min-width: 1em) { #y2 { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and (min-height: 1em) and (max-width: 1em) { #y3 { text-transform: uppercase; } }'));
style.appendChild(doc.createTextNode('@media all and (max-height: 1em) and (max-width: 1em) { #y4 { text-transform: uppercase; } }')); // matches
doc.getElementsByTagName('head')[0].appendChild(style);
var names = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y1', 'y2', 'y3', 'y4'];
for (var i in names) {
var p = doc.createElement('p');
p.id = names[i];
doc.body.appendChild(p);
}
var count = 0;
2008-08-14 20:48:09 +04:00
var check = function (c, e) {
2008-07-26 20:14:49 +04:00
count += 1;
var p = doc.getElementById(c);
2008-08-14 20:48:09 +04:00
is(doc.defaultView.getComputedStyle(p, '').textTransform, e ? 'uppercase' : 'none', "case " + c + " failed (index " + count + ")");
2008-07-26 20:14:49 +04:00
}
check('a', true); // 1
check('b', false);
check('c', true);
check('d', false);
check('e', false);
check('f', false); // true in old spec; commented out in real Acid3
check('g', false);
check('h', true);
check('i', true);
check('j', true); // 10
check('k', true);
check('l', true);
check('m', true);
check('n', true);
check('o', true);
check('p', false);
check('q', false);
2008-11-03 00:14:06 +03:00
check('r', true); // false in old spec
check('s', true); // false in old spec
2008-10-12 04:49:42 +04:00
check('t', true); // 20 - false in old spec
2008-07-26 20:14:49 +04:00
check('u', false);
check('v', true);
check('w', true);
check('x', true);
// here the viewport is 0x0
check('y1', false); // 25
check('y2', false);
check('y3', false);
check('y4', true);
document.getElementById("selectors").setAttribute("style", "height: 100px; width: 100px");
// now the viewport is more than 1em by 1em
check('y1', true); // 29
check('y2', false);
check('y3', false);
check('y4', false);
document.getElementById("selectors").removeAttribute("style");
// here the viewport is 0x0 again
2008-08-14 20:48:09 +04:00
check('y1', false); // 33
2008-07-26 20:14:49 +04:00
check('y2', false);
check('y3', false);
2008-08-14 20:48:09 +04:00
check('y4', true);
2011-10-22 10:30:56 +04:00
SimpleTest.finish();
2010-04-28 17:21:07 +04:00
}
2008-07-26 20:14:49 +04:00
< / script >
< / pre >
2011-10-22 10:30:56 +04:00
< p id = "display" >
< iframe src = "empty.html" id = "selectors" onload = "runTest()" > < / iframe >
< / p >
2008-07-26 20:14:49 +04:00
< / body >
< / html >