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

Change subject: getAnnotationsFromRange should only ignore non-content data
......................................................................


getAnnotationsFromRange should only ignore non-content data

Currently ignores all non-element data, but element content (e.g.
images) can be annotated.

Added test cases and updated the test runner to only compare
store indexes for a more readable output.

Bug: 50127
Change-Id: I234586a28072811c8288aab56f6abaaa0da0c88d
---
M modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
M modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
2 files changed, 23 insertions(+), 7 deletions(-)

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



diff --git a/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js 
b/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
index 688d9e5..91ff5fb 100644
--- a/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
+++ b/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
@@ -433,9 +433,7 @@
  * @returns {ve.dm.AnnotationSet} All annotation objects range is covered by
  */
 ve.dm.ElementLinearData.prototype.getAnnotationsFromRange = function ( range, 
all ) {
-       var i,
-               left,
-               right;
+       var i, left, right;
        // Look at left side of range for annotations
        left = this.getAnnotationsFromOffset( range.start );
        // Shortcut for single character and zero-length ranges
@@ -444,8 +442,8 @@
        }
        // Iterator over the range, looking for annotations, starting at the 
2nd character
        for ( i = range.start + 1; i < range.end; i++ ) {
-               // Skip non character data
-               if ( this.isElementData( i ) ) {
+               // Skip non-content data
+               if ( this.isElementData( i ) && 
!ve.dm.nodeFactory.isNodeContent( this.getType( i ) ) ) {
                        continue;
                }
                // Current character annotations
diff --git a/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js 
b/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
index b82808f..4d0498e 100644
--- a/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
+++ b/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
@@ -215,6 +215,24 @@
                        'expected': []
                },
                {
+                       'msg': 'no common coverage due to un-annotated content 
node',
+                       'data': [
+                               ['a', [ { 'type': 'textStyle/bold' } ] ],
+                               { 'type': 'image' },
+                               { 'type': '/image' }
+                       ],
+                       'expected': []
+               },
+               {
+                       'msg': 'branch node is ignored',
+                       'data': [
+                               ['a', [ { 'type': 'textStyle/bold' } ] ],
+                               { 'type': 'paragraph' },
+                               { 'type': '/paragraph' }
+                       ],
+                       'expected': [ { 'type': 'textStyle/bold' } ]
+               },
+               {
                        'msg': 'annotations are collected using all with 
mismatched annotations',
                        'data': [
                                ['a', [ { 'type': 'textStyle/bold' } ] ],
@@ -284,8 +302,8 @@
                data = ve.dm.example.preprocessAnnotations( cases[i].data );
                doc = new ve.dm.Document( data );
                assert.deepEqual(
-                       doc.data.getAnnotationsFromRange( new ve.Range( 0, 
cases[i].data.length ), cases[i].all ),
-                       ve.dm.example.createAnnotationSet( doc.getStore(), 
cases[i].expected ),
+                       doc.data.getAnnotationsFromRange( new ve.Range( 0, 
cases[i].data.length ), cases[i].all ).getIndexes(),
+                       ve.dm.example.createAnnotationSet( doc.getStore(), 
cases[i].expected ).getIndexes(),
                        cases[i].msg
                );
        }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I234586a28072811c8288aab56f6abaaa0da0c88d
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Trevor Parscal <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to