summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrace Kloba <klobag@google.com>2010-04-14 16:33:37 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-04-14 16:33:37 -0700
commit5c6e2c7832240d131e937bcce24f904854159ab8 (patch)
tree25a6bb569f4257f8c25be16f159e121fba9b773c
parent069d51619a96c59ac2c6687e6bfb0a201585cc12 (diff)
parent34a423ba5b431f032c09b5a6702b2cd3944bda3b (diff)
downloadexternal_webkit-5c6e2c7832240d131e937bcce24f904854159ab8.zip
external_webkit-5c6e2c7832240d131e937bcce24f904854159ab8.tar.gz
external_webkit-5c6e2c7832240d131e937bcce24f904854159ab8.tar.bz2
am 34a423ba: am 22804c07: Pass scroll mode to Java so that we can handle overflow on html and body correctly.
Merge commit '34a423ba5b431f032c09b5a6702b2cd3944bda3b' into kraken * commit '34a423ba5b431f032c09b5a6702b2cd3944bda3b': Pass scroll mode to Java so that we can handle
-rw-r--r--WebCore/platform/ScrollView.cpp2
-rw-r--r--WebCore/platform/android/ScrollViewAndroid.cpp11
-rw-r--r--WebKit/android/jni/WebViewCore.cpp11
-rw-r--r--WebKit/android/jni/WebViewCore.h5
4 files changed, 27 insertions, 2 deletions
diff --git a/WebCore/platform/ScrollView.cpp b/WebCore/platform/ScrollView.cpp
index 1e28651..69ecac2 100644
--- a/WebCore/platform/ScrollView.cpp
+++ b/WebCore/platform/ScrollView.cpp
@@ -985,11 +985,11 @@ void ScrollView::platformSetScrollbarsSuppressed(bool)
#if !PLATFORM(MAC) && !PLATFORM(WX)
+#if !PLATFORM(ANDROID)
void ScrollView::platformSetScrollbarModes()
{
}
-#if !PLATFORM(ANDROID)
void ScrollView::platformScrollbarModes(ScrollbarMode& horizontal, ScrollbarMode& vertical) const
{
horizontal = ScrollbarAuto;
diff --git a/WebCore/platform/android/ScrollViewAndroid.cpp b/WebCore/platform/android/ScrollViewAndroid.cpp
index db20591..90a988d 100644
--- a/WebCore/platform/android/ScrollViewAndroid.cpp
+++ b/WebCore/platform/android/ScrollViewAndroid.cpp
@@ -73,9 +73,18 @@ void ScrollView::platformSetScrollPosition(const WebCore::IntPoint& pt)
android::WebViewCore::getWebViewCore(this)->scrollTo(pt.x(), pt.y());
}
+void ScrollView::platformSetScrollbarModes()
+{
+ if (parent()) // no scrollbar for the subframes
+ return;
+ android::WebViewCore::getWebViewCore(this)->setScrollbarModes(m_horizontalScrollbarMode, m_verticalScrollbarMode);
+}
+
void ScrollView::platformScrollbarModes(ScrollbarMode& h, ScrollbarMode& v) const
{
- h = v = ScrollbarAlwaysOff;
+ // m_horizontalScrollbarMode and m_verticalScrollbarMode are set in ScrollView::setScrollbarModes()
+ h = m_horizontalScrollbarMode;
+ v = m_verticalScrollbarMode;
}
bool ScrollView::platformProhibitsScrolling()
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index eafd91c..70e96cd 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -252,6 +252,7 @@ struct WebViewCore::JavaGlue {
jmethodID m_sendFindAgain;
jmethodID m_showRect;
jmethodID m_centerFitRect;
+ jmethodID m_setScrollbarModes;
AutoJObject object(JNIEnv* env) {
return getRealObject(env, m_obj);
}
@@ -342,6 +343,7 @@ WebViewCore::WebViewCore(JNIEnv* env, jobject javaWebViewCore, WebCore::Frame* m
m_javaGlue->m_sendFindAgain = GetJMethod(env, clazz, "sendFindAgain", "()V");
m_javaGlue->m_showRect = GetJMethod(env, clazz, "showRect", "(IIIIIIFFFF)V");
m_javaGlue->m_centerFitRect = GetJMethod(env, clazz, "centerFitRect", "(IIII)V");
+ m_javaGlue->m_setScrollbarModes = GetJMethod(env, clazz, "setScrollbarModes", "(II)V");
env->SetIntField(javaWebViewCore, gWebViewCoreFields.m_nativeClass, (jint)this);
@@ -2531,6 +2533,15 @@ void WebViewCore::centerFitRect(int x, int y, int width, int height)
checkException(env);
}
+
+void WebViewCore::setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode)
+{
+ JNIEnv* env = JSC::Bindings::getJNIEnv();
+ env->CallVoidMethod(m_javaGlue->object(env).get(), m_javaGlue->m_setScrollbarModes,
+ horizontalMode, verticalMode);
+ checkException(env);
+}
+
//----------------------------------------------------------------------
// Native JNI methods
//----------------------------------------------------------------------
diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h
index 8c885e6..056dba1 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -249,6 +249,11 @@ namespace android {
void addMessageToConsole(const String& message, unsigned int lineNumber, const String& sourceID, int msgLevel);
+ /**
+ * Tell the Java side of the scrollbar mode
+ */
+ void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode);
+
//
// Followings support calls from Java to native WebCore
//