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

Reply via email to