| /* |
| * 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 computed style properties |
| */ |
| import "dart:html"; |
| import "../../../testcommon.dart"; |
| |
| main() { |
| var style = new Element.html(''' |
| <style> |
| #test { |
| width: 400px; |
| margin: 10px; |
| } |
| #test > div { |
| margin: 1ex; |
| } |
| #outline { |
| outline: 2px solid red; |
| outline-offset: 5px; |
| } |
| #content:before { |
| content: 'text'; |
| } |
| #content:after { |
| content: 'test ' url(data:image/gif;base64,R0lGODlhAQABAJAAAP8AAAAAACwAAAAAAQABAAACAgQBADs=); |
| } |
| #counter { |
| counter-reset: section; |
| } |
| #counter > div { |
| counter-reset: subsection 0 anothercounter 5; |
| } |
| #counter > h1:before { |
| counter-increment: section; |
| content: counter(section) '. '; |
| } |
| #counter > div > h2:before { |
| counter-increment: subsection; |
| content: counter(section) '.' counter(subsection) '. '; |
| } |
| </style> |
| ''', treeSanitizer: new NullTreeSanitizer()); |
| document.head.append(style); |
| |
| document.body.setInnerHtml(''' |
| <div id="test"> |
| <div id="outline">outline</div> |
| <div id="content">content</div> |
| <div id="counter"> |
| counter |
| <h1 id="counter1">Heading A</h1> |
| <div id="subcounter"> |
| <h2 id="subcounter1">Subheading A</h2> |
| <h2 id="subcounter2">Subheading B</h2> |
| </div> |
| <h1>Heading B</h1> |
| </div> |
| </div> |
| <div id="console"></div> |
| ''', treeSanitizer: new NullTreeSanitizer()); |
| |
| computedStyleFor(id, pseudo, property) |
| { |
| var element = document.getElementById(id); |
| var style = getComputedStyle(element, pseudo); |
| return style.getPropertyValue(property); |
| } |
| |
| shouldBeLikeString(computedStyleFor('outline', null, 'outline-offset'), '5px'); |
| shouldBeLikeString(computedStyleFor('content', 'before', 'content'), 'text'); |
| shouldBeLikeString(computedStyleFor('content', 'after', 'content'), "'test ' url(data:image/gif;base64,R0lGODlhAQABAJAAAP8AAAAAACwAAAAAAQABAAACAgQBADs=)"); |
| shouldBeLikeString(computedStyleFor('counter', null, 'counter-reset'), 'section 0'); |
| var str = computedStyleFor('subcounter', null, 'counter-reset'); |
| shouldBe(str.indexOf('subsection 0') != -1, true); |
| shouldBe(str.indexOf('anothercounter 5') != -1, true); |
| shouldBeLikeString(computedStyleFor('counter1', 'before', 'counter-increment'), 'section 1'); |
| shouldBeLikeString(computedStyleFor('subcounter2', 'before', 'counter-increment'), 'subsection 1'); |
| shouldBeLikeString(computedStyleFor('subcounter2', 'before', 'content'), "counter(section) '.' counter(subsection) '. '"); |
| } |