Esanders has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/352669 )

Change subject: Upgrade tree differ to support timeouts, and handle them
......................................................................

Upgrade tree differ to support timeouts, and handle them

Bug: T164724
Change-Id: I6512203fb37725a2da7899b4f88b8a55042b0b66
---
M lib/treeDiffer/treeDiffer-dist.js
M src/dm/ve.dm.VisualDiff.js
2 files changed, 16 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/69/352669/1

diff --git a/lib/treeDiffer/treeDiffer-dist.js 
b/lib/treeDiffer/treeDiffer-dist.js
index 0333ed3..ec6b20a 100644
--- a/lib/treeDiffer/treeDiffer-dist.js
+++ b/lib/treeDiffer/treeDiffer-dist.js
@@ -189,10 +189,13 @@
  * @constructor
  * @param {treeDiffer.Tree} tree1 First tree
  * @param {treeDiffer.Tree} tree2 Second tree
+ * @param {Number} [timeout=1000] Timeout after which to stop diffing
  */
-treeDiffer.Differ = function ( tree1, tree2 ) {
+treeDiffer.Differ = function ( tree1, tree2, timeout ) {
        var i, ilen, j, jlen, transactions,
                transactionIndex = 0;
+
+       this.endTime = new Date().getTime() + ( timeout || 1000 );
 
        this.tree1 = tree1;
        this.tree2 = tree2;
@@ -295,6 +298,10 @@
 
                        // Get the diff
                        this.findMinimumTransactions( keyRoot1, keyRoot2, 
iNulls, jNulls, transactions );
+
+                       if ( new Date().getTime() < this.endTime ) {
+                               return;
+                       }
                }
        }
 
diff --git a/src/dm/ve.dm.VisualDiff.js b/src/dm/ve.dm.VisualDiff.js
index 534faca..750d112 100644
--- a/src/dm/ve.dm.VisualDiff.js
+++ b/src/dm/ve.dm.VisualDiff.js
@@ -255,6 +255,14 @@
        // tags for each child node
        keepLength = oldDocChild.length - 2 * ( 
oldDocChildTree.orderedNodes.length - 1 );
 
+       // Tree diff timed out: record as full remove and insert
+       if ( !treeDiff ) {
+               treeDiff = [];
+               linearDiff = null;
+               diffLength = oldDocChild.length + newDocChild.length;
+               keepLength = 0;
+       }
+
        for ( i = 0, ilen = treeDiff.length; i < ilen; i++ ) {
 
                removeLength = 0;

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6512203fb37725a2da7899b4f88b8a55042b0b66
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

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

Reply via email to