diff options
author | commit-queue@webkit.org <commit-queue@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2013-01-18 21:44:25 +0000 |
---|---|---|
committer | commit-queue@webkit.org <commit-queue@webkit.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2013-01-18 21:44:25 +0000 |
commit | 9d3a15f5d5c4d51d423460b70a2b55babdd5b92b (patch) | |
tree | 0d7e35c36d97f0ca53a8a4f35dcb5d1732aee737 /third_party/WebKit/LayoutTests/editing/input | |
parent | 00257d7d92031bfa2f6b21f94511c913176af873 (diff) | |
download | chromium_src-9d3a15f5d5c4d51d423460b70a2b55babdd5b92b.zip chromium_src-9d3a15f5d5c4d51d423460b70a2b55babdd5b92b.tar.gz chromium_src-9d3a15f5d5c4d51d423460b70a2b55babdd5b92b.tar.bz2 |
Fix scrollRectToVisible in the presence of transforms
https://bugs.webkit.org/show_bug.cgi?id=105574
Patch by Chris Hopman <cjhopman@google.com> on 2013-01-18
Reviewed by Simon Fraser.
Source/WebCore:
When scrolling to reveal an overflow layer, the required scroll was
being calculated in absolute coordinates. To properly account for
transforms, this calculation should be done in the local coordinates
of the renderBox.
Tests: editing/input/reveal-selection-transformed-overflow-parent.html
editing/input/reveal-selection-transformed-textarea.html
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
When scrolling to reveal an overflow layer, calculate the required
scroll in the local coordinates of the RenderBox.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::absoluteToLocalQuad):
(WebCore):
* rendering/RenderObject.h:
(RenderObject):
Add function to convert an absolute quad to a local quad.
LayoutTests:
* editing/input/reveal-caret-of-transformed-input-scrollable-parent.html: Added.
* editing/input/reveal-caret-of-transformed-input-scrollable-parent-expected.txt: Added.
Test that when scrolling an overflow layer to reveal a rect, the rect
passed to the parent to scroll is calculated properly.
* editing/input/reveal-caret-of-transformed-multiline-input.html: Added.
* editing/input/reveal-caret-of-transformed-multiline-input-expected.txt: Added.
Test that scrolling to reveal a rect works properly on a transformed
overflow layer.
* platform/chromium/TestExpectations:
* platform/mac/TestExpectations:
git-svn-id: svn://svn.chromium.org/blink/trunk@140202 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/LayoutTests/editing/input')
4 files changed, 56 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent-expected.txt b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent-expected.txt new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent-expected.txt @@ -0,0 +1 @@ +PASS diff --git a/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent.html b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent.html new file mode 100644 index 0000000..ccd6092 --- /dev/null +++ b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-input-scrollable-parent.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<head> +<script type="text/javascript" src="resources/reveal-utilities.js"></script> +</head> +<body> +<div>When the caret is scrolled out, on starting typing it must be brought to the center of the control.</div> +<div style="overflow:auto; height:150px; width:300px"> +<textarea name="textarea" id="textarea" rows="10" cols="10" + style="-webkit-transform:translate(110px, 110px) scale(2); height:200px"></textarea> +<div style="height:1000px"></div> +</div> +<script> + +var textArea = document.getElementById("textarea"); +textArea.textContent = generateNumbers(0, 500, 2, "\n"); +textArea.focus(); +textArea.selectionStart = 1200; +if (window.eventSender) { + eventSender.keyDown(">"); + // If the parentNode's scrollTop is greater than 500, then the textarea + // isn't even visible. + document.body.innerHTML = textarea.parentNode.scrollTop < 600 ? "PASS" : "FAIL"; +} + +if (window.testRunner) { + testRunner.dumpAsText(); +} + +</script> +</body> diff --git a/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input-expected.txt b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input-expected.txt new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input-expected.txt @@ -0,0 +1 @@ +PASS diff --git a/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input.html b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input.html new file mode 100644 index 0000000..7e21890 --- /dev/null +++ b/third_party/WebKit/LayoutTests/editing/input/reveal-caret-of-transformed-multiline-input.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<head> +<script type="text/javascript" src="resources/reveal-utilities.js"></script> +</head> +<body> +<div>When the caret is scrolled out, on starting typing it must be brought to the center of the control.</div> +<textarea name="textarea" id="textarea" rows="10" cols="10" style="-webkit-transform:rotate(180deg)"></textarea> +<script> + +var textArea = document.getElementById("textarea"); +textArea.textContent = generateNumbers(0, 30, 2, "\n"); +textArea.focus(); +textArea.selectionStart = 36; +if (window.eventSender) { + eventSender.keyDown(">"); + document.body.innerHTML = textarea.scrollTop > 0 ? "PASS" : "FAIL"; +} + +if (window.testRunner) { + testRunner.dumpAsText(); +} + +</script> +</body> |