diff --git a/CHANGES.md b/CHANGES.md
index 6c5486dec34..659c6abe5f7 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -32,6 +32,7 @@ Fixed Issues:
* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: WebSpellChecker fails to apply changes if nested editable was focused.
* [#10870](http://dev.ckeditor.com/ticket/10870): Fixed: `paste` command is not being disabled when clipboard is empty any more.
* [#10866](http://dev.ckeditor.com/ticket/10866): Fixed: Broken *Tab* key navigation in the Image2 dialog.
+* [#10854](http://dev.ckeditor.com/ticket/10854): Fixed: Firefox prepends `
` to `
`, so it is stripped by the HTML data processor.
## CKEditor 4.3 Beta
diff --git a/core/htmldataprocessor.js b/core/htmldataprocessor.js
index bf0de075228..64d3cecc574 100644
--- a/core/htmldataprocessor.js
+++ b/core/htmldataprocessor.js
@@ -143,8 +143,17 @@
editor.on( 'toDataFormat', function( evt ) {
+ var data = evt.data.dataValue;
+
+ // #10854 - we need to strip leading blockless
which FF adds
+ // automatically when editable contains only non-editable content.
+ // We do that for every browser (so it's a constant behavior) and
+ // not in BR mode, in which chance of valid leading blockless
is higher.
+ if ( evt.data.enterMode != CKEDITOR.ENTER_BR )
+ data = data.replace( /^
/i, '' );
+
evt.data.dataValue = CKEDITOR.htmlParser.fragment.fromHtml(
- evt.data.dataValue, evt.data.context, getFixBodyTag( evt.data.enterMode, editor.config.autoParagraph ) );
+ data, evt.data.context, getFixBodyTag( evt.data.enterMode, editor.config.autoParagraph ) );
}, null, null, 5 );
editor.on( 'toDataFormat', function( evt ) {