Arlolra has uploaded a new change for review.
https://gerrit.wikimedia.org/r/95747
Change subject: tagId was incorrectly used as tsr info in TreeBuilderFixups
......................................................................
tagId was incorrectly used as tsr info in TreeBuilderFixups
* Populates data-stag with tag tsr info for later use when adding
placeholder metas.
* Fixes the long crashes we saw on round-trip tests. They were the
result of not having a tsr end number on the meta tag, which soaked
up the entire page into data-parsoid, subsequently dragging jsDiff to
a halt.
Bug: 57069
Bug: 57071
Change-Id: Iff6341c5260b534282d13e4881aa38ea40722728
---
M js/lib/dom.markTreeBuilderFixups.js
M js/lib/mediawiki.HTML5TreeBuilder.node.js
2 files changed, 11 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid
refs/changes/47/95747/1
diff --git a/js/lib/dom.markTreeBuilderFixups.js
b/js/lib/dom.markTreeBuilderFixups.js
index c8c0a89..7c3429e 100644
--- a/js/lib/dom.markTreeBuilderFixups.js
+++ b/js/lib/dom.markTreeBuilderFixups.js
@@ -76,7 +76,7 @@
if (metaType === "mw:StartTag") {
var dataStag =
c.getAttribute('data-stag'),
data =
dataStag.split(":"),
- stagTsr =
data[1].split(","),
+ stagTsr = data[2] ?
data[2].split(",") : null,
expectedName = data[0];
var prevSibling =
c.previousSibling;
if (( prevSibling &&
prevSibling.nodeName.toLowerCase() !== expectedName ) ||
@@ -105,7 +105,7 @@
// the HTML tree builder
function findAutoInsertedTags(node) {
var c = node.firstChild,
- sibling, expectedName;
+ sibling, expectedName, reg;
while (c !== null) {
@@ -165,10 +165,12 @@
}
expectedName = cNodeName + ":"
+ dp.tagId;
+ reg = new RegExp( "^" +
expectedName + "(:.*)?$" );
+
if (fc &&
DU.isMarkerMeta(fc,
"mw:StartTag") &&
-
fc.getAttribute('data-stag') === expectedName)
- {
+ reg.test(
fc.getAttribute('data-stag') )
+ ) {
// Strip start-tag
marker metas that has its matching node
DU.deleteNode(fc);
} else {
diff --git a/js/lib/mediawiki.HTML5TreeBuilder.node.js
b/js/lib/mediawiki.HTML5TreeBuilder.node.js
index 71e9209..74bef2b 100644
--- a/js/lib/mediawiki.HTML5TreeBuilder.node.js
+++ b/js/lib/mediawiki.HTML5TreeBuilder.node.js
@@ -227,7 +227,11 @@
attrs = [];
if ( this.trace ) { console.warn('inserting shadow meta
for ' + tName); }
attrs.push({name: "typeof", value: "mw:StartTag"});
- attrs.push({name: "data-stag", value: tName + ':' +
dataAttribs.tagId});
+ var stag = tName + ":" + dataAttribs.tagId;
+ if ( dataAttribs.tsr ) {
+ stag += ":" + dataAttribs.tsr.join( "," );
+ }
+ attrs.push({ name: "data-stag", value: stag });
this.emit('token', { type: 'Comment', data:
JSON.stringify({
"@type": "mw:shadow",
attrs: attrs
--
To view, visit https://gerrit.wikimedia.org/r/95747
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iff6341c5260b534282d13e4881aa38ea40722728
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits