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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/wpt/custom-elements/resources/custom-elements-helpers.js

Issue 2408083002: Revert of Import wpt@357b83b809e3cbc7a1805e7c3ca108a7980d782f (Closed)
Patch Set: Created 4 years, 2 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
1 function create_window_in_test(t, srcdoc) { 1 function create_window_in_test(t, srcdoc) {
2 let p = new Promise((resolve) => { 2 let p = new Promise((resolve) => {
3 let f = document.createElement('iframe'); 3 let f = document.createElement('iframe');
4 f.srcdoc = srcdoc ? srcdoc : ''; 4 f.srcdoc = srcdoc ? srcdoc : '';
5 f.onload = (event) => { 5 f.onload = (event) => {
6 let w = f.contentWindow; 6 let w = f.contentWindow;
7 t.add_cleanup(() => f.parentNode && f.remove()); 7 t.add_cleanup(() => f.parentNode && f.remove());
8 resolve(w); 8 resolve(w);
9 }; 9 };
10 document.body.appendChild(f); 10 document.body.appendChild(f);
11 }); 11 });
12 return p; 12 return p;
13 } 13 }
14 14
15 function test_with_window(f, name, srcdoc) { 15 function test_with_window(f, name, srcdoc) {
16 promise_test((t) => { 16 promise_test((t) => {
17 return create_window_in_test(t, srcdoc) 17 return create_window_in_test(t, srcdoc)
18 .then((w) => { 18 .then((w) => {
19 f(w); 19 f(w);
20 }); 20 });
21 }, name); 21 }, name);
22 } 22 }
23
24 function create_attribute_changed_callback_log(element, name, oldValue, newValue , namespace) {
25 return {
26 type: 'attributeChanged',
27 element: element,
28 name: name,
29 namespace: namespace,
30 oldValue: oldValue,
31 newValue: newValue,
32 actualValue: element.getAttributeNS(namespace, name)
33 };
34 }
35
36 function assert_attribute_log_entry(log, expected) {
37 assert_equals(log.type, 'attributeChanged');
38 assert_equals(log.name, expected.name);
39 assert_equals(log.oldValue, expected.oldValue);
40 assert_equals(log.newValue, expected.newValue);
41 assert_equals(log.actualValue, expected.newValue);
42 assert_equals(log.namespace, expected.namespace);
43 }
44
45
46 function define_new_custom_element(observedAttributes) {
47 let log = [];
48 let name = 'custom-element-' + define_new_custom_element._element_number++;
49
50 class CustomElement extends HTMLElement {
51 constructor() {
52 super();
53 log.push({type: 'constructed', element: this});
54 }
55 attributeChangedCallback(...args) {
56 log.push(create_attribute_changed_callback_log(this, ...args));
57 }
58 connectedCallback() { log.push({type: 'connected', element: this}); }
59 disconnectedCallback() { log.push({type: 'disconnected', element: this}) ; }
60 adoptedCallback(oldDocument, newDocument) { log.push({type: 'adopted', e lement: this, oldDocument: oldDocument, newDocument: newDocument}); }
61 }
62 CustomElement.observedAttributes = observedAttributes;
63
64 customElements.define(name, CustomElement);
65
66 return {
67 name: name,
68 takeLog: function () {
69 let currentLog = log; log = [];
70 currentLog.types = () => currentLog.map((entry) => entry.type);
71 currentLog.last = () => currentLog[currentLog.length - 1];
72 return currentLog;
73 }
74 };
75 }
76 define_new_custom_element._element_number = 1;
77
78 function document_types() {
79 return [
80 {
81 name: 'the document',
82 create: function () { return Promise.resolve(document); },
83 isOwner: true,
84 hasBrowsingContext: true,
85 },
86 {
87 name: 'the document of the template elements',
88 create: function () {
89 return new Promise(function (resolve) {
90 var template = document.createElementNS('http://www.w3.org/1 999/xhtml', 'template');
91 var doc = template.content.ownerDocument;
92 if (!doc.documentElement)
93 doc.appendChild(doc.createElement('html'));
94 resolve(doc);
95 });
96 },
97 hasBrowsingContext: false,
98 },
99 {
100 name: 'a new document',
101 create: function () {
102 return new Promise(function (resolve) {
103 var doc = new Document();
104 doc.appendChild(doc.createElement('html'));
105 resolve(doc);
106 });
107 },
108 hasBrowsingContext: false,
109 },
110 {
111 name: 'a cloned document',
112 create: function () {
113 return new Promise(function (resolve) {
114 var doc = document.cloneNode(false);
115 doc.appendChild(doc.createElement('html'));
116 resolve(doc);
117 });
118 },
119 hasBrowsingContext: false,
120 },
121 {
122 name: 'a document created by createHTMLDocument',
123 create: function () {
124 return Promise.resolve(document.implementation.createHTMLDocumen t());
125 },
126 hasBrowsingContext: false,
127 },
128 {
129 name: 'an HTML document created by createDocument',
130 create: function () {
131 return Promise.resolve(document.implementation.createDocument('h ttp://www.w3.org/1999/xhtml', 'html', null));
132 },
133 hasBrowsingContext: false,
134 },
135 {
136 name: 'the document of an iframe',
137 create: function () {
138 return new Promise(function (resolve, reject) {
139 var iframe = document.createElement('iframe');
140 iframe.onload = function () { resolve(iframe.contentDocument ); }
141 iframe.onerror = function () { reject('Failed to load an emp ty iframe'); }
142 document.body.appendChild(iframe);
143 });
144 },
145 hasBrowsingContext: true,
146 },
147 {
148 name: 'an HTML document fetched by XHR',
149 create: function () {
150 return new Promise(function (resolve, reject) {
151 var xhr = new XMLHttpRequest();
152 xhr.open('GET', 'resources/empty-html-document.html');
153 xhr.overrideMimeType('text/xml');
154 xhr.onload = function () { resolve(xhr.responseXML); }
155 xhr.onerror = function () { reject('Failed to fetch the docu ment'); }
156 xhr.send();
157 });
158 },
159 hasBrowsingContext: false,
160 }
161 ];
162 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698