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

Change subject: Add HTML blacklist for content which doesn't have a model type 
yet
......................................................................


Add HTML blacklist for content which doesn't have a model type yet

Bug: T149714
Change-Id: If1b20fefe4b4ef4748c0cc42b7a12bd8ad211a74
---
M src/ce/ve.ce.Surface.js
M src/init/ve.init.Target.js
2 files changed, 25 insertions(+), 4 deletions(-)

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



diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js
index 9530472..b43cbe4 100644
--- a/src/ce/ve.ce.Surface.js
+++ b/src/ce/ve.ce.Surface.js
@@ -1874,7 +1874,7 @@
                $elements, pasteData, slice, internalListRange,
                data, pastedDocumentModel, htmlDoc, $body, $images, i,
                context, left, right, contextRange, pastedText, handled,
-               tableAction,
+               tableAction, htmlBlacklist,
                items = [],
                metadataIdRegExp = ve.init.platform.getMetadataIdRegExp(),
                importantElement = '[id],[typeof],[rel]',
@@ -2099,6 +2099,21 @@
                        }
                } );
 
+               // HTML sanitization
+               htmlBlacklist = ve.getProp( importRules, 'external', 
'htmlBlacklist' );
+               if ( htmlBlacklist && !clipboardKey ) {
+                       if ( htmlBlacklist.remove ) {
+                               htmlBlacklist.remove.forEach( function ( 
selector ) {
+                                       $( htmlDoc.body ).find( selector 
).remove();
+                               } );
+                       }
+                       if ( htmlBlacklist.unwrap ) {
+                               htmlBlacklist.unwrap.forEach( function ( 
selector ) {
+                                       $( htmlDoc.body ).find( selector 
).contents().unwrap();
+                               } );
+                       }
+               }
+
                // External paste
                pastedDocumentModel = ve.dm.converter.getModelFromDom( htmlDoc, 
{
                        targetDoc: documentModel.getHtmlDocument(),
diff --git a/src/init/ve.init.Target.js b/src/init/ve.init.Target.js
index d31e9be..1ce6d33 100644
--- a/src/init/ve.init.Target.js
+++ b/src/init/ve.init.Target.js
@@ -174,18 +174,24 @@
  *
  * One set for external (non-VE) paste sources and one for all paste sources.
  *
- * @see ve.dm.ElementLinearData#sanitize
+ * Most rules are handled in ve.dm.ElementLinearData#sanitize, but 
htmlBlacklist
+ * is handled in ve.ce.Surface#afterPaste.
+ *
  * @type {Object}
  */
 ve.init.Target.static.importRules = {
        external: {
                blacklist: [
                        // Annotations
-                       // TODO: allow spans
                        'textStyle/span', 'textStyle/font',
                        // Nodes
-                       'alienInline', 'alienBlock', 'comment'
+                       'alienInline', 'alienBlock', 'comment', 'div'
                ],
+               // Selectors to filter. Runs before model type blacklist above.
+               htmlBlacklist: {
+                       // remove: [ 'selectorToRemove' ]
+                       unwrap: [ 'fieldset', 'legend' ]
+               },
                nodeSanitization: true
        },
        all: null

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

Gerrit-MessageType: merged
Gerrit-Change-Id: If1b20fefe4b4ef4748c0cc42b7a12bd8ad211a74
Gerrit-PatchSet: 2
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>
Gerrit-Reviewer: DLynch <dly...@wikimedia.org>
Gerrit-Reviewer: Esanders <esand...@wikimedia.org>
Gerrit-Reviewer: Jforrester <jforres...@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