From 73e822fb44595f3b6ee308ab7dfdc93a3099cc31 Mon Sep 17 00:00:00 2001 From: "mmaxfield@apple.com" Date: Wed, 10 Dec 2014 01:02:29 +0000 Subject: [PATCH] Scrolling to anchor tags does nothing in vertical-rl writing mode https://bugs.webkit.org/show_bug.cgi?id=137838 Reviewed by David Hyatt. Source/WebCore: Scroll to a particular tag, and make sure the viewport is rendered as expected. Tests: fast/events/scroll-to-anchor-vertical-lr-writing-mode.html fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html fast/events/scroll-to-anchor-vertical-writing-mode-contained.html fast/events/scroll-to-anchor-vertical-writing-mode.html * page/FrameView.cpp: (WebCore::FrameView::scrollToAnchor): * rendering/ScrollBehavior.cpp: * rendering/ScrollBehavior.h: LayoutTests: When we specify the behavior regarding scrolling to anchor tags, we previously had only described behavior regarding horizontal text. When we have vertical text, we need to switch the horizontal and vertical scrolling policies. * fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html: Added. * fast/events/scroll-to-anchor-vertical-lr-writing-mode.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode-contained.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode-expected.html: Added. * fast/events/scroll-to-anchor-vertical-writing-mode.html: Added. git-svn-id: https://svn.webkit.org/repository/webkit/trunk@177050 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- LayoutTests/ChangeLog | 20 ++++++++++++++++ ...hor-vertical-lr-writing-mode-expected.html | 17 +++++++++++++ ...ll-to-anchor-vertical-lr-writing-mode.html | 24 +++++++++++++++++++ ...cal-writing-mode-contained-2-expected.html | 17 +++++++++++++ ...hor-vertical-writing-mode-contained-2.html | 19 +++++++++++++++ ...tical-writing-mode-contained-expected.html | 18 ++++++++++++++ ...nchor-vertical-writing-mode-contained.html | 20 ++++++++++++++++ ...anchor-vertical-writing-mode-expected.html | 17 +++++++++++++ ...croll-to-anchor-vertical-writing-mode.html | 24 +++++++++++++++++++ Source/WebCore/ChangeLog | 19 +++++++++++++++ Source/WebCore/page/FrameView.cpp | 7 +++++- Source/WebCore/rendering/ScrollBehavior.cpp | 2 ++ Source/WebCore/rendering/ScrollBehavior.h | 2 ++ 13 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-expected.html create mode 100644 LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode.html diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog index 263a6d74da32..7e1a7c51cb97 100644 --- a/LayoutTests/ChangeLog +++ b/LayoutTests/ChangeLog @@ -1,3 +1,23 @@ +2014-12-09 Myles C. Maxfield + + Scrolling to anchor tags does nothing in vertical-rl writing mode + https://bugs.webkit.org/show_bug.cgi?id=137838 + + Reviewed by David Hyatt. + + When we specify the behavior regarding scrolling to anchor tags, we previously had + only described behavior regarding horizontal text. When we have vertical text, we + need to switch the horizontal and vertical scrolling policies. + + * fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html: Added. + * fast/events/scroll-to-anchor-vertical-lr-writing-mode.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode-contained.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode-expected.html: Added. + * fast/events/scroll-to-anchor-vertical-writing-mode.html: Added. + 2014-12-09 Adenilson Cavalcanti Groove/inset/outset borders show solid if the color is black diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html new file mode 100644 index 000000000000..1f10a8b0e8ec --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode-expected.html @@ -0,0 +1,17 @@ + + + + + + +
+
If the test is successful, this text is on the left of the window upon navigation to this page.
+ +
+ + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode.html new file mode 100644 index 000000000000..b9bd2b44e4cc --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-lr-writing-mode.html @@ -0,0 +1,24 @@ + + + + + + +
+ +
If the test is successful, this text is on the left of the window upon navigation to this page.
+ +
+ + + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html new file mode 100644 index 000000000000..fc931fd83fdb --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2-expected.html @@ -0,0 +1,17 @@ + + + + + +
+
+

Nam vel nisi non quam rutrum fermentum. Sed scelerisque magna eget dictum pretium. Phasellus ac hendrerit elit, id iaculis urna. Donec molestie lacus quis metus feugiat blandit. Cras in fermentum arcu. Phasellus enim lacus, placerat non arcu id, faucibus convallis turpis. Nullam eleifend eget arcu eget pretium. Donec pulvinar pellentesque leo.

+

Proin posuere tincidunt lorem id efficitur. Etiam sollicitudin ex lectus, id suscipit nunc blandit non. Duis pretium eget lectus non porta. Pellentesque mattis ex at urna elementum, sed sollicitudin nunc consectetur. Donec vehicula justo felis, nec malesuada orci cursus pellentesque. Nunc nec ligula nunc. Donec lorem nibh, posuere auctor ultrices quis, sollicitudin id erat. Donec consequat tellus arcu, mattis pharetra lectus euismod ut. Cras et enim in ex laoreet dignissim id ornare nisl. Phasellus ac placerat elit. In at placerat ligula. Nulla id nisl et diam faucibus euismod. Aenean libero ligula, viverra eu lacinia in, interdum eu erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor, dolor et blandit rutrum, est orci egestas lorem, non lacinia ligula sapien quis enim. Quisque ornare, mi et commodo tincidunt, tellus ligula ultricies justo, ac sagittis augue dui ac nibh.

+
+
+ + + + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html new file mode 100644 index 000000000000..2266f8eef960 --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html @@ -0,0 +1,19 @@ + + + + + +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum volutpat consectetur enim a porttitor. Donec semper dignissim gravida. Suspendisse hendrerit faucibus sodales. Nulla at libero quis nisl pretium rhoncus. Nam id enim elementum, ultrices eros vehicula, eleifend lorem. Fusce blandit, lacus et blandit tristique, dui tellus rutrum sapien, et accumsan orci enim non ante. Vestibulum blandit nec nulla a mattis. Cras odio lorem, consectetur congue nulla sed, lacinia consectetur felis. Etiam quis dapibus quam, eget dignissim neque. Suspendisse blandit semper velit, a luctus risus. Sed placerat dolor vitae lacinia tempus. Donec sagittis metus eget euismod vulputate. Vivamus ultricies felis sed libero varius tempus vitae in est. Donec sodales leo at ornare dapibus. Etiam vel interdum neque, vel ullamcorper ante. Donec dictum tempor odio, efficitur pulvinar nibh efficitur sit amet.

+
+

Nam vel nisi non quam rutrum fermentum. Sed scelerisque magna eget dictum pretium. Phasellus ac hendrerit elit, id iaculis urna. Donec molestie lacus quis metus feugiat blandit. Cras in fermentum arcu. Phasellus enim lacus, placerat non arcu id, faucibus convallis turpis. Nullam eleifend eget arcu eget pretium. Donec pulvinar pellentesque leo.

+

Proin posuere tincidunt lorem id efficitur. Etiam sollicitudin ex lectus, id suscipit nunc blandit non. Duis pretium eget lectus non porta. Pellentesque mattis ex at urna elementum, sed sollicitudin nunc consectetur. Donec vehicula justo felis, nec malesuada orci cursus pellentesque. Nunc nec ligula nunc. Donec lorem nibh, posuere auctor ultrices quis, sollicitudin id erat. Donec consequat tellus arcu, mattis pharetra lectus euismod ut. Cras et enim in ex laoreet dignissim id ornare nisl. Phasellus ac placerat elit. In at placerat ligula. Nulla id nisl et diam faucibus euismod. Aenean libero ligula, viverra eu lacinia in, interdum eu erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor, dolor et blandit rutrum, est orci egestas lorem, non lacinia ligula sapien quis enim. Quisque ornare, mi et commodo tincidunt, tellus ligula ultricies justo, ac sagittis augue dui ac nibh.

+
+

Vivamus justo felis, porttitor in metus at, dapibus iaculis mauris. Suspendisse hendrerit, metus at consectetur convallis, nisi nisl euismod ipsum, sed vulputate neque leo in ipsum. Maecenas vitae viverra felis, sed elementum purus. Curabitur hendrerit viverra tortor, sit amet elementum augue iaculis eget. Donec in lectus efficitur, congue urna et, ornare metus. Aliquam varius maximus dui vitae gravida. Pellentesque tortor tellus, blandit id nibh sit amet, egestas pellentesque nisl. Sed eget consectetur ipsum, sed rhoncus libero. Aenean efficitur justo facilisis nisi convallis vehicula. In volutpat sagittis mollis. Sed consequat tortor diam, eu vestibulum ipsum blandit sit amet. Pellentesque quis tincidunt sapien, at cursus metus. Suspendisse ut pulvinar augue, vitae efficitur metus. Pellentesque vitae vestibulum elit, sit amet maximus metus. Vivamus consectetur quis orci vitae elementum. Maecenas et euismod sapien.

+
+ + + + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html new file mode 100644 index 000000000000..5c801e6ac5fe --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained-expected.html @@ -0,0 +1,18 @@ + + + + + + +
+
+

Proin posuere tincidunt lorem id efficitur. Etiam sollicitudin ex lectus, id suscipit nunc blandit non. Duis pretium eget lectus non porta. Pellentesque mattis ex at urna elementum, sed sollicitudin nunc consectetur. Donec vehicula justo felis, nec malesuada orci cursus pellentesque. Nunc nec ligula nunc. Donec lorem nibh, posuere auctor ultrices quis, sollicitudin id erat. Donec consequat tellus arcu, mattis pharetra lectus euismod ut. Cras et enim in ex laoreet dignissim id ornare nisl. Phasellus ac placerat elit. In at placerat ligula. Nulla id nisl et diam faucibus euismod. Aenean libero ligula, viverra eu lacinia in, interdum eu erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor, dolor et blandit rutrum, est orci egestas lorem, non lacinia ligula sapien quis enim. Quisque ornare, mi et commodo tincidunt, tellus ligula ultricies justo, ac sagittis augue dui ac nibh.

+
+
+ + + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained.html new file mode 100644 index 000000000000..6f601214b06c --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-contained.html @@ -0,0 +1,20 @@ + + + + + + +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum volutpat consectetur enim a porttitor. Donec semper dignissim gravida. Suspendisse hendrerit faucibus sodales. Nulla at libero quis nisl pretium rhoncus. Nam id enim elementum, ultrices eros vehicula, eleifend lorem. Fusce blandit, lacus et blandit tristique, dui tellus rutrum sapien, et accumsan orci enim non ante. Vestibulum blandit nec nulla a mattis. Cras odio lorem, consectetur congue nulla sed, lacinia consectetur felis. Etiam quis dapibus quam, eget dignissim neque. Suspendisse blandit semper velit, a luctus risus. Sed placerat dolor vitae lacinia tempus. Donec sagittis metus eget euismod vulputate. Vivamus ultricies felis sed libero varius tempus vitae in est. Donec sodales leo at ornare dapibus. Etiam vel interdum neque, vel ullamcorper ante. Donec dictum tempor odio, efficitur pulvinar nibh efficitur sit amet.

+
+

Nam vel nisi non quam rutrum fermentum. Sed scelerisque magna eget dictum pretium. Phasellus ac hendrerit elit, id iaculis urna. Donec molestie lacus quis metus feugiat blandit. Cras in fermentum arcu. Phasellus enim lacus, placerat non arcu id, faucibus convallis turpis. Nullam eleifend eget arcu eget pretium. Donec pulvinar pellentesque leo.

+

Proin posuere tincidunt lorem id efficitur. Etiam sollicitudin ex lectus, id suscipit nunc blandit non. Duis pretium eget lectus non porta. Pellentesque mattis ex at urna elementum, sed sollicitudin nunc consectetur. Donec vehicula justo felis, nec malesuada orci cursus pellentesque. Nunc nec ligula nunc. Donec lorem nibh, posuere auctor ultrices quis, sollicitudin id erat. Donec consequat tellus arcu, mattis pharetra lectus euismod ut. Cras et enim in ex laoreet dignissim id ornare nisl. Phasellus ac placerat elit. In at placerat ligula. Nulla id nisl et diam faucibus euismod. Aenean libero ligula, viverra eu lacinia in, interdum eu erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor, dolor et blandit rutrum, est orci egestas lorem, non lacinia ligula sapien quis enim. Quisque ornare, mi et commodo tincidunt, tellus ligula ultricies justo, ac sagittis augue dui ac nibh.

+
+
+ + + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-expected.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-expected.html new file mode 100644 index 000000000000..78728e1a6f7c --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode-expected.html @@ -0,0 +1,17 @@ + + + + + + +
+
If the test is successful, this text is on the right of the window upon navigation to this page.
+ +
+ + diff --git a/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode.html b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode.html new file mode 100644 index 000000000000..05888b126715 --- /dev/null +++ b/LayoutTests/fast/events/scroll-to-anchor-vertical-writing-mode.html @@ -0,0 +1,24 @@ + + + + + + +
+ +
If the test is successful, this text is on the right of the window upon navigation to this page.
+ +
+ + + diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 7ee85aa8b1f9..16cdebac2f5e 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,22 @@ +2014-12-09 Myles C. Maxfield + + Scrolling to anchor tags does nothing in vertical-rl writing mode + https://bugs.webkit.org/show_bug.cgi?id=137838 + + Reviewed by David Hyatt. + + Scroll to a particular tag, and make sure the viewport is rendered as expected. + + Tests: fast/events/scroll-to-anchor-vertical-lr-writing-mode.html + fast/events/scroll-to-anchor-vertical-writing-mode-contained-2.html + fast/events/scroll-to-anchor-vertical-writing-mode-contained.html + fast/events/scroll-to-anchor-vertical-writing-mode.html + + * page/FrameView.cpp: + (WebCore::FrameView::scrollToAnchor): + * rendering/ScrollBehavior.cpp: + * rendering/ScrollBehavior.h: + 2014-12-09 Bem Jones-Bey REGRESSION(r155906): Page content disappears on Tuaw article after loading diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp index f07cc4e7c597..9ca1ff2eb3f9 100644 --- a/Source/WebCore/page/FrameView.cpp +++ b/Source/WebCore/page/FrameView.cpp @@ -2791,7 +2791,12 @@ void FrameView::scrollToAnchor() // Scroll nested layers and frames to reveal the anchor. // Align to the top and to the closest side (this matches other browsers). - anchorNode->renderer()->scrollRectToVisible(rect, ScrollAlignment::alignToEdgeIfNeeded, ScrollAlignment::alignTopAlways); + if (anchorNode->renderer()->style().isHorizontalWritingMode()) + anchorNode->renderer()->scrollRectToVisible(rect, ScrollAlignment::alignToEdgeIfNeeded, ScrollAlignment::alignTopAlways); + else if (anchorNode->renderer()->style().isFlippedBlocksWritingMode()) + anchorNode->renderer()->scrollRectToVisible(rect, ScrollAlignment::alignRightAlways, ScrollAlignment::alignToEdgeIfNeeded); + else + anchorNode->renderer()->scrollRectToVisible(rect, ScrollAlignment::alignLeftAlways, ScrollAlignment::alignToEdgeIfNeeded); if (AXObjectCache* cache = frame().document()->existingAXObjectCache()) cache->handleScrolledToAnchor(anchorNode.get()); diff --git a/Source/WebCore/rendering/ScrollBehavior.cpp b/Source/WebCore/rendering/ScrollBehavior.cpp index 2e7ae7481c13..b58b33184e6a 100644 --- a/Source/WebCore/rendering/ScrollBehavior.cpp +++ b/Source/WebCore/rendering/ScrollBehavior.cpp @@ -50,6 +50,8 @@ const ScrollAlignment ScrollAlignment::alignCenterIfNeeded = { noScroll, alignCe WEBCORE_EXPORT const ScrollAlignment ScrollAlignment::alignToEdgeIfNeeded = { noScroll, alignToClosestEdge, alignToClosestEdge }; WEBCORE_EXPORT const ScrollAlignment ScrollAlignment::alignCenterAlways = { alignCenter, alignCenter, alignCenter }; const ScrollAlignment ScrollAlignment::alignTopAlways = { alignTop, alignTop, alignTop }; +const ScrollAlignment ScrollAlignment::alignRightAlways = { alignRight, alignRight, alignRight }; +const ScrollAlignment ScrollAlignment::alignLeftAlways = { alignLeft, alignLeft, alignLeft }; const ScrollAlignment ScrollAlignment::alignBottomAlways = { alignBottom, alignBottom, alignBottom }; }; // namespace WebCore diff --git a/Source/WebCore/rendering/ScrollBehavior.h b/Source/WebCore/rendering/ScrollBehavior.h index 390c68a5f6c3..272bce3faa20 100644 --- a/Source/WebCore/rendering/ScrollBehavior.h +++ b/Source/WebCore/rendering/ScrollBehavior.h @@ -65,6 +65,8 @@ struct ScrollAlignment { static const ScrollAlignment alignToEdgeIfNeeded; static const ScrollAlignment alignCenterAlways; static const ScrollAlignment alignTopAlways; + static const ScrollAlignment alignRightAlways; + static const ScrollAlignment alignLeftAlways; static const ScrollAlignment alignBottomAlways; ScrollBehavior m_rectVisible; -- 2.36.0