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

Side by Side Diff: sky/tests/mutation-observer/observe-characterdata.html

Issue 685623002: Move the tests from .html to .sky (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 <html>
2 <link rel="import" href="../resources/chai.html" />
3 <link rel="import" href="../resources/mocha.html" />
4 <body id="body">
5 <script>
6 document.body = document.getElementById("body");
7
8 describe('MutationObserver on character data', function() {
9 it('should handle basic aspects of characterData observation', function(done ) {
10 var observer;
11 var mutations;
12 var charDataNode;
13
14 function start() {
15 var div = document.createElement('div');
16 div.textContent = 'foo';
17 charDataNode = div.firstChild;
18 observer = new MutationObserver(function(records) {
19 mutations = records;
20 });
21
22 observer.observe(charDataNode, {characterData: true});
23 charDataNode.textContent = 'bar';
24 setTimeout(checkDisconnectAndMutate, 0);
25 }
26
27 function checkDisconnectAndMutate() {
28 // ...can characterData changes be observed at all
29
30 assert.equal(mutations.length, 1);
31 assert.equal(mutations[0].type, "characterData");
32 assert.equal(mutations[0].target, charDataNode);
33
34 mutations = null;
35 observer.disconnect();
36 charDataNode.textContent = 'baz';
37 setTimeout(checkNotDeliveredAndMutateMultiple, 0);
38 }
39
40 function checkNotDeliveredAndMutateMultiple() {
41 // ...observer.disconnect() should prevent further delivery of mutat ions.
42
43 assert.equal(mutations, null);
44 charDataNode = document.createTextNode('');
45 observer.observe(charDataNode, { characterData: true });
46 charDataNode.textContent = 'foo';
47 charDataNode.textContent = 'bar';
48 setTimeout(finish);
49 }
50
51 function finish() {
52 // ...re-observing after disconnect works with the same observer.
53
54 assert.equal(mutations.length, 2);
55 assert.equal(mutations[0].type, "characterData");
56 assert.equal(mutations[0].target, charDataNode);
57 assert.equal(mutations[1].type, "characterData");
58 assert.equal(mutations[1].target, charDataNode);
59 observer.disconnect();
60 done();
61 }
62
63 start();
64 });
65
66 it('should only notify of characterData changes when requested', function(do ne) {
67 var observer;
68 var mutations;
69
70 function start() {
71 var div = document.createElement('div');
72 div.textContent = 'hello';
73 var charDataNode = div.firstChild;
74 observer = new MutationObserver(function(records) {
75 mutations = records;
76 });
77
78 observer.observe(charDataNode, {childList: true, attributes: true});
79 charDataNode = 'goodbye';
80 setTimeout(finish, 0);
81 }
82
83 function finish() {
84 assert.equal(mutations, null);
85 observer.disconnect();
86 done();
87 }
88
89 start();
90 });
91
92 it('should allow multiple observers can be registered to a given node and bo th receive mutations', function(done) {
93 var observer;
94 var observer2;
95 var charDataNode;
96 var mutations;
97 var mutations2;
98
99 function start() {
100 var div = document.createElement('div');
101 div.textContent = 'foo';
102 charDataNode = div.firstChild;
103 observer = new MutationObserver(function(records) {
104 mutations = records;
105 });
106 observer2 = new MutationObserver(function(records) {
107 mutations2 = records;
108 });
109 observer.observe(charDataNode, {characterData: true});
110 observer2.observe(charDataNode, {characterData: true});
111 charDataNode.textContent = 'bar';
112 setTimeout(finish, 0);
113 }
114
115 function finish() {
116 assert.equal(mutations.length, 1);
117 assert.equal(mutations[0].type, "characterData");
118 assert.equal(mutations[0].target, charDataNode);
119 assert.equal(mutations2.length, 1);
120 assert.equal(mutations2[0].type, "characterData");
121 assert.equal(mutations2[0].target, charDataNode);
122 observer.disconnect();
123 observer2.disconnect();
124 done();
125 }
126
127 start();
128 });
129
130 it('should provide oldValue is returned when requested', function(done) {
131 var observer;
132 var mutations;
133 var charDataNode;
134
135 function start() {
136 var div = document.createElement('div');
137 div.textContent = 'foo';
138 charDataNode = div.firstChild;
139 observer = new MutationObserver(function(records) {
140 mutations = records;
141 });
142 observer.observe(charDataNode, {characterData: true, characterDataOl dValue: true});
143 charDataNode.textContent = 'bar';
144 charDataNode.textContent = 'baz';
145 setTimeout(finish, 0);
146 }
147
148 function finish() {
149 assert.equal(mutations.length, 2);
150 assert.equal(mutations[0].type, "characterData");
151 assert.equal(mutations[0].target, charDataNode);
152 assert.equal(mutations[0].oldValue, "foo");
153 assert.equal(mutations[1].type, "characterData");
154 assert.equal(mutations[1].target, charDataNode);
155 assert.equal(mutations[1].oldValue, "bar");
156 observer.disconnect();
157 done();
158 }
159
160 start();
161 });
162
163 it('should allow observing both with and without oldValue', function(done) {
164 var observerWithOldValue;
165 var observer;
166 var mutations;
167 var mutationsWithOldValue;
168
169 function start() {
170 var div = document.createElement('div');
171 div.textContent = 'foo';
172 var charDataNode = div.firstChild;
173 observerWithOldValue = new MutationObserver(function(records) {
174 mutationsWithOldValue = records;
175 });
176 observer = new MutationObserver(function(records) {
177 mutations = records;
178 });
179 observerWithOldValue.observe(charDataNode, {characterData: true, cha racterDataOldValue: true});
180 observer.observe(charDataNode, {characterData: true});
181 charDataNode.textContent = 'bar';
182 setTimeout(finish, 0);
183 }
184
185 function finish() {
186 assert.equal(mutationsWithOldValue.length, 1);
187 assert.equal(mutationsWithOldValue[0].type, "characterData");
188 assert.equal(mutationsWithOldValue[0].oldValue, "foo");
189 assert.equal(mutations.length, 1);
190 assert.equal(mutations[0].type, "characterData");
191 assert.equal(mutations[0].oldValue, null);
192 observerWithOldValue.disconnect();
193 observer.disconnect();
194 done();
195 }
196
197 start();
198 });
199
200 it('should provide oldValue if any observation requests it', function(done) {
201 var observer;
202 var mutations;
203
204 function start() {
205 var div = document.createElement('div');
206 div.textContent = 'foo';
207 var charDataNode = div.firstChild;
208 observer = new MutationObserver(function(records) {
209 mutations = records;
210 });
211 observer.observe(div, {characterData: true, characterDataOldValue: t rue, subtree: true});
212 observer.observe(charDataNode, {characterData: true});
213 charDataNode.textContent = 'bar';
214 setTimeout(finish, 0);
215 }
216
217 function finish() {
218 assert.equal(mutations.length, 1);
219 assert.equal(mutations[0].type, "characterData");
220 assert.equal(mutations[0].oldValue, "foo");
221 observer.disconnect();
222 done();
223 }
224
225 start();
226 });
227 });
228 </script>
229 </html>
OLDNEW
« no previous file with comments | « sky/tests/mutation-observer/observe-attributes.sky ('k') | sky/tests/mutation-observer/observe-characterdata.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698