summaryrefslogtreecommitdiffstats
path: root/android_webview/native
diff options
context:
space:
mode:
authormnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 20:21:45 +0000
committermnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-27 20:21:45 +0000
commit3f93980d6f500aef8e587445db50934e85244774 (patch)
tree3c8e4e7adc1b594bc8aba166da1d702ea2588b85 /android_webview/native
parentbfb88ec71c6cd955694024e2e57c9dca04ef6cba (diff)
downloadchromium_src-3f93980d6f500aef8e587445db50934e85244774.zip
chromium_src-3f93980d6f500aef8e587445db50934e85244774.tar.gz
chromium_src-3f93980d6f500aef8e587445db50934e85244774.tar.bz2
[Android WebView] Update WebView.EnableFixedLayoutMode in sync with ViewportEnabled
After WebKit http://trac.webkit.org/changeset/143735, WebView.EnableFixedLayoutMode must be updated together with WebSettings.ViewportEnabled. This is a temporary state of affairs, one of these settings will be removed in future. Only Android WebView needs to switch thid mode dynamically, thus the change is implemented in the android_webview layer. BUG=177684 Review URL: https://chromiumcodereview.appspot.com/12317071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185016 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/native')
-rw-r--r--android_webview/native/aw_settings.cc27
-rw-r--r--android_webview/native/aw_settings.h6
2 files changed, 29 insertions, 4 deletions
diff --git a/android_webview/native/aw_settings.cc b/android_webview/native/aw_settings.cc
index e3716d8..5e3caeb 100644
--- a/android_webview/native/aw_settings.cc
+++ b/android_webview/native/aw_settings.cc
@@ -13,6 +13,7 @@ namespace android_webview {
AwSettings::AwSettings(JNIEnv* env, jobject obj)
: java_ref_(env, obj),
+ enable_fixed_layout_(false),
text_zoom_percent_(100) {
}
@@ -23,6 +24,20 @@ void AwSettings::Destroy(JNIEnv* env, jobject obj) {
delete this;
}
+AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() {
+ if (!web_contents()) return NULL;
+ AwContents* contents = AwContents::FromWebContents(web_contents());
+ if (!contents) return NULL;
+ return contents->render_view_host_ext();
+}
+
+void AwSettings::SetEnableFixedLayoutMode(
+ JNIEnv* env, jobject obj, jboolean enabled) {
+ if (enable_fixed_layout_ == enabled) return;
+ enable_fixed_layout_ = enabled;
+ UpdateEnableFixedLayoutMode();
+}
+
void AwSettings::SetTextZoom(JNIEnv* env, jobject obj, jint text_zoom_percent) {
if (text_zoom_percent_ == text_zoom_percent) return;
text_zoom_percent_ = text_zoom_percent;
@@ -33,11 +48,14 @@ void AwSettings::SetWebContents(JNIEnv* env, jobject obj, jint web_contents) {
Observe(reinterpret_cast<content::WebContents*>(web_contents));
}
+void AwSettings::UpdateEnableFixedLayoutMode() {
+ AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
+ if (!rvhe) return;
+ rvhe->SetEnableFixedLayoutMode(enable_fixed_layout_);
+}
+
void AwSettings::UpdateTextZoom() {
- if (!web_contents()) return;
- AwContents* contents = AwContents::FromWebContents(web_contents());
- if (!contents) return;
- AwRenderViewHostExt* rvhe = contents->render_view_host_ext();
+ AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
if (!rvhe) return;
if (text_zoom_percent_ > 0) {
rvhe->SetTextZoomLevel(webkit_glue::ZoomFactorToZoomLevel(
@@ -49,6 +67,7 @@ void AwSettings::UpdateTextZoom() {
}
void AwSettings::RenderViewCreated(content::RenderViewHost* render_view_host) {
+ UpdateEnableFixedLayoutMode();
UpdateTextZoom();
}
diff --git a/android_webview/native/aw_settings.h b/android_webview/native/aw_settings.h
index a0b7730..4f7ec97 100644
--- a/android_webview/native/aw_settings.h
+++ b/android_webview/native/aw_settings.h
@@ -13,6 +13,8 @@
namespace android_webview {
+class AwRenderViewHostExt;
+
class AwSettings : public content::WebContentsObserver {
public:
AwSettings(JNIEnv* env, jobject obj);
@@ -20,10 +22,13 @@ class AwSettings : public content::WebContentsObserver {
// Called from Java.
void Destroy(JNIEnv* env, jobject obj);
+ void SetEnableFixedLayoutMode(JNIEnv* env, jobject obj, jboolean enabled);
void SetTextZoom(JNIEnv* env, jobject obj, jint text_zoom_percent);
void SetWebContents(JNIEnv* env, jobject obj, jint web_contents);
private:
+ AwRenderViewHostExt* GetAwRenderViewHostExt();
+ void UpdateEnableFixedLayoutMode();
void UpdateTextZoom();
// WebContentsObserver overrides:
@@ -31,6 +36,7 @@ class AwSettings : public content::WebContentsObserver {
content::RenderViewHost* render_view_host) OVERRIDE;
JavaObjectWeakGlobalRef java_ref_;
+ bool enable_fixed_layout_;
int text_zoom_percent_;
};