jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/386010 )
Change subject: Only use our hacked Node#normalize if domino is old ...................................................................... Only use our hacked Node#normalize if domino is old We used a hacky reimplementation of Node#normalize to work around a slow array-based DOM implementation in domino; if domino is new enough, this will break (because Node#childNodes isn't writable). Use the built-in Node#normalize in that case instead. Change-Id: Ifdf176e6876bb9f8d861d21feedeea913d36841c --- M lib/wt2html/pp/processors/normalize.js 1 file changed, 19 insertions(+), 1 deletion(-) Approvals: Subramanya Sastry: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/wt2html/pp/processors/normalize.js b/lib/wt2html/pp/processors/normalize.js index 22b12ac..b87d29e 100644 --- a/lib/wt2html/pp/processors/normalize.js +++ b/lib/wt2html/pp/processors/normalize.js @@ -1,6 +1,18 @@ 'use strict'; var domino = require('domino'); + +// Test for domino > 1.0.30, where childNodes was made a proper read-only +// property. Not coincidentally, the workaround below for a slow implementation +// of Node#normalize in domino became unnecessary after 1.0.30. +var DOMINO_AFTER_1_0_30 = false; +try { + domino.createDocument('test').body.childNodes = new domino.impl.NodeList(); +} catch (e) { + DOMINO_AFTER_1_0_30 = true; +} + + var DU = require('../../../utils/DOMUtils').DOMUtils; // Like Node.normalize() but it clones the childNodes arrays in order to avoid @@ -56,12 +68,18 @@ newChunks.push(kids.slice(chunkStart)); } // Clone childNodes by concatenating the chunks + // XXX: childNodes isn't really writable in DOM; this only works + // for domino <= 1.0.30 parent.childNodes = new domino.impl.NodeList([].concat.apply([], newChunks)); } } function normalize(body, env) { - normalizeNode(body); + if (DOMINO_AFTER_1_0_30) { + body.normalize(); + } else { + normalizeNode(body); + } } if (typeof module === "object") { -- To view, visit https://gerrit.wikimedia.org/r/386010 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifdf176e6876bb9f8d861d21feedeea913d36841c Gerrit-PatchSet: 5 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: C. Scott Ananian <canan...@wikimedia.org> Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: Sbailey <sbai...@wikimedia.org> Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits