Răsfoiți Sursa

Merge branch t/ckeditor5-engine/1210

Internal: Align code to the new view API, introduced in engine t/1210.
Piotr Jasiun 8 ani în urmă
părinte
comite
3d2b690882

+ 13 - 12
packages/ckeditor5-clipboard/src/clipboard.js

@@ -118,8 +118,9 @@ export default class Clipboard extends Plugin {
 	 */
 	init() {
 		const editor = this.editor;
-		const doc = editor.model.document;
-		const editingView = editor.editing.view;
+		const modelDocument = editor.model.document;
+		const view = editor.editing.view;
+		const viewDocument = view.document;
 
 		/**
 		 * Data processor used to convert pasted HTML to a view structure.
@@ -129,11 +130,11 @@ export default class Clipboard extends Plugin {
 		 */
 		this._htmlDataProcessor = new HtmlDataProcessor();
 
-		editingView.addObserver( ClipboardObserver );
+		view.addObserver( ClipboardObserver );
 
 		// The clipboard paste pipeline.
 
-		this.listenTo( editingView, 'clipboardInput', ( evt, data ) => {
+		this.listenTo( viewDocument, 'clipboardInput', ( evt, data ) => {
 			// Pasting and dropping is disabled when editor is read-only.
 			// See: https://github.com/ckeditor/ckeditor5-clipboard/issues/26.
 			if ( editor.isReadOnly ) {
@@ -153,7 +154,7 @@ export default class Clipboard extends Plugin {
 
 			this.fire( 'inputTransformation', { content } );
 
-			editingView.scrollToTheSelection();
+			view.scrollToTheSelection();
 		}, { priority: 'low' } );
 
 		this.listenTo( this, 'inputTransformation', ( evt, data ) => {
@@ -170,7 +171,7 @@ export default class Clipboard extends Plugin {
 					return;
 				}
 
-				model.insertContent( modelFragment, doc.selection );
+				model.insertContent( modelFragment, modelDocument.selection );
 			}
 		}, { priority: 'low' } );
 
@@ -181,13 +182,13 @@ export default class Clipboard extends Plugin {
 
 			data.preventDefault();
 
-			const content = editor.data.toView( editor.model.getSelectedContent( doc.selection ) );
+			const content = editor.data.toView( editor.model.getSelectedContent( modelDocument.selection ) );
 
-			editingView.fire( 'clipboardOutput', { dataTransfer, content, method: evt.name } );
+			viewDocument.fire( 'clipboardOutput', { dataTransfer, content, method: evt.name } );
 		}
 
-		this.listenTo( editingView, 'copy', onCopyCut, { priority: 'low' } );
-		this.listenTo( editingView, 'cut', ( evt, data ) => {
+		this.listenTo( viewDocument, 'copy', onCopyCut, { priority: 'low' } );
+		this.listenTo( viewDocument, 'cut', ( evt, data ) => {
 			// Cutting is disabled when editor is read-only.
 			// See: https://github.com/ckeditor/ckeditor5-clipboard/issues/26.
 			if ( editor.isReadOnly ) {
@@ -197,14 +198,14 @@ export default class Clipboard extends Plugin {
 			}
 		}, { priority: 'low' } );
 
-		this.listenTo( editingView, 'clipboardOutput', ( evt, data ) => {
+		this.listenTo( viewDocument, 'clipboardOutput', ( evt, data ) => {
 			if ( !data.content.isEmpty ) {
 				data.dataTransfer.setData( 'text/html', this._htmlDataProcessor.toData( data.content ) );
 				data.dataTransfer.setData( 'text/plain', viewToPlainText( data.content ) );
 			}
 
 			if ( data.method == 'cut' ) {
-				editor.model.deleteContent( doc.selection );
+				editor.model.deleteContent( modelDocument.selection );
 			}
 		}, { priority: 'low' } );
 	}

+ 19 - 17
packages/ckeditor5-clipboard/src/clipboardobserver.js

@@ -14,25 +14,27 @@ import DataTransfer from './datatransfer';
  * {@link module:engine/view/document~Document#event:paste Paste} event observer.
  *
  * Note that this observer is not available by default. To make it available it needs to be added to
- * {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  *
  * @extends module:engine/view/observer/domeventobserver~DomEventObserver
  */
 export default class ClipboardObserver extends DomEventObserver {
-	constructor( doc ) {
-		super( doc );
+	constructor( view ) {
+		super( view );
+
+		const viewDocument = this.document;
 
 		this.domEventType = [ 'paste', 'copy', 'cut', 'drop', 'dragover' ];
 
-		this.listenTo( doc, 'paste', handleInput, { priority: 'low' } );
-		this.listenTo( doc, 'drop', handleInput, { priority: 'low' } );
+		this.listenTo( viewDocument, 'paste', handleInput, { priority: 'low' } );
+		this.listenTo( viewDocument, 'drop', handleInput, { priority: 'low' } );
 
 		function handleInput( evt, data ) {
 			data.preventDefault();
 
-			const targetRanges = data.dropRange ? [ data.dropRange ] : Array.from( doc.selection.getRanges() );
+			const targetRanges = data.dropRange ? [ data.dropRange ] : Array.from( viewDocument.selection.getRanges() );
 
-			doc.fire( 'clipboardInput', {
+			viewDocument.fire( 'clipboardInput', {
 				dataTransfer: data.dataTransfer,
 				targetRanges
 			} );
@@ -45,14 +47,14 @@ export default class ClipboardObserver extends DomEventObserver {
 		};
 
 		if ( domEvent.type == 'drop' ) {
-			evtData.dropRange = getDropViewRange( this.document, domEvent );
+			evtData.dropRange = getDropViewRange( this.view, domEvent );
 		}
 
 		this.fire( domEvent.type, domEvent, evtData );
 	}
 }
 
-function getDropViewRange( doc, domEvent ) {
+function getDropViewRange( view, domEvent ) {
 	const domDoc = domEvent.target.ownerDocument;
 	const x = domEvent.clientX;
 	const y = domEvent.clientY;
@@ -70,9 +72,9 @@ function getDropViewRange( doc, domEvent ) {
 	}
 
 	if ( domRange ) {
-		return doc.domConverter.domRangeToView( domRange );
+		return view.domConverter.domRangeToView( domRange );
 	} else {
-		return doc.selection.getFirstRange();
+		return view.document.selection.getFirstRange();
 	}
 }
 
@@ -84,7 +86,7 @@ function getDropViewRange( doc, domEvent ) {
  * and inserted into the editor.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:clipboard/clipboardobserver~ClipboardObserver
@@ -104,7 +106,7 @@ function getDropViewRange( doc, domEvent ) {
  * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:engine/view/document~Document#event:clipboardInput
@@ -118,7 +120,7 @@ function getDropViewRange( doc, domEvent ) {
  * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:engine/view/document~Document#event:clipboardInput
@@ -133,7 +135,7 @@ function getDropViewRange( doc, domEvent ) {
  * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:engine/view/document~Document#event:clipboardInput
@@ -147,7 +149,7 @@ function getDropViewRange( doc, domEvent ) {
  * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:clipboard/clipboardobserver~ClipboardObserver
@@ -161,7 +163,7 @@ function getDropViewRange( doc, domEvent ) {
  * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.
  *
  * Note that this event is not available by default. To make it available {@link module:clipboard/clipboardobserver~ClipboardObserver}
- * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/document~Document#addObserver} method.
+ * needs to be added to {@link module:engine/view/document~Document} by the {@link module:engine/view/view~View#addObserver} method.
  * It's done by the {@link module:clipboard/clipboard~Clipboard} feature. If it's not loaded, it must be done manually.
  *
  * @see module:clipboard/clipboardobserver~ClipboardObserver

+ 39 - 38
packages/ckeditor5-clipboard/tests/clipboard.js

@@ -23,7 +23,7 @@ import ViewDocumentFragment from '@ckeditor/ckeditor5-engine/src/view/documentfr
 import ViewText from '@ckeditor/ckeditor5-engine/src/view/text';
 
 describe( 'Clipboard feature', () => {
-	let editor, editingView, clipboardPlugin, scrollSpy;
+	let editor, view, viewDocument, clipboardPlugin, scrollSpy;
 
 	beforeEach( () => {
 		return VirtualTestEditor
@@ -32,18 +32,19 @@ describe( 'Clipboard feature', () => {
 			} )
 			.then( newEditor => {
 				editor = newEditor;
-				editingView = editor.editing.view;
+				view = editor.editing.view;
+				viewDocument = editor.editing.view.document;
 				clipboardPlugin = editor.plugins.get( 'Clipboard' );
 
 				// VirtualTestEditor has no DOM, so this method must be stubbed for all tests.
 				// Otherwise it will throw as it accesses the DOM to do its job.
-				scrollSpy = sinon.stub( editingView, 'scrollToTheSelection' );
+				scrollSpy = sinon.stub( view, 'scrollToTheSelection' );
 			} );
 	} );
 
 	describe( 'constructor()', () => {
 		it( 'registers ClipboardObserver', () => {
-			expect( editingView.getObserver( ClipboardObserver ) ).to.be.instanceOf( ClipboardObserver );
+			expect( view.getObserver( ClipboardObserver ) ).to.be.instanceOf( ClipboardObserver );
 		} );
 	} );
 
@@ -53,14 +54,14 @@ describe( 'Clipboard feature', () => {
 				const dataTransferMock = createDataTransfer( { 'text/html': '<p>x</p>', 'text/plain': 'y' } );
 				const preventDefaultSpy = sinon.spy();
 
-				editingView.on( 'clipboardInput', ( evt, data ) => {
+				viewDocument.on( 'clipboardInput', ( evt, data ) => {
 					expect( preventDefaultSpy.calledOnce ).to.be.true;
 					expect( data.dataTransfer ).to.equal( dataTransferMock );
 
 					done();
 				} );
 
-				editingView.fire( 'paste', {
+				viewDocument.fire( 'paste', {
 					dataTransfer: dataTransferMock,
 					preventDefault: preventDefaultSpy
 				} );
@@ -77,7 +78,7 @@ describe( 'Clipboard feature', () => {
 					done();
 				} );
 
-				editingView.fire( 'paste', {
+				viewDocument.fire( 'paste', {
 					dataTransfer: dataTransferMock,
 					preventDefault: preventDefaultSpy
 				} );
@@ -89,14 +90,14 @@ describe( 'Clipboard feature', () => {
 				const dataTransferMock = createDataTransfer( { 'text/plain': 'x\n\ny  z' } );
 				const preventDefaultSpy = sinon.spy();
 
-				editingView.on( 'clipboardInput', ( evt, data ) => {
+				viewDocument.on( 'clipboardInput', ( evt, data ) => {
 					expect( preventDefaultSpy.calledOnce ).to.be.true;
 					expect( data.dataTransfer ).to.equal( dataTransferMock );
 
 					done();
 				} );
 
-				editingView.fire( 'paste', {
+				viewDocument.fire( 'paste', {
 					dataTransfer: dataTransferMock,
 					preventDefault: preventDefaultSpy
 				} );
@@ -113,7 +114,7 @@ describe( 'Clipboard feature', () => {
 					done();
 				} );
 
-				editingView.fire( 'paste', {
+				viewDocument.fire( 'paste', {
 					dataTransfer: dataTransferMock,
 					preventDefault: preventDefaultSpy
 				} );
@@ -125,7 +126,7 @@ describe( 'Clipboard feature', () => {
 			const preventDefaultSpy = sinon.spy();
 			const editorViewCalled = sinon.spy();
 
-			editingView.on( 'clipboardInput', ( evt, data ) => {
+			viewDocument.on( 'clipboardInput', ( evt, data ) => {
 				expect( preventDefaultSpy.calledOnce ).to.be.true;
 
 				expect( data.dataTransfer ).to.equal( dataTransferMock );
@@ -142,7 +143,7 @@ describe( 'Clipboard feature', () => {
 				done();
 			} );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault: preventDefaultSpy
 			} );
@@ -152,13 +153,13 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/html': 'x' } );
 			const spy = sinon.spy();
 
-			editingView.on( 'paste', evt => {
+			viewDocument.on( 'paste', evt => {
 				evt.stop();
 			} );
 
-			editingView.on( 'clipboardInput', spy );
+			viewDocument.on( 'clipboardInput', spy );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -170,7 +171,7 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/html': '<p>x</p>', 'text/plain': 'y' } );
 			const spy = sinon.stub( editor.model, 'insertContent' );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -185,7 +186,7 @@ describe( 'Clipboard feature', () => {
 
 			editor.isReadOnly = true;
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -199,7 +200,7 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/html': '<unknownTag></unknownTag>', 'text/plain': '' } );
 			const spy = sinon.stub( editor.model, 'insertContent' );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -213,7 +214,7 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/html': 'x<p>y</p>', 'text/plain': 'z' } );
 			const spy = sinon.stub( editor.model, 'insertContent' );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -226,7 +227,7 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/plain': '' } );
 			const spy = sinon.stub( editor.model, 'insertContent' );
 
-			editingView.fire( 'clipboardInput', {
+			viewDocument.fire( 'clipboardInput', {
 				dataTransfer: dataTransferMock,
 				content: new ViewDocumentFragment()
 			} );
@@ -240,7 +241,7 @@ describe( 'Clipboard feature', () => {
 
 			clipboardPlugin.on( 'inputTransformation', inputTransformationSpy );
 
-			editingView.fire( 'clipboardInput', {
+			viewDocument.fire( 'clipboardInput', {
 				dataTransfer: dataTransferMock,
 				content: new ViewDocumentFragment()
 			} );
@@ -253,11 +254,11 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer( { 'text/html': 'x' } );
 			const spy = sinon.stub( editor.model, 'insertContent' );
 
-			editingView.on( 'clipboardInput', evt => {
+			viewDocument.on( 'clipboardInput', evt => {
 				evt.stop();
 			} );
 
-			editingView.fire( 'paste', {
+			viewDocument.fire( 'paste', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -281,7 +282,7 @@ describe( 'Clipboard feature', () => {
 
 			setModelData( editor.model, '<paragraph>a[bc</paragraph><paragraph>de]f</paragraph>' );
 
-			editingView.on( 'clipboardOutput', ( evt, data ) => {
+			viewDocument.on( 'clipboardOutput', ( evt, data ) => {
 				expect( preventDefaultSpy.calledOnce ).to.be.true;
 				expect( data.method ).to.equal( 'copy' );
 
@@ -293,7 +294,7 @@ describe( 'Clipboard feature', () => {
 				done();
 			} );
 
-			editingView.fire( 'copy', {
+			viewDocument.fire( 'copy', {
 				dataTransfer: dataTransferMock,
 				preventDefault: preventDefaultSpy
 			} );
@@ -305,13 +306,13 @@ describe( 'Clipboard feature', () => {
 
 			setModelData( editor.model, '<paragraph>a[bc</paragraph><paragraph>de]f</paragraph>' );
 
-			editingView.on( 'clipboardOutput', ( evt, data ) => {
+			viewDocument.on( 'clipboardOutput', ( evt, data ) => {
 				expect( data.method ).to.equal( 'cut' );
 
 				done();
 			} );
 
-			editingView.fire( 'cut', {
+			viewDocument.fire( 'cut', {
 				dataTransfer: dataTransferMock,
 				preventDefault: preventDefaultSpy
 			} );
@@ -325,9 +326,9 @@ describe( 'Clipboard feature', () => {
 			setModelData( editor.model, '<paragraph>a[bc</paragraph><paragraph>de]f</paragraph>' );
 			editor.isReadOnly = true;
 
-			editingView.on( 'clipboardOutput', spy );
+			viewDocument.on( 'clipboardOutput', spy );
 
-			editingView.fire( 'cut', {
+			viewDocument.fire( 'cut', {
 				dataTransfer: dataTransferMock,
 				preventDefault: preventDefaultSpy
 			} );
@@ -340,13 +341,13 @@ describe( 'Clipboard feature', () => {
 			const dataTransferMock = createDataTransfer();
 			const spy = sinon.spy();
 
-			editingView.on( 'copy', evt => {
+			viewDocument.on( 'copy', evt => {
 				evt.stop();
 			} );
 
-			editingView.on( 'clipboardOutput', spy );
+			viewDocument.on( 'clipboardOutput', spy );
 
-			editingView.fire( 'copy', {
+			viewDocument.fire( 'copy', {
 				dataTransfer: dataTransferMock,
 				preventDefault() {}
 			} );
@@ -395,7 +396,7 @@ describe( 'Clipboard feature', () => {
 					'<figcaption>caption</figcaption>' +
 				'</figure>';
 
-			editingView.fire( 'clipboardOutput', {
+			viewDocument.fire( 'clipboardOutput', {
 				dataTransfer: dataTransferMock,
 				content: parseView( input ),
 				method: 'copy'
@@ -442,7 +443,7 @@ describe( 'Clipboard feature', () => {
 				'image foo\n' +
 				'caption';
 
-			editingView.fire( 'clipboardOutput', {
+			viewDocument.fire( 'clipboardOutput', {
 				dataTransfer: dataTransferMock,
 				content: parseView( input ),
 				method: 'copy'
@@ -454,7 +455,7 @@ describe( 'Clipboard feature', () => {
 		it( 'does not set clipboard HTML data if content is empty', () => {
 			const dataTransferMock = createDataTransfer();
 
-			editingView.fire( 'clipboardOutput', {
+			viewDocument.fire( 'clipboardOutput', {
 				dataTransfer: dataTransferMock,
 				content: new ViewDocumentFragment(),
 				method: 'copy'
@@ -471,7 +472,7 @@ describe( 'Clipboard feature', () => {
 			// Change block is only to get writer instance.
 			// Writer should not be passed along this event.
 			editor.model.change( writer => {
-				editingView.fire( 'clipboardOutput', {
+				viewDocument.fire( 'clipboardOutput', {
 					dataTransfer: dataTransferMock,
 					content: new ViewDocumentFragment(),
 					method: 'cut',
@@ -485,11 +486,11 @@ describe( 'Clipboard feature', () => {
 		it( 'uses low priority observer for the clipboardOutput event', () => {
 			const dataTransferMock = createDataTransfer();
 
-			editingView.on( 'clipboardOutput', evt => {
+			viewDocument.on( 'clipboardOutput', evt => {
 				evt.stop();
 			} );
 
-			editingView.fire( 'copy', {
+			viewDocument.fire( 'copy', {
 				dataTransfer: dataTransferMock,
 				content: new ViewDocumentFragment( [ new ViewText( 'abc' ) ] ),
 				preventDefault() {}

+ 9 - 8
packages/ckeditor5-clipboard/tests/clipboardobserver.js

@@ -6,7 +6,7 @@
 /* globals document */
 
 import ClipboardObserver from '../src/clipboardobserver';
-import Document from '@ckeditor/ckeditor5-engine/src/view/document';
+import View from '@ckeditor/ckeditor5-engine/src/view/view';
 import Element from '@ckeditor/ckeditor5-engine/src/view/element';
 import Range from '@ckeditor/ckeditor5-engine/src/view/range';
 import Position from '@ckeditor/ckeditor5-engine/src/view/position';
@@ -14,23 +14,24 @@ import DataTransfer from '../src/datatransfer';
 import createViewRoot from '@ckeditor/ckeditor5-engine/tests/view/_utils/createroot';
 
 describe( 'ClipboardObserver', () => {
-	let doc, observer, root, el, range, eventSpy, preventDefaultSpy;
+	let view, doc, observer, root, el, range, eventSpy, preventDefaultSpy;
 
 	beforeEach( () => {
-		doc = new Document();
+		view = new View();
+		doc = view.document;
 		root = createViewRoot( doc );
 
 		// Create view and DOM structures.
 		el = new Element( 'p' );
 		root.appendChildren( el );
-		doc.domConverter.viewToDom( root, document, { withChildren: true, bind: true } );
+		view.domConverter.viewToDom( root, document, { withChildren: true, bind: true } );
 
-		doc.selection.setTo( el );
+		doc.selection._setTo( el );
 		range = new Range( new Position( root, 1 ) );
 		// Just making sure that the following tests will check anything.
 		expect( range.isEqual( doc.selection.getFirstRange() ) ).to.be.false;
 
-		observer = doc.addObserver( ClipboardObserver );
+		observer = view.addObserver( ClipboardObserver );
 
 		eventSpy = sinon.spy();
 		preventDefaultSpy = sinon.spy();
@@ -118,7 +119,7 @@ describe( 'ClipboardObserver', () => {
 		it( 'should be fired with the right event data – dropRange (when document.caretRangeFromPoint present)', () => {
 			let caretRangeFromPointCalledWith;
 
-			const domRange = doc.domConverter.viewRangeToDom( range );
+			const domRange = view.domConverter.viewRangeToDom( range );
 			const dataTransfer = mockDomDataTransfer();
 			const targetElement = mockDomTargetElement( {
 				caretRangeFromPoint( x, y ) {
@@ -148,7 +149,7 @@ describe( 'ClipboardObserver', () => {
 		} );
 
 		it( 'should be fired with the right event data – dropRange (when evt.rangeParent|Offset present)', () => {
-			const domRange = doc.domConverter.viewRangeToDom( range );
+			const domRange = view.domConverter.viewRangeToDom( range );
 			const dataTransfer = mockDomDataTransfer();
 			const targetElement = mockDomTargetElement( {
 				createRange() {

+ 6 - 5
packages/ckeditor5-clipboard/tests/manual/copycut.js

@@ -17,18 +17,19 @@ ClassicEditor
 	} )
 	.then( editor => {
 		window.editor = editor;
+		const viewDocument = editor.editing.view.document;
 		const clipboard = editor.plugins.get( 'Clipboard' );
 
-		editor.editing.view.on( 'paste', ( evt, data ) => {
+		viewDocument.on( 'paste', ( evt, data ) => {
 			console.clear();
 			onViewEvent( evt, data );
 		} );
-		editor.editing.view.on( 'paste', onViewEvent );
-		editor.editing.view.on( 'copy', onViewEvent, { priority: 'lowest' } );
-		editor.editing.view.on( 'cut', onViewEvent, { priority: 'lowest' } );
+		viewDocument.on( 'paste', onViewEvent );
+		viewDocument.on( 'copy', onViewEvent, { priority: 'lowest' } );
+		viewDocument.on( 'cut', onViewEvent, { priority: 'lowest' } );
 
 		clipboard.on( 'inputTransformation', onPipelineEvent );
-		editor.editing.view.on( 'clipboardOutput', ( evt, data ) => {
+		viewDocument.on( 'clipboardOutput', ( evt, data ) => {
 			console.clear();
 			onPipelineEvent( evt, data );
 		} );

+ 6 - 9
packages/ckeditor5-clipboard/tests/manual/dropping.js

@@ -7,10 +7,6 @@
 
 import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
 import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
-
-import Text from '@ckeditor/ckeditor5-engine/src/model/text';
-import Selection from '@ckeditor/ckeditor5-engine/src/model/selection';
-
 // import { stringify as stringifyView } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
 
 ClassicEditor
@@ -20,9 +16,10 @@ ClassicEditor
 	} )
 	.then( editor => {
 		window.editor = editor;
+		const viewDocument = editor.editing.view.document;
 		// const clipboard = editor.plugins.get( 'Clipboard' );
 
-		editor.editing.view.on( 'drop', ( evt, data ) => {
+		viewDocument.on( 'drop', ( evt, data ) => {
 			console.clear();
 
 			console.log( '----- drop -----' );
@@ -33,10 +30,10 @@ ClassicEditor
 			data.preventDefault();
 			evt.stop();
 
-			editor.model.change( () => {
-				const insertAtSelection = new Selection( [ editor.editing.mapper.toModelRange( data.dropRange ) ] );
-				editor.model.insertContent( new Text( '@' ), insertAtSelection );
-				editor.model.document.selection.setTo( insertAtSelection );
+			editor.model.change( writer => {
+				const dropRange = editor.editing.mapper.toModelRange( data.dropRange );
+				writer.insert( writer.createText( '@' ), dropRange.start );
+				writer.setSelection( dropRange );
 			} );
 		} );
 

+ 1 - 1
packages/ckeditor5-clipboard/tests/manual/pasting.js

@@ -19,7 +19,7 @@ ClassicEditor
 		window.editor = editor;
 		const clipboard = editor.plugins.get( 'Clipboard' );
 
-		editor.editing.view.on( 'paste', ( evt, data ) => {
+		editor.editing.view.document.on( 'paste', ( evt, data ) => {
 			console.clear();
 
 			console.log( '----- paste -----' );

+ 1 - 1
packages/ckeditor5-clipboard/tests/pasting-integration.js

@@ -194,7 +194,7 @@ describe( 'Pasting – integration', () => {
 } );
 
 function pasteHtml( editor, html ) {
-	editor.editing.view.fire( 'paste', {
+	editor.editing.view.document.fire( 'paste', {
 		dataTransfer: createDataTransfer( { 'text/html': html } ),
 		preventDefault() {}
 	} );