| // Copyright (c) 2011, 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. | |
| import 'dart:html'; | |
| import 'package:expect/legacy/minitest.dart'; // ignore: deprecated_member_use_from_same_package | |
| main() { | |
| group('supported', () { | |
| test('supported', () { | |
| expect(ShadowRoot.supported, true); | |
| }); | |
| }); | |
| group('ShadowDOM_tests', () { | |
| var div1, div2, shadowRoot, paragraph1, paragraph2; | |
| init() { | |
| paragraph1 = new ParagraphElement(); | |
| paragraph2 = new ParagraphElement(); | |
| [paragraph1, paragraph2].forEach((p) { | |
| p.classes.add('foo'); | |
| }); | |
| div1 = new DivElement(); | |
| div2 = new DivElement(); | |
| div1.classes.add('foo'); | |
| shadowRoot = div2.createShadowRoot(); | |
| shadowRoot.append(paragraph1); | |
| shadowRoot.append(new ContentElement()); | |
| div2.append(paragraph2); | |
| document.body!.append(div1); | |
| document.body!.append(div2); | |
| } | |
| var expectation = ShadowRoot.supported ? returnsNormally : throws; | |
| test("Shadowed nodes aren't visible to queries from outside ShadowDOM", () { | |
| expect(() { | |
| init(); | |
| expect(querySelectorAll('.foo'), equals([div1, paragraph2])); | |
| }, expectation); | |
| }); | |
| test('Parent node of a shadow root must be null.', () { | |
| expect(() { | |
| init(); | |
| expect(shadowRoot.parent, isNull); | |
| }, expectation); | |
| }); | |
| // TODO(samhop): test that <content> and <content select="foo"> and | |
| // <shadow> | |
| // work properly. This is blocked on having a good way to do browser | |
| // rendering tests. | |
| test('Querying in shadowed fragment respects the shadow boundary.', () { | |
| expect(() { | |
| init(); | |
| expect(shadowRoot.querySelectorAll('.foo'), equals([paragraph1])); | |
| }, expectation); | |
| }); | |
| if (ShadowRoot.supported) { | |
| test('Shadowroot contents are distributed', () { | |
| var div = new DivElement(); | |
| var box1 = new DivElement()..classes.add('foo'); | |
| div.append(box1); | |
| var box2 = new DivElement(); | |
| div.append(box2); | |
| var sRoot = div.createShadowRoot(); | |
| var content1 = new ContentElement()..select = ".foo"; | |
| sRoot.append(content1); | |
| var content2 = new ContentElement(); | |
| sRoot.append(content2); | |
| expect(content1.getDistributedNodes(), [box1]); | |
| expect(content2.getDistributedNodes(), [box2]); | |
| }); | |
| } | |
| }); | |
| } |