Explorar o código

Updated manual tests after refactoring. Fixed bugs in mutations observer and converter.

Piotr Jasiun %!s(int64=10) %!d(string=hai) anos
pai
achega
4727efba60

+ 2 - 2
packages/ckeditor5-engine/src/treeview/converter.js

@@ -123,13 +123,13 @@ export default class Converter {
 		const previousSibling = domText.previousSibling;
 
 		if ( previousSibling ) {
-			const viewElement = this.getCorespondingView( previousSibling );
+			const viewElement = this.getCorespondingViewElement( previousSibling );
 
 			if ( viewElement ) {
 				return viewElement.getNextSibling();
 			}
 		} else {
-			const viewElement = this.getCorespondingView( domText.parentElement );
+			const viewElement = this.getCorespondingViewElement( domText.parentElement );
 
 			if ( viewElement ) {
 				return viewElement.getChild( 0 );

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

@@ -21,6 +21,22 @@ export default class MutationObserver extends Observer {
 		};
 	}
 
+	/**
+	 * @method init
+	 * @param {treeView.TreeView}
+	 */
+	init( treeView ) {
+		this.treeView = treeView;
+
+		this.domRoot = treeView.domRoot;
+
+		this.converter = treeView.converter;
+
+		this.renderer = treeView.renderer;
+
+		this._mutationObserver = new window.MutationObserver( this._onMutations.bind( this ) );
+	}
+
 	/**
 	 * @method attach
 	 */
@@ -35,18 +51,6 @@ export default class MutationObserver extends Observer {
 		this._mutationObserver.disconnect();
 	}
 
-	/**
-	 * @method init
-	 * @param {treeView.TreeView}
-	 */
-	init( treeView ) {
-		this.treeView = treeView;
-		this.converter = treeView.converter;
-		this.domRoot = treeView.domRoot;
-
-		this._mutationObserver = new window.MutationObserver( this._onMutations.bind( this ) );
-	}
-
 	_onMutations( domMutations ) {
 		// Use map and set for deduplication.
 		const mutatedTexts = new Map();
@@ -54,7 +58,7 @@ export default class MutationObserver extends Observer {
 
 		for ( let mutation of domMutations ) {
 			if ( mutation.type === 'childList' ) {
-				const element = this.converter.getCorespondingView( mutation.target );
+				const element = this.converter.getCorespondingViewElement( mutation.target );
 
 				if ( element ) {
 					mutatedElements.add( element );
@@ -64,7 +68,7 @@ export default class MutationObserver extends Observer {
 
 		for ( let mutation of domMutations ) {
 			if ( mutation.type === 'characterData' ) {
-				const text = this.converter.getCorespondingView( mutation.target );
+				const text = this.converter.getCorespondingViewText( mutation.target );
 
 				if ( text && !mutatedElements.has( text.parent ) ) {
 					mutatedTexts.set( text, {
@@ -80,22 +84,22 @@ export default class MutationObserver extends Observer {
 		const viewMutations = [];
 
 		for ( let mutatedText of mutatedTexts.values() ) {
-			mutatedText.node.markToSync( 'TEXT_NEEDS_UPDATE' );
+			this.renderer.markToSync( 'TEXT', mutatedText.node );
 
 			viewMutations.push( mutatedText );
 		}
 
 		for ( let viewElement of mutatedElements ) {
-			const domElement = viewElement.getCorespondingDom();
+			const domElement = this.converter.getCorespondingDomElement( viewElement );
 			const domChildren = domElement.childNodes;
 			const viewChildren = viewElement.getChildren();
 			const newViewChildren = [];
 
 			for ( let i = 0; i < domChildren.length; i++ ) {
-				newViewChildren.push( this.converter.createFromDom( domChildren[ i ] ) );
+				newViewChildren.push( this.converter.domToView( domChildren[ i ] ) );
 			}
 
-			viewElement.markToSync( 'CHILDREN_NEED_UPDATE' );
+			this.renderer.markToSync( 'CHILDREN', viewElement );
 
 			viewMutations.push( {
 				type: 'childNodes',

+ 1 - 22
packages/ckeditor5-engine/tests/treeview/manual/init.html

@@ -1,25 +1,4 @@
 <div contenteditable="true" id="editor">
 	<p>Old</p>
 	<p>Content</p>
-</div>
-<script>
-	'use strict';
-
-	bender.amd.manualRequire( [
-		'core/treeview/treeview',
-		'core/treeview/observer/mutationobserver',
-		'core/treeview/element',
-		'core/treeview/text'
-	], function( TreeView, MutationObserver, Element, Text ) {
-		const treeView = new TreeView( document.getElementById( 'editor' ) );
-
-		treeView.viewRoot.insertChildren( 0, [
-			new Element( 'p', [], [ new Text( 'New' ) ] ),
-			new Element( 'p', [], [ new Text( 'Content' ) ] )
-			] );
-
-		treeView.render();
-
-		console.log( treeView );
-	} );
-</script>
+</div>

+ 23 - 0
packages/ckeditor5-engine/tests/treeview/manual/init.js

@@ -0,0 +1,23 @@
+/**
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+ /* global console:false */
+
+'use strict';
+
+import TreeView from '/ckeditor5/core/treeview/treeview.js';
+import Element from '/ckeditor5/core/treeview/element.js';
+import Text from '/ckeditor5/core/treeview/text.js';
+
+const treeView = new TreeView( document.getElementById( 'editor' ) );
+
+treeView.viewRoot.insertChildren( 0, [
+	new Element( 'p', [], [ new Text( 'New' ) ] ),
+	new Element( 'p', [], [ new Text( 'Content' ) ] )
+	] );
+
+treeView.render();
+
+console.log( treeView );

+ 1 - 25
packages/ckeditor5-engine/tests/treeview/manual/mutationobserver.html

@@ -1,25 +1 @@
-<div contenteditable="true" id="editor"></div>
-<script>
-	'use strict';
-
-	bender.amd.manualRequire( [
-		'core/treeview/treeview',
-		'core/treeview/observer/mutationobserver',
-		'core/treeview/element',
-		'core/treeview/text'
-	], function( TreeView, MutationObserver, Element, Text ) {
-		const treeView = new TreeView( document.getElementById( 'editor' ) );
-		const mutationObserver = new MutationObserver();
-
-		mutationObserver.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
-		
-		treeView.addObserver( mutationObserver );
-
-		treeView.viewRoot.insertChildren( 0, [
-			new Element( 'p', [], [ new Text( 'foo' ) ] ),
-			new Element( 'p', [], [ new Text( 'bom' ) ] )
-			] );
-
-		treeView.render();
-	} );
-</script>
+<div contenteditable="true" id="editor"></div>

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

@@ -0,0 +1,27 @@
+/**
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+ /* global console:false */
+
+'use strict';
+
+import TreeView from '/ckeditor5/core/treeview/treeview.js';
+import Element from '/ckeditor5/core/treeview/element.js';
+import Text from '/ckeditor5/core/treeview/text.js';
+import MutationObserver from '/ckeditor5/core/treeview/observer/mutationobserver.js';
+
+const treeView = new TreeView( document.getElementById( 'editor' ) );
+const mutationObserver = new MutationObserver();
+
+mutationObserver.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
+
+treeView.addObserver( mutationObserver );
+
+treeView.viewRoot.insertChildren( 0, [
+	new Element( 'p', [], [ new Text( 'foo' ) ] ),
+	new Element( 'p', [], [ new Text( 'bom' ) ] )
+	] );
+
+treeView.render();

+ 1 - 33
packages/ckeditor5-engine/tests/treeview/manual/typing.html

@@ -1,33 +1 @@
-<div contenteditable="true" id="editor"></div>
-<script>
-	'use strict';
-
-	bender.amd.manualRequire( [
-		'core/treeview/treeview',
-		'core/treeview/observer/mutationobserver',
-		'core/treeview/element',
-		'core/treeview/text'
-	], function( TreeView, MutationObserver, Element, Text ) {
-		const treeView = new TreeView( document.getElementById( 'editor' ) );
-		const mutationObserver = new MutationObserver();
-
-		mutationObserver.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
-		mutationObserver.on( 'mutations', handleTyping );
-		
-		treeView.addObserver( mutationObserver );
-
-		treeView.viewRoot.insertChildren( 0, [ new Element( 'p', [], [ new Text( 'foo' ) ] ) ] );
-
-		treeView.render();
-	} );
-
-	function handleTyping( evt, mutations ) {
-		const mutation = mutations[ 0 ];
-
-		if( mutations.length > 1 || mutation.type !== 'text' ) {
-			return;
-		}
-
-		mutation.node.setText( mutation.newText );
-	}
-</script>
+<div contenteditable="true" id="editor"></div>

+ 35 - 0
packages/ckeditor5-engine/tests/treeview/manual/typing.js

@@ -0,0 +1,35 @@
+/**
+ * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+ /* global console:false */
+
+'use strict';
+
+import TreeView from '/ckeditor5/core/treeview/treeview.js';
+import Element from '/ckeditor5/core/treeview/element.js';
+import Text from '/ckeditor5/core/treeview/text.js';
+import MutationObserver from '/ckeditor5/core/treeview/observer/mutationobserver.js';
+
+const treeView = new TreeView( document.getElementById( 'editor' ) );
+const mutationObserver = new MutationObserver();
+
+mutationObserver.on( 'mutations', ( evt, mutations ) => console.log( mutations ) );
+mutationObserver.on( 'mutations', handleTyping );
+
+treeView.addObserver( mutationObserver );
+
+treeView.viewRoot.insertChildren( 0, [ new Element( 'p', [], [ new Text( 'foo' ) ] ) ] );
+
+treeView.render();
+
+function handleTyping( evt, mutations ) {
+	const mutation = mutations[ 0 ];
+
+	if ( mutations.length > 1 || mutation.type !== 'text' ) {
+		return;
+	}
+
+	mutation.node.setText( mutation.newText );
+}