diff options
| author | 2011-10-21 10:53:29 -0700 | |
|---|---|---|
| committer | 2011-10-21 10:53:29 -0700 | |
| commit | bb99e28cd69c7a3ab355873130242373282295a5 (patch) | |
| tree | 36245a5442870034eef495391d45fd5f552a0867 | |
| parent | 10b4503f2b3c3ad365a7adc73095a3280fc6bdfb (diff) | |
Fix issue# 5492404: Reading level check thread error.
Remove access to WebSettings from getReadingLevelScale() by saving the
double-tap zoom scale factor in ZoomManager. WebSettings can only be
accessed in the UI thread.
Change-Id: Ic7289bf3c14d800797f2e85546a088a9071e0468
| -rw-r--r-- | core/java/android/webkit/WebSettings.java | 2 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 4 | ||||
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 14 |
3 files changed, 12 insertions, 8 deletions
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index f1c2bdead14d..f240a2e243b5 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -777,7 +777,7 @@ public class WebSettings { public void setDoubleTapZoom(int doubleTapZoom) { if (mDoubleTapZoom != doubleTapZoom) { mDoubleTapZoom = doubleTapZoom; - mWebView.updateDoubleTapZoom(); + mWebView.updateDoubleTapZoom(doubleTapZoom); } } diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 71ba7ebfb9a5..a814b128b5ca 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2995,8 +2995,8 @@ public class WebView extends AbsoluteLayout /** * Update the double-tap zoom. */ - /* package */ void updateDoubleTapZoom() { - mZoomManager.updateDoubleTapZoom(); + /* package */ void updateDoubleTapZoom(int doubleTapZoom) { + mZoomManager.updateDoubleTapZoom(doubleTapZoom); } private int computeRealHorizontalScrollRange() { diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 9151fdd20d29..7d3cf8ea74d6 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -152,6 +152,12 @@ class ZoomManager { private float mDisplayDensity; /* + * The factor that is used to tweak the zoom scale on a double-tap, + * and can be changed via WebSettings. Range is from 0.75f to 1.25f. + */ + private float mDoubleTapZoomFactor = 1.0f; + + /* * The scale factor that is used as the minimum increment when going from * overview to reading level on a double tap. */ @@ -314,10 +320,7 @@ class ZoomManager { * Returns the zoom scale used for reading text on a double-tap. */ public final float getReadingLevelScale() { - WebSettings settings = mWebView.getSettings(); - final float doubleTapZoomFactor = settings != null - ? settings.getDoubleTapZoom() / 100.f : 1.0f; - return mDisplayDensity * doubleTapZoomFactor; + return mDisplayDensity * mDoubleTapZoomFactor; } public final float getInvDefaultScale() { @@ -516,8 +519,9 @@ class ZoomManager { return mZoomScale != 0 || mInHWAcceleratedZoom; } - public void updateDoubleTapZoom() { + public void updateDoubleTapZoom(int doubleTapZoom) { if (mInZoomOverview) { + mDoubleTapZoomFactor = doubleTapZoom / 100.0f; mTextWrapScale = getReadingLevelScale(); refreshZoomScale(true); } |