jenkins-bot has submitted this change and it was merged.

Change subject: Page id and revid aren't the same thing
......................................................................


Page id and revid aren't the same thing

Change-Id: Ia08b9255c71ef26c3aab89e838b03ad1e7a4d1a0
---
M lib/api/routes.js
M lib/config/MWParserEnvironment.js
M lib/utils/DOMUtils.js
3 files changed, 26 insertions(+), 16 deletions(-)

Approvals:
  Arlolra: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/api/routes.js b/lib/api/routes.js
index fdd49bb..340d74a 100644
--- a/lib/api/routes.js
+++ b/lib/api/routes.js
@@ -558,8 +558,14 @@
                // Performance Timing options
                var startTimers = new Map();
 
+               env.page.reset();
+               // As per 
https://www.mediawiki.org/wiki/Parsoid/API#v1_API_entry_points
+               //   "Both it and the oldid parameter are needed for
+               //    clean round-tripping of HTML retrieved earlier with"
+               // So, no oldid => no selser
+               env.page.meta.revision.revid = res.locals.oldid;
+
                env.bumpSerializerResourceUse('htmlSize', html.length);
-               env.page.id = res.locals.oldid;
                env.log('info', 'started serializing');
 
                if (metrics) {
@@ -637,7 +643,8 @@
 
                        // If we got original src, set it
                        if (original.wikitext) {
-                               env.setPageSrcInfo(original.wikitext.body);
+                               // Don't overwrite env.page.meta!
+                               env.page.src = original.wikitext.body;
                        }
 
                        // If we got original html, parse it
@@ -654,14 +661,7 @@
                // in the <head> of doc and/or env.page.dom
                // For now, ignoring this.
 
-               // As per 
https://www.mediawiki.org/wiki/Parsoid/API#v1_API_entry_points
-               //   "Both it and the oldid parameter are needed for
-               //    clean round-tripping of HTML retrieved earlier with"
-               // So, no oldid => no selser
-               var hasOldId = (env.page.id && env.page.id !== '0');
-               var useSelser = hasOldId && env.conf.parsoid.useSelser;
-
-               return DU.serializeDOM(env, doc.body, useSelser)
+               return DU.serializeDOM(env, doc.body, 
env.conf.parsoid.useSelser)
                // .timeout(REQ_TIMEOUT)
                .then(function(output) {
                        if (metrics) {
diff --git a/lib/config/MWParserEnvironment.js 
b/lib/config/MWParserEnvironment.js
index 3901f45..002cd50 100644
--- a/lib/config/MWParserEnvironment.js
+++ b/lib/config/MWParserEnvironment.js
@@ -33,7 +33,9 @@
 
        // page information
        this.page = (function() {
-               var Page = function() {};
+               var Page = function() {
+                       this.reset();
+               };
 
                /**
                 * @property {String} name
@@ -48,7 +50,8 @@
                Page.prototype.relativeLinkPrefix = '';
 
                /**
-                * The revision ID we want to use for the page.
+                * The page's ID.  Don't get this confused w/ 
`meta.revision.revid`
+                * At present, it's only used in diff marking.
                 *
                 * @property {Number|null} id
                 */
@@ -76,6 +79,13 @@
                 * @property {Object|null} title
                 */
                Page.prototype.title = null;
+
+               /**
+                * @method
+                */
+               Page.prototype.reset = function() {
+                       this.meta = { revision: {} };
+               };
 
                return new Page();
        })();
@@ -307,7 +317,7 @@
  */
 MWParserEnvironment.prototype.setPageSrcInfo = function(srcOrMetadata) {
        if (typeof (srcOrMetadata) === 'string' || srcOrMetadata === null) {
-               this.page.meta = { revision: {} };
+               this.page.reset();
                this.page.src = srcOrMetadata || '';
                return;
        }
diff --git a/lib/utils/DOMUtils.js b/lib/utils/DOMUtils.js
index 109df44..08c09cd 100644
--- a/lib/utils/DOMUtils.js
+++ b/lib/utils/DOMUtils.js
@@ -2660,7 +2660,7 @@
 
        console.assert(DU.isBody(body), 'Expected a body node.');
 
-       var hasOldId = (env.page.id && env.page.id !== '0');
+       var hasOldId = !!env.page.meta.revision.revid;
        var needsWt = useSelser && hasOldId && (env.page.src === null);
        var needsOldDOM = useSelser && !(env.page.dom || env.page.domdiff);
 
@@ -2669,7 +2669,7 @@
                steps.push(function() {
                        var target = env.normalizeAndResolvePageTitle();
                        return TemplateRequest.setPageSrcInfo(
-                               env, target, env.page.id
+                               env, target, env.page.meta.revision.revid
                        ).catch(function(err) {
                                env.log('error', 'Error while fetching page 
source.');
                        });
@@ -2709,7 +2709,7 @@
                // of `DU.serializeDOM` to use `DU.ppToDOM` but this is a safe 
bet
                // for now, since it's the main entrypoint to serialization.
                DU.visitDOM(body, DU.loadDataAttribs, true);
-               if (useSelser) {
+               if (useSelser && env.page.dom) {
                        DU.visitDOM(env.page.dom, DU.loadDataAttribs, true);
                }
                env.page.editedDoc = body.ownerDocument;

-- 
To view, visit https://gerrit.wikimedia.org/r/310909
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia08b9255c71ef26c3aab89e838b03ad1e7a4d1a0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: C. Scott Ananian <canan...@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