Post a Runnable to execute setNewZoomScale when
WebView's onSizeChanged is called. This will ensure
requestLayout of the Child View works.
Fix http://b/issue?id=2323445
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index b5d283d..a974653 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3798,9 +3798,17 @@
}
}
- // we always force, in case our height changed, in which case we still
- // want to send the notification over to webkit
- setNewZoomScale(mActualScale, true);
+ // onSizeChanged() is called during WebView layout. And any
+ // requestLayout() is blocked during layout. As setNewZoomScale() will
+ // call its child View to reposition itself through ViewManager's
+ // scaleAll(), we need to post a Runnable to ensure requestLayout().
+ post(new Runnable() {
+ public void run() {
+ // we always force, in case our height changed, in which case we
+ // still want to send the notification over to webkit
+ setNewZoomScale(mActualScale, true);
+ }
+ });
}
@Override