Fixing a broken CTS test.
1. There was a bug in View.RequestRectangleOnScreen that was
fixed a while ago and this test is assuming the old broken
behavior is correct. First, it relies on the side effects
of the tested method on its input argument, which was never
documented as such. Second, the tests was assuming that a
view should apply its scroll X and Y to the rectangle
before asking the parent to make it visible. This is
not correct since the scroll shows how much the content
of the view is scrolled. In this case the rect is already
in local coordinates.
bug:7171897
Change-Id: Ibddc2a4780b8eec86ade97e563fc4f1bde6a5934
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 9ec0626..9e75a0c 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -2543,6 +2543,16 @@
Rect rectangle = new Rect();
MockViewGroupParent parent = new MockViewGroupParent(mActivity);
+ final Rect requestedRect = new Rect();
+ MockViewGroupParent grandparent = new MockViewGroupParent(mActivity) {
+ @Override
+ public boolean requestChildRectangleOnScreen(View child, Rect rectangle,
+ boolean immediate) {
+ requestedRect.set(rectangle);
+ return super.requestChildRectangleOnScreen(child, rectangle, immediate);
+ }
+ };
+
// parent is null
assertFalse(view.requestRectangleOnScreen(rectangle));
assertFalse(view.requestRectangleOnScreen(null));
@@ -2551,16 +2561,22 @@
assertEquals(0, rectangle.right);
assertEquals(0, rectangle.bottom);
- view.setParent(parent);
- view.scrollTo(1, 2);
+ parent.addView(view);
+ parent.scrollTo(1, 2);
+ grandparent.addView(parent);
+
assertFalse(parent.hasRequestChildRectangleOnScreen());
+ assertFalse(grandparent.hasRequestChildRectangleOnScreen());
assertFalse(view.requestRectangleOnScreen(rectangle));
+
assertTrue(parent.hasRequestChildRectangleOnScreen());
- assertEquals(-1, rectangle.left);
- assertEquals(-2, rectangle.top);
- assertEquals(-1, rectangle.right);
- assertEquals(-2, rectangle.bottom);
+ assertTrue(grandparent.hasRequestChildRectangleOnScreen());
+
+ assertEquals(-1, requestedRect.left);
+ assertEquals(-2, requestedRect.top);
+ assertEquals(-1, requestedRect.right);
+ assertEquals(-2, requestedRect.bottom);
try {
view.requestRectangleOnScreen(null);