summaryrefslogtreecommitdiff
path: root/addons/website/static/lib/MutationObservers/test/callback.js
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2013-08-28 10:49:45 +0200
committerXavier Morel <xmo@openerp.com>2013-08-28 10:49:45 +0200
commita7e58993cd840e1b65bbd02727a4ab09a9fcca71 (patch)
treed64e7acc91aa960031291526a288375b715d266a /addons/website/static/lib/MutationObservers/test/callback.js
parent35c8d2fe950981d1784fca7847036bd663b39f6c (diff)
[ADD] oe_dirty handling via mutation observers
shim necessary for browsers supporting old mutation events but not new mutation observers bzr revid: xmo@openerp.com-20130828084945-yfqrs0v9v8iecwjm
Diffstat (limited to 'addons/website/static/lib/MutationObservers/test/callback.js')
-rw-r--r--addons/website/static/lib/MutationObservers/test/callback.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/addons/website/static/lib/MutationObservers/test/callback.js b/addons/website/static/lib/MutationObservers/test/callback.js
new file mode 100644
index 00000000000..b3083c7bec3
--- /dev/null
+++ b/addons/website/static/lib/MutationObservers/test/callback.js
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2012 The Polymer Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file.
+ */
+
+suite('JsMutationObserver callback', function() {
+
+ test('One observer, two attribute changes', function(cont) {
+ var div = document.createElement('div');
+ var observer = new JsMutationObserver(function(records) {
+ assert.strictEqual(records.length, 2);
+
+ expectRecord(records[0], {
+ type: 'attributes',
+ target: div,
+ attributeName: 'a',
+ attributeNamespace: null
+ });
+ expectRecord(records[1], {
+ type: 'attributes',
+ target: div,
+ attributeName: 'a',
+ attributeNamespace: null
+ });
+
+ cont();
+ });
+
+ observer.observe(div, {
+ attributes: true
+ });
+
+ div.setAttribute('a', 'A');
+ div.setAttribute('a', 'B');
+ });
+
+ test('nested changes', function(cont) {
+ var div = document.createElement('div');
+ var i = 0;
+ var observer = new JsMutationObserver(function(records) {
+ assert.strictEqual(records.length, 1);
+
+ if (i === 0) {
+ expectRecord(records[0], {
+ type: 'attributes',
+ target: div,
+ attributeName: 'a',
+ attributeNamespace: null
+ });
+ div.setAttribute('b', 'B');
+ i++;
+ } else {
+ expectRecord(records[0], {
+ type: 'attributes',
+ target: div,
+ attributeName: 'b',
+ attributeNamespace: null
+ });
+
+ cont();
+ }
+ });
+
+ observer.observe(div, {
+ attributes: true
+ });
+
+ div.setAttribute('a', 'A');
+ });
+
+}); \ No newline at end of file