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);