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

Side by Side Diff: third_party/WebKit/LayoutTests/shadow-dom/resources/shadow-dom.js

Issue 2036933002: Do not use a non-standard label attribute in shadow-dom.js (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « third_party/WebKit/LayoutTests/shadow-dom/event-path-related-target-scoped.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 function removeWhiteSpaceOnlyTextNodes(node) 1 function removeWhiteSpaceOnlyTextNodes(node)
2 { 2 {
3 for (var i = 0; i < node.childNodes.length; i++) { 3 for (var i = 0; i < node.childNodes.length; i++) {
4 var child = node.childNodes[i]; 4 var child = node.childNodes[i];
5 if (child.nodeType === Node.TEXT_NODE && child.nodeValue.trim().length = = 0) { 5 if (child.nodeType === Node.TEXT_NODE && child.nodeValue.trim().length = = 0) {
6 node.removeChild(child); 6 node.removeChild(child);
7 i--; 7 i--;
8 } else if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === No de.DOCUMENT_FRAGMENT_NODE) { 8 } else if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === No de.DOCUMENT_FRAGMENT_NODE) {
9 removeWhiteSpaceOnlyTextNodes(child); 9 removeWhiteSpaceOnlyTextNodes(child);
10 } 10 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 else if (isShadowHost(node)) 60 else if (isShadowHost(node))
61 node = node.shadowRoot.getElementById(ids[i]); 61 node = node.shadowRoot.getElementById(ids[i]);
62 else 62 else
63 return null; 63 return null;
64 } 64 }
65 return node; 65 return node;
66 } 66 }
67 67
68 function createTestTree(node) { 68 function createTestTree(node) {
69 69
70 let labels = {}; 70 let ids = {};
71 71
72 function attachShadowFromTemplate(template) { 72 function attachShadowFromTemplate(template) {
73 let parent = template.parentNode; 73 let parent = template.parentNode;
74 parent.removeChild(template); 74 parent.removeChild(template);
75 let shadowRoot = parent.attachShadow({mode: template.getAttribute('data-mode ')}); 75 let shadowRoot = parent.attachShadow({mode: template.getAttribute('data-mode ')});
76 let label = template.getAttribute('label'); 76 let id = template.id;
77 if (label) { 77 if (id) {
78 shadowRoot.id = label; 78 shadowRoot.id = id;
79 labels[label] = shadowRoot; 79 ids[id] = shadowRoot;
80 } 80 }
81 shadowRoot.appendChild(document.importNode(template.content, true)); 81 shadowRoot.appendChild(document.importNode(template.content, true));
82 return shadowRoot; 82 return shadowRoot;
83 } 83 }
84 84
85 function walk(root) { 85 function walk(root) {
86 if (root.getAttribute && root.getAttribute('label')) { 86 if (root.id) {
87 labels[root.getAttribute('label')] = root; 87 ids[root.id] = root;
88 } 88 }
89 for (let e of Array.from(root.querySelectorAll('[label]'))) { 89 for (let e of Array.from(root.querySelectorAll('[id]'))) {
90 labels[e.getAttribute('label')] = e; 90 ids[e.id] = e;
91 } 91 }
92 for (let e of Array.from(root.querySelectorAll('template'))) { 92 for (let e of Array.from(root.querySelectorAll('template'))) {
93 walk(attachShadowFromTemplate(e)); 93 walk(attachShadowFromTemplate(e));
94 } 94 }
95 } 95 }
96 96
97 walk(node.cloneNode(true)); 97 walk(node.cloneNode(true));
98 return labels; 98 return ids;
99 } 99 }
100 100
101 function dispatchEventWithLog(nodes, target, event) { 101 function dispatchEventWithLog(nodes, target, event) {
102 102
103 function labelFor(e) { 103 function labelFor(e) {
104 if (e.getAttribute && e.getAttribute('label')) {
105 return e.getAttribute('label');
106 }
107 return e.id || e.tagName; 104 return e.id || e.tagName;
108 } 105 }
109 106
110 let log = []; 107 let log = [];
111 let attachedNodes = []; 108 let attachedNodes = [];
112 for (let label in nodes) { 109 for (let label in nodes) {
113 let startingNode = nodes[label]; 110 let startingNode = nodes[label];
114 for (let node = startingNode; node; node = node.parentNode) { 111 for (let node = startingNode; node; node = node.parentNode) {
115 if (attachedNodes.indexOf(node) >= 0) 112 if (attachedNodes.indexOf(node) >= 0)
116 continue; 113 continue;
117 let label = labelFor(node); 114 let id = node.id;
118 if (!label) 115 if (!id)
119 continue; 116 continue;
120 attachedNodes.push(node); 117 attachedNodes.push(node);
121 node.addEventListener(event.type, (e) => { 118 node.addEventListener(event.type, (e) => {
122 log.push([label, 119 log.push([id,
123 event.relatedTarget ? labelFor(event.relatedTarget) : null, 120 event.relatedTarget ? labelFor(event.relatedTarget) : null,
124 event.composedPath().map((n) => { 121 event.composedPath().map((n) => {
125 return labelFor(n); 122 return labelFor(n);
126 })]); 123 })]);
127 }); 124 });
128 } 125 }
129 } 126 }
130 target.dispatchEvent(event); 127 target.dispatchEvent(event);
131 return log; 128 return log;
132 } 129 }
133 130
134 // This function assumes that testharness.js is available. 131 // This function assumes that testharness.js is available.
135 function assert_event_path_equals(actual, expected) { 132 function assert_event_path_equals(actual, expected) {
136 assert_equals(actual.length, expected.length); 133 assert_equals(actual.length, expected.length);
137 for (let i = 0; i < actual.length; ++i) { 134 for (let i = 0; i < actual.length; ++i) {
138 assert_equals(actual[i][0], expected[i][0], 'currentTarget at ' + i + ' shou ld be same'); 135 assert_equals(actual[i][0], expected[i][0], 'currentTarget at ' + i + ' shou ld be same');
139 assert_equals(actual[i][1], expected[i][1], 'relatedTarget at ' + i + ' shou ld be same'); 136 assert_equals(actual[i][1], expected[i][1], 'relatedTarget at ' + i + ' shou ld be same');
140 assert_array_equals(actual[i][2], expected[i][2], 'composedPath at ' + i + ' should be same'); 137 assert_array_equals(actual[i][2], expected[i][2], 'composedPath at ' + i + ' should be same');
141 } 138 }
142 } 139 }
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/shadow-dom/event-path-related-target-scoped.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698