8
0
Quellcode durchsuchen

Requested changes during the review.

Kamil Piechaczek vor 5 Jahren
Ursprung
Commit
b47dec2d16
31 geänderte Dateien mit 181 neuen und 211 gelöschten Zeilen
  1. 18 2
      packages/ckeditor5-engine/src/controller/datacontroller.js
  2. 5 5
      packages/ckeditor5-engine/src/conversion/downcasthelpers.js
  3. 4 14
      packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js
  4. 4 14
      packages/ckeditor5-engine/src/dataprocessor/xmldataprocessor.js
  5. 4 6
      packages/ckeditor5-engine/src/dev-utils/view.js
  6. 1 1
      packages/ckeditor5-engine/src/model/model.js
  7. 0 16
      packages/ckeditor5-engine/src/view/document.js
  8. 16 11
      packages/ckeditor5-engine/src/view/domconverter.js
  9. 5 1
      packages/ckeditor5-engine/src/view/element.js
  10. 2 2
      packages/ckeditor5-engine/src/view/observer/mutationobserver.js
  11. 1 1
      packages/ckeditor5-engine/src/view/renderer.js
  12. 1 1
      packages/ckeditor5-engine/src/view/styles/background.js
  13. 1 1
      packages/ckeditor5-engine/src/view/styles/border.js
  14. 1 1
      packages/ckeditor5-engine/src/view/styles/margin.js
  15. 1 1
      packages/ckeditor5-engine/src/view/styles/padding.js
  16. 6 6
      packages/ckeditor5-engine/src/view/stylesmap.js
  17. 3 3
      packages/ckeditor5-engine/src/view/uielement.js
  18. 1 1
      packages/ckeditor5-engine/src/view/view.js
  19. 16 9
      packages/ckeditor5-engine/tests/controller/datacontroller.js
  20. 8 7
      packages/ckeditor5-engine/tests/conversion/downcasthelpers.js
  21. 3 4
      packages/ckeditor5-engine/tests/dataprocessor/htmldataprocessor.js
  22. 3 6
      packages/ckeditor5-engine/tests/dataprocessor/xmldataprocessor.js
  23. 0 11
      packages/ckeditor5-engine/tests/view/document.js
  24. 13 14
      packages/ckeditor5-engine/tests/view/domconverter/binding.js
  25. 43 43
      packages/ckeditor5-engine/tests/view/domconverter/dom-to-view.js
  26. 8 10
      packages/ckeditor5-engine/tests/view/domconverter/domconverter.js
  27. 7 10
      packages/ckeditor5-engine/tests/view/domconverter/uielement.js
  28. 2 2
      packages/ckeditor5-engine/tests/view/domconverter/view-to-dom.js
  29. 1 1
      packages/ckeditor5-engine/tests/view/observer/domeventdata.js
  30. 1 3
      packages/ckeditor5-engine/tests/view/renderer.js
  31. 2 4
      packages/ckeditor5-engine/tests/view/upcastwriter.js

+ 18 - 2
packages/ckeditor5-engine/src/controller/datacontroller.js

@@ -46,12 +46,12 @@ export default class DataController {
 	/**
 	/**
 	 * Creates a data controller instance.
 	 * Creates a data controller instance.
 	 *
 	 *
-	 * @param {module:engine/model/model~Model} model Data model.
 	 * @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor Styles processor.
 	 * @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor Styles processor.
+	 * @param {module:engine/model/model~Model} model Data model.
 	 * @param {module:engine/dataprocessor/dataprocessor~DataProcessor} [dataProcessor] Data processor that should be used
 	 * @param {module:engine/dataprocessor/dataprocessor~DataProcessor} [dataProcessor] Data processor that should be used
 	 * by the controller.
 	 * by the controller.
 	 */
 	 */
-	constructor( model, stylesProcessor, dataProcessor ) {
+	constructor( stylesProcessor, model, dataProcessor ) {
 		/**
 		/**
 		 * Data model.
 		 * Data model.
 		 *
 		 *
@@ -381,6 +381,22 @@ export default class DataController {
 		} );
 		} );
 	}
 	}
 
 
+	/**
+	 * Adds a style processor normalization rules.
+	 *
+	 * The available style processors:
+	 *
+	 * * background: {@link module:engine/view/styles/background~addBackgroundRules}
+	 * * border: {@link module:engine/view/styles/border~addBorderRules}
+	 * * margin: {@link module:engine/view/styles/margin~addMarginRules}
+	 * * padding: {@link module:engine/view/styles/padding~addPaddingRules}
+	 *
+	 * @param {Function} callback
+	 */
+	addStyleProcessorRules( callback ) {
+		callback( this.stylesProcessor );
+	}
+
 	/**
 	/**
 	 * Removes all event listeners set by the DataController.
 	 * Removes all event listeners set by the DataController.
 	 */
 	 */

+ 5 - 5
packages/ckeditor5-engine/src/conversion/downcasthelpers.js

@@ -416,12 +416,12 @@ export function remove() {
  * provided by the {@link module:engine/conversion/downcasthelpers~HighlightDescriptor highlight descriptor} object. If a priority
  * provided by the {@link module:engine/conversion/downcasthelpers~HighlightDescriptor highlight descriptor} object. If a priority
  * is not provided in the descriptor, the default priority will be used.
  * is not provided in the descriptor, the default priority will be used.
  *
  *
- * @param {module:engine/view/document~Document} document
+ * @param {module:engine/view/downcastwriter~DowncastWriter} writer
  * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} descriptor
  * @param {module:engine/conversion/downcasthelpers~HighlightDescriptor} descriptor
  * @returns {module:engine/view/attributeelement~AttributeElement}
  * @returns {module:engine/view/attributeelement~AttributeElement}
  */
  */
-export function createViewElementFromHighlightDescriptor( document, descriptor ) {
-	const viewElement = new ViewAttributeElement( document, 'span', descriptor.attributes );
+export function createViewElementFromHighlightDescriptor( writer, descriptor ) {
+	const viewElement = writer.createAttributeElement( 'span', descriptor.attributes );
 
 
 	if ( descriptor.classes ) {
 	if ( descriptor.classes ) {
 		viewElement._addClass( descriptor.classes );
 		viewElement._addClass( descriptor.classes );
@@ -921,7 +921,7 @@ function highlightText( highlightDescriptor ) {
 		}
 		}
 
 
 		const viewWriter = conversionApi.writer;
 		const viewWriter = conversionApi.writer;
-		const viewElement = createViewElementFromHighlightDescriptor( viewWriter.document, descriptor );
+		const viewElement = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 		const viewSelection = viewWriter.document.selection;
 		const viewSelection = viewWriter.document.selection;
 
 
 		if ( data.item instanceof ModelSelection || data.item instanceof DocumentSelection ) {
 		if ( data.item instanceof ModelSelection || data.item instanceof DocumentSelection ) {
@@ -1035,7 +1035,7 @@ function removeHighlight( highlightDescriptor ) {
 		}
 		}
 
 
 		// View element that will be used to unwrap `AttributeElement`s.
 		// View element that will be used to unwrap `AttributeElement`s.
-		const viewHighlightElement = createViewElementFromHighlightDescriptor( conversionApi.writer.document, descriptor );
+		const viewHighlightElement = createViewElementFromHighlightDescriptor( conversionApi.writer, descriptor );
 
 
 		// Get all elements bound with given marker name.
 		// Get all elements bound with given marker name.
 		const elements = conversionApi.mapper.markerNameToElements( data.markerName );
 		const elements = conversionApi.mapper.markerNameToElements( data.markerName );

+ 4 - 14
packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js

@@ -11,7 +11,6 @@
 
 
 import BasicHtmlWriter from './basichtmlwriter';
 import BasicHtmlWriter from './basichtmlwriter';
 import DomConverter from '../view/domconverter';
 import DomConverter from '../view/domconverter';
-import ViewDocument from '../view/document';
 
 
 /**
 /**
  * The HTML data processor class.
  * The HTML data processor class.
@@ -23,17 +22,9 @@ export default class HtmlDataProcessor {
 	/**
 	/**
 	 * Creates a new instance of the HTML data processor class.
 	 * Creates a new instance of the HTML data processor class.
 	 *
 	 *
-	 * @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor Styles processor.
+	 * @param {module:engine/view/document~Document} document
 	 */
 	 */
-	constructor( stylesProcessor ) {
-		/**
-		 * Styles processor.
-		 *
-		 * @readonly
-		 * @member {module:engine/view/stylesmap~StylesProcessor}
-		 */
-		this.stylesProcessor = stylesProcessor;
-
+	constructor( document ) {
 		/**
 		/**
 		 * A DOM parser instance used to parse an HTML string to an HTML document.
 		 * A DOM parser instance used to parse an HTML string to an HTML document.
 		 *
 		 *
@@ -48,7 +39,7 @@ export default class HtmlDataProcessor {
 		 * @private
 		 * @private
 		 * @member {module:engine/view/domconverter~DomConverter}
 		 * @member {module:engine/view/domconverter~DomConverter}
 		 */
 		 */
-		this._domConverter = new DomConverter( { blockFillerMode: 'nbsp' } );
+		this._domConverter = new DomConverter( document, { blockFillerMode: 'nbsp' } );
 
 
 		/**
 		/**
 		 * A basic HTML writer instance used to convert DOM elements to an HTML string.
 		 * A basic HTML writer instance used to convert DOM elements to an HTML string.
@@ -83,10 +74,9 @@ export default class HtmlDataProcessor {
 	toView( data ) {
 	toView( data ) {
 		// Convert input HTML data to DOM DocumentFragment.
 		// Convert input HTML data to DOM DocumentFragment.
 		const domFragment = this._toDom( data );
 		const domFragment = this._toDom( data );
-		const viewDocument = new ViewDocument( this.stylesProcessor );
 
 
 		// Convert DOM DocumentFragment to view DocumentFragment.
 		// Convert DOM DocumentFragment to view DocumentFragment.
-		return this._domConverter.domToView( viewDocument, domFragment );
+		return this._domConverter.domToView( domFragment );
 	}
 	}
 
 
 	/**
 	/**

+ 4 - 14
packages/ckeditor5-engine/src/dataprocessor/xmldataprocessor.js

@@ -11,7 +11,6 @@
 
 
 import BasicHtmlWriter from './basichtmlwriter';
 import BasicHtmlWriter from './basichtmlwriter';
 import DomConverter from '../view/domconverter';
 import DomConverter from '../view/domconverter';
-import ViewDocument from '../view/document';
 
 
 /**
 /**
  * The XML data processor class.
  * The XML data processor class.
@@ -25,19 +24,11 @@ export default class XmlDataProcessor {
 	/**
 	/**
 	 * Creates a new instance of the XML data processor class.
 	 * Creates a new instance of the XML data processor class.
 	 *
 	 *
-	 * @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor Styles processor.
+	 * @param {module:engine/view/document~Document} document
 	 * @param {Object} options Configuration options.
 	 * @param {Object} options Configuration options.
 	 * @param {Array<String>} [options.namespaces=[]] A list of namespaces allowed to use in the XML input.
 	 * @param {Array<String>} [options.namespaces=[]] A list of namespaces allowed to use in the XML input.
 	 */
 	 */
-	constructor( stylesProcessor, options = {} ) {
-		/**
-		 * Styles processor.
-		 *
-		 * @readonly
-		 * @member {module:engine/view/stylesmap~StylesProcessor}
-		 */
-		this.stylesProcessor = stylesProcessor;
-
+	constructor( document, options = {} ) {
 		/**
 		/**
 		 * A list of namespaces allowed to use in the XML input.
 		 * A list of namespaces allowed to use in the XML input.
 		 *
 		 *
@@ -63,7 +54,7 @@ export default class XmlDataProcessor {
 		 * @private
 		 * @private
 		 * @member {module:engine/view/domconverter~DomConverter}
 		 * @member {module:engine/view/domconverter~DomConverter}
 		 */
 		 */
-		this._domConverter = new DomConverter( { blockFillerMode: 'nbsp' } );
+		this._domConverter = new DomConverter( document, { blockFillerMode: 'nbsp' } );
 
 
 		/**
 		/**
 		 * A basic HTML writer instance used to convert DOM elements to an XML string.
 		 * A basic HTML writer instance used to convert DOM elements to an XML string.
@@ -100,10 +91,9 @@ export default class XmlDataProcessor {
 	toView( data ) {
 	toView( data ) {
 		// Convert input XML data to DOM DocumentFragment.
 		// Convert input XML data to DOM DocumentFragment.
 		const domFragment = this._toDom( data );
 		const domFragment = this._toDom( data );
-		const viewDocument = new ViewDocument( this.stylesProcessor );
 
 
 		// Convert DOM DocumentFragment to view DocumentFragment.
 		// Convert DOM DocumentFragment to view DocumentFragment.
-		return this._domConverter.domToView( viewDocument, domFragment, { keepOriginalCase: true } );
+		return this._domConverter.domToView( domFragment, { keepOriginalCase: true } );
 	}
 	}
 
 
 	/**
 	/**

+ 4 - 6
packages/ckeditor5-engine/src/dev-utils/view.js

@@ -14,6 +14,7 @@
  */
  */
 
 
 import View from '../view/view';
 import View from '../view/view';
+import ViewDocument from '../view/document';
 import ViewDocumentFragment from '../view/documentfragment';
 import ViewDocumentFragment from '../view/documentfragment';
 import XmlDataProcessor from '../dataprocessor/xmldataprocessor';
 import XmlDataProcessor from '../dataprocessor/xmldataprocessor';
 import ViewElement from '../view/element';
 import ViewElement from '../view/element';
@@ -99,10 +100,7 @@ export function setData( view, data, options = {} ) {
 	const root = document.getRoot( rootName );
 	const root = document.getRoot( rootName );
 
 
 	view.change( writer => {
 	view.change( writer => {
-		const result = setData._parse( data, {
-			rootElement: root,
-			stylesProcessor: document.stylesProcessor
-		} );
+		const result = setData._parse( data, { rootElement: root } );
 
 
 		if ( result.view && result.selection ) {
 		if ( result.view && result.selection ) {
 			writer.setSelection( result.selection );
 			writer.setSelection( result.selection );
@@ -331,13 +329,13 @@ export function stringify( node, selectionOrPositionOrRange = null, options = {}
  * to parse.
  * to parse.
  */
  */
 export function parse( data, options = {} ) {
 export function parse( data, options = {} ) {
-	const stylesProcessor = new StylesProcessor();
+	const viewDocument = new ViewDocument( new StylesProcessor() );
 
 
 	options.order = options.order || [];
 	options.order = options.order || [];
 	const rangeParser = new RangeParser( {
 	const rangeParser = new RangeParser( {
 		sameSelectionCharacters: options.sameSelectionCharacters
 		sameSelectionCharacters: options.sameSelectionCharacters
 	} );
 	} );
-	const processor = new XmlDataProcessor( stylesProcessor, {
+	const processor = new XmlDataProcessor( viewDocument, {
 		namespaces: Object.keys( allowedTypes )
 		namespaces: Object.keys( allowedTypes )
 	} );
 	} );
 
 

+ 1 - 1
packages/ckeditor5-engine/src/model/model.js

@@ -334,7 +334,7 @@ export default class Model {
 	 *
 	 *
 	 *		// You can create your own HtmlDataProcessor instance or use editor.data.processor
 	 *		// You can create your own HtmlDataProcessor instance or use editor.data.processor
 	 *		// if you have not overridden the default one (which is the HtmlDataProcessor instance).
 	 *		// if you have not overridden the default one (which is the HtmlDataProcessor instance).
-	 *		const htmlDP = new HtmlDataProcessor( new StylesProcessor() );
+	 *		const htmlDP = new HtmlDataProcessor( viewDocument );
 	 *
 	 *
 	 *		// Convert an HTML string to a view document fragment:
 	 *		// Convert an HTML string to a view document fragment:
 	 *		const viewFragment = htmlDP.toView( htmlString );
 	 *		const viewFragment = htmlDP.toView( htmlString );

+ 0 - 16
packages/ckeditor5-engine/src/view/document.js

@@ -170,22 +170,6 @@ export default class Document {
 		this.stopListening();
 		this.stopListening();
 	}
 	}
 
 
-	/**
-	 * Adds a style processor normalization rules.
-	 *
-	 * The available style processors:
-	 *
-	 * * background: {@link module:engine/view/styles/background~addBackgroundRules}
-	 * * border: {@link module:engine/view/styles/border~addBorderRules}
-	 * * margin: {@link module:engine/view/styles/margin~addMarginRules}
-	 * * padding: {@link module:engine/view/styles/padding~addPaddingRules}
-	 *
-	 * @param {Function} callback
-	 */
-	addStyleProcessorRules( callback ) {
-		callback( this.stylesProcessor );
-	}
-
 	/**
 	/**
 	 * Performs post-fixer loops. Executes post-fixer callbacks as long as none of them has done any changes to the model.
 	 * Performs post-fixer loops. Executes post-fixer callbacks as long as none of them has done any changes to the model.
 	 *
 	 *

+ 16 - 11
packages/ckeditor5-engine/src/view/domconverter.js

@@ -44,10 +44,17 @@ export default class DomConverter {
 	/**
 	/**
 	 * Creates DOM converter.
 	 * Creates DOM converter.
 	 *
 	 *
+	 * @param {module:engine/view/document~Document} document
 	 * @param {Object} options Object with configuration options.
 	 * @param {Object} options Object with configuration options.
 	 * @param {module:engine/view/filler~BlockFillerMode} [options.blockFillerMode='br'] The type of the block filler to use.
 	 * @param {module:engine/view/filler~BlockFillerMode} [options.blockFillerMode='br'] The type of the block filler to use.
 	 */
 	 */
-	constructor( options = {} ) {
+	constructor( document, options = {} ) {
+		/**
+		 * @readonly
+		 * @type {module:engine/view/document~Document}
+		 */
+		this.document = document;
+
 		/**
 		/**
 		 * The mode of a block filler used by DOM converter.
 		 * The mode of a block filler used by DOM converter.
 		 *
 		 *
@@ -373,7 +380,6 @@ export default class DomConverter {
 	 * {@link module:engine/view/filler fillers} `null` will be returned.
 	 * {@link module:engine/view/filler fillers} `null` will be returned.
 	 * For all DOM elements rendered by {@link module:engine/view/uielement~UIElement} that UIElement will be returned.
 	 * For all DOM elements rendered by {@link module:engine/view/uielement~UIElement} that UIElement will be returned.
 	 *
 	 *
-	 * @param {module:engine/view/document~Document} viewDocument View document where the created node will belong to.
 	 * @param {Node|DocumentFragment} domNode DOM node or document fragment to transform.
 	 * @param {Node|DocumentFragment} domNode DOM node or document fragment to transform.
 	 * @param {Object} [options] Conversion options.
 	 * @param {Object} [options] Conversion options.
 	 * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.
 	 * @param {Boolean} [options.bind=false] Determines whether new elements will be bound.
@@ -382,7 +388,7 @@ export default class DomConverter {
 	 * @returns {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment|null} Converted node or document fragment
 	 * @returns {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment|null} Converted node or document fragment
 	 * or `null` if DOM node is a {@link module:engine/view/filler filler} or the given node is an empty text node.
 	 * or `null` if DOM node is a {@link module:engine/view/filler filler} or the given node is an empty text node.
 	 */
 	 */
-	domToView( viewDocument, domNode, options = {} ) {
+	domToView( domNode, options = {} ) {
 		if ( this.isBlockFiller( domNode, this.blockFillerMode ) ) {
 		if ( this.isBlockFiller( domNode, this.blockFillerMode ) ) {
 			return null;
 			return null;
 		}
 		}
@@ -400,7 +406,7 @@ export default class DomConverter {
 			} else {
 			} else {
 				const textData = this._processDataFromDomText( domNode );
 				const textData = this._processDataFromDomText( domNode );
 
 
-				return textData === '' ? null : new ViewText( viewDocument, textData );
+				return textData === '' ? null : new ViewText( this.document, textData );
 			}
 			}
 		} else if ( this.isComment( domNode ) ) {
 		} else if ( this.isComment( domNode ) ) {
 			return null;
 			return null;
@@ -413,7 +419,7 @@ export default class DomConverter {
 
 
 			if ( this.isDocumentFragment( domNode ) ) {
 			if ( this.isDocumentFragment( domNode ) ) {
 				// Create view document fragment.
 				// Create view document fragment.
-				viewElement = new ViewDocumentFragment( viewDocument );
+				viewElement = new ViewDocumentFragment( this.document );
 
 
 				if ( options.bind ) {
 				if ( options.bind ) {
 					this.bindDocumentFragments( domNode, viewElement );
 					this.bindDocumentFragments( domNode, viewElement );
@@ -421,7 +427,7 @@ export default class DomConverter {
 			} else {
 			} else {
 				// Create view element.
 				// Create view element.
 				const viewName = options.keepOriginalCase ? domNode.tagName : domNode.tagName.toLowerCase();
 				const viewName = options.keepOriginalCase ? domNode.tagName : domNode.tagName.toLowerCase();
-				viewElement = new ViewElement( viewDocument, viewName );
+				viewElement = new ViewElement( this.document, viewName );
 
 
 				if ( options.bind ) {
 				if ( options.bind ) {
 					this.bindElements( domNode, viewElement );
 					this.bindElements( domNode, viewElement );
@@ -436,7 +442,7 @@ export default class DomConverter {
 			}
 			}
 
 
 			if ( options.withChildren || options.withChildren === undefined ) {
 			if ( options.withChildren || options.withChildren === undefined ) {
-				for ( const child of this.domChildrenToView( viewDocument, domNode, options ) ) {
+				for ( const child of this.domChildrenToView( domNode, options ) ) {
 					viewElement._appendChild( child );
 					viewElement._appendChild( child );
 				}
 				}
 			}
 			}
@@ -450,15 +456,14 @@ export default class DomConverter {
 	 * the {@link module:engine/view/domconverter~DomConverter#domToView} method.
 	 * the {@link module:engine/view/domconverter~DomConverter#domToView} method.
 	 * Additionally this method omits block {@link module:engine/view/filler filler}, if it exists in the DOM parent.
 	 * Additionally this method omits block {@link module:engine/view/filler filler}, if it exists in the DOM parent.
 	 *
 	 *
-	 * @param {module:engine/view/document~Document} viewDocument View document where the created node will belong to.
 	 * @param {HTMLElement} domElement Parent DOM element.
 	 * @param {HTMLElement} domElement Parent DOM element.
 	 * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
 	 * @param {Object} options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.
 	 * @returns {Iterable.<module:engine/view/node~Node>} View nodes.
 	 * @returns {Iterable.<module:engine/view/node~Node>} View nodes.
 	 */
 	 */
-	* domChildrenToView( viewDocument, domElement, options = {} ) {
+	* domChildrenToView( domElement, options = {} ) {
 		for ( let i = 0; i < domElement.childNodes.length; i++ ) {
 		for ( let i = 0; i < domElement.childNodes.length; i++ ) {
 			const domChild = domElement.childNodes[ i ];
 			const domChild = domElement.childNodes[ i ];
-			const viewChild = this.domToView( viewDocument, domChild, options );
+			const viewChild = this.domToView( domChild, options );
 
 
 			if ( viewChild !== null ) {
 			if ( viewChild !== null ) {
 				yield viewChild;
 				yield viewChild;
@@ -802,7 +807,7 @@ export default class DomConverter {
 	/**
 	/**
 	 * Checks if the node is an instance of the block filler for this DOM converter.
 	 * Checks if the node is an instance of the block filler for this DOM converter.
 	 *
 	 *
-	 *		const converter = new DomConverter( { blockFillerMode: 'br' } );
+	 *		const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
 	 *
 	 *
 	 *		converter.isBlockFiller( BR_FILLER( document ) ); // true
 	 *		converter.isBlockFiller( BR_FILLER( document ) ); // true
 	 *		converter.isBlockFiller( NBSP_FILLER( document ) ); // false
 	 *		converter.isBlockFiller( NBSP_FILLER( document ) ); // false

+ 5 - 1
packages/ckeditor5-engine/src/view/element.js

@@ -387,7 +387,7 @@ export default class Element extends Node {
 	 * For an element with style set to `'margin:1px'`:
 	 * For an element with style set to `'margin:1px'`:
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		const element = view.change( writer => {
 	 *		const element = view.change( writer => {
 	 *			const element = writer.createElement();
 	 *			const element = writer.createElement();
@@ -667,6 +667,10 @@ export default class Element extends Node {
 		if ( key == 'class' ) {
 		if ( key == 'class' ) {
 			parseClasses( this._classes, value );
 			parseClasses( this._classes, value );
 		} else if ( key == 'style' ) {
 		} else if ( key == 'style' ) {
+			// if (!this._styles ) {
+			// 	debugger;
+			// }
+
 			this._styles.setTo( value );
 			this._styles.setTo( value );
 		} else {
 		} else {
 			this._attrs.set( key, value );
 			this._attrs.set( key, value );

+ 2 - 2
packages/ckeditor5-engine/src/view/observer/mutationobserver.js

@@ -206,7 +206,7 @@ export default class MutationObserver extends Observer {
 		for ( const viewElement of mutatedElements ) {
 		for ( const viewElement of mutatedElements ) {
 			const domElement = domConverter.mapViewToDom( viewElement );
 			const domElement = domConverter.mapViewToDom( viewElement );
 			const viewChildren = Array.from( viewElement.getChildren() );
 			const viewChildren = Array.from( viewElement.getChildren() );
-			const newViewChildren = Array.from( domConverter.domChildrenToView( this.document, domElement, { withChildren: false } ) );
+			const newViewChildren = Array.from( domConverter.domChildrenToView( domElement, { withChildren: false } ) );
 
 
 			// It may happen that as a result of many changes (sth was inserted and then removed),
 			// It may happen that as a result of many changes (sth was inserted and then removed),
 			// both elements haven't really changed. #1031
 			// both elements haven't really changed. #1031
@@ -287,7 +287,7 @@ export default class MutationObserver extends Observer {
 
 
 		// Check if mutation added only one node on the end of its parent.
 		// Check if mutation added only one node on the end of its parent.
 		if ( mutation.nextSibling === null && mutation.removedNodes.length === 0 && mutation.addedNodes.length == 1 ) {
 		if ( mutation.nextSibling === null && mutation.removedNodes.length === 0 && mutation.addedNodes.length == 1 ) {
-			addedNode = this.domConverter.domToView( this.document, mutation.addedNodes[ 0 ], {
+			addedNode = this.domConverter.domToView( mutation.addedNodes[ 0 ], {
 				withChildren: false
 				withChildren: false
 			} );
 			} );
 		}
 		}

+ 1 - 1
packages/ckeditor5-engine/src/view/renderer.js

@@ -564,7 +564,7 @@ export default class Renderer {
 				remove( actualDomChildren[ i ] );
 				remove( actualDomChildren[ i ] );
 			} else { // 'equal'
 			} else { // 'equal'
 				// Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).
 				// Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).
-				this._markDescendantTextToSync( this.domConverter.domToView( this._viewDocument, expectedDomChildren[ i ] ) );
+				this._markDescendantTextToSync( this.domConverter.domToView( expectedDomChildren[ i ] ) );
 				i++;
 				i++;
 			}
 			}
 		}
 		}

+ 1 - 1
packages/ckeditor5-engine/src/view/styles/background.js

@@ -12,7 +12,7 @@ import { getShorthandValues, isAttachment, isColor, isPosition, isRepeat, isURL
 /**
 /**
  * Adds a background CSS styles processing rules.
  * Adds a background CSS styles processing rules.
  *
  *
- *		editor.editing.view.document.addStyleProcessorRules( addBackgroundRules );
+ *		editor.data.addStyleProcessorRules( addBackgroundRules );
  *
  *
  * The normalized value is stored as:
  * The normalized value is stored as:
  *
  *

+ 1 - 1
packages/ckeditor5-engine/src/view/styles/border.js

@@ -12,7 +12,7 @@ import { getShorthandValues, getBoxSidesValueReducer, getBoxSidesValues, isLengt
 /**
 /**
  * Adds a border CSS styles processing rules.
  * Adds a border CSS styles processing rules.
  *
  *
- *		editor.editing.view.document.addStyleProcessorRules( addBorderRules );
+ *		editor.data.addStyleProcessorRules( addBorderRules );
  *
  *
  * This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:
  * This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:
  *
  *

+ 1 - 1
packages/ckeditor5-engine/src/view/styles/margin.js

@@ -12,7 +12,7 @@ import { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils
 /**
 /**
  * Adds a margin CSS styles processing rules.
  * Adds a margin CSS styles processing rules.
  *
  *
- *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+ *		editor.data.addStyleProcessorRules( addMarginRules );
  *
  *
  * The normalized value is stored as:
  * The normalized value is stored as:
  *
  *

+ 1 - 1
packages/ckeditor5-engine/src/view/styles/padding.js

@@ -12,7 +12,7 @@ import { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils
 /**
 /**
  * Adds a margin CSS styles processing rules.
  * Adds a margin CSS styles processing rules.
  *
  *
- *		editor.editing.view.document.addStyleProcessorRules( addPaddingRules );
+ *		editor.data.addStyleProcessorRules( addPaddingRules );
  *
  *
  * The normalized value is stored as:
  * The normalized value is stored as:
  *
  *

+ 6 - 6
packages/ckeditor5-engine/src/view/stylesmap.js

@@ -94,7 +94,7 @@ export default class StylesMap {
 	 * **Note**: This check supports normalized style names.
 	 * **Note**: This check supports normalized style names.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		styles.setTo( 'margin:2px;' );
 	 *		styles.setTo( 'margin:2px;' );
 	 *
 	 *
@@ -143,7 +143,7 @@ export default class StylesMap {
 	 * to normalize passed values.
 	 * to normalize passed values.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		styles.set( 'margin', '2px' );
 	 *		styles.set( 'margin', '2px' );
 	 *
 	 *
@@ -196,7 +196,7 @@ export default class StylesMap {
 	 * to normalize passed values.
 	 * to normalize passed values.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		styles.setTo( 'margin:1px' );
 	 *		styles.setTo( 'margin:1px' );
 	 *
 	 *
@@ -220,7 +220,7 @@ export default class StylesMap {
 	 * Returns a normalized style object or a single value.
 	 * Returns a normalized style object or a single value.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		const styles = new Styles();
 	 *		const styles = new Styles();
 	 *		styles.setTo( 'margin:1px 2px 3em;' );
 	 *		styles.setTo( 'margin:1px 2px 3em;' );
@@ -256,7 +256,7 @@ export default class StylesMap {
 	 * **Note**: This method supports normalized styles if defined.
 	 * **Note**: This method supports normalized styles if defined.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		styles.set( 'margin' , '1px' );
 	 *		styles.set( 'margin' , '1px' );
 	 *		styles.set( 'background', '#f00' );
 	 *		styles.set( 'background', '#f00' );
@@ -282,7 +282,7 @@ export default class StylesMap {
 	 * Returns property as a value string or undefined if property is not set.
 	 * Returns property as a value string or undefined if property is not set.
 	 *
 	 *
 	 *		// Enable 'margin' shorthand processing:
 	 *		// Enable 'margin' shorthand processing:
-	 *		editor.editing.view.document.addStyleProcessorRules( addMarginRules );
+	 *		editor.data.addStyleProcessorRules( addMarginRules );
 	 *
 	 *
 	 *		const styles = new Styles();
 	 *		const styles = new Styles();
 	 *		styles.setTo( 'margin:1px;' );
 	 *		styles.setTo( 'margin:1px;' );

+ 3 - 3
packages/ckeditor5-engine/src/view/uielement.js

@@ -43,12 +43,12 @@ export default class UIElement extends Element {
 	 * @protected
 	 * @protected
 	 * @param {module:engine/view/document~Document} document A document where the element belongs to.
 	 * @param {module:engine/view/document~Document} document A document where the element belongs to.
 	 * @param {String} name Node name.
 	 * @param {String} name Node name.
-	 * @param {Object|Iterable} [attrs] Collection of attributes.
+	 * @param {Object|Iterable} [attributes] Collection of attributes.
 	 * @param {module:engine/view/node~Node|Iterable.<module:engine/view/node~Node>} [children]
 	 * @param {module:engine/view/node~Node|Iterable.<module:engine/view/node~Node>} [children]
 	 * A list of nodes to be inserted into created element.
 	 * A list of nodes to be inserted into created element.
 	 */
 	 */
-	constructor( document, name, attrs, children ) {
-		super( document, name, attrs, children );
+	constructor( document, name, attributes, children ) {
+		super( document, name, attributes, children );
 
 
 		/**
 		/**
 		 * Returns `null` because filler is not needed for UIElements.
 		 * Returns `null` because filler is not needed for UIElements.

+ 1 - 1
packages/ckeditor5-engine/src/view/view.js

@@ -82,7 +82,7 @@ export default class View {
 		 * @readonly
 		 * @readonly
 		 * @type {module:engine/view/domconverter~DomConverter}
 		 * @type {module:engine/view/domconverter~DomConverter}
 		 */
 		 */
-		this.domConverter = new DomConverter();
+		this.domConverter = new DomConverter( this.document );
 
 
 		/**
 		/**
 		 * Roots of the DOM tree. Map on the `HTMLElement`s with roots names as keys.
 		 * Roots of the DOM tree. Map on the `HTMLElement`s with roots names as keys.

+ 16 - 9
packages/ckeditor5-engine/tests/controller/datacontroller.js

@@ -24,14 +24,10 @@ import { expectToThrowCKEditorError } from '@ckeditor/ckeditor5-utils/tests/_uti
 import { StylesProcessor } from '../../src/view/stylesmap';
 import { StylesProcessor } from '../../src/view/stylesmap';
 
 
 describe( 'DataController', () => {
 describe( 'DataController', () => {
-	let model, modelDocument, htmlDataProcessor, data, schema, upcastHelpers, downcastHelpers, viewDocument;
-	let stylesProcessor;
-
-	before( () => {
-		stylesProcessor = new StylesProcessor();
-	} );
+	let model, modelDocument, htmlDataProcessor, data, schema, upcastHelpers, downcastHelpers, viewDocument, stylesProcessor;
 
 
 	beforeEach( () => {
 	beforeEach( () => {
+		stylesProcessor = new StylesProcessor();
 		model = new Model();
 		model = new Model();
 
 
 		schema = model.schema;
 		schema = model.schema;
@@ -42,10 +38,10 @@ describe( 'DataController', () => {
 
 
 		schema.register( '$title', { inheritAllFrom: '$root' } );
 		schema.register( '$title', { inheritAllFrom: '$root' } );
 
 
-		htmlDataProcessor = new HtmlDataProcessor( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		htmlDataProcessor = new HtmlDataProcessor( viewDocument );
 
 
-		data = new DataController( model, stylesProcessor, htmlDataProcessor );
+		data = new DataController( stylesProcessor, model, htmlDataProcessor );
 
 
 		upcastHelpers = new UpcastHelpers( [ data.upcastDispatcher ] );
 		upcastHelpers = new UpcastHelpers( [ data.upcastDispatcher ] );
 		downcastHelpers = new DowncastHelpers( [ data.downcastDispatcher ] );
 		downcastHelpers = new DowncastHelpers( [ data.downcastDispatcher ] );
@@ -53,7 +49,7 @@ describe( 'DataController', () => {
 
 
 	describe( 'constructor()', () => {
 	describe( 'constructor()', () => {
 		it( 'works without data processor', () => {
 		it( 'works without data processor', () => {
-			const data = new DataController( model, stylesProcessor );
+			const data = new DataController( stylesProcessor, model );
 
 
 			expect( data.processor ).to.be.undefined;
 			expect( data.processor ).to.be.undefined;
 		} );
 		} );
@@ -577,4 +573,15 @@ describe( 'DataController', () => {
 			expect( data ).to.respondTo( 'destroy' );
 			expect( data ).to.respondTo( 'destroy' );
 		} );
 		} );
 	} );
 	} );
+
+	describe( 'addStyleProcessorRules()', () => {
+		it( 'should execute callback with an instance of StyleProcessor as the first argument', () => {
+			const spy = sinon.spy();
+
+			data.addStyleProcessorRules( spy );
+
+			sinon.assert.calledOnce( spy );
+			sinon.assert.calledWithExactly( spy, stylesProcessor );
+		} );
+	} );
 } );
 } );

+ 8 - 7
packages/ckeditor5-engine/tests/conversion/downcasthelpers.js

@@ -36,6 +36,7 @@ import createViewRoot from '../view/_utils/createroot';
 import { setData as setModelData } from '../../src/dev-utils/model';
 import { setData as setModelData } from '../../src/dev-utils/model';
 import { expectToThrowCKEditorError } from '@ckeditor/ckeditor5-utils/tests/_utils/utils';
 import { expectToThrowCKEditorError } from '@ckeditor/ckeditor5-utils/tests/_utils/utils';
 import { StylesProcessor } from '../../src/view/stylesmap';
 import { StylesProcessor } from '../../src/view/stylesmap';
+import DowncastWriter from '../../src/view/downcastwriter';
 
 
 describe( 'DowncastHelpers', () => {
 describe( 'DowncastHelpers', () => {
 	let model, modelRoot, viewRoot, downcastHelpers, controller;
 	let model, modelRoot, viewRoot, downcastHelpers, controller;
@@ -1704,10 +1705,10 @@ describe( 'downcast converters', () => {
 	} );
 	} );
 
 
 	describe( 'createViewElementFromHighlightDescriptor()', () => {
 	describe( 'createViewElementFromHighlightDescriptor()', () => {
-		let viewDocument;
+		let viewWriter;
 
 
 		beforeEach( () => {
 		beforeEach( () => {
-			viewDocument = new ViewDocument( stylesProcessor );
+			viewWriter = new DowncastWriter( controller.view.document );
 		} );
 		} );
 
 
 		it( 'should return attribute element from descriptor object', () => {
 		it( 'should return attribute element from descriptor object', () => {
@@ -1716,7 +1717,7 @@ describe( 'downcast converters', () => {
 				attributes: { one: '1', two: '2' },
 				attributes: { one: '1', two: '2' },
 				priority: 7
 				priority: 7
 			};
 			};
-			const element = createViewElementFromHighlightDescriptor( viewDocument, descriptor );
+			const element = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 
 
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.name ).to.equal( 'span' );
 			expect( element.name ).to.equal( 'span' );
@@ -1734,7 +1735,7 @@ describe( 'downcast converters', () => {
 				attributes: { one: '1', two: '2' },
 				attributes: { one: '1', two: '2' },
 				priority: 7
 				priority: 7
 			};
 			};
-			const element = createViewElementFromHighlightDescriptor( viewDocument, descriptor );
+			const element = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 
 
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.name ).to.equal( 'span' );
 			expect( element.name ).to.equal( 'span' );
@@ -1752,7 +1753,7 @@ describe( 'downcast converters', () => {
 				attributes: { one: '1', two: '2' },
 				attributes: { one: '1', two: '2' },
 				priority: 7
 				priority: 7
 			};
 			};
-			const element = createViewElementFromHighlightDescriptor( viewDocument, descriptor );
+			const element = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 
 
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.name ).to.equal( 'span' );
 			expect( element.name ).to.equal( 'span' );
@@ -1768,7 +1769,7 @@ describe( 'downcast converters', () => {
 				classes: 'foo-class',
 				classes: 'foo-class',
 				attributes: { one: '1', two: '2' }
 				attributes: { one: '1', two: '2' }
 			};
 			};
-			const element = createViewElementFromHighlightDescriptor( viewDocument, descriptor );
+			const element = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 
 
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.name ).to.equal( 'span' );
 			expect( element.name ).to.equal( 'span' );
@@ -1785,7 +1786,7 @@ describe( 'downcast converters', () => {
 				classes: 'foo-class',
 				classes: 'foo-class',
 				priority: 7
 				priority: 7
 			};
 			};
-			const element = createViewElementFromHighlightDescriptor( viewDocument, descriptor );
+			const element = createViewElementFromHighlightDescriptor( viewWriter, descriptor );
 
 
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.is( 'attributeElement' ) ).to.be.true;
 			expect( element.name ).to.equal( 'span' );
 			expect( element.name ).to.equal( 'span' );

+ 3 - 4
packages/ckeditor5-engine/tests/dataprocessor/htmldataprocessor.js

@@ -13,13 +13,12 @@ import { StylesProcessor } from '../../src/view/stylesmap';
 import ViewDocument from '../../src/view/document';
 import ViewDocument from '../../src/view/document';
 
 
 describe( 'HtmlDataProcessor', () => {
 describe( 'HtmlDataProcessor', () => {
-	const stylesProcessor = new StylesProcessor();
-	const dataProcessor = new HtmlDataProcessor( stylesProcessor );
-
-	let viewDocument;
+	let stylesProcessor, dataProcessor, viewDocument;
 
 
 	beforeEach( () => {
 	beforeEach( () => {
+		stylesProcessor = new StylesProcessor();
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		dataProcessor = new HtmlDataProcessor( viewDocument );
 	} );
 	} );
 
 
 	describe( 'toView()', () => {
 	describe( 'toView()', () => {

+ 3 - 6
packages/ckeditor5-engine/tests/dataprocessor/xmldataprocessor.js

@@ -15,13 +15,10 @@ import { StylesProcessor } from '../../src/view/stylesmap';
 describe( 'XmlDataProcessor', () => {
 describe( 'XmlDataProcessor', () => {
 	let stylesProcessor, dataProcessor, viewDocument;
 	let stylesProcessor, dataProcessor, viewDocument;
 
 
-	before( () => {
-		stylesProcessor = new StylesProcessor();
-	} );
-
 	beforeEach( () => {
 	beforeEach( () => {
-		dataProcessor = new XmlDataProcessor( stylesProcessor );
+		stylesProcessor = new StylesProcessor();
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		dataProcessor = new XmlDataProcessor( viewDocument );
 	} );
 	} );
 
 
 	describe( 'toView', () => {
 	describe( 'toView', () => {
@@ -50,7 +47,7 @@ describe( 'XmlDataProcessor', () => {
 		} );
 		} );
 
 
 		it( 'should allow to use registered namespaces', () => {
 		it( 'should allow to use registered namespaces', () => {
-			dataProcessor = new XmlDataProcessor( stylesProcessor, {
+			dataProcessor = new XmlDataProcessor( viewDocument, {
 				namespaces: [ 'foo', 'bar' ]
 				namespaces: [ 'foo', 'bar' ]
 			} );
 			} );
 
 

+ 0 - 11
packages/ckeditor5-engine/tests/view/document.js

@@ -96,15 +96,4 @@ describe( 'Document', () => {
 			expect( calls ).to.equal( 4 );
 			expect( calls ).to.equal( 4 );
 		} );
 		} );
 	} );
 	} );
-
-	describe( 'addStyleProcessorRules()', () => {
-		it( 'should execute callback with an instance of StyleProcessor as the first argument', () => {
-			const spy = sinon.spy();
-
-			viewDocument.addStyleProcessorRules( spy );
-
-			sinon.assert.calledOnce( spy );
-			sinon.assert.calledWithExactly( spy, viewDocument.stylesProcessor );
-		} );
-	} );
 } );
 } );

+ 13 - 14
packages/ckeditor5-engine/tests/view/domconverter/binding.js

@@ -20,11 +20,10 @@ import { StylesProcessor } from '../../../src/view/stylesmap';
 describe( 'DomConverter', () => {
 describe( 'DomConverter', () => {
 	let converter, viewDocument, stylesProcessor;
 	let converter, viewDocument, stylesProcessor;
 
 
-	before( () => {
-		converter = new DomConverter();
+	beforeEach( () => {
 		stylesProcessor = new StylesProcessor();
 		stylesProcessor = new StylesProcessor();
-
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		converter = new DomConverter( viewDocument );
 	} );
 	} );
 
 
 	describe( 'bindElements()', () => {
 	describe( 'bindElements()', () => {
@@ -63,7 +62,7 @@ describe( 'DomConverter', () => {
 
 
 		it( 'should return corresponding view document fragment', () => {
 		it( 'should return corresponding view document fragment', () => {
 			const domFragment = document.createDocumentFragment();
 			const domFragment = document.createDocumentFragment();
-			const viewFragment = converter.domToView( viewDocument, domFragment );
+			const viewFragment = converter.domToView( domFragment );
 
 
 			converter.bindElements( domFragment, viewFragment );
 			converter.bindElements( domFragment, viewFragment );
 
 
@@ -86,7 +85,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindElements( domImg, viewImg );
 			converter.bindElements( domImg, viewImg );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 1 );
 			const viewText = viewP.getChild( 1 );
 
 
 			expect( converter.findCorrespondingViewText( domText ) ).to.equal( viewText );
 			expect( converter.findCorrespondingViewText( domText ) ).to.equal( viewText );
@@ -96,7 +95,7 @@ describe( 'DomConverter', () => {
 			const domText = document.createTextNode( 'foo' );
 			const domText = document.createTextNode( 'foo' );
 			const domP = createElement( document, 'p', null, domText );
 			const domP = createElement( document, 'p', null, domText );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 0 );
 			const viewText = viewP.getChild( 0 );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
@@ -109,7 +108,7 @@ describe( 'DomConverter', () => {
 			const domText = document.createTextNode( 'foo' );
 			const domText = document.createTextNode( 'foo' );
 			const domP = createElement( document, 'p', null, [ domImg, domText ] );
 			const domP = createElement( document, 'p', null, [ domImg, domText ] );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
 
 
@@ -121,7 +120,7 @@ describe( 'DomConverter', () => {
 			const domTextBar = document.createTextNode( 'bar' );
 			const domTextBar = document.createTextNode( 'bar' );
 			const domP = createElement( document, 'p', null, [ domTextFoo, domTextBar ] );
 			const domP = createElement( document, 'p', null, [ domTextFoo, domTextBar ] );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
 
 
@@ -139,7 +138,7 @@ describe( 'DomConverter', () => {
 			const domFiller = document.createTextNode( INLINE_FILLER );
 			const domFiller = document.createTextNode( INLINE_FILLER );
 			const domP = createElement( document, 'p', null, domFiller );
 			const domP = createElement( document, 'p', null, domFiller );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
 
 
@@ -212,7 +211,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindElements( domImg, viewImg );
 			converter.bindElements( domImg, viewImg );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 1 );
 			const viewText = viewP.getChild( 1 );
 
 
 			expect( converter.findCorrespondingDomText( viewText ) ).to.equal( domText );
 			expect( converter.findCorrespondingDomText( viewText ) ).to.equal( domText );
@@ -224,7 +223,7 @@ describe( 'DomConverter', () => {
 
 
 			domP.appendChild( domText );
 			domP.appendChild( domText );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 0 );
 			const viewText = viewP.getChild( 0 );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
@@ -240,7 +239,7 @@ describe( 'DomConverter', () => {
 			domP.appendChild( domImg );
 			domP.appendChild( domImg );
 			domP.appendChild( domText );
 			domP.appendChild( domText );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 1 );
 			const viewText = viewP.getChild( 1 );
 
 
 			converter.bindElements( domP, viewP );
 			converter.bindElements( domP, viewP );
@@ -254,7 +253,7 @@ describe( 'DomConverter', () => {
 
 
 			domP.appendChild( domText );
 			domP.appendChild( domText );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 			const viewText = viewP.getChild( 0 );
 			const viewText = viewP.getChild( 0 );
 
 
 			expect( converter.findCorrespondingDomText( viewText ) ).to.be.null;
 			expect( converter.findCorrespondingDomText( viewText ) ).to.be.null;
@@ -262,7 +261,7 @@ describe( 'DomConverter', () => {
 
 
 		it( 'should return null if there is no previous sibling and parent', () => {
 		it( 'should return null if there is no previous sibling and parent', () => {
 			const domText = document.createTextNode( 'foo' );
 			const domText = document.createTextNode( 'foo' );
-			const viewText = converter.domToView( viewDocument, domText );
+			const viewText = converter.domToView( domText );
 
 
 			expect( converter.findCorrespondingDomText( viewText ) ).to.be.null;
 			expect( converter.findCorrespondingDomText( viewText ) ).to.be.null;
 		} );
 		} );

+ 43 - 43
packages/ckeditor5-engine/tests/view/domconverter/dom-to-view.js

@@ -21,9 +21,9 @@ describe( 'DomConverter', () => {
 	let converter, viewDocument, stylesProcessor;
 	let converter, viewDocument, stylesProcessor;
 
 
 	before( () => {
 	before( () => {
-		converter = new DomConverter();
 		stylesProcessor = new StylesProcessor();
 		stylesProcessor = new StylesProcessor();
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		converter = new DomConverter( viewDocument );
 	} );
 	} );
 
 
 	describe( 'domToView()', () => {
 	describe( 'domToView()', () => {
@@ -36,7 +36,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindElements( domImg, viewImg );
 			converter.bindElements( domImg, viewImg );
 
 
-			const viewP = converter.domToView( viewDocument, domP );
+			const viewP = converter.domToView( domP );
 
 
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP.name ).to.equal( 'p' );
 			expect( viewP.name ).to.equal( 'p' );
@@ -57,7 +57,7 @@ describe( 'DomConverter', () => {
 			const domText = document.createTextNode( 'foo' );
 			const domText = document.createTextNode( 'foo' );
 			const domP = createElement( document, 'p', { 'class': 'foo' }, [ domImg, domText ] );
 			const domP = createElement( document, 'p', { 'class': 'foo' }, [ domImg, domText ] );
 
 
-			const viewP = converter.domToView( viewDocument, domP, { bind: true } );
+			const viewP = converter.domToView( domP, { bind: true } );
 
 
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP.name ).to.equal( 'p' );
 			expect( viewP.name ).to.equal( 'p' );
@@ -77,7 +77,7 @@ describe( 'DomConverter', () => {
 			const domText = document.createTextNode( 'நிலைக்கு' );
 			const domText = document.createTextNode( 'நிலைக்கு' );
 			const domP = createElement( document, 'p', { 'class': 'foo' }, [ domText ] );
 			const domP = createElement( document, 'p', { 'class': 'foo' }, [ domText ] );
 
 
-			const viewP = converter.domToView( viewDocument, domP, { bind: true } );
+			const viewP = converter.domToView( domP, { bind: true } );
 
 
 			expect( viewP.childCount ).to.equal( 1 );
 			expect( viewP.childCount ).to.equal( 1 );
 
 
@@ -97,7 +97,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindElements( domImg, viewImg );
 			converter.bindElements( domImg, viewImg );
 
 
-			const viewP = converter.domToView( viewDocument, domP, { withChildren: false } );
+			const viewP = converter.domToView( domP, { withChildren: false } );
 
 
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP ).to.be.an.instanceof( ViewElement );
 			expect( viewP.name ).to.equal( 'p' );
 			expect( viewP.name ).to.equal( 'p' );
@@ -117,7 +117,7 @@ describe( 'DomConverter', () => {
 			domFragment.appendChild( domImg );
 			domFragment.appendChild( domImg );
 			domFragment.appendChild( domText );
 			domFragment.appendChild( domText );
 
 
-			const viewFragment = converter.domToView( viewDocument, domFragment, { bind: true } );
+			const viewFragment = converter.domToView( domFragment, { bind: true } );
 
 
 			expect( viewFragment ).to.be.an.instanceof( ViewDocumentFragment );
 			expect( viewFragment ).to.be.an.instanceof( ViewDocumentFragment );
 			expect( viewFragment.childCount ).to.equal( 2 );
 			expect( viewFragment.childCount ).to.equal( 2 );
@@ -140,7 +140,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindElements( domImg, viewImg );
 			converter.bindElements( domImg, viewImg );
 
 
-			const viewFragment = converter.domToView( viewDocument, domFragment, { withChildren: false } );
+			const viewFragment = converter.domToView( domFragment, { withChildren: false } );
 
 
 			expect( viewFragment ).to.be.an.instanceof( ViewDocumentFragment );
 			expect( viewFragment ).to.be.an.instanceof( ViewDocumentFragment );
 
 
@@ -154,7 +154,7 @@ describe( 'DomConverter', () => {
 
 
 			converter.bindDocumentFragments( domFragment, viewFragment );
 			converter.bindDocumentFragments( domFragment, viewFragment );
 
 
-			const viewFragment2 = converter.domToView( viewDocument, domFragment );
+			const viewFragment2 = converter.domToView( domFragment );
 
 
 			expect( viewFragment2 ).to.equal( viewFragment );
 			expect( viewFragment2 ).to.equal( viewFragment );
 		} );
 		} );
@@ -163,19 +163,19 @@ describe( 'DomConverter', () => {
 			// eslint-disable-next-line new-cap
 			// eslint-disable-next-line new-cap
 			const domFiller = BR_FILLER( document );
 			const domFiller = BR_FILLER( document );
 
 
-			expect( converter.domToView( viewDocument, domFiller ) ).to.be.null;
+			expect( converter.domToView( domFiller ) ).to.be.null;
 		} );
 		} );
 
 
 		it( 'should return null for empty text node', () => {
 		it( 'should return null for empty text node', () => {
 			const textNode = document.createTextNode( '' );
 			const textNode = document.createTextNode( '' );
 
 
-			expect( converter.domToView( viewDocument, textNode ) ).to.be.null;
+			expect( converter.domToView( textNode ) ).to.be.null;
 		} );
 		} );
 
 
 		it( 'should return null for a comment', () => {
 		it( 'should return null for a comment', () => {
 			const comment = document.createComment( 'abc' );
 			const comment = document.createComment( 'abc' );
 
 
-			expect( converter.domToView( viewDocument, comment ) ).to.be.null;
+			expect( converter.domToView( comment ) ).to.be.null;
 		} );
 		} );
 
 
 		describe( 'it should clear whitespaces', () => {
 		describe( 'it should clear whitespaces', () => {
@@ -190,7 +190,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -208,7 +208,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( ' ' )
 					document.createTextNode( ' ' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -223,7 +223,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( ' ' )
 					document.createTextNode( ' ' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -237,7 +237,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( '\n' )
 					document.createTextNode( '\n' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -251,7 +251,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( '\r' )
 					document.createTextNode( '\r' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -265,7 +265,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( '\t' )
 					document.createTextNode( '\t' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -283,7 +283,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.childCount ).to.equal( 2 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data )
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data )
@@ -300,7 +300,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -314,7 +314,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo' );
@@ -327,7 +327,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( ' bar' )
 					document.createTextNode( ' bar' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'bar' );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'bar' );
@@ -340,7 +340,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( ' \u00a0bar' )
 					document.createTextNode( ' \u00a0bar' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.getChild( 2 ).data ).to.equal( ' bar' );
 				expect( viewP.getChild( 2 ).data ).to.equal( ' bar' );
@@ -355,7 +355,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( ' bar' )
 					document.createTextNode( ' bar' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'bar' );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'bar' );
@@ -370,7 +370,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.childCount ).to.equal( 3 );
 				expect( viewP.getChild( 2 ).getChild( 0 ).data ).to.equal( 'bar' );
 				expect( viewP.getChild( 2 ).getChild( 0 ).data ).to.equal( 'bar' );
@@ -385,7 +385,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( 'x' )
 					document.createTextNode( 'x' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 5 );
 				expect( viewP.childCount ).to.equal( 5 );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'foo ' );
 				expect( viewP.getChild( 2 ).data ).to.equal( 'foo ' );
@@ -401,7 +401,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'f o o' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'f o o' );
 				expect( viewDiv.getChild( 1 ).getChild( 0 ).data ).to.equal( 'fo o' );
 				expect( viewDiv.getChild( 1 ).getChild( 0 ).data ).to.equal( 'fo o' );
@@ -416,7 +416,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( '\n\n \t\r\n' )
 					document.createTextNode( '\n\n \t\r\n' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'f o o' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( 'f o o' );
@@ -434,7 +434,7 @@ describe( 'DomConverter', () => {
 						domElement.appendChild( document.createTextNode( text.replace( /_/g, '\u00A0' ) ) );
 						domElement.appendChild( document.createTextNode( text.replace( /_/g, '\u00A0' ) ) );
 					}
 					}
 
 
-					const viewElement = converter.domToView( viewDocument, domElement );
+					const viewElement = converter.domToView( domElement );
 
 
 					let data = '';
 					let data = '';
 
 
@@ -524,7 +524,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( '   foo\n   foo  ' );
 				expect( viewDiv.getChild( 0 ).getChild( 0 ).data ).to.equal( '   foo\n   foo  ' );
 			} );
 			} );
@@ -539,7 +539,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( 'word' )
 					document.createTextNode( 'word' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.getChild( 1 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 1 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 1 ).childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 1 ).childCount ).to.equal( 1 );
@@ -556,7 +556,7 @@ describe( 'DomConverter', () => {
 					document.createTextNode( 'word' )
 					document.createTextNode( 'word' )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.getChild( 1 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 1 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 1 ).childCount ).to.equal( 1 );
 				expect( viewDiv.getChild( 1 ).childCount ).to.equal( 1 );
@@ -580,7 +580,7 @@ describe( 'DomConverter', () => {
 					] )
 					] )
 				] );
 				] );
 
 
-				const viewDiv = converter.domToView( viewDocument, domDiv );
+				const viewDiv = converter.domToView( domDiv );
 
 
 				expect( viewDiv.getChild( 0 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 0 ).name ).to.equal( 'span' );
 				expect( viewDiv.getChild( 0 ).childCount ).to.equal( 2 );
 				expect( viewDiv.getChild( 0 ).childCount ).to.equal( 2 );
@@ -598,7 +598,7 @@ describe( 'DomConverter', () => {
 					createElement( document, 'br' )
 					createElement( document, 'br' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo ' );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo ' );
@@ -610,7 +610,7 @@ describe( 'DomConverter', () => {
 					createElement( document, 'br' )
 					createElement( document, 'br' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo  ' );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo  ' );
@@ -622,7 +622,7 @@ describe( 'DomConverter', () => {
 					createElement( document, 'br' )
 					createElement( document, 'br' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo ' );
 				expect( viewP.getChild( 0 ).data ).to.equal( 'foo ' );
@@ -636,7 +636,7 @@ describe( 'DomConverter', () => {
 					createElement( document, 'br' )
 					createElement( document, 'br' )
 				] );
 				] );
 
 
-				const viewP = converter.domToView( viewDocument, domP );
+				const viewP = converter.domToView( domP );
 
 
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.childCount ).to.equal( 2 );
 				expect( viewP.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo ' );
 				expect( viewP.getChild( 0 ).getChild( 0 ).data ).to.equal( 'foo ' );
@@ -650,7 +650,7 @@ describe( 'DomConverter', () => {
 		describe( 'clearing auto filler', () => {
 		describe( 'clearing auto filler', () => {
 			it( 'should remove inline filler when converting dom to view', () => {
 			it( 'should remove inline filler when converting dom to view', () => {
 				const text = document.createTextNode( INLINE_FILLER + 'foo' );
 				const text = document.createTextNode( INLINE_FILLER + 'foo' );
-				const view = converter.domToView( viewDocument, text );
+				const view = converter.domToView( text );
 
 
 				expect( view.data ).to.equal( 'foo' );
 				expect( view.data ).to.equal( 'foo' );
 			} );
 			} );
@@ -658,14 +658,14 @@ describe( 'DomConverter', () => {
 			// See https://github.com/ckeditor/ckeditor5/issues/692.
 			// See https://github.com/ckeditor/ckeditor5/issues/692.
 			it( 'should not remove space after inline filler if previous node nor next node does not exist', () => {
 			it( 'should not remove space after inline filler if previous node nor next node does not exist', () => {
 				const text = document.createTextNode( INLINE_FILLER + ' ' );
 				const text = document.createTextNode( INLINE_FILLER + ' ' );
-				const view = converter.domToView( viewDocument, text );
+				const view = converter.domToView( text );
 
 
 				expect( view.data ).to.equal( ' ' );
 				expect( view.data ).to.equal( ' ' );
 			} );
 			} );
 
 
 			it( 'should convert non breaking space to normal space after inline filler', () => {
 			it( 'should convert non breaking space to normal space after inline filler', () => {
 				const text = document.createTextNode( INLINE_FILLER + '\u00A0' );
 				const text = document.createTextNode( INLINE_FILLER + '\u00A0' );
-				const view = converter.domToView( viewDocument, text );
+				const view = converter.domToView( text );
 
 
 				expect( view.data ).to.equal( ' ' );
 				expect( view.data ).to.equal( ' ' );
 			} );
 			} );
@@ -678,7 +678,7 @@ describe( 'DomConverter', () => {
 			const domText = document.createTextNode( 'foo' );
 			const domText = document.createTextNode( 'foo' );
 			const domP = createElement( document, 'p', null, [ domImg, domText ] );
 			const domP = createElement( document, 'p', null, [ domImg, domText ] );
 
 
-			const viewChildren = Array.from( converter.domChildrenToView( viewDocument, domP ) );
+			const viewChildren = Array.from( converter.domChildrenToView( domP ) );
 
 
 			expect( viewChildren.length ).to.equal( 2 );
 			expect( viewChildren.length ).to.equal( 2 );
 			expect( stringify( viewChildren[ 0 ] ) ).to.equal( '<img></img>' );
 			expect( stringify( viewChildren[ 0 ] ) ).to.equal( '<img></img>' );
@@ -690,7 +690,7 @@ describe( 'DomConverter', () => {
 			const domFiller = BR_FILLER( document );
 			const domFiller = BR_FILLER( document );
 			const domP = createElement( document, 'p', null, domFiller );
 			const domP = createElement( document, 'p', null, domFiller );
 
 
-			const viewChildren = Array.from( converter.domChildrenToView( viewDocument, domP ) );
+			const viewChildren = Array.from( converter.domChildrenToView( domP ) );
 
 
 			expect( viewChildren.length ).to.equal( 0 );
 			expect( viewChildren.length ).to.equal( 0 );
 		} );
 		} );
@@ -700,7 +700,7 @@ describe( 'DomConverter', () => {
 			const domB = createElement( document, 'b', null, 'bar' );
 			const domB = createElement( document, 'b', null, 'bar' );
 			const domP = createElement( document, 'p', null, [ domB, domText ] );
 			const domP = createElement( document, 'p', null, [ domB, domText ] );
 
 
-			const viewChildren = Array.from( converter.domChildrenToView( viewDocument, domP, { withChildren: false } ) );
+			const viewChildren = Array.from( converter.domChildrenToView( domP, { withChildren: false } ) );
 
 
 			expect( viewChildren.length ).to.equal( 2 );
 			expect( viewChildren.length ).to.equal( 2 );
 			expect( stringify( viewChildren[ 0 ] ) ).to.equal( '<b></b>' );
 			expect( stringify( viewChildren[ 0 ] ) ).to.equal( '<b></b>' );
@@ -766,7 +766,7 @@ describe( 'DomConverter', () => {
 		} );
 		} );
 
 
 		it( 'should converter position inside block filler', () => {
 		it( 'should converter position inside block filler', () => {
-			const converter = new DomConverter( { blockFillerMode: 'nbsp' } );
+			const converter = new DomConverter( viewDocument, { blockFillerMode: 'nbsp' } );
 			const domFiller = NBSP_FILLER( document ); // eslint-disable-line new-cap
 			const domFiller = NBSP_FILLER( document ); // eslint-disable-line new-cap
 			const domP = createElement( document, 'p', null, domFiller );
 			const domP = createElement( document, 'p', null, domFiller );
 
 

+ 8 - 10
packages/ckeditor5-engine/tests/view/domconverter/domconverter.js

@@ -16,16 +16,14 @@ import global from '@ckeditor/ckeditor5-utils/src/dom/global';
 import { StylesProcessor } from '../../../src/view/stylesmap';
 import { StylesProcessor } from '../../../src/view/stylesmap';
 
 
 describe( 'DomConverter', () => {
 describe( 'DomConverter', () => {
-	let converter, stylesProcessor;
+	let converter, stylesProcessor, viewDocument;
 
 
 	testUtils.createSinonSandbox();
 	testUtils.createSinonSandbox();
 
 
-	before( () => {
-		stylesProcessor = new StylesProcessor();
-	} );
-
 	beforeEach( () => {
 	beforeEach( () => {
-		converter = new DomConverter();
+		stylesProcessor = new StylesProcessor();
+		viewDocument = new ViewDocument( stylesProcessor );
+		converter = new DomConverter( viewDocument );
 	} );
 	} );
 
 
 	describe( 'constructor()', () => {
 	describe( 'constructor()', () => {
@@ -34,7 +32,7 @@ describe( 'DomConverter', () => {
 		} );
 		} );
 
 
 		it( 'should create converter with defined block mode filler', () => {
 		it( 'should create converter with defined block mode filler', () => {
-			converter = new DomConverter( { blockFillerMode: 'nbsp' } );
+			converter = new DomConverter( viewDocument, { blockFillerMode: 'nbsp' } );
 			expect( converter.blockFillerMode ).to.equal( 'nbsp' );
 			expect( converter.blockFillerMode ).to.equal( 'nbsp' );
 		} );
 		} );
 	} );
 	} );
@@ -300,7 +298,7 @@ describe( 'DomConverter', () => {
 	describe( 'isBlockFiller()', () => {
 	describe( 'isBlockFiller()', () => {
 		describe( 'mode "nbsp"', () => {
 		describe( 'mode "nbsp"', () => {
 			beforeEach( () => {
 			beforeEach( () => {
-				converter = new DomConverter( { blockFillerMode: 'nbsp' } );
+				converter = new DomConverter( viewDocument, { blockFillerMode: 'nbsp' } );
 			} );
 			} );
 
 
 			it( 'should return true if the node is an nbsp filler and is a single child of a block level element', () => {
 			it( 'should return true if the node is an nbsp filler and is a single child of a block level element', () => {
@@ -383,7 +381,7 @@ describe( 'DomConverter', () => {
 
 
 		describe( 'mode "br"', () => {
 		describe( 'mode "br"', () => {
 			beforeEach( () => {
 			beforeEach( () => {
-				converter = new DomConverter( { blockFillerMode: 'br' } );
+				converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
 			} );
 			} );
 
 
 			it( 'should return true if the node is an instance of the BR block filler', () => {
 			it( 'should return true if the node is an instance of the BR block filler', () => {
@@ -395,7 +393,7 @@ describe( 'DomConverter', () => {
 			} );
 			} );
 
 
 			it( 'should return false if the node is an instance of the NBSP block filler', () => {
 			it( 'should return false if the node is an instance of the NBSP block filler', () => {
-				converter = new DomConverter( { blockFillerMode: 'br' } );
+				converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );
 				const nbspFillerInstance = NBSP_FILLER( document ); // eslint-disable-line new-cap
 				const nbspFillerInstance = NBSP_FILLER( document ); // eslint-disable-line new-cap
 				// NBSP must be check inside a context.
 				// NBSP must be check inside a context.
 				const context = document.createElement( 'div' );
 				const context = document.createElement( 'div' );

+ 7 - 10
packages/ckeditor5-engine/tests/view/domconverter/uielement.js

@@ -27,13 +27,10 @@ describe( 'DOMConverter UIElement integration', () => {
 		return element;
 		return element;
 	}
 	}
 
 
-	before( () => {
-		stylesProcessor = new StylesProcessor();
-	} );
-
 	beforeEach( () => {
 	beforeEach( () => {
-		converter = new DomConverter();
+		stylesProcessor = new StylesProcessor();
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		converter = new DomConverter( viewDocument );
 	} );
 	} );
 
 
 	describe( 'viewToDom()', () => {
 	describe( 'viewToDom()', () => {
@@ -68,7 +65,7 @@ describe( 'DOMConverter UIElement integration', () => {
 			const uiElement = createUIElement( 'div' );
 			const uiElement = createUIElement( 'div' );
 			const domElement = converter.viewToDom( uiElement, document, { bind: true } );
 			const domElement = converter.viewToDom( uiElement, document, { bind: true } );
 
 
-			expect( converter.domToView( viewDocument, domElement ) ).to.equal( uiElement );
+			expect( converter.domToView( domElement ) ).to.equal( uiElement );
 		} );
 		} );
 
 
 		it( 'should return UIElement for nodes inside', () => {
 		it( 'should return UIElement for nodes inside', () => {
@@ -78,10 +75,10 @@ describe( 'DOMConverter UIElement integration', () => {
 			const domParagraph = domElement.childNodes[ 0 ];
 			const domParagraph = domElement.childNodes[ 0 ];
 			const domSpan = domParagraph.childNodes[ 0 ];
 			const domSpan = domParagraph.childNodes[ 0 ];
 
 
-			expect( converter.domToView( viewDocument, domParagraph ) ).to.equal( uiElement );
-			expect( converter.domToView( viewDocument, domSpan ) ).to.be.equal( uiElement );
-			expect( converter.domToView( viewDocument, domParagraph.childNodes[ 0 ] ) ).equal( uiElement );
-			expect( converter.domToView( viewDocument, domSpan.childNodes[ 0 ] ) ).equal( uiElement );
+			expect( converter.domToView( domParagraph ) ).to.equal( uiElement );
+			expect( converter.domToView( domSpan ) ).to.be.equal( uiElement );
+			expect( converter.domToView( domParagraph.childNodes[ 0 ] ) ).equal( uiElement );
+			expect( converter.domToView( domSpan.childNodes[ 0 ] ) ).equal( uiElement );
 		} );
 		} );
 	} );
 	} );
 
 

+ 2 - 2
packages/ckeditor5-engine/tests/view/domconverter/view-to-dom.js

@@ -24,10 +24,10 @@ import { StylesProcessor } from '../../../src/view/stylesmap';
 describe( 'DomConverter', () => {
 describe( 'DomConverter', () => {
 	let converter, viewDocument, stylesProcessor;
 	let converter, viewDocument, stylesProcessor;
 
 
-	before( () => {
+	beforeEach( () => {
 		stylesProcessor = new StylesProcessor();
 		stylesProcessor = new StylesProcessor();
-		converter = new DomConverter();
 		viewDocument = new ViewDocument( stylesProcessor );
 		viewDocument = new ViewDocument( stylesProcessor );
+		converter = new DomConverter( viewDocument );
 	} );
 	} );
 
 
 	describe( 'viewToDom()', () => {
 	describe( 'viewToDom()', () => {

+ 1 - 1
packages/ckeditor5-engine/tests/view/observer/domeventdata.js

@@ -25,7 +25,7 @@ describe( 'DomEventData', () => {
 		domRoot.innerHTML = '<div contenteditable="true" id="main"></div><div contenteditable="true" id="additional"></div>';
 		domRoot.innerHTML = '<div contenteditable="true" id="main"></div><div contenteditable="true" id="additional"></div>';
 		document.body.appendChild( domRoot );
 		document.body.appendChild( domRoot );
 
 
-		viewBody = view.domConverter.domToView( viewDocument, document.body, { bind: true } );
+		viewBody = view.domConverter.domToView( document.body, { bind: true } );
 	} );
 	} );
 
 
 	afterEach( () => {
 	afterEach( () => {

+ 1 - 3
packages/ckeditor5-engine/tests/view/renderer.js

@@ -34,11 +34,9 @@ describe( 'Renderer', () => {
 
 
 	testUtils.createSinonSandbox();
 	testUtils.createSinonSandbox();
 
 
-	before( () => {
+	beforeEach( () => {
 		stylesProcessor = new StylesProcessor();
 		stylesProcessor = new StylesProcessor();
-	} );
 
 
-	beforeEach( () => {
 		view = new View( stylesProcessor );
 		view = new View( stylesProcessor );
 		viewDocument = view.document;
 		viewDocument = view.document;
 
 

+ 2 - 4
packages/ckeditor5-engine/tests/view/upcastwriter.js

@@ -17,14 +17,12 @@ import { StylesProcessor } from '../../src/view/stylesmap';
 describe( 'UpcastWriter', () => {
 describe( 'UpcastWriter', () => {
 	let writer, view, dataprocessor, document, stylesProcessor;
 	let writer, view, dataprocessor, document, stylesProcessor;
 
 
-	before( () => {
+	beforeEach( () => {
 		stylesProcessor = new StylesProcessor();
 		stylesProcessor = new StylesProcessor();
 		document = new Document( stylesProcessor );
 		document = new Document( stylesProcessor );
 		writer = new UpcastWriter( document );
 		writer = new UpcastWriter( document );
-		dataprocessor = new HtmlDataProcessor( stylesProcessor );
-	} );
+		dataprocessor = new HtmlDataProcessor( document );
 
 
-	beforeEach( () => {
 		const html = '' +
 		const html = '' +
 			'<h1 style="color:blue;position:fixed;">Heading <strong>1</strong></h1>' +
 			'<h1 style="color:blue;position:fixed;">Heading <strong>1</strong></h1>' +
 			'<p class="foo1 bar2" style="text-align:left;" data-attr="abc">Foo <i>Bar</i> <strong>Bold</strong></p>' +
 			'<p class="foo1 bar2" style="text-align:left;" data-attr="abc">Foo <i>Bar</i> <strong>Bold</strong></p>' +