REGRESSION (r179168): Characters overlap after resizing the font on the copy-pasted...
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jul 2015 20:31:25 +0000 (20:31 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jul 2015 20:31:25 +0000 (20:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=146492

Reviewed by Darin Adler.

Source/WebCore:

The bug was caused by WebKit serializing the used line-height size (e.g. 18px) in the copied content
instead of string "normal" and removeStyleFromRulesAndContext failing to strip it down when text with
a font that influences the line height got pasted. This is because the used value of line-height
property of the context and the pasted content doesn't match when the context doesn't use the same font.

Fixed the bug by not considering line-height as a list of editing properties we try to preserve. This is
fine because we don't provide editing operations to directly manipulate line-height.

Test: editing/pasteboard/cjk-line-height.html

* editing/EditingStyle.cpp:
(WebCore::editingProperties): Removed CSSPropertyLineHeight.

LayoutTests:

Added a regression test. Also reverted the bad rebaseline in r179168:
http://trac.webkit.org/changeset/179168/trunk/LayoutTests/editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt

* editing/pasteboard/cjk-line-height-expected.txt: Added.
* editing/pasteboard/cjk-line-height.html: Added.
* editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@186191 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/editing/pasteboard/cjk-line-height-expected.txt [new file with mode: 0644]
LayoutTests/editing/pasteboard/cjk-line-height.html [new file with mode: 0644]
LayoutTests/editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/editing/EditingStyle.cpp

index 2080f0d..7fda97c 100644 (file)
@@ -1,3 +1,17 @@
+2015-06-30  Ryosuke Niwa  <rniwa@webkit.org>
+
+        REGRESSION (r179168): Characters overlap after resizing the font on the copy-pasted Japanese text
+        https://bugs.webkit.org/show_bug.cgi?id=146492
+
+        Reviewed by Darin Adler.
+
+        Added a regression test. Also reverted the bad rebaseline in r179168:
+        http://trac.webkit.org/changeset/179168/trunk/LayoutTests/editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt
+
+        * editing/pasteboard/cjk-line-height-expected.txt: Added.
+        * editing/pasteboard/cjk-line-height.html: Added.
+        * editing/pasteboard/simplfiying-markup-should-not-strip-content-expected.txt:
+
 2015-07-01  Matthew Daiter  <mdaiter@apple.com>
 
         Enable MEDIA_STREAM flag
diff --git a/LayoutTests/editing/pasteboard/cjk-line-height-expected.txt b/LayoutTests/editing/pasteboard/cjk-line-height-expected.txt
new file mode 100644 (file)
index 0000000..1f3d280
--- /dev/null
@@ -0,0 +1,6 @@
+This tests copying and pasting text with a font that influences the used line-height value.
+To manually test, copy and paste the selected content below. WebKit should not generate line-height property in the pasted content.
+| <span>
+|   style="font-family: 'Hiragino Kaku Gothic ProN';"
+|   "hello<#selection-caret>"
+| <br>
diff --git a/LayoutTests/editing/pasteboard/cjk-line-height.html b/LayoutTests/editing/pasteboard/cjk-line-height.html
new file mode 100644 (file)
index 0000000..fcca237
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<body>
+<div id=editor contenteditable><font face="Hiragino Kaku Gothic ProN">hello</font></div>
+<script src="../../resources/dump-as-markup.js"></script>
+<script>
+
+Markup.description('This tests copying and pasting text with a font that influences the used line-height value.\n'
+ + 'To manually test, copy and paste the selected content below. WebKit should not generate line-height property in the pasted content.')
+
+var editor = document.getElementById('editor');
+editor.focus();
+document.execCommand('selectAll', false, null);
+
+Markup.noAutoDump();
+function dumpEditor() {
+    Markup.dump(editor);
+    Markup.notifyDone();
+}
+
+if (document.queryCommandEnabled('paste')) {
+    document.execCommand('copy', false, null);
+    document.execCommand('paste', false, null);
+    dumpEditor();
+} else
+    document.onpaste = function () { setTimeout(dumpEditor, 0); }
+
+</script>
+</body>
+</html>
index df7311d..b9e6ae3 100644 (file)
@@ -33,7 +33,7 @@ Pasted content:
 |   face="Verdana"
 |   "hello¬†"
 | <br>
-|   style="font-family: Helvetica; line-height: 18px;"
+|   style="font-family: Helvetica;"
 | <font>
 |   face="Verdana"
 |   "worldWebKit<#selection-caret>"
index b79c30a..dae5511 100644 (file)
@@ -1,3 +1,23 @@
+2015-06-30  Ryosuke Niwa  <rniwa@webkit.org>
+
+        REGRESSION (r179168): Characters overlap after resizing the font on the copy-pasted Japanese text
+        https://bugs.webkit.org/show_bug.cgi?id=146492
+
+        Reviewed by Darin Adler.
+
+        The bug was caused by WebKit serializing the used line-height size (e.g. 18px) in the copied content
+        instead of string "normal" and removeStyleFromRulesAndContext failing to strip it down when text with
+        a font that influences the line height got pasted. This is because the used value of line-height
+        property of the context and the pasted content doesn't match when the context doesn't use the same font.
+
+        Fixed the bug by not considering line-height as a list of editing properties we try to preserve. This is
+        fine because we don't provide editing operations to directly manipulate line-height.
+
+        Test: editing/pasteboard/cjk-line-height.html
+
+        * editing/EditingStyle.cpp:
+        (WebCore::editingProperties): Removed CSSPropertyLineHeight.
+
 2015-06-30  Brent Fulgham  <bfulgham@apple.com>
 
         REGRESSION (r184296): View keeps scrolling upward
index dcf4fab..5cf12cd 100644 (file)
@@ -63,7 +63,6 @@ static const CSSPropertyID editingProperties[] = {
     CSSPropertyFontVariant,
     CSSPropertyFontWeight,
     CSSPropertyLetterSpacing,
-    CSSPropertyLineHeight,
     CSSPropertyOrphans,
     CSSPropertyTextAlign,
     CSSPropertyTextIndent,