8
0
Просмотр исходного кода

Added more tests and docs to view renderer.

Szymon Kupś 9 лет назад
Родитель
Сommit
e35e0262a5

+ 22 - 0
packages/ckeditor5-engine/src/view/renderer.js

@@ -450,6 +450,12 @@ export default class Renderer {
 		}
 	}
 
+	/**
+	 * Updates fake selection.
+	 *
+	 * @private
+	 * @param {HTMLElement} domRoot Valid DOM root where fake selection container should be added.
+	 */
 	_updateFakeSelection( domRoot ) {
 		const domDocument = domRoot.ownerDocument;
 
@@ -478,6 +484,12 @@ export default class Renderer {
 		domSelection.addRange( domRange );
 	}
 
+	/**
+	 * Updates DOM selection.
+	 *
+	 * @private
+	 * @param {HTMLElement} domRoot Valid DOM root where DOM selection should be rendered.
+	 */
 	_updateDomSelection( domRoot ) {
 		const domSelection = domRoot.ownerDocument.defaultView.getSelection();
 		const oldViewSelection = domSelection && this.domConverter.domSelectionToView( domSelection );
@@ -498,6 +510,11 @@ export default class Renderer {
 		domSelection.extend( focus.parent, focus.offset );
 	}
 
+	/**
+	 * Removes DOM selection.
+	 *
+	 * @private
+	 */
 	_removeDomSelection() {
 		for ( let doc of this.domDocuments ) {
 			const domSelection = doc.getSelection();
@@ -513,6 +530,11 @@ export default class Renderer {
 		}
 	}
 
+	/**
+	 * Removes fake selection.
+	 *
+	 * @private
+	 */
 	_removeFakeSelection() {
 		const container = this._fakeSelectionContainer;
 

+ 39 - 0
packages/ckeditor5-engine/tests/view/renderer.js

@@ -1053,6 +1053,45 @@ describe( 'Renderer', () => {
 				expect( domRange.endContainer ).to.equal( domParagraph );
 				expect( domRange.endOffset ).to.equal( 1 );
 			} );
+
+			it( 'should reuse fake selection container #1', () => {
+				const label = 'fake selection label';
+
+				selection.setFake( true, { label } );
+				renderer.render();
+
+				expect( domRoot.childNodes.length ).to.equal( 2 );
+				const container = domRoot.childNodes[ 1 ];
+
+				selection.setFake( true, { label } );
+				renderer.render();
+
+				expect( domRoot.childNodes.length ).to.equal( 2 );
+				const newContainer = domRoot.childNodes[ 1 ];
+				expect( newContainer ).equals( container );
+				expect( newContainer.innerText ).to.equal( label );
+			} );
+
+			it( 'should reuse fake selection container #2', () => {
+				selection.setFake( true, { label: 'label 1' } );
+				renderer.render();
+
+				expect( domRoot.childNodes.length ).to.equal( 2 );
+				const container = domRoot.childNodes[ 1 ];
+
+				selection.setFake( false );
+				renderer.render();
+
+				expect( domRoot.childNodes.length ).to.equal( 1 );
+
+				selection.setFake( true, { label: 'label 2' } );
+				renderer.render();
+
+				expect( domRoot.childNodes.length ).to.equal( 2 );
+				const newContainer = domRoot.childNodes[ 1 ];
+				expect( newContainer ).equals( container );
+				expect( newContainer.innerText ).to.equal( 'label 2' );
+			} );
 		} );
 	} );
 } );