[MediaWiki-commits] [Gerrit] VisualEditor/VisualEditor[master]: Test selections without relying on a ve.dm.Surface select ev...
jenkins-bot has submitted this change and it was merged. Change subject: Test selections without relying on a ve.dm.Surface select event listener .. Test selections without relying on a ve.dm.Surface select event listener Bug: T145938 Change-Id: I3cc3d3d0bf5eaef135160d762607cd799d48d910 --- M src/ui/ve.ui.DebugBar.js M tests/ce/ve.ce.Surface.test.js 2 files changed, 9 insertions(+), 14 deletions(-) Approvals: DLynch: Looks good to me, approved jenkins-bot: Verified diff --git a/src/ui/ve.ui.DebugBar.js b/src/ui/ve.ui.DebugBar.js index 74c9187..4bbc609 100644 --- a/src/ui/ve.ui.DebugBar.js +++ b/src/ui/ve.ui.DebugBar.js @@ -112,7 +112,9 @@ * * @param {ve.dm.Selection} selection */ -ve.ui.DebugBar.prototype.onSurfaceSelect = function ( selection ) { +ve.ui.DebugBar.prototype.onSurfaceSelect = function () { + // Do not trust the emitted selection: nested emits can invalidate it. See T145938. + var selection = this.surface.model.getSelection(); this.selectionLabel.setLabel( selection.getDescription() ); this.logRangeButton.setDisabled( !( ( selection instanceof ve.dm.LinearSelection && !selection.isCollapsed() ) || diff --git a/tests/ce/ve.ce.Surface.test.js b/tests/ce/ve.ce.Surface.test.js index 5a2d5c6..7adbd27 100644 --- a/tests/ce/ve.ce.Surface.test.js +++ b/tests/ce/ve.ce.Surface.test.js @@ -9,23 +9,16 @@ /* Tests */ ve.test.utils.runSurfaceHandleSpecialKeyTest = function ( assert, htmlOrDoc, rangeOrSelection, keys, expectedData, expectedRangeOrSelection, msg, forceSelection, fullEvents ) { - var i, e, selection, expectedSelection, key, + var i, e, expectedSelection, key, view = typeof htmlOrDoc === 'string' ? ve.test.utils.createSurfaceViewFromHtml( htmlOrDoc ) : ( htmlOrDoc instanceof ve.ce.Surface ? htmlOrDoc : ve.test.utils.createSurfaceViewFromDocument( htmlOrDoc || ve.dm.example.createExampleDocument() ) ), model = view.getModel(), data = ve.copy( model.getDocument().getFullData() ); - // TODO: model.getSelection() should be consistent after it has been - // changed but appears to behave differently depending on the browser. - // The selection from the select event is still consistent. - selection = ve.test.utils.selectionFromRangeOrSelection( model.getDocument(), rangeOrSelection ); - - model.on( 'select', function ( s ) { - selection = s; - } ); - - model.setSelection( selection ); + model.setSelection( + ve.test.utils.selectionFromRangeOrSelection( model.getDocument(), rangeOrSelection ) + ); for ( i = 0; i < keys.length; i++ ) { key = keys[ i ].split( '+' ); e = { @@ -54,7 +47,7 @@ view.showSelectionState( view.getSelectionState( forceSelection ) ); } ve.ce.keyDownHandlerFactory.executeHandlersForKey( - e.keyCode, selection.getName(), view, e + e.keyCode, model.getSelection().getName(), view, e ); } } @@ -66,7 +59,7 @@ ); assert.equalLinearData( model.getDocument().getFullData(), data, msg + ': data' ); - assert.equalHash( selection, expectedSelection, msg + ': selection' ); + assert.equalHash( model.getSelection(), expectedSelection, msg + ': selection' ); view.destroy(); }; -- To view, visit https://gerrit.wikimedia.org/r/311238 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3cc3d3d0bf5eaef135160d762607cd799d48d910 Gerrit-PatchSet: 4 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: DivecGerrit-Reviewer: DLynch Gerrit-Reviewer: Divec Gerrit-Reviewer: jenkins-bot <> ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] VisualEditor/VisualEditor[master]: Test selections without relying on a ve.dm.Surface select ev...
Divec has uploaded a new change for review. https://gerrit.wikimedia.org/r/311238 Change subject: Test selections without relying on a ve.dm.Surface select event listener .. Test selections without relying on a ve.dm.Surface select event listener Bug: T145938 Change-Id: I3cc3d3d0bf5eaef135160d762607cd799d48d910 --- M src/ui/ve.ui.DebugBar.js M tests/ce/ve.ce.Surface.test.js 2 files changed, 8 insertions(+), 13 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor refs/changes/38/311238/1 diff --git a/src/ui/ve.ui.DebugBar.js b/src/ui/ve.ui.DebugBar.js index 74c9187..3ba417f 100644 --- a/src/ui/ve.ui.DebugBar.js +++ b/src/ui/ve.ui.DebugBar.js @@ -113,6 +113,8 @@ * @param {ve.dm.Selection} selection */ ve.ui.DebugBar.prototype.onSurfaceSelect = function ( selection ) { + // Ignore the function argument, because nested emits can cause it to be outdated + selection = this.surface.model.getSelection(); this.selectionLabel.setLabel( selection.getDescription() ); this.logRangeButton.setDisabled( !( ( selection instanceof ve.dm.LinearSelection && !selection.isCollapsed() ) || diff --git a/tests/ce/ve.ce.Surface.test.js b/tests/ce/ve.ce.Surface.test.js index 5a2d5c6..7adbd27 100644 --- a/tests/ce/ve.ce.Surface.test.js +++ b/tests/ce/ve.ce.Surface.test.js @@ -9,23 +9,16 @@ /* Tests */ ve.test.utils.runSurfaceHandleSpecialKeyTest = function ( assert, htmlOrDoc, rangeOrSelection, keys, expectedData, expectedRangeOrSelection, msg, forceSelection, fullEvents ) { - var i, e, selection, expectedSelection, key, + var i, e, expectedSelection, key, view = typeof htmlOrDoc === 'string' ? ve.test.utils.createSurfaceViewFromHtml( htmlOrDoc ) : ( htmlOrDoc instanceof ve.ce.Surface ? htmlOrDoc : ve.test.utils.createSurfaceViewFromDocument( htmlOrDoc || ve.dm.example.createExampleDocument() ) ), model = view.getModel(), data = ve.copy( model.getDocument().getFullData() ); - // TODO: model.getSelection() should be consistent after it has been - // changed but appears to behave differently depending on the browser. - // The selection from the select event is still consistent. - selection = ve.test.utils.selectionFromRangeOrSelection( model.getDocument(), rangeOrSelection ); - - model.on( 'select', function ( s ) { - selection = s; - } ); - - model.setSelection( selection ); + model.setSelection( + ve.test.utils.selectionFromRangeOrSelection( model.getDocument(), rangeOrSelection ) + ); for ( i = 0; i < keys.length; i++ ) { key = keys[ i ].split( '+' ); e = { @@ -54,7 +47,7 @@ view.showSelectionState( view.getSelectionState( forceSelection ) ); } ve.ce.keyDownHandlerFactory.executeHandlersForKey( - e.keyCode, selection.getName(), view, e + e.keyCode, model.getSelection().getName(), view, e ); } } @@ -66,7 +59,7 @@ ); assert.equalLinearData( model.getDocument().getFullData(), data, msg + ': data' ); - assert.equalHash( selection, expectedSelection, msg + ': selection' ); + assert.equalHash( model.getSelection(), expectedSelection, msg + ': selection' ); view.destroy(); }; -- To view, visit https://gerrit.wikimedia.org/r/311238 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3cc3d3d0bf5eaef135160d762607cd799d48d910 Gerrit-PatchSet: 1 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Divec___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits