| // 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]); | 
 |       }); | 
 |     } | 
 |   }); | 
 | } |