summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCary Clark <cary@android.com>2010-03-19 10:36:35 -0400
committerCary Clark <cary@android.com>2010-03-19 10:52:41 -0400
commitcfe688d8d9d09d2a9e6602361f20a8d5a4fe3621 (patch)
treec7e13cc476fb339d0931bf5a7c2aa7bdcff6a793
parentf19f9f55f9a1d95b1c741fc177b6b1cff4ab8034 (diff)
downloadframeworks_base-cfe688d8d9d09d2a9e6602361f20a8d5a4fe3621.zip
frameworks_base-cfe688d8d9d09d2a9e6602361f20a8d5a4fe3621.tar.gz
frameworks_base-cfe688d8d9d09d2a9e6602361f20a8d5a4fe3621.tar.bz2
create absolute layout if view layout can't be reused
The existing view layout may not be an absolute layout, and will throw a ClassCastException. Check to see if it is compatible before the cast. Change-Id: I7309600a1e7405a29e49a3bab469a164d51126ae http://b/2526854
-rw-r--r--core/java/android/webkit/ViewManager.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/core/java/android/webkit/ViewManager.java b/core/java/android/webkit/ViewManager.java
index 4e0e081..fc5c425 100644
--- a/core/java/android/webkit/ViewManager.java
+++ b/core/java/android/webkit/ViewManager.java
@@ -18,6 +18,7 @@ package android.webkit;
import android.view.SurfaceView;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.AbsoluteLayout;
import java.util.ArrayList;
@@ -155,17 +156,18 @@ class ViewManager {
v.isFixedSize = true;
}
- AbsoluteLayout.LayoutParams lp =
- (AbsoluteLayout.LayoutParams) v.mView.getLayoutParams();
+ AbsoluteLayout.LayoutParams lp;
+ ViewGroup.LayoutParams layoutParams = v.mView.getLayoutParams();
- if (lp == null)
- lp = new AbsoluteLayout.LayoutParams(ctvD(v.width), ctvD(v.height),
- ctvX(v.x), ctvY(v.y));
- else {
+ if (layoutParams instanceof AbsoluteLayout.LayoutParams) {
+ lp = (AbsoluteLayout.LayoutParams) layoutParams;
lp.width = ctvD(v.width);
lp.height = ctvD(v.height);
lp.x = ctvX(v.x);
lp.y = ctvY(v.y);
+ } else {
+ lp = new AbsoluteLayout.LayoutParams(ctvD(v.width), ctvD(v.height),
+ ctvX(v.x), ctvY(v.y));
}
return lp;
}