| /* |
| * 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="_class">class="&#001;_class"</li> |
| <li class="_class">class="&#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="_class">class="&#129;_class"</li> |
| <li class="日本語_class">class="日本語_class"</li> |
| <li class="𐐀_class">class="𐐀_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"value\">myattr="my"value\"</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; }'); |
| } |
| } |