浏览代码

Renamed TreeView.TreeView to TreeView.Document.

Oskar Wrobel 9 年之前
父节点
当前提交
c7e80a635a
共有 35 个文件被更改,包括 570 次插入570 次删除
  1. 2 2
      packages/ckeditor5-engine/src/treecontroller/editingcontroller.js
  2. 1 1
      packages/ckeditor5-engine/src/treecontroller/mapper.js
  3. 19 19
      packages/ckeditor5-engine/src/treeview/treeview.js
  4. 1 1
      packages/ckeditor5-engine/src/treeview/domconverter.js
  5. 3 3
      packages/ckeditor5-engine/src/treeview/filler.js
  6. 15 15
      packages/ckeditor5-engine/src/treeview/node.js
  7. 7 7
      packages/ckeditor5-engine/src/treeview/observer/domeventdata.js
  8. 3 3
      packages/ckeditor5-engine/src/treeview/observer/domeventobserver.js
  9. 5 5
      packages/ckeditor5-engine/src/treeview/observer/focusobserver.js
  10. 5 5
      packages/ckeditor5-engine/src/treeview/observer/keyobserver.js
  11. 18 18
      packages/ckeditor5-engine/src/treeview/observer/mutationobserver.js
  12. 8 8
      packages/ckeditor5-engine/src/treeview/observer/observer.js
  13. 18 18
      packages/ckeditor5-engine/src/treeview/observer/selectionobserver.js
  14. 19 19
      packages/ckeditor5-engine/tests/_utils-tests/view.js
  15. 12 12
      packages/ckeditor5-engine/tests/_utils/view.js
  16. 11 11
      packages/ckeditor5-engine/tests/treeview/manual/clickobserver.js
  17. 7 7
      packages/ckeditor5-engine/tests/treeview/manual/focusobserver.js
  18. 8 8
      packages/ckeditor5-engine/tests/treeview/manual/immutable.js
  19. 10 10
      packages/ckeditor5-engine/tests/treeview/manual/inline-filler.js
  20. 5 5
      packages/ckeditor5-engine/tests/treeview/manual/keyobserver.js
  21. 7 7
      packages/ckeditor5-engine/tests/treeview/manual/mutationobserver.js
  22. 9 9
      packages/ckeditor5-engine/tests/treeview/manual/selectionobserver.js
  23. 9 9
      packages/ckeditor5-engine/tests/treeview/manual/x-index.js
  24. 9 9
      packages/ckeditor5-engine/tests/treeview/node.js
  25. 9 9
      packages/ckeditor5-engine/tests/treeview/observer/domeventdata.js
  26. 24 24
      packages/ckeditor5-engine/tests/treeview/observer/domeventobserver.js
  27. 6 6
      packages/ckeditor5-engine/tests/treeview/observer/focusobserver.js
  28. 7 7
      packages/ckeditor5-engine/tests/treeview/observer/keyobserver.js
  29. 18 18
      packages/ckeditor5-engine/tests/treeview/observer/mutationobserver.js
  30. 3 3
      packages/ckeditor5-engine/tests/treeview/observer/observer.js
  31. 23 23
      packages/ckeditor5-engine/tests/treeview/observer/selectionobserver.js
  32. 233 0
      packages/ckeditor5-engine/tests/treeview/treeview/document.js
  33. 11 11
      packages/ckeditor5-engine/tests/treeview/treeview/integration.js
  34. 25 25
      packages/ckeditor5-engine/tests/treeview/treeview/jumpoverinlinefiller.js
  35. 0 233
      packages/ckeditor5-engine/tests/treeview/treeview/treeview.js

+ 2 - 2
packages/ckeditor5-engine/src/treecontroller/editingcontroller.js

@@ -5,12 +5,12 @@
 
 'use strict';
 
-import TreeView from '../treeview/treeview.js';
+import TreeDocument from '../treeview/document.js';
 
 export default class EditingController {
 	constructor( modelDocument ) {
 		this.model = modelDocument;
-		this.view = new TreeView();
+		this.view = new TreeDocument();
 	}
 
 	destroy() {}

+ 1 - 1
packages/ckeditor5-engine/src/treecontroller/mapper.js

@@ -12,7 +12,7 @@ import ViewRange from '../treeview/range.js';
 import ViewText from '../treeview/text.js';
 
 /**
- * Maps elements and positions between {@link engine.treeView.TreeView TreeView} and {@link engine.treeModel TreeModel}.
+ * Maps elements and positions between {@link engine.treeView.Document TreeView} and {@link engine.treeModel TreeModel}.
  *
  * Mapper use binded elements to find corresponding elements and positions, so, to get proper results,
  * all Tree Model elements should be {@link engine.treeController.Mapper#bindElements binded}.

+ 19 - 19
packages/ckeditor5-engine/src/treeview/treeview.js

@@ -15,7 +15,7 @@ import mix from '../../utils/mix.js';
 import EmitterMixin from '../../utils/emittermixin.js';
 
 /**
- * TreeView class creates an abstract layer over the content editable area.
+ * Document class creates an abstract layer over the content editable area.
  * It combines the actual tree of view elements, tree of DOM elements,
  * {@link engine.treeView.DomConverter DOM Converter}, {@link engine.treeView.Renderer renderer} and all
  * {@link engine.treeView.Observer observers}.
@@ -26,16 +26,16 @@ import EmitterMixin from '../../utils/emittermixin.js';
  * @memberOf engine.treeView
  * @mixes utils.EmitterMixin
  */
-export default class TreeView {
+export default class Document {
 	/**
-	 * Creates a TreeView instance.
+	 * Creates a Document instance.
 	 */
 	constructor() {
 		/**
 		 * Roots of the DOM tree. Map on the `HTMLElement`s with roots names as keys.
 		 *
 		 * @readonly
-		 * @member {Map} engine.treeView.TreeView#domRoots
+		 * @member {Map} engine.treeView.Document#domRoots
 		 */
 		this.domRoots = new Map();
 
@@ -43,7 +43,7 @@ export default class TreeView {
 		 * Selection done on this document.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.Selection} engine.treeView.TreeView#selection
+		 * @member {engine.treeView.Selection} engine.treeView.Document#selection
 		 */
 		this.selection = new Selection();
 
@@ -51,16 +51,16 @@ export default class TreeView {
 		 * Tree View writer.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.Writer} engine.treeView.TreeView#writer
+		 * @member {engine.treeView.Writer} engine.treeView.Document#writer
 		 */
 		this.writer = new Writer();
 
 		/**
 		 * Instance of the {@link engine.treeView.DomConverter domConverter} use by
-		 * {@link engine.treeView.TreeView#renderer renderer} and {@link engine.treeView.observer.Observer observers}.
+		 * {@link engine.treeView.Document#renderer renderer} and {@link engine.treeView.observer.Observer observers}.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.DomConverter} engine.treeView.TreeView#domConverter
+		 * @member {engine.treeView.DomConverter} engine.treeView.Document#domConverter
 		 */
 		this.domConverter = new DomConverter();
 
@@ -68,15 +68,15 @@ export default class TreeView {
 		 * Roots of the view tree. Map of the {engine.treeView.Element view elements} with roots names as keys.
 		 *
 		 * @readonly
-		 * @member {Map} engine.treeView.TreeView#viewRoots
+		 * @member {Map} engine.treeView.Document#viewRoots
 		 */
 		this.viewRoots = new Map();
 
 		/**
-		 * Instance of the {@link engine.treeView.TreeView#renderer renderer}.
+		 * Instance of the {@link engine.treeView.Document#renderer renderer}.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.Renderer} engine.treeView.TreeView#renderer
+		 * @member {engine.treeView.Renderer} engine.treeView.Document#renderer
 		 */
 		this.renderer = new Renderer( this.domConverter, this.selection );
 
@@ -84,7 +84,7 @@ export default class TreeView {
 		 * Map of registered {@link engine.treeView.Observer observers}.
 		 *
 		 * @private
-		 * @member {Map.<Function, engine.treeView.Observer>} engine.treeView.TreeView_#observers
+		 * @member {Map.<Function, engine.treeView.Observer>} engine.treeView.Document_#observers
 		 */
 		this._observers = new Map();
 
@@ -94,7 +94,7 @@ export default class TreeView {
 	/**
 	 * Creates observer of the given type if not yet created, {@link engine.treeView.Observer#enable enables} it
 	 * and {@link engine.treeView.observer.Observer#observe attaches} to all existing and future
-	 * {@link engine.treeView.TreeView#domRoots DOM roots}.
+	 * {@link engine.treeView.Document#domRoots DOM roots}.
 	 *
 	 * Note: Observers are recognized by their constructor (classes). A single observer will be instantiated and used only
 	 * when registered for the first time. This means that features and other components can register a single observer
@@ -135,12 +135,12 @@ export default class TreeView {
 	}
 
 	/**
-	 * Creates a root for the HTMLElement. It adds elements to {@link engine.treeView.TreeView#domRoots} and
-	 * {@link engine.treeView.TreeView#viewRoots}.
+	 * Creates a root for the HTMLElement. It adds elements to {@link engine.treeView.Document#domRoots} and
+	 * {@link engine.treeView.Document#viewRoots}.
 	 *
 	 * The constructor copies the element name and attributes to create the
 	 * root of the view, but does not copy its children. This means that while
-	 * {@link engine.treeView.TreeView#render rendering}, the whole content of this
+	 * {@link engine.treeView.Document#render rendering}, the whole content of this
 	 * root element will be removed but the root name and attributes will be preserved.
 	 *
 	 * @param {HTMLElement} domRoot DOM element in which the tree view should do change.
@@ -149,7 +149,7 @@ export default class TreeView {
 	 */
 	createRoot( domRoot, name = 'main' ) {
 		const viewRoot = this.domConverter.domToView( domRoot, { bind: true, withChildren: false } );
-		viewRoot.setTreeView( this );
+		viewRoot.setDocument( this );
 
 		// Mark changed nodes in the renderer.
 		viewRoot.on( 'change', ( evt, type, node ) => {
@@ -168,7 +168,7 @@ export default class TreeView {
 	}
 
 	/**
-	 * Get a {@link engine.treeView.TreeView#viewRoots view root element} with the specified name. If the name is not
+	 * Get a {@link engine.treeView.Document#viewRoots view root element} with the specified name. If the name is not
 	 * specific "main" root is returned.
 	 *
 	 * @param {String} [name='main']  Name of the root.
@@ -195,7 +195,7 @@ export default class TreeView {
 	}
 }
 
-mix( TreeView, EmitterMixin );
+mix( Document, EmitterMixin );
 
 /**
  * Enum representing type of the change.

+ 1 - 1
packages/ckeditor5-engine/src/treeview/domconverter.js

@@ -20,7 +20,7 @@ import indexOf from '../../utils/dom/indexof.js';
  * {@link engine.treeView.DomConverter#bindElements binding} these nodes.
  *
  * DomConverter does not check which nodes should be rendered (use {@link engine.treeView.Renderer}), does not keep a
- * state of a tree nor keeps synchronization between tree view and DOM tree (use {@link engine.treeView.TreeView}).
+ * state of a tree nor keeps synchronization between tree view and DOM tree (use {@link engine.treeView.Document}).
  *
  * DomConverter keeps DOM elements to View element bindings, so when the converter will be destroyed, the binding will
  * be lost. Two converters will keep separate binding maps, so one tree view can be bound with two DOM trees.

+ 3 - 3
packages/ckeditor5-engine/src/treeview/filler.js

@@ -149,10 +149,10 @@ export function isBlockFiller( domNode, blockFiller ) {
  * Assign key observer which move cursor from the end of the inline filler to the begging of it when
  * the left arrow is pressed, so the filler does not break navigation.
  *
- * @param {engine.treeView.TreeView} treeView TreeView instance we should inject quirks handling on.
+ * @param {engine.treeView.Document} document Document instance we should inject quirks handling on.
  */
-export function injectQuirksHandling( treeView ) {
-	treeView.on( 'keydown', jumpOverInlineFiller );
+export function injectQuirksHandling( document ) {
+	document.on( 'keydown', jumpOverInlineFiller );
 }
 
 // Move cursor from the end of the inline filler to the begging of it when, so the filler does not break navigation.

+ 15 - 15
packages/ckeditor5-engine/src/treeview/node.js

@@ -31,12 +31,12 @@ export default class Node {
 		this.parent = null;
 
 		/**
-		 * {@link engine.treeView.TreeView} reference.
+		 * {@link engine.treeView.Document} reference.
 		 *
 		 * @protected
-		 * @member {engine.treeView.TreeView} engine.treeView.Node#_treeView
+		 * @member {engine.treeView.Document} engine.treeView.Node#_document
 		 */
-		this._treeView = null;
+		this._document = null;
 	}
 
 	/**
@@ -89,17 +89,17 @@ export default class Node {
 	}
 
 	/**
-	 * Gets {@link engine.treeView.TreeView} reference. If the node has {@link engine.treeView.TreeView}, assign by
-	 * {@link engine.treeView.Node#setTreeView} it will be returned. Otherwise {@link engine.treeView.TreeView} of the parents node
+	 * Gets {@link engine.treeView.Document} reference. If the node has {@link engine.treeView.Document}, assign by
+	 * {@link engine.treeView.Node#setDocument} it will be returned. Otherwise {@link engine.treeView.Document} of the parents node
 	 * will be returned. If node has no parent, `null` will be returned.
 	 *
-	 * @returns {engine.treeView.TreeView|null} Tree view of the node, tree view of the parent or null.
+	 * @returns {engine.treeView.Document|null} Tree view of the node, tree view of the parent or null.
 	 */
-	getTreeView() {
-		if ( this._treeView ) {
-			return this._treeView;
+	getDocument() {
+		if ( this._document ) {
+			return this._document;
 		} else if ( this.parent ) {
-			return this.parent.getTreeView();
+			return this.parent.getDocument();
 		} else {
 			return null;
 		}
@@ -127,13 +127,13 @@ export default class Node {
 	}
 
 	/**
-	 * Sets the {@link engine.treeView.TreeView} of the node. Note that not all of nodes need to have {@link engine.treeView.TreeView}
-	 * assigned, see {@link engine.treeView.Node#getTreeView}.
+	 * Sets the {@link engine.treeView.Document} of the node. Note that not all of nodes need to have {@link engine.treeView.Document}
+	 * assigned, see {@link engine.treeView.Node#getDocument}.
 	 *
-	 * @param {engine.treeView.TreeView} treeView Tree view.
+	 * @param {engine.treeView.Document} document Document.
 	 */
-	setTreeView( treeView ) {
-		this._treeView = treeView;
+	setDocument( document ) {
+		this._document = document;
 	}
 
 	/**

+ 7 - 7
packages/ckeditor5-engine/src/treeview/observer/domeventdata.js

@@ -8,7 +8,7 @@
 import extend from '../../../utils/lib/lodash/extend.js';
 
 /**
- * Information about a DOM event in context of the {@link engine.treeView.TreeView}.
+ * Information about a DOM event in context of the {@link engine.treeView.Document}.
  * It wraps the native event, which usually should not be used as the wrapper contains
  * additional data (like key code for keyboard events).
  *
@@ -16,18 +16,18 @@ import extend from '../../../utils/lib/lodash/extend.js';
  */
 export default class DomEventData {
 	/**
-	 * @param {engine.treeView.TreeView} treeView The instance of the tree view.
+	 * @param {engine.treeView.Document} document The instance of the tree view Document.
 	 * @param {Event} domEvent The DOM event.
 	 * @param {Object} [additionalData] Additional properties that the instance should contain.
 	 */
-	constructor( treeView, domEvent, additionalData ) {
+	constructor( document, domEvent, additionalData ) {
 		/**
-		 * The instance of the tree view.
+		 * The instance of the document.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.TreeView} engine.treeView.observer.DomEvent#treeView
+		 * @member {engine.treeView.Document} engine.treeView.observer.DomEvent#treeView
 		 */
-		this.treeView = treeView;
+		this.document = document;
 
 		/**
 		 * The DOM event.
@@ -55,7 +55,7 @@ export default class DomEventData {
 	 * @type engine.treeView.Element
 	 */
 	get target() {
-		return this.treeView.domConverter.getCorrespondingViewElement( this.domTarget );
+		return this.document.domConverter.getCorrespondingViewElement( this.domTarget );
 	}
 
 	/**

+ 3 - 3
packages/ckeditor5-engine/src/treeview/observer/domeventobserver.js

@@ -63,10 +63,10 @@ export default class DomEventObserver extends Observer {
 	}
 
 	/**
-	 * Calls {@link engine.treeView.TreeView#fire} if observer
+	 * Calls {@link engine.treeView.Document#fire} if observer
 	 * {@link engine.treeView.observer.DomEventObserver#isEnabled is enabled}.
 	 *
-	 * @see engine.treeView.TreeView#fire
+	 * @see engine.treeView.Document#fire
 	 * @param {String} eventType The event type (name).
 	 * @param {Event} domEvent The DOM event.
 	 * @param {Object} [additionalData] The additional data which should extend the
@@ -74,7 +74,7 @@ export default class DomEventObserver extends Observer {
 	 */
 	fire( eventType, domEvent, additionalData ) {
 		if ( this.isEnabled ) {
-			this.treeView.fire( eventType, new DomEventData( this.treeView, domEvent, additionalData ) );
+			this.document.fire( eventType, new DomEventData( this.document, domEvent, additionalData ) );
 		}
 	}
 }

+ 5 - 5
packages/ckeditor5-engine/src/treeview/observer/focusobserver.js

@@ -8,14 +8,14 @@
 import DomEventObserver from './domeventobserver.js';
 
 /**
- * {@link engine.treeView.TreeView#focus Focus} and {@link engine.treeView.TreeView#blur blur} events observer.
+ * {@link engine.treeView.Document#focus Focus} and {@link engine.treeView.Document#blur blur} events observer.
  *
  * @memberOf engine.treeView.observer
  * @extends engine.treeView.observer.DomEventObserver
  */
 export default class FocusObserver extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		this.domEventType = [ 'focus', 'blur' ];
 	}
@@ -28,13 +28,13 @@ export default class FocusObserver extends DomEventObserver {
 /**
  * Fired when one of the editables gets focus.
  *
- * @event engine.treeView.TreeView#focus
+ * @event engine.treeView.Document#focus
  * @param {engine.treeView.observer.DomEventData} data Event data.
  */
 
 /**
  * Fired when one of the editables loses focus.
  *
- * @event engine.treeView.TreeView#blur
+ * @event engine.treeView.Document#blur
  * @param {engine.treeView.observer.DomEventData} data Event data.
  */

+ 5 - 5
packages/ckeditor5-engine/src/treeview/observer/keyobserver.js

@@ -9,14 +9,14 @@ import DomEventObserver from './domeventobserver.js';
 import { getCode } from '../../../utils/keyboard.js';
 
 /**
- * {@link engine.treeView.TreeView#keydown Key down} event observer.
+ * {@link engine.treeView.Document#keydown Key down} event observer.
  *
  * @memberOf engine.treeView.observer
  * @extends engine.treeView.observer.DomEventObserver
  */
 export default class KeyObserver extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		this.domEventType = 'keydown';
 	}
@@ -39,12 +39,12 @@ export default class KeyObserver extends DomEventObserver {
 /**
  * Fired when a key has been pressed.
  *
- * @event engine.treeView.TreeView#keydown
+ * @event engine.treeView.Document#keydown
  * @param {engine.treeView.observer.keyObserver.KeyEventData} keyEventData
  */
 
 /**
- * The value of the {@link engine.treeView.TreeView#keydown} event.
+ * The value of the {@link engine.treeView.Document#keydown} event.
  *
  * @class engine.treeView.observer.keyObserver.KeyEventData
  * @extends engine.treeView.observer.DomEventData

+ 18 - 18
packages/ckeditor5-engine/src/treeview/observer/mutationobserver.js

@@ -9,22 +9,22 @@ import Observer from './observer.js';
 import { startsWithFiller, getDataWithoutFiller } from '../filler.js';
 
 /**
- * Mutation observer class observes changes in the DOM, fires {@link engine.treeView.TreeView#mutations} event, mark view elements
+ * Mutation observer class observes changes in the DOM, fires {@link engine.treeView.Document#mutations} event, mark view elements
  * as changed and call {@link engine.treeView.render}. Because all mutated nodes are marked as "to be rendered" and the
  * {@link engine.treeView.render} is called, all changes will be reverted, unless the mutation will be handled by the
- * {@link engine.treeView.TreeView#mutations} event listener. It means user will see only handled changes, and the editor will
+ * {@link engine.treeView.Document#mutations} event listener. It means user will see only handled changes, and the editor will
  * block all changes which are not handled.
  *
  * Mutation Observer also take care of reducing number of mutations which are fired. It removes duplicates and
  * mutations on elements which do not have corresponding view elements. Also
- * {@link engine.treeView.TreeView.MutatatedText text mutation} is fired only if parent element do not change child list.
+ * {@link engine.treeView.Document.MutatatedText text mutation} is fired only if parent element do not change child list.
  *
  * @memberOf engine.treeView.observer
  * @extends engine.treeView.observer.Observer
  */
 export default class MutationObserver extends Observer {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		/**
 		 * Native mutation observer config.
@@ -40,18 +40,18 @@ export default class MutationObserver extends Observer {
 		};
 
 		/**
-		 * Reference to the {@link engine.treeView.TreeView#domConverter}.
+		 * Reference to the {@link engine.treeView.Document#domConverter}.
 		 *
 		 * @member {engine.treeView.DomConverter} engine.treeView.observer.MutationObserver#domConverter
 		 */
-		this.domConverter = treeView.domConverter;
+		this.domConverter = document.domConverter;
 
 		/**
-		 * Reference to the {@link engine.treeView.TreeView#renderer}.
+		 * Reference to the {@link engine.treeView.Document#renderer}.
 		 *
 		 * @member {engine.treeView.Renderer} engine.treeView.observer.MutationObserver#renderer
 		 */
-		this.renderer = treeView.renderer;
+		this.renderer = document.renderer;
 
 		/**
 		 * Observed DOM elements.
@@ -71,7 +71,7 @@ export default class MutationObserver extends Observer {
 	}
 
 	/**
-	 * Synchronously fires {@link engine.treeView.TreeView#mutations} event with all mutations in record queue.
+	 * Synchronously fires {@link engine.treeView.Document#mutations} event with all mutations in record queue.
 	 * At the same time empties the queue so mutations will not be fired twice.
 	 *
 	 * @returns {[type]} [description]
@@ -191,9 +191,9 @@ export default class MutationObserver extends Observer {
 			} );
 		}
 
-		this.treeView.fire( 'mutations', viewMutations );
+		this.document.fire( 'mutations', viewMutations );
 
-		this.treeView.render();
+		this.document.render();
 	}
 }
 
@@ -201,17 +201,17 @@ export default class MutationObserver extends Observer {
  * Fired when mutation occurred. If tree view is not changed on this event, DOM will be reverter to the state before
  * mutation, so all changes which should be applied, should be handled on this event.
  *
- * @event engine.treeView.TreeView#mutations
- * @param {Array.<engine.treeView.TreeView~MutatatedText|engine.treeView.TreeView~MutatatedChildren>} viewMutations
+ * @event engine.treeView.Document#mutations
+ * @param {Array.<engine.treeView.Document~MutatatedText|engine.treeView.Document~MutatatedChildren>} viewMutations
  * Array of mutations.
- * For mutated texts it will be {@link engine.treeView.TreeView~MutatatedText} and for mutated elements it will be
- * {@link engine.treeView.TreeView~MutatatedElement}. You can recognize the type based on the `type` property.
+ * For mutated texts it will be {@link engine.treeView.Document~MutatatedText} and for mutated elements it will be
+ * {@link engine.treeView.Document~MutatatedElement}. You can recognize the type based on the `type` property.
  */
 
 /**
  * Mutation item for text.
  *
- * @see engine.treeView.TreeView#mutations
+ * @see engine.treeView.Document#mutations
  * @see engine.treeView.MutatatedChildren
  *
  * @typedef {Object} engine.treeView.MutatatedText
@@ -225,7 +225,7 @@ export default class MutationObserver extends Observer {
 /**
  * Mutation item for child nodes.
  *
- * @see engine.treeView.TreeView#mutations
+ * @see engine.treeView.Document#mutations
  * @see engine.treeView.MutatatedText
  *
  * @typedef {Object} engine.treeView.MutatatedChildren

+ 8 - 8
packages/ckeditor5-engine/src/treeview/observer/observer.js

@@ -7,7 +7,7 @@
 
 /**
  * Abstract base observer class. Observers are classes which observe changes on DOM elements, do the preliminary
- * processing and fire events on the {@link engine.treeView.TreeView} objects.
+ * processing and fire events on the {@link engine.treeView.Document} objects.
  *
  * @abstract
  * @memberOf engine.treeView.observer
@@ -16,16 +16,16 @@ export default class Observer {
 	/**
 	 * Creates an instance of the observer.
 	 *
-	 * @param {engine.treeView.TreeView} treeView
+	 * @param {engine.treeView.Document} document
 	 */
-	constructor( treeView ) {
+	constructor( document ) {
 		/**
-		 * Reference to the {@link engine.treeView.TreeView} object.
+		 * Reference to the {@link engine.treeView.Document} object.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.TreeView} engine.treeView.observer.Observer#treeView
+		 * @member {engine.treeView.Document} engine.treeView.observer.Observer#document
 		 */
-		this.treeView = treeView;
+		this.document = document;
 
 		/**
 		 * State of the observer. If it is disabled events will not be fired.
@@ -38,7 +38,7 @@ export default class Observer {
 
 	/**
 	 * Enables the observer. This method is called when then observer is registered to the
-	 * {@link engine.treeView.TreeView} and after {@link engine.treeView.TreeView#render rendering}
+	 * {@link engine.treeView.Document} and after {@link engine.treeView.Document#render rendering}
 	 * (all observers are {@link engine.treeView.observer.Observer#disable disabled} before rendering).
 	 *
 	 * A typical use case for disabling observers is that mutation observers need to be disabled for the rendering.
@@ -52,7 +52,7 @@ export default class Observer {
 
 	/**
 	 * Disables the observer. This method is called before
-	 * {@link engine.treeView.TreeView#render rendering} to prevent firing events during rendering.
+	 * {@link engine.treeView.Document#render rendering} to prevent firing events during rendering.
 	 *
 	 * @see engine.treeView.observer.Observer#enable
 	 */

+ 18 - 18
packages/ckeditor5-engine/src/treeview/observer/selectionobserver.js

@@ -11,8 +11,8 @@ import MutationObserver from './mutationobserver.js';
 /**
  * Selection observer class observes selection changes in the document. If selection changes on the document this
  * observer checks if there are any mutations and if DOM selection is different than the
- * {@link engine.treeView.TreeView#selection view selection}. Selection observer fires
- * {@link engine.treeView.TreeView#selectionChange} event only if selection change was the only change in the document
+ * {@link engine.treeView.Document#selection view selection}. Selection observer fires
+ * {@link engine.treeView.Document#selectionChange} event only if selection change was the only change in the document
  * and DOM selection is different then the view selection.
  *
  * @see engine.treeView.MutationObserver
@@ -20,42 +20,42 @@ import MutationObserver from './mutationobserver.js';
  * @extends engine.treeView.observer.Observer
  */
 export default class SelectionObserver extends Observer {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		/**
 		 * Instance of the mutation observer. Selection observer calls
 		 * {@link engine.treeView.observer.MutationObserver#flush} to ensure that the mutations will be handled before the
-		 * {@link engine.treeView.TreeView#selectionChange} event is fired.
+		 * {@link engine.treeView.Document#selectionChange} event is fired.
 		 *
 		 * @readonly
 		 * @member {engine.treeView.observer.MutationObserver} engine.treeView.observer.SelectionObserver#mutationObserver
 		 */
-		this.mutationObserver = treeView.getObserver( MutationObserver );
+		this.mutationObserver = document.getObserver( MutationObserver );
 
 		/**
-		 * Reference to the {@link engine.treeView.TreeView} object.
+		 * Reference to the {@link engine.treeView.Document} object.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.TreeView} engine.treeView.observer.SelectionObserver#treeView
+		 * @member {engine.treeView.Document} engine.treeView.observer.SelectionObserver#document
 		 */
-		this.treeView = treeView;
+		this.document = document;
 
 		/**
 		 * Reference to the TreeView {@link engine.treeView.Selection} object used to compare new selection with it.
 		 *
 		 * @readonly
-		 * @member {engine.treeView.TreeView} engine.treeView.observer.SelectionObserver#selection
+		 * @member {engine.treeView.Document} engine.treeView.observer.SelectionObserver#selection
 		 */
-		this.selection = treeView.selection;
+		this.selection = document.selection;
 
 		/**
-		 * Reference to the {@link engine.treeView.TreeView#domConverter}.
+		 * Reference to the {@link engine.treeView.Document#domConverter}.
 		 *
 		 * @readonly
 		 * @member {engine.treeView.DomConverter} engine.treeView.observer.SelectionObserver#domConverter
 		 */
-		this.domConverter = treeView.domConverter;
+		this.domConverter = document.domConverter;
 
 		/**
 		 * Set of documents which have added "selectionchange" listener to avoid adding listener twice to the same
@@ -85,7 +85,7 @@ export default class SelectionObserver extends Observer {
 
 	/**
 	 * Selection change listener. {@link engine.treeView.observer.MutationObserver#flush Flush} mutations, check if
-	 * selection changes and fires {@link engine.treeView.TreeView#selectionChange} event.
+	 * selection changes and fires {@link engine.treeView.Document#selectionChange} event.
 	 *
 	 * @private
 	 * @param {Document} domDocument DOM document.
@@ -108,13 +108,13 @@ export default class SelectionObserver extends Observer {
 		}
 
 		// Should be fired only when selection change was the only document change.
-		this.treeView.fire( 'selectionChange', {
+		this.document.fire( 'selectionChange', {
 			oldSelection: this.selection,
 			newSelection: newViewSelection,
 			domSelection: domSelection
 		} );
 
-		this.treeView.render();
+		this.document.render();
 	}
 }
 
@@ -122,10 +122,10 @@ export default class SelectionObserver extends Observer {
  * Fired when selection has changed. This event is fired only when the selection change was the only change that happened
  * in the document, and old selection is different then the new selection.
  *
- * @event engine.treeView.TreeView#selectionChange
+ * @event engine.treeView.Document#selectionChange
  * @param {Object} data
  * @param {engine.treeView.Selection} data.oldSelection Old View selection which is
- * {@link engine.treeView.TreeView#selection}.
+ * {@link engine.treeView.Document#selection}.
  * @param {engine.treeView.Selection} data.newSelection New View selection which is converted DOM selection.
  * @param {Selection} data.domSelection Native DOM selection.
  */

+ 19 - 19
packages/ckeditor5-engine/tests/_utils-tests/view.js

@@ -14,7 +14,7 @@ import ContainerElement from '/ckeditor5/engine/treeview/containerelement.js';
 import Text from '/ckeditor5/engine/treeview/text.js';
 import Selection from '/ckeditor5/engine/treeview/selection.js';
 import Range from '/ckeditor5/engine/treeview/range.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 
 describe( 'view test utils', () => {
 	describe( 'getData, setData', () => {
@@ -32,12 +32,12 @@ describe( 'view test utils', () => {
 			it( 'should use stringify method', () => {
 				const element = document.createElement( 'div' );
 				const stringifySpy = sandbox.spy( getData, '_stringify' );
-				const treeView = new TreeView();
+				const viewDocument = new Document();
 				const options = { showType: false, showPriority: false, withoutSelection: true };
-				const root = treeView.createRoot( element );
+				const root = viewDocument.createRoot( element );
 				root.appendChildren( new Element( 'p' ) );
 
-				expect( getData( treeView, options ) ).to.equal( '<p></p>' );
+				expect( getData( viewDocument, options ) ).to.equal( '<p></p>' );
 				sinon.assert.calledOnce( stringifySpy );
 				expect( stringifySpy.firstCall.args[ 0 ] ).to.equal( root );
 				expect( stringifySpy.firstCall.args[ 1 ] ).to.equal( null );
@@ -50,17 +50,17 @@ describe( 'view test utils', () => {
 			it( 'should use stringify method with selection', () => {
 				const element = document.createElement( 'div' );
 				const stringifySpy = sandbox.spy( getData, '_stringify' );
-				const treeView = new TreeView();
+				const viewDocument = new Document();
 				const options = { showType: false, showPriority: false };
-				const root = treeView.createRoot( element );
+				const root = viewDocument.createRoot( element );
 				root.appendChildren( new Element( 'p' ) );
 
-				treeView.selection.addRange( Range.createFromParentsAndOffsets( root, 0, root, 1 ) );
+				viewDocument.selection.addRange( Range.createFromParentsAndOffsets( root, 0, root, 1 ) );
 
-				expect( getData( treeView, options ) ).to.equal( '[<p></p>]' );
+				expect( getData( viewDocument, options ) ).to.equal( '[<p></p>]' );
 				sinon.assert.calledOnce( stringifySpy );
 				expect( stringifySpy.firstCall.args[ 0 ] ).to.equal( root );
-				expect( stringifySpy.firstCall.args[ 1 ] ).to.equal( treeView.selection );
+				expect( stringifySpy.firstCall.args[ 1 ] ).to.equal( viewDocument.selection );
 				const stringifyOptions = stringifySpy.firstCall.args[ 2 ];
 				expect( stringifyOptions ).to.have.property( 'showType' ).that.equals( false );
 				expect( stringifyOptions ).to.have.property( 'showPriority' ).that.equals( false );
@@ -70,34 +70,34 @@ describe( 'view test utils', () => {
 
 		describe( 'setData', () => {
 			it( 'should use parse method', () => {
-				const treeView = new TreeView();
+				const viewDocument = new Document();
 				const data = 'foobar<b>baz</b>';
 				const parseSpy = sandbox.spy( setData, '_parse' );
 
-				treeView.createRoot( document.createElement( 'div' ) );
-				setData( treeView, data );
+				viewDocument.createRoot( document.createElement( 'div' ) );
+				setData( viewDocument, data );
 
-				expect( getData( treeView ) ).to.equal( 'foobar<b>baz</b>' );
+				expect( getData( viewDocument ) ).to.equal( 'foobar<b>baz</b>' );
 				sinon.assert.calledOnce( parseSpy );
 				const args = parseSpy.firstCall.args;
 				expect( args[ 0 ] ).to.equal( data );
 				expect( args[ 1 ] ).to.be.an( 'object' );
-				expect( args[ 1 ].rootElement ).to.equal( treeView.getRoot() );
+				expect( args[ 1 ].rootElement ).to.equal( viewDocument.getRoot() );
 			} );
 
 			it( 'should use parse method with selection', () => {
-				const treeView = new TreeView();
+				const viewDocument = new Document();
 				const data = '[<b>baz</b>]';
 				const parseSpy = sandbox.spy( setData, '_parse' );
 
-				treeView.createRoot( document.createElement( 'div' ) );
-				setData( treeView, data );
+				viewDocument.createRoot( document.createElement( 'div' ) );
+				setData( viewDocument, data );
 
-				expect( getData( treeView ) ).to.equal( '[<b>baz</b>]' );
+				expect( getData( viewDocument ) ).to.equal( '[<b>baz</b>]' );
 				const args = parseSpy.firstCall.args;
 				expect( args[ 0 ] ).to.equal( data );
 				expect( args[ 1 ] ).to.be.an( 'object' );
-				expect( args[ 1 ].rootElement ).to.equal( treeView.getRoot() );
+				expect( args[ 1 ].rootElement ).to.equal( viewDocument.getRoot() );
 			} );
 		} );
 	} );

+ 12 - 12
packages/ckeditor5-engine/tests/_utils/view.js

@@ -24,9 +24,9 @@ const TEXT_RANGE_START_TOKEN = '{';
 const TEXT_RANGE_END_TOKEN = '}';
 
 /**
- * Writes the contents of the {@link engine.treeView.TreeView TreeView} to an HTML-like string.
+ * Writes the contents of the {@link engine.treeView.Document Document} to an HTML-like string.
  *
- * @param {engine.treeView.TreeView} treeView
+ * @param {engine.treeView.Document} document
  * @param {Object} [options]
  * @param {Boolean} [options.withoutSelection=false] Whether to write the selection. When set to `true` selection will
  * be not included in returned string.
@@ -38,10 +38,10 @@ const TEXT_RANGE_END_TOKEN = '}';
  * (`<span:12>`, `<b:10>`).
  * @returns {String} The stringified data.
  */
-export function getData( treeView, options = {} ) {
+export function getData( document, options = {} ) {
 	const withoutSelection = !!options.withoutSelection;
 	const rootName = options.rootName || 'main';
-	const root = treeView.getRoot( rootName );
+	const root = document.getRoot( rootName );
 	const stringifyOptions = {
 		showType: options.showType,
 		showPriority: options.showPriority,
@@ -50,28 +50,28 @@ export function getData( treeView, options = {} ) {
 
 	return withoutSelection ?
 		getData._stringify( root, null, stringifyOptions ) :
-		getData._stringify( root, treeView.selection, stringifyOptions );
+		getData._stringify( root, document.selection, stringifyOptions );
 }
 
 // Set stringify as getData private method - needed for testing/spying.
 getData._stringify = stringify;
 
 /**
- * Sets the contents of the {@link engine.treeView.TreeView TreeView} provided as HTML-like string.
+ * Sets the contents of the {@link engine.treeView.Document Document} provided as HTML-like string.
  *
- * @param {engine.treeView.TreeView} treeView
- * @param {String} data HTML-like string to write into TreeView.
+ * @param {engine.treeView.Document} document
+ * @param {String} data HTML-like string to write into Document.
  * @param {Object} options
  * @param {String} [rootName] Root name where parsed data will be stored. If not provided, default `main` name will be
  * used.
  */
-export function setData( treeView, data, options = {} ) {
+export function setData( document, data, options = {} ) {
 	const rootName = options.rootName || 'main';
-	const root = treeView.getRoot( rootName );
+	const root = document.getRoot( rootName );
 	const result = setData._parse( data, { rootElement: root } );
 
 	if ( result.view && result.selection ) {
-		treeView.selection.setTo( result.selection );
+		document.selection.setTo( result.selection );
 	}
 }
 
@@ -170,7 +170,7 @@ setData._parse = parse;
  * @param {Boolean} [options.showPriority=false] When set to `true` AttributeElement's priority will be printed
  * (`<span:12>`, `<b:10>`).
  * @param {Boolean} [options.ignoreRoot=false] When set to `true` root's element opening and closing will not be printed.
- * Mainly used by `getData` function to ignore {@link engine.treeView.TreeView TreeView's} root element.
+ * Mainly used by `getData` function to ignore {@link engine.treeView.Document Document's} root element.
  * @returns {String} HTML-like string representing the view.
  */
 export function stringify( node, selectionOrPositionOrRange = null, options = {} ) {

+ 11 - 11
packages/ckeditor5-engine/tests/treeview/manual/clickobserver.js

@@ -7,15 +7,15 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import DomEventObserver from '/ckeditor5/engine/treeview/observer/domeventobserver.js';
 
-const treeView = new TreeView();
+const viewDocument = new Document();
 let observer1, observer2;
 
 class ClickObserver1 extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( viewDocument ) {
+		super( viewDocument );
 
 		this.id = 1;
 		this.domEventType = 'click';
@@ -28,8 +28,8 @@ class ClickObserver1 extends DomEventObserver {
 }
 
 class ClickObserver2 extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( viewDocument ) {
+		super( viewDocument );
 
 		this.id = 2;
 		this.domEventType = 'click';
@@ -41,15 +41,15 @@ class ClickObserver2 extends DomEventObserver {
 	}
 }
 
-treeView.on( 'click', ( evt, eventId, elementId ) => console.log( 'click', eventId, elementId ) );
+viewDocument.on( 'click', ( evt, eventId, elementId ) => console.log( 'click', eventId, elementId ) );
 document.getElementById( 'enable1' ).addEventListener( 'click', () => observer1.enable() );
 document.getElementById( 'disable1' ).addEventListener( 'click', () => observer1.disable() );
 
 // Random order.
-treeView.addObserver( ClickObserver1 );
+viewDocument.addObserver( ClickObserver1 );
 
-treeView.createRoot( document.getElementById( 'clickerA' ), 'clickerA' );
+viewDocument.createRoot( document.getElementById( 'clickerA' ), 'clickerA' );
 
-treeView.addObserver( ClickObserver2 );
+viewDocument.addObserver( ClickObserver2 );
 
-treeView.createRoot( document.getElementById( 'clickerB' ), 'clickerB' );
+viewDocument.createRoot( document.getElementById( 'clickerB' ), 'clickerB' );

+ 7 - 7
packages/ckeditor5-engine/tests/treeview/manual/focusobserver.js

@@ -7,15 +7,15 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import FocusObserver from '/ckeditor5/engine/treeview/observer/focusobserver.js';
 
-const treeView = new TreeView();
+const viewDocument = new Document();
 
-treeView.on( 'focus', ( evt, data ) => console.log( 'focus', data.domTarget ) );
-treeView.on( 'blur', ( evt, data ) => console.log( 'blur', data.domTarget ) );
+viewDocument.on( 'focus', ( evt, data ) => console.log( 'focus', data.domTarget ) );
+viewDocument.on( 'blur', ( evt, data ) => console.log( 'blur', data.domTarget ) );
 
-treeView.addObserver( FocusObserver );
+viewDocument.addObserver( FocusObserver );
 
-treeView.createRoot( document.getElementById( 'editable1' ), 'editable1' );
-treeView.createRoot( document.getElementById( 'editable2' ), 'editable2' );
+viewDocument.createRoot( document.getElementById( 'editable1' ), 'editable1' );
+viewDocument.createRoot( document.getElementById( 'editable2' ), 'editable2' );

+ 8 - 8
packages/ckeditor5-engine/tests/treeview/manual/immutable.js

@@ -5,23 +5,23 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import SelectionObserver from '/ckeditor5/engine/treeview/observer/selectionobserver.js';
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
 import { setData } from '/tests/engine/_utils/view.js';
 
-const treeView = new TreeView();
-treeView.createRoot( document.getElementById( 'editor' ) );
+const viewDocument = new Document();
+viewDocument.createRoot( document.getElementById( 'editor' ) );
 
-treeView.addObserver( MutationObserver );
-treeView.addObserver( SelectionObserver );
-treeView.addObserver( KeyObserver );
+viewDocument.addObserver( MutationObserver );
+viewDocument.addObserver( SelectionObserver );
+viewDocument.addObserver( KeyObserver );
 
-setData( treeView,
+setData( viewDocument,
 	'<container:p><attribute:strong>foo</attribute:strong>[]<attribute:strong>bar</attribute:strong></container:p>' +
 	'<container:p></container:p>' +
 	'<container:p><attribute:strong></attribute:strong></container:p>' +
 	'<container:p>bom</container:p>' );
 
-treeView.render();
+viewDocument.render();

+ 10 - 10
packages/ckeditor5-engine/tests/treeview/manual/inline-filler.js

@@ -5,24 +5,24 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import SelectionObserver from '/ckeditor5/engine/treeview/observer/selectionobserver.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
 import { setData } from '/tests/engine/_utils/view.js';
 
-const treeView = new TreeView();
-treeView.createRoot( document.getElementById( 'editor' ) );
+const viewDocument = new Document();
+viewDocument.createRoot( document.getElementById( 'editor' ) );
 
-treeView.addObserver( MutationObserver );
-treeView.addObserver( SelectionObserver );
-treeView.addObserver( KeyObserver );
+viewDocument.addObserver( MutationObserver );
+viewDocument.addObserver( SelectionObserver );
+viewDocument.addObserver( KeyObserver );
 
-setData( treeView,
+setData( viewDocument,
 	'<container:p><attribute:strong>foo</attribute:strong>[]<attribute:strong>bar</attribute:strong></container:p>' );
 
-treeView.on( 'selectionChange', ( evt, data ) => {
-	treeView.selection.setTo( data.newSelection );
+viewDocument.on( 'selectionChange', ( evt, data ) => {
+	viewDocument.selection.setTo( data.newSelection );
 } );
 
-treeView.render();
+viewDocument.render();

+ 5 - 5
packages/ckeditor5-engine/tests/treeview/manual/keyobserver.js

@@ -7,13 +7,13 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
 
-const treeView = new TreeView();
+const viewDocument = new Document();
 
-treeView.on( 'keydown', ( evt, data ) => console.log( 'keydown', data ) );
+viewDocument.on( 'keydown', ( evt, data ) => console.log( 'keydown', data ) );
 
-treeView.addObserver( KeyObserver );
+viewDocument.addObserver( KeyObserver );
 
-treeView.createRoot( document.getElementById( 'editable' ), 'editable' );
+viewDocument.createRoot( document.getElementById( 'editable' ), 'editable' );

+ 7 - 7
packages/ckeditor5-engine/tests/treeview/manual/mutationobserver.js

@@ -7,19 +7,19 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import { setData } from '/tests/engine/_utils/view.js';
 
-const treeView = new TreeView();
-treeView.createRoot( document.getElementById( 'editor' ) );
+const viewDocument = new Document();
+viewDocument.createRoot( document.getElementById( 'editor' ) );
 
-treeView.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
+viewDocument.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
 
-treeView.addObserver( MutationObserver );
+viewDocument.addObserver( MutationObserver );
 
-setData( treeView,
+setData( viewDocument,
 	'<container:p>foo</container:p>' +
 	'<container:p>bar</container:p>' );
 
-treeView.render();
+viewDocument.render();

+ 9 - 9
packages/ckeditor5-engine/tests/treeview/manual/selectionobserver.js

@@ -7,24 +7,24 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import SelectionObserver from '/ckeditor5/engine/treeview/observer/selectionobserver.js';
 import { setData } from '/tests/engine/_utils/view.js';
 
-const treeView = new TreeView();
-treeView.createRoot( document.getElementById( 'editor' ) );
+const viewDocument = new Document();
+viewDocument.createRoot( document.getElementById( 'editor' ) );
 
-treeView.addObserver( MutationObserver );
-treeView.addObserver( SelectionObserver );
+viewDocument.addObserver( MutationObserver );
+viewDocument.addObserver( SelectionObserver );
 
-setData( treeView,
+setData( viewDocument,
 	'<container:p><attribute:b>foo</attribute:b>bar</container:p>' +
 	'<container:p>bom</container:p>' );
 
-treeView.on( 'selectionChange', ( evt, data ) => {
+viewDocument.on( 'selectionChange', ( evt, data ) => {
 	console.log( data );
-	treeView.selection.setTo( data.newSelection );
+	viewDocument.selection.setTo( data.newSelection );
 } );
 
-treeView.render();
+viewDocument.render();

+ 9 - 9
packages/ckeditor5-engine/tests/treeview/manual/x-index.js

@@ -7,27 +7,27 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
 import SelectionObserver from '/ckeditor5/engine/treeview/observer/selectionobserver.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import { setData } from '/tests/engine/_utils/view.js';
 
-const treeView = new TreeView();
-treeView.createRoot( document.getElementById( 'editor' ) );
+const viewDocument = new Document();
+viewDocument.createRoot( document.getElementById( 'editor' ) );
 
-treeView.addObserver( MutationObserver );
-treeView.addObserver( SelectionObserver );
+viewDocument.addObserver( MutationObserver );
+viewDocument.addObserver( SelectionObserver );
 
-setData( treeView,
+setData( viewDocument,
 	'<container:p>fo{}o</container:p>' +
 	'<container:p></container:p>' +
 	'<container:p><attribute:strong></attribute:strong></container:p>' +
 	'<container:p>bar</container:p>' );
 
-treeView.on( 'selectionChange', ( evt, data ) => {
+viewDocument.on( 'selectionChange', ( evt, data ) => {
 	const node = data.newSelection.getFirstPosition().parent;
 	console.log( node.name ? node.name : node._data );
-	treeView.selection.setTo( data.newSelection );
+	viewDocument.selection.setTo( data.newSelection );
 } );
 
-treeView.render();
+viewDocument.render();

+ 9 - 9
packages/ckeditor5-engine/tests/treeview/node.js

@@ -128,31 +128,31 @@ describe( 'Node', () => {
 		} );
 	} );
 
-	describe( 'getTreeView', () => {
+	describe( 'getDocument', () => {
 		it( 'should return null if any parent has not set treeview', () => {
-			expect( charA.getTreeView() ).to.be.null;
+			expect( charA.getDocument() ).to.be.null;
 		} );
 
 		it( 'should return TreeView attached to the element', () => {
 			const tvMock = {};
 			const element = new Element( 'p' );
 
-			element.setTreeView( tvMock );
+			element.setDocument( tvMock );
 
-			expect( element.getTreeView() ).to.equal( tvMock );
+			expect( element.getDocument() ).to.equal( tvMock );
 		} );
 
-		it( 'should return TreeView attached to the parent element', () => {
-			const tvMock = {};
+		it( 'should return Document attached to the parent element', () => {
+			const docMock = {};
 			const parent = new Element( 'div' );
 			const child = new Element( 'p' );
 
 			child.parent = parent;
 
-			parent.setTreeView( tvMock );
+			parent.setDocument( docMock );
 
-			expect( parent.getTreeView() ).to.equal( tvMock );
-			expect( child.getTreeView() ).to.equal( tvMock );
+			expect( parent.getDocument() ).to.equal( docMock );
+			expect( child.getDocument() ).to.equal( docMock );
 		} );
 	} );
 

+ 9 - 9
packages/ckeditor5-engine/tests/treeview/observer/domeventdata.js

@@ -8,23 +8,23 @@
 'use strict';
 
 import DomEventData from '/ckeditor5/engine/treeview/observer/domeventdata.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 
 describe( 'DomEventData', () => {
-	let treeView, viewBody;
+	let viewDocument, viewBody;
 
 	beforeEach( () => {
-		treeView = new TreeView();
+		viewDocument = new ViewDocument();
 
-		viewBody = treeView.domConverter.domToView( document.body, { bind: true } );
+		viewBody = viewDocument.domConverter.domToView( document.body, { bind: true } );
 	} );
 
 	describe( 'constructor', () => {
 		it( 'sets properties', () => {
 			const domEvt = { target: document.body };
-			const data = new DomEventData( treeView, domEvt, { foo: 1, bar: true } );
+			const data = new DomEventData( viewDocument, domEvt, { foo: 1, bar: true } );
 
-			expect( data ).to.have.property( 'treeView', treeView );
+			expect( data ).to.have.property( 'document', viewDocument );
 			expect( data ).to.have.property( 'domEvent', domEvt );
 			expect( data ).to.have.property( 'domTarget', document.body );
 
@@ -36,7 +36,7 @@ describe( 'DomEventData', () => {
 	describe( 'target', () => {
 		it( 'returns bound element', () => {
 			const domEvt = { target: document.body };
-			const data = new DomEventData( treeView, domEvt );
+			const data = new DomEventData( viewDocument, domEvt );
 
 			expect( data ).to.have.property( 'target', viewBody );
 		} );
@@ -45,7 +45,7 @@ describe( 'DomEventData', () => {
 	describe( 'preventDefault', () => {
 		it( 'executes native preventDefault()', () => {
 			const domEvt = { target: document.body, preventDefault: sinon.spy() };
-			const data = new DomEventData( treeView, domEvt );
+			const data = new DomEventData( viewDocument, domEvt );
 
 			data.preventDefault();
 
@@ -56,7 +56,7 @@ describe( 'DomEventData', () => {
 	describe( 'stopPropagation', () => {
 		it( 'executes native stopPropagation()', () => {
 			const domEvt = { target: document.body, stopPropagation: sinon.spy() };
-			const data = new DomEventData( treeView, domEvt );
+			const data = new DomEventData( viewDocument, domEvt );
 
 			data.stopPropagation();
 

+ 24 - 24
packages/ckeditor5-engine/tests/treeview/observer/domeventobserver.js

@@ -9,11 +9,11 @@
 
 import DomEventObserver from '/ckeditor5/engine/treeview/observer/domeventobserver.js';
 import Observer from '/ckeditor5/engine/treeview/observer/observer.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 
 class ClickObserver extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		this.domEventType = 'click';
 	}
@@ -24,8 +24,8 @@ class ClickObserver extends DomEventObserver {
 }
 
 class MultiObserver extends DomEventObserver {
-	constructor( treeView ) {
-		super( treeView );
+	constructor( document ) {
+		super( document );
 
 		this.domEventType = [ 'evt1', 'evt2' ];
 	}
@@ -36,15 +36,15 @@ class MultiObserver extends DomEventObserver {
 }
 
 describe( 'DomEventObserver', () => {
-	let treeView;
+	let viewDocument;
 
 	beforeEach( () => {
-		treeView = new TreeView();
+		viewDocument = new ViewDocument();
 	} );
 
 	describe( 'constructor', () => {
 		it( 'should create Observer with properties', () => {
-			const observer = new DomEventObserver( treeView );
+			const observer = new DomEventObserver( viewDocument );
 
 			expect( observer ).to.be.an.instanceof( Observer );
 		} );
@@ -55,9 +55,9 @@ describe( 'DomEventObserver', () => {
 		const domEvent = new MouseEvent( 'click' );
 		const evtSpy = sinon.spy();
 
-		treeView.createRoot( domElement, 'root' );
-		treeView.addObserver( ClickObserver );
-		treeView.on( 'click', evtSpy );
+		viewDocument.createRoot( domElement, 'root' );
+		viewDocument.addObserver( ClickObserver );
+		viewDocument.on( 'click', evtSpy );
 
 		domElement.dispatchEvent( domEvent );
 
@@ -77,10 +77,10 @@ describe( 'DomEventObserver', () => {
 		const evtSpy1 = sinon.spy();
 		const evtSpy2 = sinon.spy();
 
-		treeView.createRoot( domElement, 'root' );
-		treeView.addObserver( MultiObserver );
-		treeView.on( 'evt1', evtSpy1 );
-		treeView.on( 'evt2', evtSpy2 );
+		viewDocument.createRoot( domElement, 'root' );
+		viewDocument.addObserver( MultiObserver );
+		viewDocument.on( 'evt1', evtSpy1 );
+		viewDocument.on( 'evt2', evtSpy2 );
 
 		domElement.dispatchEvent( domEvent1 );
 		expect( evtSpy1.calledOnce ).to.be.true;
@@ -94,9 +94,9 @@ describe( 'DomEventObserver', () => {
 		const domEvent = new MouseEvent( 'click' );
 		const evtSpy = sinon.spy();
 
-		treeView.createRoot( domElement, 'root' );
-		const testObserver = treeView.addObserver( ClickObserver );
-		treeView.on( 'click', evtSpy );
+		viewDocument.createRoot( domElement, 'root' );
+		const testObserver = viewDocument.addObserver( ClickObserver );
+		viewDocument.on( 'click', evtSpy );
 
 		testObserver.disable();
 
@@ -108,12 +108,12 @@ describe( 'DomEventObserver', () => {
 	it( 'should fire event if observer is disabled and re-enabled', () => {
 		const domElement = document.createElement( 'p' );
 		const domEvent = new MouseEvent( 'click' );
-		const treeView = new TreeView();
+		const viewDocument = new ViewDocument();
 		const evtSpy = sinon.spy();
 
-		treeView.createRoot( domElement, 'root' );
-		const testObserver = treeView.addObserver( ClickObserver );
-		treeView.on( 'click', evtSpy );
+		viewDocument.createRoot( domElement, 'root' );
+		const testObserver = viewDocument.addObserver( ClickObserver );
+		viewDocument.on( 'click', evtSpy );
 
 		testObserver.disable();
 
@@ -130,8 +130,8 @@ describe( 'DomEventObserver', () => {
 
 	describe( 'fire', () => {
 		it( 'should do nothing if observer is disabled', () => {
-			const testObserver = new ClickObserver( treeView );
-			const fireSpy = sinon.spy( treeView, 'fire' );
+			const testObserver = new ClickObserver( viewDocument );
+			const fireSpy = sinon.spy( viewDocument, 'fire' );
 
 			testObserver.disable();
 

+ 6 - 6
packages/ckeditor5-engine/tests/treeview/observer/focusobserver.js

@@ -8,14 +8,14 @@
 'use strict';
 
 import FocusObserver from '/ckeditor5/engine/treeview/observer/focusobserver.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 
 describe( 'FocusObserver', () => {
-	let treeView, observer;
+	let viewDocument, observer;
 
 	beforeEach( () => {
-		treeView = new TreeView();
-		observer = treeView.addObserver( FocusObserver );
+		viewDocument = new ViewDocument();
+		observer = viewDocument.addObserver( FocusObserver );
 	} );
 
 	it( 'should define domEventType', () => {
@@ -26,7 +26,7 @@ describe( 'FocusObserver', () => {
 		it( 'should fire focus with the right event data', () => {
 			const spy = sinon.spy();
 
-			treeView.on( 'focus', spy );
+			viewDocument.on( 'focus', spy );
 
 			observer.onDomEvent( { type: 'focus', target: document.body } );
 
@@ -39,7 +39,7 @@ describe( 'FocusObserver', () => {
 		it( 'should fire blur with the right event data', () => {
 			const spy = sinon.spy();
 
-			treeView.on( 'blur', spy );
+			viewDocument.on( 'blur', spy );
 
 			observer.onDomEvent( { type: 'blur', target: document.body } );
 

+ 7 - 7
packages/ckeditor5-engine/tests/treeview/observer/keyobserver.js

@@ -8,15 +8,15 @@
 'use strict';
 
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 import { getCode } from '/ckeditor5/utils/keyboard.js';
 
 describe( 'KeyObserver', () => {
-	let treeView, observer;
+	let viewDocument, observer;
 
 	beforeEach( () => {
-		treeView = new TreeView();
-		observer = treeView.addObserver( KeyObserver );
+		viewDocument = new ViewDocument();
+		observer = viewDocument.addObserver( KeyObserver );
 	} );
 
 	it( 'should define domEventType', () => {
@@ -27,7 +27,7 @@ describe( 'KeyObserver', () => {
 		it( 'should fire keydown with the target and key info', () => {
 			const spy = sinon.spy();
 
-			treeView.on( 'keydown', spy );
+			viewDocument.on( 'keydown', spy );
 
 			observer.onDomEvent( { target: document.body, keyCode: 111, altKey: false, ctrlKey: false, metaKey: false, shiftKey: false } );
 
@@ -48,7 +48,7 @@ describe( 'KeyObserver', () => {
 		it( 'should fire keydown with proper key modifiers info', () => {
 			const spy = sinon.spy();
 
-			treeView.on( 'keydown', spy );
+			viewDocument.on( 'keydown', spy );
 
 			observer.onDomEvent( { target: document.body, keyCode: 111, altKey: true, ctrlKey: true, metaKey: false, shiftKey: true } );
 
@@ -66,7 +66,7 @@ describe( 'KeyObserver', () => {
 		it( 'should fire keydown ctrlKey set to true one meta (cmd) was pressed', () => {
 			const spy = sinon.spy();
 
-			treeView.on( 'keydown', spy );
+			viewDocument.on( 'keydown', spy );
 
 			observer.onDomEvent( { target: document.body, keyCode: 111, metaKey: true } );
 

+ 18 - 18
packages/ckeditor5-engine/tests/treeview/observer/mutationobserver.js

@@ -7,31 +7,31 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 import { parse } from '/tests/engine/_utils/view.js';
 
 describe( 'MutationObserver', () => {
-	let domEditor, treeView, viewRoot, mutationObserver, lastMutations;
+	let domEditor, viewDocument, viewRoot, mutationObserver, lastMutations;
 
 	beforeEach( () => {
-		treeView = new TreeView();
+		viewDocument = new ViewDocument();
 		domEditor = document.getElementById( 'main' );
 		lastMutations = null;
 
-		treeView.createRoot( domEditor );
-		treeView.selection.removeAllRanges();
+		viewDocument.createRoot( domEditor );
+		viewDocument.selection.removeAllRanges();
 		document.getSelection().removeAllRanges();
 
-		mutationObserver = treeView.addObserver( MutationObserver );
+		mutationObserver = viewDocument.addObserver( MutationObserver );
 
-		treeView.on( 'mutations', ( evt, mutations ) => lastMutations = mutations );
+		viewDocument.on( 'mutations', ( evt, mutations ) => lastMutations = mutations );
 
-		viewRoot = treeView.getRoot();
+		viewRoot = viewDocument.getRoot();
 
 		viewRoot.appendChildren( parse( '<container:p>foo</container:p><container:p>bar</container:p>' ) );
 
-		treeView.render();
+		viewDocument.render();
 	} );
 
 	afterEach( () => {
@@ -107,13 +107,13 @@ describe( 'MutationObserver', () => {
 		const domAdditionalEditor = document.getElementById( 'additional' );
 
 		// Prepare AdditionalEditor
-		treeView.createRoot( domAdditionalEditor, 'additional' );
+		viewDocument.createRoot( domAdditionalEditor, 'additional' );
 
-		treeView.viewRoots.get( 'additional' ).appendChildren(
+		viewDocument.viewRoots.get( 'additional' ).appendChildren(
 			parse( '<container:p>foo</container:p><container:p>bar</container:p>' ) );
 
 		// Render AdditionalEditor (first editor has been rendered in the beforeEach function)
-		treeView.render();
+		viewDocument.render();
 
 		domEditor.childNodes[ 0 ].childNodes[ 0 ].data = 'foom';
 		domAdditionalEditor.childNodes[ 0 ].childNodes[ 0 ].data = 'foom';
@@ -134,9 +134,9 @@ describe( 'MutationObserver', () => {
 		const { view, selection } = parse( '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
 
 		viewRoot.appendChildren( view );
-		treeView.selection.setTo( selection );
+		viewDocument.selection.setTo( selection );
 
-		treeView.render();
+		viewDocument.render();
 
 		const inlineFiller = domEditor.childNodes[ 2 ].childNodes[ 1 ].childNodes[ 0 ];
 		inlineFiller.data += 'x';
@@ -152,16 +152,16 @@ describe( 'MutationObserver', () => {
 		const { view, selection } = parse( '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
 
 		viewRoot.appendChildren( view );
-		treeView.selection.setTo( selection );
+		viewDocument.selection.setTo( selection );
 
-		treeView.render();
+		viewDocument.render();
 
 		let inlineFiller = domEditor.childNodes[ 2 ].childNodes[ 1 ].childNodes[ 0 ];
 		inlineFiller.data += 'x';
 
 		view.getChild( 1 ).appendChildren( parse( 'x' ) );
 		mutationObserver.flush();
-		treeView.render();
+		viewDocument.render();
 
 		inlineFiller = domEditor.childNodes[ 2 ].childNodes[ 1 ].childNodes[ 0 ];
 		inlineFiller.data += 'y';
@@ -177,7 +177,7 @@ describe( 'MutationObserver', () => {
 	it( 'should have no block filler in mutation', () => {
 		viewRoot.appendChildren( parse( '<container:p></container:p>' ) );
 
-		treeView.render();
+		viewDocument.render();
 
 		const domP = domEditor.childNodes[ 2 ];
 		domP.removeChild( domP.childNodes[ 0 ] );

+ 3 - 3
packages/ckeditor5-engine/tests/treeview/observer/observer.js

@@ -12,11 +12,11 @@ import Observer from '/ckeditor5/engine/treeview/observer/observer.js';
 describe( 'Observer', () => {
 	describe( 'constructor', () => {
 		it( 'should create Observer with properties', () => {
-			const treeView = {};
-			const observer = new Observer( treeView );
+			const viewDocument = {};
+			const observer = new Observer( viewDocument );
 
 			expect( observer ).to.be.an.instanceof( Observer );
-			expect( observer ).to.have.property( 'treeView' ).that.equals( treeView );
+			expect( observer ).to.have.property( 'document' ).that.equals( viewDocument );
 			expect( observer ).to.have.property( 'isEnabled' ).that.is.false;
 		} );
 	} );

+ 23 - 23
packages/ckeditor5-engine/tests/treeview/observer/selectionobserver.js

@@ -9,7 +9,7 @@
 
 import ViewRange from '/ckeditor5/engine/treeview/range.js';
 import ViewSelection from '/ckeditor5/engine/treeview/selection.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 import SelectionObserver from '/ckeditor5/engine/treeview/observer/selectionobserver.js';
 import MutationObserver from '/ckeditor5/engine/treeview/observer/mutationobserver.js';
 
@@ -18,30 +18,30 @@ import EmitterMixin from '/ckeditor5/utils/emittermixin.js';
 import { parse } from '/tests/engine/_utils/view.js';
 
 describe( 'SelectionObserver', () => {
-	let treeView, viewRoot, mutationObserver, selectionObserver, listenter;
+	let viewDocument, viewRoot, mutationObserver, selectionObserver, listenter;
 
 	before( () => {
 		listenter = Object.create( EmitterMixin );
 
-		treeView = new TreeView();
+		viewDocument = new ViewDocument();
 
-		treeView.createRoot( document.getElementById( 'main' ) );
+		viewDocument.createRoot( document.getElementById( 'main' ) );
 
-		mutationObserver = treeView.addObserver( MutationObserver );
-		selectionObserver = treeView.addObserver( SelectionObserver );
+		mutationObserver = viewDocument.addObserver( MutationObserver );
+		selectionObserver = viewDocument.addObserver( SelectionObserver );
 
-		viewRoot = treeView.getRoot();
+		viewRoot = viewDocument.getRoot();
 
 		viewRoot.appendChildren( parse( '<container:p>foo</container:p><container:p>bar</container:p>' ) );
 
-		treeView.render();
+		viewDocument.render();
 	} );
 
 	beforeEach( ( done ) => {
-		treeView.selection.removeAllRanges();
+		viewDocument.selection.removeAllRanges();
 		document.getSelection().removeAllRanges();
 
-		treeView.getObserver( SelectionObserver ).enable();
+		viewDocument.getObserver( SelectionObserver ).enable();
 
 		// Ensure selectionchange will not be fired.
 		setTimeout( () => done(), 100 );
@@ -52,7 +52,7 @@ describe( 'SelectionObserver', () => {
 	} );
 
 	it( 'should fire selectionChange when it is the only change', ( done ) => {
-		listenter.listenTo( treeView, 'selectionChange', ( evt, data ) => {
+		listenter.listenTo( viewDocument, 'selectionChange', ( evt, data ) => {
 			expect( data ).to.have.property( 'domSelection' ).that.equals( document.getSelection() );
 
 			expect( data ).to.have.property( 'oldSelection' ).that.is.instanceof( ViewSelection );
@@ -62,7 +62,7 @@ describe( 'SelectionObserver', () => {
 			expect( data.newSelection.rangeCount ).to.equal( 1 );
 
 			const newViewRange = data.newSelection.getFirstRange();
-			const viewFoo = treeView.getRoot().getChild( 0 ).getChild( 0 );
+			const viewFoo = viewDocument.getRoot().getChild( 0 ).getChild( 0 );
 
 			expect( newViewRange.start.parent ).to.equal( viewFoo );
 			expect( newViewRange.start.offset ).to.equal( 1 );
@@ -77,9 +77,9 @@ describe( 'SelectionObserver', () => {
 
 	it( 'should add only one listener to one document', ( done ) => {
 		// Add second roots to ensure that listener is added once.
-		treeView.createRoot( document.getElementById( 'additional' ), 'additional' );
+		viewDocument.createRoot( document.getElementById( 'additional' ), 'additional' );
 
-		listenter.listenTo( treeView, 'selectionChange', () => {
+		listenter.listenTo( viewDocument, 'selectionChange', () => {
 			done();
 		} );
 
@@ -87,21 +87,21 @@ describe( 'SelectionObserver', () => {
 	} );
 
 	it( 'should not fire selectionChange on render', ( done ) => {
-		listenter.listenTo( treeView, 'selectionChange', () => {
+		listenter.listenTo( viewDocument, 'selectionChange', () => {
 			throw 'selectionChange on render';
 		} );
 
 		setTimeout( () => done(), 70 );
 
-		const viewBar = treeView.getRoot().getChild( 1 ).getChild( 0 );
-		treeView.selection.addRange( ViewRange.createFromParentsAndOffsets( viewBar, 1, viewBar, 2 ) );
-		treeView.render();
+		const viewBar = viewDocument.getRoot().getChild( 1 ).getChild( 0 );
+		viewDocument.selection.addRange( ViewRange.createFromParentsAndOffsets( viewBar, 1, viewBar, 2 ) );
+		viewDocument.render();
 	} );
 
 	it( 'should not fired if observer is disabled', ( done ) => {
-		treeView.getObserver( SelectionObserver ).disable();
+		viewDocument.getObserver( SelectionObserver ).disable();
 
-		listenter.listenTo( treeView, 'selectionChange', () => {
+		listenter.listenTo( viewDocument, 'selectionChange', () => {
 			throw 'selectionChange on render';
 		} );
 
@@ -111,10 +111,10 @@ describe( 'SelectionObserver', () => {
 	} );
 
 	it( 'should call render after selection change which reset selection if it was not changed', ( done ) => {
-		const viewBar = treeView.getRoot().getChild( 1 ).getChild( 0 );
-		treeView.selection.addRange( ViewRange.createFromParentsAndOffsets( viewBar, 0, viewBar, 1 ) );
+		const viewBar = viewDocument.getRoot().getChild( 1 ).getChild( 0 );
+		viewDocument.selection.addRange( ViewRange.createFromParentsAndOffsets( viewBar, 0, viewBar, 1 ) );
 
-		listenter.listenTo( treeView, 'selectionChange', () => {
+		listenter.listenTo( viewDocument, 'selectionChange', () => {
 			setTimeout( () => {
 				const domSelection = document.getSelection();
 

+ 233 - 0
packages/ckeditor5-engine/tests/treeview/treeview/document.js

@@ -0,0 +1,233 @@
+/**
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* bender-tags: treeview */
+
+'use strict';
+
+import Document from '/ckeditor5/engine/treeview/document.js';
+import Observer from '/ckeditor5/engine/treeview/observer/observer.js';
+import Renderer from '/ckeditor5/engine/treeview/renderer.js';
+import Writer from '/ckeditor5/engine/treeview/writer.js';
+import DomConverter from '/ckeditor5/engine/treeview/domconverter.js';
+
+import count from '/ckeditor5/utils/count.js';
+
+describe( 'Document', () => {
+	let ObserverMock, ObserverMockGlobalCount, instantiated, enabled;
+
+	beforeEach( () => {
+		instantiated = 0;
+		enabled = 0;
+
+		ObserverMock = class extends Observer {
+			constructor( viewDocument ) {
+				super( viewDocument );
+
+				this.enable = sinon.spy();
+				this.disable = sinon.spy();
+				this.observe = sinon.spy();
+			}
+		};
+
+		ObserverMockGlobalCount = class extends Observer {
+			constructor( viewDocument ) {
+				super( viewDocument );
+				instantiated++;
+
+				this.observe = sinon.spy();
+			}
+
+			enable() {
+				enabled++;
+			}
+		};
+	} );
+
+	describe( 'constructor', () => {
+		it( 'should create Document with all properties', () => {
+			const viewDocument = new Document();
+
+			expect( count( viewDocument.domRoots ) ).to.equal( 0 );
+			expect( count( viewDocument.viewRoots ) ).to.equal( 0 );
+			expect( count( viewDocument._observers ) ).to.equal( 0 );
+			expect( viewDocument ).to.have.property( 'renderer' ).that.is.instanceOf( Renderer );
+			expect( viewDocument ).to.have.property( 'writer' ).that.is.instanceOf( Writer );
+			expect( viewDocument ).to.have.property( 'domConverter' ).that.is.instanceOf( DomConverter );
+		} );
+	} );
+
+	describe( 'createRoot', () => {
+		it( 'should create root', () => {
+			const domP = document.createElement( 'p' );
+			const domDiv = document.createElement( 'div' );
+			domDiv.setAttribute( 'id', 'editor' );
+			domDiv.appendChild( domP );
+
+			const viewDocument = new Document();
+			const ret = viewDocument.createRoot( domDiv, 'editor' );
+
+			expect( count( viewDocument.domRoots ) ).to.equal( 1 );
+			expect( count( viewDocument.viewRoots ) ).to.equal( 1 );
+
+			const domRoot = viewDocument.domRoots.get( 'editor' );
+			const viewRoot = viewDocument.viewRoots.get( 'editor' );
+
+			expect( ret ).to.equal( viewRoot );
+
+			expect( domRoot ).to.equal( domDiv );
+			expect( viewDocument.domConverter.getCorrespondingDom( viewRoot ) ).to.equal( domDiv );
+			expect( viewRoot.name ).to.equal( 'div' );
+			expect( viewRoot.getAttribute( 'id' ) ).to.equal( 'editor' );
+			expect( viewDocument.renderer.markedChildren.has( viewRoot ) ).to.be.true;
+		} );
+
+		it( 'should call observe on each observer', () => {
+			const viewDocument = new Document( document.createElement( 'div' ) );
+			viewDocument.renderer.render = sinon.spy();
+
+			const domDiv1 = document.createElement( 'div' );
+			domDiv1.setAttribute( 'id', 'editor' );
+
+			const domDiv2 = document.createElement( 'div' );
+			domDiv2.setAttribute( 'id', 'editor' );
+
+			const observerMock = viewDocument.addObserver( ObserverMock );
+			const observerMockGlobalCount = viewDocument.addObserver( ObserverMockGlobalCount );
+
+			viewDocument.createRoot( document.createElement( 'div' ), 'root1' );
+
+			sinon.assert.calledOnce( observerMock.observe );
+			sinon.assert.calledOnce( observerMockGlobalCount.observe );
+		} );
+
+		it( 'should create "main" root by default', () => {
+			const domDiv = document.createElement( 'div' );
+
+			const viewDocument = new Document();
+			const ret = viewDocument.createRoot( domDiv );
+
+			expect( count( viewDocument.domRoots ) ).to.equal( 1 );
+			expect( count( viewDocument.viewRoots ) ).to.equal( 1 );
+
+			const domRoot = viewDocument.domRoots.get( 'main' );
+			const viewRoot = viewDocument.viewRoots.get( 'main' );
+
+			expect( ret ).to.equal( viewRoot );
+
+			expect( domRoot ).to.equal( domDiv );
+		} );
+	} );
+
+	describe( 'getRoot', () => {
+		it( 'should return "main" root', () => {
+			const viewDocument = new Document();
+			viewDocument.createRoot( document.createElement( 'div' ) );
+
+			expect( count( viewDocument.viewRoots ) ).to.equal( 1 );
+
+			expect( viewDocument.getRoot() ).to.equal( viewDocument.viewRoots.get( 'main' ) );
+		} );
+
+		it( 'should return named root', () => {
+			const viewDocument = new Document();
+			viewDocument.createRoot( document.createElement( 'h1' ), 'header' );
+
+			expect( count( viewDocument.viewRoots ) ).to.equal( 1 );
+
+			expect( viewDocument.getRoot( 'header' ) ).to.equal( viewDocument.viewRoots.get( 'header' ) );
+		} );
+	} );
+
+	describe( 'addObserver', () => {
+		let viewDocument;
+
+		beforeEach( () => {
+			viewDocument = new Document( document.createElement( 'div' ) );
+			viewDocument.renderer.render = sinon.spy();
+		} );
+
+		it( 'should be instantiated and enabled on adding', () => {
+			const observerMock = viewDocument.addObserver( ObserverMock );
+
+			expect( viewDocument._observers.size ).to.equal( 1 );
+
+			expect( observerMock ).to.have.property( 'document', viewDocument );
+			sinon.assert.calledOnce( observerMock.enable );
+		} );
+
+		it( 'should return observer instance ever time addObserver is called', () => {
+			const observerMock1 = viewDocument.addObserver( ObserverMock );
+			const observerMock2 = viewDocument.addObserver( ObserverMock );
+
+			expect( observerMock1 ).to.be.instanceof( ObserverMock );
+			expect( observerMock2 ).to.be.instanceof( ObserverMock );
+			expect( observerMock1 ).to.equals( observerMock2 );
+		} );
+
+		it( 'should instantiate one observer only once', () => {
+			viewDocument.addObserver( ObserverMockGlobalCount );
+			viewDocument.addObserver( ObserverMockGlobalCount );
+
+			expect( viewDocument._observers.size ).to.equal( 1 );
+			expect( instantiated ).to.equal( 1 );
+			expect( enabled ).to.equal( 1 );
+
+			viewDocument.addObserver( ObserverMock );
+			expect( viewDocument._observers.size ).to.equal( 2 );
+		} );
+
+		it( 'should instantiate child class of already registered observer', () => {
+			class ObserverMock extends Observer {
+				enable() {}
+			}
+			class ChildObserverMock extends ObserverMock {
+				enable() {}
+			}
+
+			viewDocument.addObserver( ObserverMock );
+			viewDocument.addObserver( ChildObserverMock );
+
+			expect( viewDocument._observers.size ).to.equal( 2 );
+		} );
+
+		it( 'should be disabled and re-enabled on render', () => {
+			const observerMock = viewDocument.addObserver( ObserverMock );
+			viewDocument.render();
+
+			sinon.assert.calledOnce( observerMock.disable );
+			sinon.assert.calledOnce( viewDocument.renderer.render );
+			sinon.assert.calledTwice( observerMock.enable );
+		} );
+
+		it( 'should call observe on each root', () => {
+			viewDocument.createRoot( document.createElement( 'div' ), 'root1' );
+			viewDocument.createRoot( document.createElement( 'div' ), 'root2' );
+
+			const observerMock = viewDocument.addObserver( ObserverMock );
+
+			sinon.assert.calledTwice( observerMock.observe );
+		} );
+	} );
+
+	describe( 'getObserver', () => {
+		it( 'should return observer it it is added', () => {
+			const viewDocument = new Document();
+
+			const addedObserverMock = viewDocument.addObserver( ObserverMock );
+			const getObserverMock = viewDocument.getObserver( ObserverMock );
+
+			expect( getObserverMock ).to.be.instanceof( ObserverMock );
+			expect( getObserverMock ).to.equal( addedObserverMock );
+		} );
+
+		it( 'should return undefined if observer is not added', () => {
+			const viewDocument = new Document();
+			const getObserverMock = viewDocument.getObserver( ObserverMock );
+
+			expect( getObserverMock ).to.be.undefined();
+		} );
+	} );
+} );

+ 11 - 11
packages/ckeditor5-engine/tests/treeview/treeview/integration.js

@@ -7,32 +7,32 @@
 
 'use strict';
 
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
-import TreeElement from '/ckeditor5/engine/treeview/element.js';
+import Document from '/ckeditor5/engine/treeview/document.js';
+import ViewElement from '/ckeditor5/engine/treeview/element.js';
 
-describe( 'TreeView integration', () => {
+describe( 'Document integration', () => {
 	it( 'should remove content of the DOM', () => {
 		const domP = document.createElement( 'p' );
 		const domDiv = document.createElement( 'div' );
 		domDiv.setAttribute( 'id', 'editor' );
 		domDiv.appendChild( domP );
 
-		const treeView = new TreeView();
-		treeView.createRoot( domDiv, 'editor' );
-		treeView.render();
+		const viewDocument = new Document();
+		viewDocument.createRoot( domDiv, 'editor' );
+		viewDocument.render();
 
 		expect( domDiv.childNodes.length ).to.equal( 0 );
 		expect( domDiv.getAttribute( 'id' ) ).to.equal( 'editor' );
 	} );
 
-	it( 'should render changes in the TreeView', () => {
+	it( 'should render changes in the Document', () => {
 		const domDiv = document.createElement( 'div' );
 
-		const treeView = new TreeView();
-		treeView.createRoot( domDiv, 'editor' );
+		const viewDocument = new Document();
+		viewDocument.createRoot( domDiv, 'editor' );
 
-		treeView.viewRoots.get( 'editor' ).appendChildren( new TreeElement( 'p' ) );
-		treeView.render();
+		viewDocument.viewRoots.get( 'editor' ).appendChildren( new ViewElement( 'p' ) );
+		viewDocument.render();
 
 		expect( domDiv.childNodes.length ).to.equal( 1 );
 		expect( domDiv.childNodes[ 0 ].tagName ).to.equal( 'P' );

+ 25 - 25
packages/ckeditor5-engine/tests/treeview/treeview/jumpoverinlinefiller.js

@@ -8,7 +8,7 @@
 'use strict';
 
 import ViewRange from '/ckeditor5/engine/treeview/range.js';
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import ViewDocument from '/ckeditor5/engine/treeview/document.js';
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
 import { INLINE_FILLER_LENGTH, isInlineFiller, startsWithFiller } from '/ckeditor5/engine/treeview/filler.js';
 
@@ -16,24 +16,24 @@ import { keyCodes } from '/ckeditor5/utils/keyboard.js';
 
 import { parse, setData } from '/tests/engine/_utils/view.js';
 
-describe( 'TreeView', () => {
-	let treeView;
+describe( 'Document', () => {
+	let viewDocument;
 
 	beforeEach( () => {
-		treeView = new TreeView();
+		viewDocument = new ViewDocument();
 
-		treeView.addObserver( KeyObserver );
-		treeView.createRoot( document.getElementById( 'editor' ) );
+		viewDocument.addObserver( KeyObserver );
+		viewDocument.createRoot( document.getElementById( 'editor' ) );
 
 		document.getSelection().removeAllRanges();
 	} );
 
 	describe( 'jump over inline filler hack', () => {
 		it( 'should jump over inline filler when left arrow is pressed after inline filler', () => {
-			setData( treeView, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
-			treeView.render();
+			setData( viewDocument, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
+			viewDocument.render();
 
-			treeView.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: treeView.domRoots.get( 'main' ) } );
+			viewDocument.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: viewDocument.domRoots.get( 'main' ) } );
 
 			const domRange = document.getSelection().getRangeAt( 0 );
 			expect( isInlineFiller( domRange.startContainer ) ).to.be.true;
@@ -42,10 +42,10 @@ describe( 'TreeView', () => {
 		} );
 
 		it( 'should do nothing when another key is pressed', () => {
-			setData( treeView, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
-			treeView.render();
+			setData( viewDocument, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
+			viewDocument.render();
 
-			treeView.fire( 'keydown', { keyCode: keyCodes.arrowright, domTarget: treeView.domRoots.get( 'main' ) } );
+			viewDocument.fire( 'keydown', { keyCode: keyCodes.arrowright, domTarget: viewDocument.domRoots.get( 'main' ) } );
 
 			const domRange = document.getSelection().getRangeAt( 0 );
 			expect( isInlineFiller( domRange.startContainer ) ).to.be.true;
@@ -54,10 +54,10 @@ describe( 'TreeView', () => {
 		} );
 
 		it( 'should do nothing if range is not collapsed', () => {
-			setData( treeView, '<container:p>foo<attribute:b>{x}</attribute:b>bar</container:p>' );
-			treeView.render();
+			setData( viewDocument, '<container:p>foo<attribute:b>{x}</attribute:b>bar</container:p>' );
+			viewDocument.render();
 
-			treeView.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: treeView.domRoots.get( 'main' ) } );
+			viewDocument.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: viewDocument.domRoots.get( 'main' ) } );
 
 			const domRange = document.getSelection().getRangeAt( 0 );
 			expect( domRange.startContainer.data ).to.equal( 'x' );
@@ -67,10 +67,10 @@ describe( 'TreeView', () => {
 		} );
 
 		it( 'should do nothing if node does not start with filler', () => {
-			setData( treeView, '<container:p>foo<attribute:b>{}x</attribute:b>bar</container:p>' );
-			treeView.render();
+			setData( viewDocument, '<container:p>foo<attribute:b>{}x</attribute:b>bar</container:p>' );
+			viewDocument.render();
 
-			treeView.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: treeView.domRoots.get( 'main' ) } );
+			viewDocument.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: viewDocument.domRoots.get( 'main' ) } );
 
 			const domRange = document.getSelection().getRangeAt( 0 );
 			expect( domRange.startContainer.data ).to.equal( 'x' );
@@ -79,18 +79,18 @@ describe( 'TreeView', () => {
 		} );
 
 		it( 'should do nothing if caret is not directly before filler', () => {
-			setData( treeView, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
-			treeView.render();
+			setData( viewDocument, '<container:p>foo<attribute:b>[]</attribute:b>bar</container:p>' );
+			viewDocument.render();
 
 			// '<container:p>foo<attribute:b>x{}</attribute:b>bar</container:p>'
-			const viewB = treeView.selection.getFirstPosition().parent;
+			const viewB = viewDocument.selection.getFirstPosition().parent;
 			const viewTextX = parse( 'x' );
 			viewB.appendChildren( viewTextX );
-			treeView.selection.removeAllRanges();
-			treeView.selection.addRange( ViewRange.createFromParentsAndOffsets( viewTextX, 1, viewTextX, 1 ) );
-			treeView.render();
+			viewDocument.selection.removeAllRanges();
+			viewDocument.selection.addRange( ViewRange.createFromParentsAndOffsets( viewTextX, 1, viewTextX, 1 ) );
+			viewDocument.render();
 
-			treeView.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: treeView.domRoots.get( 'main' ) } );
+			viewDocument.fire( 'keydown', { keyCode: keyCodes.arrowleft, domTarget: viewDocument.domRoots.get( 'main' ) } );
 
 			const domRange = document.getSelection().getRangeAt( 0 );
 			expect( startsWithFiller( domRange.startContainer ) ).to.be.true;

+ 0 - 233
packages/ckeditor5-engine/tests/treeview/treeview/treeview.js

@@ -1,233 +0,0 @@
-/**
- * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
-
-/* bender-tags: treeview */
-
-'use strict';
-
-import TreeView from '/ckeditor5/engine/treeview/treeview.js';
-import Observer from '/ckeditor5/engine/treeview/observer/observer.js';
-import Renderer from '/ckeditor5/engine/treeview/renderer.js';
-import Writer from '/ckeditor5/engine/treeview/writer.js';
-import DomConverter from '/ckeditor5/engine/treeview/domconverter.js';
-
-import count from '/ckeditor5/utils/count.js';
-
-describe( 'TreeView', () => {
-	let ObserverMock, ObserverMockGlobalCount, instantiated, enabled;
-
-	beforeEach( () => {
-		instantiated = 0;
-		enabled = 0;
-
-		ObserverMock = class extends Observer {
-			constructor( treeView ) {
-				super( treeView );
-
-				this.enable = sinon.spy();
-				this.disable = sinon.spy();
-				this.observe = sinon.spy();
-			}
-		};
-
-		ObserverMockGlobalCount = class extends Observer {
-			constructor( treeView ) {
-				super( treeView );
-				instantiated++;
-
-				this.observe = sinon.spy();
-			}
-
-			enable() {
-				enabled++;
-			}
-		};
-	} );
-
-	describe( 'constructor', () => {
-		it( 'should create TreeView with all properties', () => {
-			const treeView = new TreeView();
-
-			expect( count( treeView.domRoots ) ).to.equal( 0 );
-			expect( count( treeView.viewRoots ) ).to.equal( 0 );
-			expect( count( treeView._observers ) ).to.equal( 0 );
-			expect( treeView ).to.have.property( 'renderer' ).that.is.instanceOf( Renderer );
-			expect( treeView ).to.have.property( 'writer' ).that.is.instanceOf( Writer );
-			expect( treeView ).to.have.property( 'domConverter' ).that.is.instanceOf( DomConverter );
-		} );
-	} );
-
-	describe( 'createRoot', () => {
-		it( 'should create root', () => {
-			const domP = document.createElement( 'p' );
-			const domDiv = document.createElement( 'div' );
-			domDiv.setAttribute( 'id', 'editor' );
-			domDiv.appendChild( domP );
-
-			const treeView = new TreeView();
-			const ret = treeView.createRoot( domDiv, 'editor' );
-
-			expect( count( treeView.domRoots ) ).to.equal( 1 );
-			expect( count( treeView.viewRoots ) ).to.equal( 1 );
-
-			const domRoot = treeView.domRoots.get( 'editor' );
-			const viewRoot = treeView.viewRoots.get( 'editor' );
-
-			expect( ret ).to.equal( viewRoot );
-
-			expect( domRoot ).to.equal( domDiv );
-			expect( treeView.domConverter.getCorrespondingDom( viewRoot ) ).to.equal( domDiv );
-			expect( viewRoot.name ).to.equal( 'div' );
-			expect( viewRoot.getAttribute( 'id' ) ).to.equal( 'editor' );
-			expect( treeView.renderer.markedChildren.has( viewRoot ) ).to.be.true;
-		} );
-
-		it( 'should call observe on each observer', () => {
-			const treeView = new TreeView( document.createElement( 'div' ) );
-			treeView.renderer.render = sinon.spy();
-
-			const domDiv1 = document.createElement( 'div' );
-			domDiv1.setAttribute( 'id', 'editor' );
-
-			const domDiv2 = document.createElement( 'div' );
-			domDiv2.setAttribute( 'id', 'editor' );
-
-			const observerMock = treeView.addObserver( ObserverMock );
-			const observerMockGlobalCount = treeView.addObserver( ObserverMockGlobalCount );
-
-			treeView.createRoot( document.createElement( 'div' ), 'root1' );
-
-			sinon.assert.calledOnce( observerMock.observe );
-			sinon.assert.calledOnce( observerMockGlobalCount.observe );
-		} );
-
-		it( 'should create "main" root by default', () => {
-			const domDiv = document.createElement( 'div' );
-
-			const treeView = new TreeView();
-			const ret = treeView.createRoot( domDiv );
-
-			expect( count( treeView.domRoots ) ).to.equal( 1 );
-			expect( count( treeView.viewRoots ) ).to.equal( 1 );
-
-			const domRoot = treeView.domRoots.get( 'main' );
-			const viewRoot = treeView.viewRoots.get( 'main' );
-
-			expect( ret ).to.equal( viewRoot );
-
-			expect( domRoot ).to.equal( domDiv );
-		} );
-	} );
-
-	describe( 'getRoot', () => {
-		it( 'should return "main" root', () => {
-			const treeView = new TreeView();
-			treeView.createRoot( document.createElement( 'div' ) );
-
-			expect( count( treeView.viewRoots ) ).to.equal( 1 );
-
-			expect( treeView.getRoot() ).to.equal( treeView.viewRoots.get( 'main' ) );
-		} );
-
-		it( 'should return named root', () => {
-			const treeView = new TreeView();
-			treeView.createRoot( document.createElement( 'h1' ), 'header' );
-
-			expect( count( treeView.viewRoots ) ).to.equal( 1 );
-
-			expect( treeView.getRoot( 'header' ) ).to.equal( treeView.viewRoots.get( 'header' ) );
-		} );
-	} );
-
-	describe( 'addObserver', () => {
-		let treeView;
-
-		beforeEach( () => {
-			treeView = new TreeView( document.createElement( 'div' ) );
-			treeView.renderer.render = sinon.spy();
-		} );
-
-		it( 'should be instantiated and enabled on adding', () => {
-			const observerMock = treeView.addObserver( ObserverMock );
-
-			expect( treeView._observers.size ).to.equal( 1 );
-
-			expect( observerMock ).to.have.property( 'treeView', treeView );
-			sinon.assert.calledOnce( observerMock.enable );
-		} );
-
-		it( 'should return observer instance ever time addObserver is called', () => {
-			const observerMock1 = treeView.addObserver( ObserverMock );
-			const observerMock2 = treeView.addObserver( ObserverMock );
-
-			expect( observerMock1 ).to.be.instanceof( ObserverMock );
-			expect( observerMock2 ).to.be.instanceof( ObserverMock );
-			expect( observerMock1 ).to.equals( observerMock2 );
-		} );
-
-		it( 'should instantiate one observer only once', () => {
-			treeView.addObserver( ObserverMockGlobalCount );
-			treeView.addObserver( ObserverMockGlobalCount );
-
-			expect( treeView._observers.size ).to.equal( 1 );
-			expect( instantiated ).to.equal( 1 );
-			expect( enabled ).to.equal( 1 );
-
-			treeView.addObserver( ObserverMock );
-			expect( treeView._observers.size ).to.equal( 2 );
-		} );
-
-		it( 'should instantiate child class of already registered observer', () => {
-			class ObserverMock extends Observer {
-				enable() {}
-			}
-			class ChildObserverMock extends ObserverMock {
-				enable() {}
-			}
-
-			treeView.addObserver( ObserverMock );
-			treeView.addObserver( ChildObserverMock );
-
-			expect( treeView._observers.size ).to.equal( 2 );
-		} );
-
-		it( 'should be disabled and re-enabled on render', () => {
-			const observerMock = treeView.addObserver( ObserverMock );
-			treeView.render();
-
-			sinon.assert.calledOnce( observerMock.disable );
-			sinon.assert.calledOnce( treeView.renderer.render );
-			sinon.assert.calledTwice( observerMock.enable );
-		} );
-
-		it( 'should call observe on each root', () => {
-			treeView.createRoot( document.createElement( 'div' ), 'root1' );
-			treeView.createRoot( document.createElement( 'div' ), 'root2' );
-
-			const observerMock = treeView.addObserver( ObserverMock );
-
-			sinon.assert.calledTwice( observerMock.observe );
-		} );
-	} );
-
-	describe( 'getObserver', () => {
-		it( 'should return observer it it is added', () => {
-			const treeView = new TreeView();
-
-			const addedObserverMock = treeView.addObserver( ObserverMock );
-			const getObserverMock = treeView.getObserver( ObserverMock );
-
-			expect( getObserverMock ).to.be.instanceof( ObserverMock );
-			expect( getObserverMock ).to.equal( addedObserverMock );
-		} );
-
-		it( 'should return undefined if observer is not added', () => {
-			const treeView = new TreeView();
-			const getObserverMock = treeView.getObserver( ObserverMock );
-
-			expect( getObserverMock ).to.be.undefined();
-		} );
-	} );
-} );