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