summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2011-10-24 15:45:31 -0700
committerGeorge Mount <mount@google.com>2011-11-09 14:43:00 -0800
commit44bed85f240ccdf65de028e6fe2832b390676d47 (patch)
tree52594a8bbb50a98c79b1816b743782a6cb575efd /Source/WebKit/android/jni/WebCoreFrameBridge.cpp
parentdd14b5fc24b7b5dc7542e8af7249d239efb87516 (diff)
downloadexternal_webkit-44bed85f240ccdf65de028e6fe2832b390676d47.zip
external_webkit-44bed85f240ccdf65de028e6fe2832b390676d47.tar.gz
external_webkit-44bed85f240ccdf65de028e6fe2832b390676d47.tar.bz2
Offset scroll area by the scroll origin on Android
Bug 5268793 The scrolled area for WebView is 0,0 - maxX,maxY while ScrollView can have any origin. On RTL pages, the origin is negative when it can scroll. This scrolls the page to the right when it detects an RTL page. Framework CL: I2537b84a Change-Id: I6a91b97f90f5ba4c323c56dda9d125108d9502c4
Diffstat (limited to 'Source/WebKit/android/jni/WebCoreFrameBridge.cpp')
-rw-r--r--Source/WebKit/android/jni/WebCoreFrameBridge.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
index a01cca2..d4d2cc7 100644
--- a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
+++ b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
@@ -2117,6 +2117,25 @@ static void OrientationChanged(JNIEnv *env, jobject obj, int orientation)
pFrame->sendOrientationChangeEvent(orientation);
}
+static jboolean GetShouldStartScrolledRight(JNIEnv *env, jobject obj,
+ jint browserFrame)
+{
+ jboolean startScrolledRight = false; // default is start scrolled left
+ WebCore::Frame* frame = reinterpret_cast<WebCore::Frame*>(browserFrame);
+ WebCore::Document* document = frame->document();
+ if (document) {
+ RenderStyle* style = document->renderer()->style();
+ WritingMode writingMode = style->writingMode();
+ LOG_ASSERT(writingMode != WebCore::BottomToTopWritingMode,
+ "BottomToTopWritingMode isn't supported");
+ if (writingMode == WebCore::RightToLeftWritingMode)
+ startScrolledRight = true; // vertical-rl pages start scrolled right
+ else if (writingMode == WebCore::TopToBottomWritingMode)
+ startScrolledRight = !style->isLeftToRightDirection(); // RTL starts right
+ }
+ return startScrolledRight;
+}
+
#if USE(CHROME_NETWORK_STACK)
static void AuthenticationProceed(JNIEnv *env, jobject obj, int handle, jstring jUsername, jstring jPassword)
@@ -2315,6 +2334,8 @@ static JNINativeMethod gBrowserFrameNativeMethods[] = {
(void*) SslCertErrorCancel },
{ "nativeSslClientCert", "(I[B[[B)V",
(void*) SslClientCert },
+ { "nativeGetShouldStartScrolledRight", "(I)Z",
+ (void*) GetShouldStartScrolledRight },
};
int registerWebFrame(JNIEnv* env)