https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113550

Revision: 113550
Author:   catrope
Date:     2012-03-10 00:31:28 +0000 (Sat, 10 Mar 2012)
Log Message:
-----------
Fix some usages of splice.apply in the data model to use
ve.batchedSplice(). Added FIXME comments for occurrences outside of DM

Modified Paths:
--------------
    trunk/extensions/VisualEditor/demos/ce/main.js
    
trunk/extensions/VisualEditor/modules/parser/mediawiki.TokenTransformManager.js
    trunk/extensions/VisualEditor/modules/sandbox/sandbox.js
    trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.DocumentSynchronizer.js
    trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.TransactionProcessor.js

Modified: trunk/extensions/VisualEditor/demos/ce/main.js
===================================================================
--- trunk/extensions/VisualEditor/demos/ce/main.js      2012-03-09 23:53:10 UTC 
(rev 113549)
+++ trunk/extensions/VisualEditor/demos/ce/main.js      2012-03-10 00:31:28 UTC 
(rev 113550)
@@ -625,6 +625,8 @@
                                                        
documentModel.data.splice( 0, documentModel.data.length );
                                                        ve.insertIntoArray( 
documentModel.data, 0, newDocumentModel.data );
                                                        surfaceModel.select( 
new ve.Range( 1, 1 ) );
+                                                       // FIXME: this should 
be using ve.batchedSplice(), otherwise things
+                                                       // could explode if 
newDocumentModel.getChildren() is very long
                                                        
documentModel.splice.apply(
                                                                documentModel,
                                                                [0, 
documentModel.getChildren().length]

Modified: 
trunk/extensions/VisualEditor/modules/parser/mediawiki.TokenTransformManager.js
===================================================================
--- 
trunk/extensions/VisualEditor/modules/parser/mediawiki.TokenTransformManager.js 
    2012-03-09 23:53:10 UTC (rev 113549)
+++ 
trunk/extensions/VisualEditor/modules/parser/mediawiki.TokenTransformManager.js 
    2012-03-10 00:31:28 UTC (rev 113550)
@@ -467,6 +467,8 @@
                if( res.tokens ) {
                        // Splice in the returned tokens (while replacing the 
original
                        // token), and process them next.
+                       // FIXME: this should be using ve.batchedSplice(), 
otherwise things
+                       // could explode if res.tokens is very long
                        [].splice.apply( tokens, [i, 1].concat(res.tokens) );
                        tokensLength = tokens.length;
                        i--; // continue at first inserted token
@@ -662,6 +664,8 @@
                if( res.tokens ) {
                        // Splice in the returned tokens (while replacing the 
original
                        // token), and process them next.
+                       // FIXME: this should be using ve.batchedSplice(), 
otherwise things
+                       // could explode if res.tokens is very long
                        [].splice.apply( tokens, [i, 1].concat(res.tokens) );
                        tokensLength = tokens.length;
                        i--; // continue at first inserted token

Modified: trunk/extensions/VisualEditor/modules/sandbox/sandbox.js
===================================================================
--- trunk/extensions/VisualEditor/modules/sandbox/sandbox.js    2012-03-09 
23:53:10 UTC (rev 113549)
+++ trunk/extensions/VisualEditor/modules/sandbox/sandbox.js    2012-03-10 
00:31:28 UTC (rev 113550)
@@ -717,6 +717,8 @@
                                                        
documentModel.data.splice( 0, documentModel.data.length );
                                                        ve.insertIntoArray( 
documentModel.data, 0, newDocumentModel.data );
                                                        surfaceModel.select( 
new ve.Range( 1, 1 ) );
+                                                       // FIXME: this should 
be using ve.batchedSplice(), otherwise things
+                                                       // could explode if 
newDocumentModel.getChildren() is very long
                                                        
documentModel.splice.apply(
                                                                documentModel,
                                                                [0, 
documentModel.getChildren().length]

Modified: 
trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.DocumentSynchronizer.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.DocumentSynchronizer.js   
2012-03-09 23:53:10 UTC (rev 113549)
+++ trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.DocumentSynchronizer.js   
2012-03-10 00:31:28 UTC (rev 113550)
@@ -86,7 +86,7 @@
                                        new ve.Range( offset, 
action.node.getElementLength() + action.adjustment )
                                ) );
                                parent = action.node.getParent();
-                               parent.splice.apply( parent, [parent.indexOf( 
action.node ), 1].concat( newNodes ) );
+                               ve.batchedSplice( parent, parent.indexOf( 
action.node ), 1, newNodes );
                                // Adjust proceeding offsets by the difference 
between the original and new nodes
                                var newNodesLength = 0;
                                for ( var j = 0, jlen = newNodes.length; j < 
jlen; j++ ) {

Modified: 
trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.TransactionProcessor.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.TransactionProcessor.js   
2012-03-09 23:53:10 UTC (rev 113549)
+++ trunk/extensions/VisualEditor/modules/ve/dm/ve.dm.TransactionProcessor.js   
2012-03-10 00:31:28 UTC (rev 113550)
@@ -138,15 +138,7 @@
                        remove--;
                }
        }
-       // Try to perform this in a single operation if possible, this reduces 
the number of UI updates
-       // TODO: Introduce a global for max argument length - 1024 is also 
assumed in ve.insertIntoArray
-       if ( newNodes.length < 1024 ) {
-               parent.splice.apply( parent, [index, remove].concat( newNodes ) 
);
-       } else if ( newNodes.length ) {
-               parent.splice.apply( parent, [index, remove] );
-               // Safe to call with arbitrary length of newNodes
-               ve.insertIntoArray( parent, index, newNodes );
-       }
+       ve.batchedSplice( parent, index, remove, newNodes );
 };
 
 /**


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to