mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-07-07 10:29:03 +00:00
118 lines
3.6 KiB
HTML
118 lines
3.6 KiB
HTML
<!doctype html>
|
|
<title>Selectors: syntax of case-sensitivity attribute selector</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<style></style>
|
|
<div id=log></div>
|
|
<div id=test foo="BAR"></div>
|
|
<iframe id="quirks" src="resources/syntax-quirks.html"></iframe>
|
|
<iframe id="xml" src="resources/syntax-xml.xhtml"></iframe>
|
|
<script>
|
|
setup({explicit_done:true});
|
|
var valid = [
|
|
"[foo='BAR'] /* sanity check (valid) */",
|
|
"[foo='bar' i]",
|
|
"[foo=bar i]",
|
|
'[foo="bar" i]',
|
|
"[foo='bar'i]",
|
|
"[foo='bar'i ]",
|
|
"[foo='bar' i ]",
|
|
"[foo='bar' /**/ i]",
|
|
"[foo='bar' i /**/ ]",
|
|
"[foo='bar'/**/i/**/]",
|
|
"[foo=bar/**/i]",
|
|
"[foo='bar'\ti\t] /* \\t */",
|
|
"[foo='bar'\ni\n] /* \\n */",
|
|
"[foo='bar'\ri\r] /* \\r */",
|
|
"[foo='bar' \\i]",
|
|
"[foo='bar' \\69]",
|
|
"[foo~='bar' i]",
|
|
"[foo^='bar' i]",
|
|
"[foo$='bar' i]",
|
|
"[|foo='bar' i]",
|
|
"[*|foo='bar' i]",
|
|
];
|
|
var invalid = [
|
|
"[foo[ /* sanity check (invalid) */",
|
|
"[foo='bar' i i]",
|
|
"[foo='bar' I]",
|
|
"[foo i ='bar']",
|
|
"[foo= i 'bar']",
|
|
"[i foo='bar']",
|
|
"[foo='bar' i\u0000] /* \\0 */",
|
|
"[foo='bar' \u0130]",
|
|
"[foo='bar' \u0131]",
|
|
"[foo='bar' ii]",
|
|
"[foo='bar' ij]",
|
|
"[foo='bar' j]",
|
|
"[foo='bar' \\\\i]",
|
|
"[foo='bar' \\\\69]",
|
|
"[foo='bar' i()]",
|
|
"[foo='bar' i ()]",
|
|
"[foo='bar' () i]",
|
|
"[foo='bar' (i)]",
|
|
"[foo='bar' i []]",
|
|
"[foo='bar' [] i]",
|
|
"[foo='bar' [i]]",
|
|
"[foo='bar' i {}]",
|
|
"[foo='bar' {} i]",
|
|
"[foo='bar' {i}]",
|
|
"[foo='bar' 1i]",
|
|
"[foo='bar' 1]",
|
|
"[foo='bar' 'i']",
|
|
"[foo='bar' url(i)]",
|
|
"[foo='bar' ,i]",
|
|
"[foo='bar' i,]",
|
|
"[foo='bar']i",
|
|
"[foo='bar' |i]",
|
|
"[foo='bar' \\|i]",
|
|
"[foo='bar' *|i]",
|
|
"[foo='bar' \\*|i]",
|
|
"[foo='bar' *]",
|
|
"[foo='bar' \\*]",
|
|
"[foo i]",
|
|
"[foo/**/i]",
|
|
];
|
|
var mode = "standards mode";
|
|
onload = function() {
|
|
var quirks = document.getElementById('quirks').contentWindow;
|
|
var xml = document.getElementById('xml').contentWindow;
|
|
[window, quirks, xml].forEach(function(global) {
|
|
var style = global.document.getElementsByTagName('style')[0];
|
|
var elm = global.document.getElementById('test');
|
|
function clean_slate() {
|
|
style.textContent = '';
|
|
assert_equals(style.sheet.cssRules.length, 0, 'CSSOM was not empty for empty stylesheet');
|
|
assert_equals(global.getComputedStyle(elm).visibility, 'visible', 'computed style for empty stylesheet');
|
|
}
|
|
valid.forEach(function(s) {
|
|
test(function() {
|
|
clean_slate();
|
|
style.textContent = s + ' { visibility:hidden }';
|
|
assert_equals(style.sheet.cssRules.length, 1, 'valid rule didn\'t parse into CSSOM');
|
|
assert_equals(global.getComputedStyle(elm).visibility, 'hidden', 'valid selector didn\'t match');
|
|
}, s + ' in ' + global.mode);
|
|
test(function() {
|
|
assert_equals(global.document.querySelector(s), elm, 'valid selector');
|
|
}, s + ' with querySelector in ' + global.mode);
|
|
});
|
|
invalid.forEach(function(s) {
|
|
test(function() {
|
|
clean_slate();
|
|
style.textContent = s + ' { visibility:hidden }';
|
|
assert_equals(style.sheet.cssRules.length, 0, 'invalid rule parsed into CSSOM');
|
|
assert_equals(global.getComputedStyle(elm).visibility, 'visible', 'invalid selector matched');
|
|
}, s + ' in ' + global.mode);
|
|
test(function() {
|
|
// Should be TypeError but this is not widely implemented yet
|
|
// and this isn't intended to be a querySelector API conformance test.
|
|
assert_throws(null, function() {
|
|
global.document.querySelector(s);
|
|
}, 'invalid selector');
|
|
}, s + ' with querySelector in ' + global.mode);
|
|
});
|
|
});
|
|
done();
|
|
};
|
|
</script>
|