Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/shadow-dom/ShadowRoot-interface.html

Issue 1993513002: Move the shadow-dom directory from web-platform-tests/ to wpt/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Shadow DOM: ShadowRoot interface</title>
5 <meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
6 <meta name="assert" content="ShadowRoot interface and its attributes must be def ined">
7 <link rel="help" href="https://w3c.github.io/webcomponents/spec/shadow/#the-shad owroot-interface">
8 <script src="../../../resources/testharness.js"></script>
9 <script src="../../../resources/testharnessreport.js"></script>
10 </head>
11 <body>
12 <div id="log"></div>
13 <script>
14
15 test(function () {
16 assert_true('ShadowRoot' in window, '"ShadowRoot" exists on window');
17 }, 'Check the existence of ShadowRoot interface');
18
19 test(function () {
20 assert_equals(ShadowRoot.prototype.__proto__, DocumentFragment.prototype, 'S hadowRoot must inherit from DocumentFragment');
21 }, 'ShadowRoot must inherit from DocumentFragment');
22
23 test(function () {
24 assert_throws({'name': 'TypeError'}, function () { new ShadowRoot(); }, 'new ShadowRoot() must throw a TypeError');
25 }, 'ShadowRoot must not be a constructor');
26
27 function testActiveElement(mode) {
28 test(function () {
29 var host = document.createElement('div');
30 document.body.appendChild(host);
31 var shadowRoot = host.attachShadow({'mode': mode});
32 shadowRoot.appendChild(document.createElement('input'));
33 assert_equals(shadowRoot.activeElement, null, 'ShadowRoot.host must retu rn null if an ' + mode + ' shadow tree does not have a focused element');
34 shadowRoot.firstChild.focus();
35 assert_equals(shadowRoot.activeElement, shadowRoot.firstChild, 'ShadowRo ot.host must return the focused element of an ' + mode + ' shadow tree');
36 host.remove();
37 assert_equals(shadowRoot.activeElement, null, 'ShadowRoot.host must retu rn null if an ' + mode + ' shadow tree lost focus');
38 }, 'ShadowRoot.activeElement must return the focused element of the context object when shadow root is ' + mode + '.');
39 }
40
41 testActiveElement('open');
42 testActiveElement('closed');
43
44 test(function () {
45 var host1 = document.createElement('div');
46 assert_equals(host1.attachShadow({'mode': 'open'}).host, host1, 'ShadowRoot. host must return the shadow host of an open shadow tree')
47
48 var host2 = document.createElement('div');
49 assert_equals(host2.attachShadow({'mode': 'closed'}).host, host2, 'ShadowRoo t.host must return the shadow host of a closed shadow tree');
50 }, 'ShadowRoot.host must return the shadow host of the context object.');
51
52 function testInnerHTML(mode) {
53 test(function () {
54 var host = document.createElement('div');
55 var shadowRoot = host.attachShadow({'mode': mode});
56 assert_equals(shadowRoot.innerHTML, '', 'ShadowRoot.innerHTML must be an empty string when the shadow root does not have any children');
57
58 shadowRoot.appendChild(document.createTextNode('hello'));
59 assert_equals(shadowRoot.innerHTML, 'hello', 'ShadowRoot.innerHTML must serialize a text node child');
60
61 shadowRoot.appendChild(document.createElement('span'));
62 assert_equals(shadowRoot.innerHTML, 'hello<span></span>', 'ShadowRoot.in nerHTML must serialize a HTML element child');
63 }, 'ShadowRoot.innerHTML must return the result of the HTML fragment seriali zation algorithm when shadow root is ' + mode + '.');
64 }
65
66 testInnerHTML('open');
67 testInnerHTML('closed');
68
69 function testSetInnerHTML(mode) {
70 test(function () {
71 var host = document.createElement('div');
72 var shadowRoot = host.attachShadow({'mode': mode});
73 shadowRoot.innerHTML = 'hello';
74 assert_equals(shadowRoot.childNodes.length, 1, 'ShadowRoot.innerHTML = " hello" must insert a single child (text node)');
75 assert_true(shadowRoot.firstChild instanceof Text, 'The first child of t he shadow root after ShadowRoot.innerHTML = "hello" must be a Text node');
76 assert_equals(shadowRoot.firstChild.data, 'hello', 'The first Text node should contain the string "hello" after ShadowRoot.innerHTML = "hello"');
77
78 shadowRoot.innerHTML = '<b>hello</b>';
79 assert_equals(shadowRoot.childNodes.length, 1, 'ShadowRoot.innerHTML = " <b>hello</b>" must insert a single child (b)');
80 assert_true(shadowRoot.firstChild instanceof HTMLElement, 'The first chi ld of the shadow root after ShadowRoot.innerHTML = "<b>hello</b>" must be a HTML element');
81 assert_equals(shadowRoot.firstChild.localName, 'b', 'The local name of t he shadow root\'s first child after ShadowRoot.innerHTML = "<b>hello</b>" must b e "b"');
82 assert_equals(shadowRoot.innerHTML, '<b>hello</b>', 'ShadowRoot.innerHTM L must be "<b>hello</b>" after ShadowRoot.innerHTML = "<b>hello</b>"');
83
84 shadowRoot.innerHTML = '';
85 assert_equals(shadowRoot.childNodes.length, 0, 'ShadowRoot.innerHTML = " " must remove all its children');
86 }, 'ShadowRoot.innerHTML must replace all with the result of invoking the fr agment parsing algorithm when shadow root is ' + mode + '.');
87 }
88
89 testSetInnerHTML('open');
90 testSetInnerHTML('closed');
91
92 function testStyleSheets(mode) {
93 test(function () {
94 var host = document.createElement('div');
95 var shadowRoot = host.attachShadow({'mode': mode});
96
97 assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root does not contain any stylesheets');
98 shadowRoot.innerHTML = '<span></span><style> a.rule {} </style><style> b .rule {} </style>';
99 assert_equals(shadowRoot.styleSheets.length, 2, 'shadowRoot.styleSheets must contain two items when the shadow root has two style elements');
100 var styles = shadowRoot.querySelectorAll('style');
101 assert_equals(shadowRoot.styleSheets[0], styles[0].sheet, 'shadowRoot.st yleSheets[0] must be the first style element in the shadow root');
102 assert_equals(shadowRoot.styleSheets[1], styles[1].sheet, 'shadowRoot.st yleSheets[1] must be the second style element in the shadow root');
103 }, 'ShadowRoot.styleSheets must return a StyleSheetList sequence containing the shadow root style sheets when shadow root is ' + mode + '.');
104 }
105
106 testStyleSheets('open');
107 testStyleSheets('closed');
108
109 </script>
110 </body>
111 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698