diff options
author | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 20:21:45 +0000 |
---|---|---|
committer | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-27 20:21:45 +0000 |
commit | 3f93980d6f500aef8e587445db50934e85244774 (patch) | |
tree | 3c8e4e7adc1b594bc8aba166da1d702ea2588b85 /android_webview/native | |
parent | bfb88ec71c6cd955694024e2e57c9dca04ef6cba (diff) | |
download | chromium_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.cc | 27 | ||||
-rw-r--r-- | android_webview/native/aw_settings.h | 6 |
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_; }; |