[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

hyatt at apple.com hyatt at apple.com
Wed Dec 22 15:02:18 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 2b1198f9391d6c203f600065b50d92d4b633e944
Author: hyatt at apple.com <hyatt at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 27 17:16:07 2010 +0000

    https://bugs.webkit.org/show_bug.cgi?id=48381
    
    Reviewed by Dan Bernstein.
    
    Make basic layer positioning work with vertical-lr writing-mode.
    
    WebCore:
    
    * rendering/RenderBlock.cpp:
    (WebCore::RenderBlock::paintChildren):
    (WebCore::RenderBlock::paintFloats):
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::adjustForFlippedBlocksWritingMode):
    (WebCore::RenderBox::locationOffsetIncludingFlipping):
    * rendering/RenderBox.h:
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::updateLayerPosition):
    
    LayoutTests:
    
    * fast/blockflow/japanese-lr-text.html: Added.
    * fast/blockflow/japanese-rl-text.html: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70664 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 24d0c76..7371f9b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,14 @@
+2010-10-27  David Hyatt  <hyatt at apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        https://bugs.webkit.org/show_bug.cgi?id=48381
+
+        Make basic layer positioning work with vertical-lr writing-mode.
+
+        * fast/blockflow/japanese-lr-text.html: Added.
+        * fast/blockflow/japanese-rl-text.html: Added.
+
 2010-10-27  Dimitri Glazkov  <dglazkov at chromium.org>
 
         [Chromium] Update results after r70569.
diff --git a/LayoutTests/fast/blockflow/japanese-lr-text.html b/LayoutTests/fast/blockflow/japanese-lr-text.html
new file mode 100644
index 0000000..2524b32
--- /dev/null
+++ b/LayoutTests/fast/blockflow/japanese-lr-text.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<html style="border:10px solid maroon; -webkit-writing-mode:vertical-lr">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<style>
+body {
+    font-family: "HiraMinPro-W3";
+    font-size: 16pt;
+}
+</style>
+</head>
+<body style="border:5px solid black;">
+せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問したウェブページのコンテンツからも検索することができます。せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問したウェブページのコンテンツからも検索することができます。訪問したウェブページのコンテンツからも検索することができます。せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問
+</body>
diff --git a/LayoutTests/fast/blockflow/japanese-rl-text.html b/LayoutTests/fast/blockflow/japanese-rl-text.html
new file mode 100644
index 0000000..1baf1d1
--- /dev/null
+++ b/LayoutTests/fast/blockflow/japanese-rl-text.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<html style="border:10px solid maroon; -webkit-writing-mode:vertical-rl">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<style>
+body {
+    font-family: "HiraMinPro-W3";
+    font-size: 16pt;
+}
+</style>
+</head>
+<body style="border:5px solid black;">
+せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問したウェブページのコンテンツからも検索することができます。せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問したウェブページのコンテンツからも検索することができます。訪問したウェブページのコンテンツからも検索することができます。せっかく見つけたすばらしい記事がどこにあったか忘れてしまった経験はありますか ならタイトルとアドレスだけでなく、訪問
+</body>
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.checksum b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.checksum
new file mode 100644
index 0000000..3eb5171
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.checksum
@@ -0,0 +1 @@
+d25d3a2a1bbfcb12465cdb88a9cd2ac0
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.png b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.png
new file mode 100644
index 0000000..f8c3105
Binary files /dev/null and b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.png differ
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.txt b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.txt
new file mode 100644
index 0000000..0ce589f
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/blockflow/japanese-lr-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 398x600
+  RenderBlock {HTML} at (0,0) size 398x600 [border: (10px solid #800000)]
+    RenderBody {BODY} at (18,18) size 362x564 [border: (5px solid #000000)]
+      RenderText {#text} at (5,5) size 803x21
+        text run at (5,5) width 529: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (37,5) width 515: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}"
+        text run at (69,5) width 529: "\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}"
+        text run at (101,5) width 529: "\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}"
+        text run at (133,5) width 529: "\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
+        text run at (165,5) width 508: "\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+        text run at (197,5) width 529: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}"
+        text run at (229,5) width 529: "\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}"
+        text run at (261,5) width 508: "\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}"
+        text run at (293,5) width 515: "\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}"
+        text run at (325,5) width 297: "\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.checksum b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.checksum
new file mode 100644
index 0000000..facf2ba
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.checksum
@@ -0,0 +1 @@
+fc0ccb5358824ae66c626d2f488f1616
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.png b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.png
new file mode 100644
index 0000000..d603feb
Binary files /dev/null and b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.png differ
diff --git a/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.txt b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.txt
new file mode 100644
index 0000000..4e2fb9b
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/blockflow/japanese-rl-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (402,0) size 398x600
+  RenderBlock {HTML} at (0,0) size 398x600 [border: (10px solid #800000)]
+    RenderBody {BODY} at (18,18) size 362x564 [border: (5px solid #000000)]
+      RenderText {#text} at (10,5) size 803x21
+        text run at (10,5) width 529: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (42,5) width 515: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}"
+        text run at (74,5) width 529: "\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}"
+        text run at (106,5) width 529: "\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}"
+        text run at (138,5) width 529: "\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}"
+        text run at (170,5) width 508: "\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+        text run at (202,5) width 529: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}"
+        text run at (234,5) width 529: "\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}"
+        text run at (266,5) width 508: "\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}"
+        text run at (298,5) width 515: "\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}"
+        text run at (330,5) width 297: "\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index e5e5e89..348f9d7 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-10-27  David Hyatt  <hyatt at apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        https://bugs.webkit.org/show_bug.cgi?id=48381
+
+        Make basic layer positioning work with vertical-lr writing-mode.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::paintChildren):
+        (WebCore::RenderBlock::paintFloats):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::adjustForFlippedBlocksWritingMode):
+        (WebCore::RenderBox::locationOffsetIncludingFlipping):
+        * rendering/RenderBox.h:
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::updateLayerPosition):
+
 2010-10-27  Zhenyao Mo  <zmo at google.com>
 
         Reviewed by Kenneth Russell.
diff --git a/WebCore/rendering/RenderBlock.cpp b/WebCore/rendering/RenderBlock.cpp
index 8fd9768..6a8c7e4 100644
--- a/WebCore/rendering/RenderBlock.cpp
+++ b/WebCore/rendering/RenderBlock.cpp
@@ -2270,7 +2270,7 @@ void RenderBlock::paintChildren(PaintInfo& paintInfo, int tx, int ty)
         }
 
         IntPoint childPoint(tx, ty);
-        adjustForFlippedBlocksWritingMode(child, childPoint);
+        adjustForFlippedBlocksWritingMode(child, childPoint, ParentToChildFlippingAdjustment);
         if (!child->hasSelfPaintingLayer() && !child->isFloating())
             child->paint(info, childPoint.x(), childPoint.y());
 
@@ -2407,7 +2407,7 @@ void RenderBlock::paintFloats(PaintInfo& paintInfo, int tx, int ty, bool preserv
             currentPaintInfo.phase = preservePhase ? paintInfo.phase : PaintPhaseBlockBackground;
             IntPoint childPoint(tx + r->left() + r->m_renderer->marginLeft() - r->m_renderer->x(),
                                 ty + r->top() + r->m_renderer->marginTop() - r->m_renderer->y());
-            adjustForFlippedBlocksWritingMode(r->m_renderer, childPoint);
+            adjustForFlippedBlocksWritingMode(r->m_renderer, childPoint, ParentToChildFlippingAdjustment);
             r->m_renderer->paint(currentPaintInfo, childPoint.x(), childPoint.y());
             if (!preservePhase) {
                 currentPaintInfo.phase = PaintPhaseChildBlockBackgrounds;
diff --git a/WebCore/rendering/RenderBox.cpp b/WebCore/rendering/RenderBox.cpp
index e839866..b5a7328 100644
--- a/WebCore/rendering/RenderBox.cpp
+++ b/WebCore/rendering/RenderBox.cpp
@@ -3198,7 +3198,7 @@ void RenderBox::blockDirectionOverflow(bool isLineVertical, int& logicalTopLayou
     }
 }
 
-void RenderBox::adjustForFlippedBlocksWritingMode(RenderBox* child, IntPoint& point)
+void RenderBox::adjustForFlippedBlocksWritingMode(RenderBox* child, IntPoint& point, FlippingAdjustment adjustment)
 {
     if (!style()->isFlippedBlocksWritingMode())
         return;
@@ -3206,9 +3206,20 @@ void RenderBox::adjustForFlippedBlocksWritingMode(RenderBox* child, IntPoint& po
     // The child is going to add in its x() and y(), so we have to make sure it ends up in
     // the right place.
     if (style()->isHorizontalWritingMode())
-        point.move(0, height() - child->height() - child->y() - child->y());
+        point.move(0, height() - child->height() - child->y() - (adjustment == ParentToChildFlippingAdjustment ? child->y() : 0));
     else
-        point.move(width() - child->width() - child->x() - child->x(), 0);
+        point.move(width() - child->width() - child->x() - (adjustment == ParentToChildFlippingAdjustment ? child->x() : 0), 0);
+}
+
+IntSize RenderBox::locationOffsetIncludingFlipping()
+{
+    if (!parent() || !parent()->isBox())
+        return locationOffset();
+    
+    RenderBox* parent = parentBox();
+    IntPoint localPoint(x(), y());
+    parent->adjustForFlippedBlocksWritingMode(this, localPoint, ChildToParentFlippingAdjustment);
+    return IntSize(localPoint.x(), localPoint.y());
 }
 
 } // namespace WebCore
diff --git a/WebCore/rendering/RenderBox.h b/WebCore/rendering/RenderBox.h
index 33be9a9..4d8e82b 100644
--- a/WebCore/rendering/RenderBox.h
+++ b/WebCore/rendering/RenderBox.h
@@ -377,7 +377,9 @@ public:
     virtual int lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
     virtual int baselinePosition(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
 
-    void adjustForFlippedBlocksWritingMode(RenderBox* child, IntPoint&);
+    enum FlippingAdjustment { ChildToParentFlippingAdjustment, ParentToChildFlippingAdjustment };
+    void adjustForFlippedBlocksWritingMode(RenderBox* child, IntPoint&, FlippingAdjustment);
+    IntSize locationOffsetIncludingFlipping();
 
 protected:
     virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle);
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index 2dbf383..16e29b2 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -677,7 +677,7 @@ void RenderLayer::updateLayerPosition()
                 setHeight(box->bottomLayoutOverflow());
         }
         
-        localPoint += box->locationOffset();
+        localPoint += box->locationOffsetIncludingFlipping();
     }
 
     // Clear our cached clip rect information.
@@ -691,13 +691,13 @@ void RenderLayer::updateLayerPosition()
             if (curr->isBox() && !curr->isTableRow()) {
                 // Rows and cells share the same coordinate space (that of the section).
                 // Omit them when computing our xpos/ypos.
-                localPoint += toRenderBox(curr)->locationOffset();
+                localPoint += toRenderBox(curr)->locationOffsetIncludingFlipping();
             }
             curr = curr->parent();
         }
         if (curr->isBox() && curr->isTableRow()) {
             // Put ourselves into the row coordinate space.
-            localPoint -= toRenderBox(curr)->locationOffset();
+            localPoint -= toRenderBox(curr)->locationOffsetIncludingFlipping();
         }
     }
     

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list