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

Reply via email to