jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/386459 )
Change subject: Remove unnecessary serialize/parse of references content ...................................................................... Remove unnecessary serialize/parse of references content * Also, change the input parameter of buildDOMFragmentTokens to uniformly accepts a <body>, rather than a doc or string, so that we can pass it nodes from our dummy document. Change-Id: I4bb44573fe7203277d51e804a4a6423100a34f03 --- M lib/ext/Cite/index.js M lib/ext/Gallery/index.js M lib/utils/DOMUtils.js M lib/wt2html/tt/DOMFragmentBuilder.js M lib/wt2html/tt/LinkHandler.js M lib/wt2html/tt/TemplateHandler.js M tests/parserTestsParserHook.js 7 files changed, 31 insertions(+), 20 deletions(-) Approvals: Subramanya Sastry: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/ext/Cite/index.js b/lib/ext/Cite/index.js index 72c7f5c..61b3add 100644 --- a/lib/ext/Cite/index.js +++ b/lib/ext/Cite/index.js @@ -323,14 +323,21 @@ // Emit a marker mw:DOMFragment for the references // token so that the dom post processor can generate // and emit references at this point in the DOM. - var emitReferencesFragment = function(toks, refsBody) { - var dummyOl = dummyDoc.createElement('ol'); - DU.addAttributes(dummyOl, { + var emitReferencesFragment = function(toks, body) { + var ol; + if (body) { + ol = body.ownerDocument.createElement('ol'); + DU.migrateChildren(body, ol); + } else { + ol = dummyDoc.createElement('ol'); + body = dummyDoc.createElement('body'); + } + body.appendChild(ol); + DU.addAttributes(ol, { 'class': 'mw-references references', typeof: 'mw:Extension/references', about: referencesId, }); - dummyOl.innerHTML = refsBody || ''; var olProcessor = function(ol) { var dp = DU.getDataParsoid(ol); dp.src = refsTok.getAttribute('source'); @@ -346,7 +353,7 @@ tokens: DU.buildDOMFragmentTokens( manager.env, refsTok, - dummyOl.outerHTML, + body, olProcessor, // The <ol> HTML above is wrapper HTML added on and doesn't // have any DSR on it. We want DSR added to it. @@ -373,7 +380,7 @@ emptyContentCB: emitReferencesFragment, endCB: emitReferencesFragment, documentCB: function(refsDoc) { - emitReferencesFragment([], DU.ppToXML(refsDoc.body, { innerXML: true })); + emitReferencesFragment([], refsDoc.body); }, }); }; diff --git a/lib/ext/Gallery/index.js b/lib/ext/Gallery/index.js index 6cdef35..6687985 100644 --- a/lib/ext/Gallery/index.js +++ b/lib/ext/Gallery/index.js @@ -231,7 +231,7 @@ src: dataAttribs.src, }); }; - var tokens = DU.buildDOMFragmentTokens(env, extToken, doc, addAttrs, { + var tokens = DU.buildDOMFragmentTokens(env, extToken, doc.body, addAttrs, { isForeignContent: true, setDSR: true, }); cb({ tokens: tokens }); diff --git a/lib/utils/DOMUtils.js b/lib/utils/DOMUtils.js index 7d7407f..db8d74f 100644 --- a/lib/utils/DOMUtils.js +++ b/lib/utils/DOMUtils.js @@ -1965,8 +1965,8 @@ * @param {Token} token * The token that generated the DOM. * - * @param {Node|String} docOrHTML - * The DOM (or HTML string) that the token expanded to. + * @param {Node} body + * The DOM that the token expanded to. * * @param {Function} addAttrsCB * Callback that adds additional attributes to the generated tokens. @@ -1975,14 +1975,10 @@ * Options to be passed onto the encapsulation code * See encapsulateExpansionHTML's doc. for more info about these options. */ - buildDOMFragmentTokens: function(env, token, docOrHTML, addAttrsCB, opts) { - var body, nodes; - if (docOrHTML.constructor === String) { - body = DU.ppToDOM(docOrHTML); - } else { - body = docOrHTML.body; - } + buildDOMFragmentTokens: function(env, token, body, addAttrsCB, opts) { + console.assert(DU.isBody(body), 'DOMFragment expected body node.'); + var nodes; if (body.hasChildNodes()) { nodes = body.childNodes; } else { diff --git a/lib/wt2html/tt/DOMFragmentBuilder.js b/lib/wt2html/tt/DOMFragmentBuilder.js index 432782d..2c1cb90 100644 --- a/lib/wt2html/tt/DOMFragmentBuilder.js +++ b/lib/wt2html/tt/DOMFragmentBuilder.js @@ -100,7 +100,7 @@ DOMFragmentBuilder.prototype.wrapDOMFragment = function(cb, scopeToken, opts, dom) { // Pass through pipeline options - var toks = DU.buildDOMFragmentTokens(this.manager.env, scopeToken, dom, false, opts); + var toks = DU.buildDOMFragmentTokens(this.manager.env, scopeToken, dom.body, false, opts); // Nothing more to send cb after this cb({ tokens: toks, async: false }); diff --git a/lib/wt2html/tt/LinkHandler.js b/lib/wt2html/tt/LinkHandler.js index 36a2b99..691026e 100644 --- a/lib/wt2html/tt/LinkHandler.js +++ b/lib/wt2html/tt/LinkHandler.js @@ -245,7 +245,13 @@ tsr = null; } - tokens = tokens.concat(DU.buildDOMFragmentTokens(env, token, html, null, { noPWrapping: true, tsr: tsr })); + var body = DU.ppToDOM(html); + var dft = DU.buildDOMFragmentTokens(env, token, body, null, { + noPWrapping: true, + tsr: tsr, + }); + + tokens = tokens.concat(dft); } else { // FIXME: Duplicate work tokens[0] += Util.tokensToString(token.getAttribute("href")); diff --git a/lib/wt2html/tt/TemplateHandler.js b/lib/wt2html/tt/TemplateHandler.js index ed07943..568dc55 100644 --- a/lib/wt2html/tt/TemplateHandler.js +++ b/lib/wt2html/tt/TemplateHandler.js @@ -1068,7 +1068,7 @@ var toks = DU.buildDOMFragmentTokens( this.manager.env, state.token, - doc, + doc.body, addWrapperAttrs, { setDSR: state.token.name === 'extension', isForeignContent: true } ); diff --git a/tests/parserTestsParserHook.js b/tests/parserTestsParserHook.js index 180a6ef..5531cf8 100644 --- a/tests/parserTestsParserHook.js +++ b/tests/parserTestsParserHook.js @@ -24,8 +24,10 @@ }); }; + var body = DU.ppToDOM(html); + var tokens = DU.buildDOMFragmentTokens( - env, extToken, html, addWrapperAttrs, + env, extToken, body, addWrapperAttrs, { setDSR: true, isForeignContent: true } ); -- To view, visit https://gerrit.wikimedia.org/r/386459 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4bb44573fe7203277d51e804a4a6423100a34f03 Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: C. Scott Ananian <canan...@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