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

Change subject: Protect Parsoid-generated attributes.
......................................................................


Protect Parsoid-generated attributes.

Encapsulate user provided content when necessary.

Bug: 48772
Change-Id: I76c27639f73c505166d00c24b7164035378613a8
---
M js/lib/mediawiki.WikitextSerializer.js
M js/lib/pegTokenizer.pegjs.txt
M js/tests/parserTests.txt
3 files changed, 23 insertions(+), 0 deletions(-)

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



diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index c3120f4..b100ef3 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -2834,6 +2834,10 @@
                                        v = tplV;
                                }
 
+                               // Remove encapsulation from protected 
attributes
+                               // in 
pegTokenizer.pegjs.txt:generic_newline_attribute
+                               k = k.replace( /^data-x-/i, '' );
+
                                if (v.length ) {
                                        if (!vInfo.fromsrc) {
                                                // Escape HTML entities
diff --git a/js/lib/pegTokenizer.pegjs.txt b/js/lib/pegTokenizer.pegjs.txt
index e3aa8bf..86ce5b0 100644
--- a/js/lib/pegTokenizer.pegjs.txt
+++ b/js/lib/pegTokenizer.pegjs.txt
@@ -1715,6 +1715,14 @@
 {
     //console.warn('generic_newline_attribute: ' + pp( name ))
     var res;
+
+    // Encapsulate protected attributes.
+    if ( typeof name === "string" ) {
+        name = name.replace(
+            /^(about|data-parsoid.*|data-x.*|property|rel|typeof)$/i,
+            "data-x-$1" );
+    }
+
     if ( valueData !== '' ) {
         var value = valueData.value;
         res = new KV( name, value );
diff --git a/js/tests/parserTests.txt b/js/tests/parserTests.txt
index 6ee3ded..e55de2e 100644
--- a/js/tests/parserTests.txt
+++ b/js/tests/parserTests.txt
@@ -16328,6 +16328,17 @@
 </p>
 !!end
 
+!!test
+Encapsulate protected attributes from wt
+!!options
+parsoid
+!!input
+<div typeof="mw:placeholder stuff" data-parsoid="weird" 
data-parsoid-other="no" about="time" rel="mw:true">foo</div>
+!!result
+<body><div data-x-typeof="mw:placeholder stuff" data-x-data-parsoid="weird" 
data-x-data-parsoid-other="no" data-x-about="time" 
data-x-rel="mw:true">foo</div>
+</body>
+!!end
+
 # -----------------------------------------------------------------
 # The following section of tests are primarily to spec requirements
 # around serialization of new/edited content.

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I76c27639f73c505166d00c24b7164035378613a8
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to