| <!doctype html> |
| <meta charset=utf-8> |
| <title></title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script> |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| assert_throws_js(TypeError, () => { |
| m.observe(document, {}); |
| }); |
| }, "Should throw if none of childList, attributes, characterData are true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { childList: true }); |
| m.disconnect(); |
| }, "Should not throw if childList is true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { attributes: true }); |
| m.disconnect(); |
| }, "Should not throw if attributes is true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { characterData: true }); |
| m.disconnect(); |
| }, "Should not throw if characterData is true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { attributeOldValue: true }); |
| m.disconnect(); |
| }, "Should not throw if attributeOldValue is true and attributes is omitted"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { characterDataOldValue: true }); |
| m.disconnect(); |
| }, "Should not throw if characterDataOldValue is true and characterData is omitted"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { attributes: ["abc"] }); |
| m.disconnect(); |
| }, "Should not throw if attributeFilter is present and attributes is omitted"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| assert_throws_js(TypeError, () => { |
| m.observe(document, { childList: true, attributeOldValue: true, |
| attributes: false }); |
| }); |
| }, "Should throw if attributeOldValue is true and attributes is false"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { childList: true, attributeOldValue: true, |
| attributes: true }); |
| m.disconnect(); |
| }, "Should not throw if attributeOldValue and attributes are both true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| assert_throws_js(TypeError, () => { |
| m.observe(document, { childList: true, attributeFilter: ["abc"], |
| attributes: false }); |
| }); |
| }, "Should throw if attributeFilter is present and attributes is false"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { childList: true, attributeFilter: ["abc"], |
| attributes: true }); |
| m.disconnect(); |
| }, "Should not throw if attributeFilter is present and attributes is true"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| assert_throws_js(TypeError, () => { |
| m.observe(document, { childList: true, characterDataOldValue: true, |
| characterData: false }); |
| }); |
| }, "Should throw if characterDataOldValue is true and characterData is false"); |
| |
| test(() => { |
| var m = new MutationObserver(() => {}); |
| m.observe(document, { childList: true, characterDataOldValue: true, |
| characterData: true }); |
| m.disconnect(); |
| }, "Should not throw if characterDataOldValue is true and characterData is true"); |
| |
| </script> |