summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robin Lee <rgl@google.com> 2024-12-09 17:15:38 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-09 17:15:38 +0000
commit1e5d9afb1ee8554cd3a4f58b6b58f52eb99ddddb (patch)
treeb9ad92d7e0fc5fdb7257f6942f6ebed0007f6909
parent9a0928552270da4dbf3cb9ccba4ec7cc8c52b6d3 (diff)
parent48e0978320865a15ed08e27ed7b558cfd412eede (diff)
Merge "Revert "Don't skip clearing measure cache of ancestors"" into main
-rw-r--r--core/java/android/view/View.java30
-rw-r--r--core/tests/coretests/src/android/view/ViewGroupTest.java42
2 files changed, 6 insertions, 66 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d15b0f518f83..d13f0e21bf80 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -28277,28 +28277,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags |= PFLAG_FORCE_LAYOUT;
mPrivateFlags |= PFLAG_INVALIDATED;
- if (mParent != null) {
- if (!mParent.isLayoutRequested()) {
- mParent.requestLayout();
- } else {
- clearMeasureCacheOfAncestors();
- }
+ if (mParent != null && !mParent.isLayoutRequested()) {
+ mParent.requestLayout();
}
if (mAttachInfo != null && mAttachInfo.mViewRequestingLayout == this) {
mAttachInfo.mViewRequestingLayout = null;
}
}
- private void clearMeasureCacheOfAncestors() {
- ViewParent parent = mParent;
- while (parent instanceof View view) {
- if (view.mMeasureCache != null) {
- view.mMeasureCache.clear();
- }
- parent = view.mParent;
- }
- }
-
/**
* Forces this view to be laid out during the next layout pass.
* This method does not call requestLayout() or forceLayout()
@@ -28654,10 +28640,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
@RemotableViewMethod
public void setMinimumHeight(int minHeight) {
- if (mMinHeight != minHeight) {
- mMinHeight = minHeight;
- requestLayout();
- }
+ mMinHeight = minHeight;
+ requestLayout();
}
/**
@@ -28687,10 +28671,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
@RemotableViewMethod
public void setMinimumWidth(int minWidth) {
- if (mMinWidth != minWidth) {
- mMinWidth = minWidth;
- requestLayout();
- }
+ mMinWidth = minWidth;
+ requestLayout();
}
diff --git a/core/tests/coretests/src/android/view/ViewGroupTest.java b/core/tests/coretests/src/android/view/ViewGroupTest.java
index 43c404e849fe..ae3ad36b532c 100644
--- a/core/tests/coretests/src/android/view/ViewGroupTest.java
+++ b/core/tests/coretests/src/android/view/ViewGroupTest.java
@@ -213,35 +213,6 @@ public class ViewGroupTest {
assertTrue(autofillableViews.containsAll(Arrays.asList(viewA, viewC)));
}
- @Test
- public void testMeasureCache() {
- final int spec1 = View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST);
- final int spec2 = View.MeasureSpec.makeMeasureSpec(50, View.MeasureSpec.AT_MOST);
- final Context context = getInstrumentation().getContext();
- final View child = new View(context);
- final TestView parent = new TestView(context, 0);
- parent.addView(child);
-
- child.setPadding(1, 2, 3, 4);
- parent.measure(spec1, spec1);
- assertEquals(4, parent.getMeasuredWidth());
- assertEquals(6, parent.getMeasuredHeight());
-
- child.setPadding(5, 6, 7, 8);
- parent.measure(spec2, spec2);
- assertEquals(12, parent.getMeasuredWidth());
- assertEquals(14, parent.getMeasuredHeight());
-
- // This ends the state of forceLayout.
- parent.layout(0, 0, 50, 50);
-
- // The cached values should be cleared after the new setPadding is called. And the measured
- // width and height should be up-to-date.
- parent.measure(spec1, spec1);
- assertEquals(12, parent.getMeasuredWidth());
- assertEquals(14, parent.getMeasuredHeight());
- }
-
private static void getUnobscuredTouchableRegion(Region outRegion, View view) {
outRegion.set(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
final ViewParent parent = view.getParent();
@@ -269,19 +240,6 @@ public class ViewGroupTest {
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// We don't layout this view.
}
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int measuredWidth = 0;
- int measuredHeight = 0;
- final int count = getChildCount();
- for (int i = 0; i < count; i++) {
- final View child = getChildAt(i);
- measuredWidth += child.getPaddingLeft() + child.getPaddingRight();
- measuredHeight += child.getPaddingTop() + child.getPaddingBottom();
- }
- setMeasuredDimension(measuredWidth, measuredHeight);
- }
}
public static class AutofillableTestView extends TestView {