blob: 7102926d6ac92653476ed42ad195cc78891657d3 [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @description Test for Bug 34529 - [CSSOM] issues with cssText and selectorText
*/
import "dart:html";
import "../../testcommon.dart";
import "../../../Utils/async_utils.dart";
import "pwd.dart";
main() {
var style = new Element.html(r'''
<style type="text/css">
/* Control characters */
.\01_class {
color:green;
}
.\1f_class {
color:green;
}
.\30_class {
color:green;
}
.\39_class {
color:green;
}
/* Characters following '-' */
.-\30_class {
color:green;
}
.-\39_class {
color:green;
}
.-\2d_class {
color:green;
}
/* non-ASCII characters */
.\81_class {
color:green;
}
/* unicode characters */
.日本語_class {
color:green;
}
/* unicode supplementary characters (surrogate pairs) */
.𐐀_class {
color:green;
}
/* plain characters */
.azAZ09_-_class {
color:green;
}
.\(\/\:\@\[\~_class {
color:green;
}
/* ID */
#a\.external\:visited {
color:green;
}
/* String */
li[myattr="my\"value\\"] {
color:green;
}
li {
color:red;
}
</style>
''', treeSanitizer: new NullTreeSanitizer());
document.head.append(style);
document.body.setInnerHtml(r'''
<p id="description"></p>
List items must be green. Otherwise some selectors are invalid.
<ul>
<li class="&#001;_class">class="&amp;#001;_class"</li>
<li class="&#031;_class">class="&amp;#031;_class"</li>
<li class="0_class">class="0_class"</li>
<li class="9_class">class="9_class"</li>
<li class="-0_class">class="-0_class"</li>
<li class="-9_class">class="-9_class"</li>
<li class="--_class">class="--_class"</li>
<li class="&#129;_class">class="&amp;#129;_class"</li>
<li class="日本語_class">class="日本語_class"</li>
<li class="&#66560;_class">class="&#66560;_class"</li>
<li class="azAZ09_-_class">class="azAZ09_-_class"</li>
<li class="(/:@[~_class">class="(/:@[~_class"</li>
<li id="a.external:visited">id="a.external:visited"</li>
<li myattr="my&#034;value&#092;">myattr="my&#034;value&#092;"</li>
</ul>
<div id="console"></div>
''', treeSanitizer: new NullTreeSanitizer());
var expectedTexts = [
".\\1 _class",
".\\1f _class",
".\\30 _class",
".\\39 _class",
".-\\30 _class",
".-\\39 _class",
".-\\-_class",
".\x81_class",
".日本語_class",
".𐐀_class",
".azAZ09_-_class",
".\\(\\/\\:\\@\\[\\~_class",
"#a\\.external\\:visited",
'li[myattr="my\\"value\\\\"]'
];
var rules = style.sheet.cssRules;
for (var i = 0; i < expectedTexts.length; i++) {
debug('test #$i');
shouldBe(rules[i].selectorText, expectedTexts[i]);
shouldBe(rules[i].cssText, expectedTexts[i] + ' { color: green; }');
}
}