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

Merge pull request #254 from SamhammerAG/master

Fix: Prevent errors when (for unclear reasons) the native `DataTransfer#files` contains `null` values when drag&dropping files into the editor in Chrome.

Thanks to @code-chris!
Piotrek Koszuliński 7 лет назад
Родитель
Сommit
1a2eb3ee50

+ 7 - 1
packages/ckeditor5-image/src/imageupload/imageuploadediting.js

@@ -55,7 +55,13 @@ export default class ImageUploadEditing extends Plugin {
 				return;
 			}
 
-			const images = Array.from( data.dataTransfer.files ).filter( isImageType );
+			const images = Array.from( data.dataTransfer.files ).filter( file => {
+				if ( !file ) {
+					return false;
+				}
+
+				return isImageType( file );
+			} );
 
 			const ranges = data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) );
 

+ 14 - 0
packages/ckeditor5-image/tests/imageupload/imageuploadediting.js

@@ -197,6 +197,20 @@ describe( 'ImageUploadEditing', () => {
 		expect( getModelData( model ) ).to.equal( '<paragraph>foo[]</paragraph>' );
 	} );
 
+	it( 'should not insert image when file is null', () => {
+		const viewDocument = editor.editing.view.document;
+		const dataTransfer = new DataTransfer( { files: [ null ], types: [ 'Files' ] } );
+
+		setModelData( model, '<paragraph>foo[]</paragraph>' );
+
+		const targetRange = doc.selection.getFirstRange();
+		const targetViewRange = editor.editing.mapper.toViewRange( targetRange );
+
+		viewDocument.fire( 'clipboardInput', { dataTransfer, targetRanges: [ targetViewRange ] } );
+
+		expect( getModelData( model ) ).to.equal( '<paragraph>foo[]</paragraph>' );
+	} );
+
 	it( 'should not insert image when there is non-empty HTML content pasted', () => {
 		const fileMock = createNativeFileMock();
 		const dataTransfer = new DataTransfer( {