| Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/mutationobservers.js
|
| diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/mutationobservers.js b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/mutationobservers.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..772f280bee9e165b53a779db1ca718534378caba
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/mutationobservers.js
|
| @@ -0,0 +1,76 @@
|
| +// Compares a mutation record to a predefined one
|
| +// mutationToCheck is a mutation record from the user agent
|
| +// expectedRecord is a mutation record minted by the test
|
| +// for expectedRecord, if properties are ommitted, they get default ones
|
| +function checkRecords(target, mutationToCheck, expectedRecord) {
|
| + var mr1;
|
| + var mr2;
|
| +
|
| +
|
| + function checkField(property, isArray) {
|
| + var field = mr2[property];
|
| + if (isArray === undefined) {
|
| + isArray = false;
|
| + }
|
| + if (field instanceof Function) {
|
| + field = field();
|
| + } else if (field === undefined) {
|
| + if (isArray) {
|
| + field = new Array();
|
| + } else {
|
| + field = null;
|
| + }
|
| + }
|
| + if (isArray) {
|
| + assert_array_equals(mr1[property], field, property + " didn't match");
|
| + } else {
|
| + assert_equals(mr1[property], field, property + " didn't match");
|
| + }
|
| + }
|
| +
|
| + assert_equals(mutationToCheck.length, expectedRecord.length, "mutation records must match");
|
| + for (var item = 0; item < mutationToCheck.length; item++) {
|
| + mr1 = mutationToCheck[item];
|
| + mr2 = expectedRecord[item];
|
| +
|
| + if (mr2.target instanceof Function) {
|
| + assert_equals(mr1.target, mr2.target(), "target node must match");
|
| + } else if (mr2.target !== undefined) {
|
| + assert_equals(mr1.target, mr2.target, "target node must match");
|
| + } else {
|
| + assert_equals(mr1.target, target, "target node must match");
|
| + }
|
| +
|
| + checkField("type");
|
| + checkField("addedNodes", true);
|
| + checkField("removedNodes", true);
|
| + checkField("previousSibling");
|
| + checkField("nextSibling");
|
| + checkField("attributeName");
|
| + checkField("attributeNamespace");
|
| + checkField("oldValue");
|
| + };
|
| +}
|
| +
|
| +function runMutationTest(node, mutationObserverOptions, mutationRecordSequence, mutationFunction, description, target) {
|
| + var test = async_test(description);
|
| +
|
| +
|
| + function moc(mrl, obs) {
|
| + test.step(
|
| + function () {
|
| + if (target === undefined) target = node;
|
| + checkRecords(target, mrl, mutationRecordSequence);
|
| + test.done();
|
| + }
|
| + );
|
| + }
|
| +
|
| + test.step(
|
| + function () {
|
| + (new MutationObserver(moc)).observe(node, mutationObserverOptions);
|
| + mutationFunction();
|
| + }
|
| + );
|
| + return mutationRecordSequence.length
|
| +}
|
|
|