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

Unified Diff: sky/tests/mutation-observer/observe-subtree.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, 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 side-by-side diff with in-line comments
Download patch
Index: sky/tests/mutation-observer/observe-subtree.html
diff --git a/sky/tests/mutation-observer/observe-subtree.html b/sky/tests/mutation-observer/observe-subtree.html
deleted file mode 100644
index bd7994792523a0b22805fbf042d80f6151b7846a..0000000000000000000000000000000000000000
--- a/sky/tests/mutation-observer/observe-subtree.html
+++ /dev/null
@@ -1,264 +0,0 @@
-<!DOCTYPE html>
-<html>
-<link rel="import" href="../resources/chai.html" />
-<link rel="import" href="../resources/mocha.html" />
-<script>
-describe('MutationObserver.observe on a subtree', function() {
- it('should handle basic aspects of subtree observation', function(done) {
- var observer;
- var subDiv;
- var mutations;
-
- function start() {
- var div = document.createElement('div');
- subDiv = div.appendChild(document.createElement('div'));
- subDiv.textContent = 'hello, world';
- observer = new MutationObserver(function(records) {
- mutations = records;
- });
-
- observer.observe(div, {attributes: true, characterData: true, subtree: true});
- subDiv.setAttribute('foo', 'bar');
- subDiv.firstChild.textContent = 'goodbye!';
- setTimeout(finish, 0);
- }
-
- function finish() {
- // ...attribute and characterData changes in subtree
- assert.equal(mutations.length, 2);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "foo");
- assert.equal(mutations[1].type, "characterData");
- assert.equal(mutations[1].target, subDiv.firstChild);
- observer.disconnect();
- done();
- }
-
- start();
- });
-
- it('should handle two observers at different depths', function(done) {
- var observer;
- var observer2;
- var mutations;
- var mutations2;
- var subDiv;
-
- function start() {
- var div = document.createElement('div');
- subDiv = div.appendChild(document.createElement('div'));
- observer = new MutationObserver(function(records) {
- mutations = records;
- });
- observer2 = new MutationObserver(function(records) {
- mutations2 = records;
- });
-
- observer.observe(div, {attributes: true, subtree: true});
- observer2.observe(subDiv, {attributes: true});
- subDiv.setAttribute('foo', 'bar');
- setTimeout(finish, 0);
- }
-
- function finish() {
- assert.equal(mutations.length, 1);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "foo");
- assert.equal(mutations2.length, 1);
- assert.equal(mutations2[0].type, "attributes");
- assert.equal(mutations2[0].target, subDiv);
- assert.equal(mutations2[0].attributeName, "foo");
- observer.disconnect();
- observer2.disconnect();
- done();
- }
-
- start();
- });
-
- it('should handle one observer at two different depths', function(done) {
- var observer;
- var mutations;
- var calls = 0;
- var subDiv;
-
- function start() {
- var div = document.createElement('div');
- subDiv = div.appendChild(document.createElement('div'));
- observer = new MutationObserver(function(records) {
- mutations = records;
- ++calls;
- });
-
- observer.observe(div, {attributes: true, subtree: true});
- observer.observe(subDiv, {attributes: true, subtree: true});
- subDiv.setAttribute('foo', 'bar');
- setTimeout(finish, 0);
- }
-
- function finish() {
- assert.equal(calls, 1);
- assert.equal(mutations.length, 1);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "foo");
- observer.disconnect();
- done();
- }
-
- start();
- });
-
- // FIXME(sky): This test is huge, it should be broken up.
- it('should handle transiently detached nodes are still observed via subtree', function(done) {
- var observer;
- var mutations;
- var div;
- var subDiv;
-
- function start() {
- div = document.createElement('div');
- subDiv = div.appendChild(document.createElement('div'));
- subDiv.textContent = 'hello, world';
- observer = new MutationObserver(function(records) {
- mutations = records;
- });
-
- observer.observe(div, {attributes: true, characterData: true, subtree: true});
- subDiv.setAttribute('foo', 'bar');
- div.removeChild(subDiv);
- subDiv.setAttribute('test', 'test');
- setTimeout(checkDeliveredAndChangeAgain, 0);
- }
-
- function checkDeliveredAndChangeAgain() {
- // ...both changes should be received. Change detached subDiv again.
-
- assert.equal(mutations.length, 2);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "foo");
- assert.equal(mutations[1].type, "attributes");
- assert.equal(mutations[1].target, subDiv);
- assert.equal(mutations[1].attributeName, "test");
-
- mutations = null;
- subDiv.setAttribute('foo', 'baz');
-
- setTimeout(checkNotDeliveredAndReattach, 0);
- }
-
- function checkNotDeliveredAndReattach() {
- // ...transient subtree observation was stopped after delivery, so subDiv change should not be received. Reattach and change again.
-
- assert.equal(mutations, null);
-
- mutations = null
- div.appendChild(subDiv);
- subDiv.setAttribute('foo', 'bat');
-
- setTimeout(checkDeliveredAndReobserve, 0);
- }
-
- function checkDeliveredAndReobserve() {
- //...reattached subtree should now be observable. Try detaching and re-observing.
-
- assert.equal(mutations.length, 1);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "foo");
-
- mutations = null;
- div.removeChild(subDiv);
- subDiv.firstChild.textContent = 'badbye';
- observer.observe(div, {attributes: true, characterData: true, subtree: true});
- subDiv.setAttribute('foo', 'boo');
-
- setTimeout(finish, 0);
- }
-
- function finish() {
- // ...The change made before re-observing should be received, but not the one after.
-
- assert.equal(mutations.length, 1);
- assert.equal(mutations[0].type, "characterData");
- assert.equal(mutations[0].target, subDiv.firstChild);
-
- observer.disconnect();
- done();
- }
-
- start();
- });
-
- it('should have correct behavior of transient observation with complex movement', function(done) {
- var observer;
- var subDiv;
- var mutations;
-
- function start() {
- var div = document.createElement('div');
- subDiv = div.appendChild(document.createElement('div'));
- subDiv2 = subDiv.appendChild(document.createElement('div'));
- subDiv2.textContent = 'hello, world';
- subDiv3 = document.createElement('div');
-
- observer = new MutationObserver(function(records) {
- mutations = records;
- });
-
- observer.observe(div, {attributes: true, characterData: true, subtree: true});
- div.removeChild(subDiv);
- subDiv.removeChild(subDiv2);
- text = subDiv2.removeChild(subDiv2.firstChild);
-
- subDiv.setAttribute('a', 'a');
- subDiv2.setAttribute('b', 'b');
- text.textContent = 'c';
- subDiv3.appendChild(subDiv2);
- subDiv3.setAttribute('d', 'd');
- subDiv2.setAttribute('e', 'e');
- div.appendChild(subDiv3);
- subDiv3.setAttribute('f', 'f');
- subDiv2.setAttribute('g', 'g');
-
- setTimeout(finish, 0);
- }
-
- function finish() {
- // ...All changes should be received except for setting the "d" attribute on subDiv3 before it was reachable from div.
-
- assert.equal(mutations.length, 6);
- assert.equal(mutations[0].type, "attributes");
- assert.equal(mutations[0].target, subDiv);
- assert.equal(mutations[0].attributeName, "a");
-
- assert.equal(mutations[1].type, "attributes");
- assert.equal(mutations[1].target, subDiv2);
- assert.equal(mutations[1].attributeName, "b");
-
- assert.equal(mutations[2].type, "characterData");
- assert.equal(mutations[2].target, text);
-
- assert.equal(mutations[3].type, "attributes");
- assert.equal(mutations[3].target, subDiv2);
- assert.equal(mutations[3].attributeName, "e");
-
- assert.equal(mutations[4].type, "attributes");
- assert.equal(mutations[4].target, subDiv3);
- assert.equal(mutations[4].attributeName, "f");
-
- assert.equal(mutations[5].type, "attributes");
- assert.equal(mutations[5].target, subDiv2);
- assert.equal(mutations[5].attributeName, "g");
-
- observer.disconnect();
- done();
- }
- start();
- });
-});
-</script>
-</html>
« no previous file with comments | « sky/tests/mutation-observer/observe-options-character-data.sky ('k') | sky/tests/mutation-observer/observe-subtree.sky » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698