summaryrefslogtreecommitdiffstats
path: root/Source/WebKit
diff options
context:
space:
mode:
authorVictoria Lease <violets@google.com>2012-03-01 09:55:04 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-01 09:55:04 -0800
commita0798fea895a9be431e9357b9a0481a189b69980 (patch)
tree63b3a40514b400887608ca28b33a74f0974c7a2c /Source/WebKit
parent868265ada276afa86d397c7a6771138ffe6add91 (diff)
parenta30818b6d22801f8f2f4d6f29dd83d3eddb67b6f (diff)
downloadexternal_webkit-a0798fea895a9be431e9357b9a0481a189b69980.zip
external_webkit-a0798fea895a9be431e9357b9a0481a189b69980.tar.gz
external_webkit-a0798fea895a9be431e9357b9a0481a189b69980.tar.bz2
Merge "pin find-on-page scrolls to content edges"
Diffstat (limited to 'Source/WebKit')
-rw-r--r--Source/WebKit/android/WebCoreSupport/PlatformBridge.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/Source/WebKit/android/WebCoreSupport/PlatformBridge.cpp b/Source/WebKit/android/WebCoreSupport/PlatformBridge.cpp
index b684a1a..e536701 100644
--- a/Source/WebKit/android/WebCoreSupport/PlatformBridge.cpp
+++ b/Source/WebKit/android/WebCoreSupport/PlatformBridge.cpp
@@ -49,6 +49,8 @@
#include <wtf/android/AndroidThreading.h>
#include <wtf/MainThread.h>
+#include <algorithm>
+
using namespace android;
namespace WebCore {
@@ -169,18 +171,21 @@ void PlatformBridge::updateTextfield(FrameView* frameView, Node* nodePtr, bool c
}
void PlatformBridge::setScrollPosition(ScrollView* scrollView, int x, int y) {
+ FrameView* frameView = scrollView->frameView();
+ if (!frameView) return;
// Check to make sure the view is the main FrameView.
android::WebViewCore *webViewCore = android::WebViewCore::getWebViewCore(scrollView);
- if (webViewCore->mainFrame()->view() == scrollView)
- webViewCore->scrollTo(x, y);
- else {
- FrameView* frameView = scrollView->frameView();
- if (frameView) {
- RenderView* renderer = frameView->frame()->contentRenderer();
- if (renderer) {
- RenderLayer* layer = renderer->layer();
- layer->scrollToOffset(x, y);
- }
+ if (webViewCore->mainFrame()->view() == scrollView) {
+ const IntRect& visibleContentRect = frameView->visibleContentRect();
+ x = std::max(0, std::min(frameView->contentsWidth(), x));
+ y = std::max(0, std::min(frameView->contentsHeight(), y));
+ if ((x != visibleContentRect.x()) || (y != visibleContentRect.y()))
+ webViewCore->scrollTo(x, y);
+ } else {
+ RenderView* renderer = frameView->frame()->contentRenderer();
+ if (renderer) {
+ RenderLayer* layer = renderer->layer();
+ layer->scrollToOffset(x, y);
}
}
}