Fix assumption that tests are centered on screen

bug:18670714

Reenables tests on watch config.

Change-Id: I0d0b0afc046fa539688ba67e3c1e7b10abb1430f
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapcomparers/MSSIMComparer.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapcomparers/MSSIMComparer.java
index e766f63..56d9cf5 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapcomparers/MSSIMComparer.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapcomparers/MSSIMComparer.java
@@ -15,7 +15,6 @@
  */
 package android.uirendering.cts.bitmapcomparers;
 
-import com.android.cts.uirendering.R;
 import com.android.cts.uirendering.ScriptC_MSSIMComparer;
 
 import android.content.res.Resources;
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
index c17e106..c86ff76 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
@@ -15,6 +15,7 @@
  */
 package android.uirendering.cts.testclasses;
 
+import android.graphics.Point;
 import com.android.cts.uirendering.R;
 
 import android.graphics.Canvas;
@@ -22,7 +23,6 @@
 import android.graphics.Rect;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.uirendering.cts.bitmapcomparers.BitmapComparer;
-import android.uirendering.cts.bitmapcomparers.ExactComparer;
 import android.uirendering.cts.bitmapcomparers.MSSIMComparer;
 import android.uirendering.cts.bitmapverifiers.RectVerifier;
 import android.uirendering.cts.testinfrastructure.ActivityTestBase;
@@ -35,7 +35,7 @@
     @SmallTest
     public void testScreenshot() {
         for (int i = 0 ; i < 500 ; i ++) {
-            takeScreenshot();
+            takeScreenshot(new Point());
             System.gc();
         }
     }
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/view/UnclippedBlueView.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/view/UnclippedBlueView.java
index 7a16e3c..b8935fb 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/view/UnclippedBlueView.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/view/UnclippedBlueView.java
@@ -4,7 +4,6 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.util.AttributeSet;
-import android.view.View;
 import android.widget.FrameLayout;
 
 public class UnclippedBlueView extends FrameLayout {
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
index e3ad5a6..e1c09f5 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
@@ -17,6 +17,7 @@
 
 import android.annotation.Nullable;
 import android.graphics.Bitmap;
+import android.graphics.Point;
 import android.renderscript.Allocation;
 import android.renderscript.RenderScript;
 import android.test.ActivityInstrumentationTestCase2;
@@ -123,21 +124,19 @@
         return pixels;
     }
 
-    private Bitmap takeScreenshotImpl() {
+    private Bitmap takeScreenshotImpl(Point testOffset) {
         Bitmap source = getInstrumentation().getUiAutomation().takeScreenshot();
-        int x = (source.getWidth() - TEST_WIDTH) / 2;
-        int y = (source.getHeight() - TEST_HEIGHT) / 2;
-        return Bitmap.createBitmap(source, x, y, TEST_WIDTH, TEST_HEIGHT);
+        return Bitmap.createBitmap(source, testOffset.x, testOffset.y, TEST_WIDTH, TEST_HEIGHT);
     }
 
-    public Bitmap takeScreenshot() {
+    public Bitmap takeScreenshot(Point testOffset) {
         getInstrumentation().waitForIdleSync();
-        Bitmap bitmap1 = takeScreenshotImpl();
+        Bitmap bitmap1 = takeScreenshotImpl(testOffset);
         Bitmap bitmap2;
         int count = 0;
         do  {
             bitmap2 = bitmap1;
-            bitmap1 = takeScreenshotImpl();
+            bitmap1 = takeScreenshotImpl(testOffset);
             count++;
         } while (count < MAX_SCREEN_SHOTS &&
                 !Arrays.equals(getBitmapPixels(bitmap2), getBitmapPixels(bitmap1)));
@@ -155,10 +154,11 @@
      * Used to execute a specific part of a test and get the resultant bitmap
      */
     protected Bitmap captureRenderSpec(TestCase testCase) {
-        getActivity().enqueueRenderSpecAndWait(testCase.layoutID, testCase.canvasClient,
+        Point testOffset = getActivity().enqueueRenderSpecAndWait(
+                testCase.layoutID, testCase.canvasClient,
                 testCase.webViewUrl, testCase.viewInitializer, testCase.useHardware);
         testCase.wasTestRan = true;
-        return takeScreenshot();
+        return takeScreenshot(testOffset);
     }
 
     /**
@@ -229,11 +229,6 @@
          * every test case is tested against it.
          */
         public void runWithComparer(BitmapComparer bitmapComparer) {
-            if (getActivity().getOnWatch()) {
-                Log.d(TAG, getName() + "skipped");
-                return;
-            }
-
             if (mTestCases.size() == 0) {
                 throw new IllegalStateException("Need at least one test to run");
             }
@@ -252,11 +247,6 @@
          * the verifier given.
          */
         public void runWithVerifier(BitmapVerifier bitmapVerifier) {
-            if (getActivity().getOnWatch()) {
-                Log.d(TAG, getName() + "skipped");
-                return;
-            }
-
             if (mTestCases.size() == 0) {
                 throw new IllegalStateException("Need at least one test to run");
             }
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
index 65ed7ee..4bd513a 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
@@ -17,7 +17,7 @@
 
 import android.annotation.Nullable;
 import android.app.Activity;
-import android.content.res.Configuration;
+import android.graphics.Point;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -32,28 +32,21 @@
  * A generic activity that uses a view specified by the user.
  */
 public class DrawActivity extends Activity {
-    private final static long TIME_OUT = 10000;
-    private final Object mLock = new Object();
+    private final static long TIME_OUT_MS = 10000;
+    private final Point mLock = new Point();
     public static final int MIN_NUMBER_OF_DRAWS = 20;
 
     private Handler mHandler;
     private View mView;
-    private boolean mOnWatch;
 
     public void onCreate(Bundle bundle){
         super.onCreate(bundle);
         getWindow().getDecorView().setSystemUiVisibility(
                 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
         mHandler = new RenderSpecHandler();
-        int uiMode = getResources().getConfiguration().uiMode;
-        mOnWatch = (uiMode & Configuration.UI_MODE_TYPE_WATCH) == Configuration.UI_MODE_TYPE_WATCH;
     }
 
-    public boolean getOnWatch() {
-        return mOnWatch;
-    }
-
-    public void enqueueRenderSpecAndWait(int layoutId, CanvasClient canvasClient, String webViewUrl,
+    public Point enqueueRenderSpecAndWait(int layoutId, CanvasClient canvasClient, String webViewUrl,
             @Nullable ViewInitializer viewInitializer, boolean useHardware) {
         ((RenderSpecHandler) mHandler).setViewInitializer(viewInitializer);
         int arg2 = (useHardware ? View.LAYER_TYPE_NONE : View.LAYER_TYPE_SOFTWARE);
@@ -65,13 +58,16 @@
             mHandler.obtainMessage(RenderSpecHandler.LAYOUT_MSG, layoutId, arg2).sendToTarget();
         }
 
+        Point point = new Point();
         synchronized (mLock) {
             try {
-                mLock.wait(TIME_OUT);
+                mLock.wait(TIME_OUT_MS);
+                point.set(mLock.x, mLock.y);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
+        return point;
     }
 
     private class RenderSpecHandler extends Handler {
@@ -137,11 +133,13 @@
 
         @Override
         public boolean onPreDraw() {
+
             mCurrentDraws++;
             if (mCurrentDraws < MIN_NUMBER_OF_DRAWS + mExtraDraws) {
                 mView.postInvalidate();
             } else {
                 synchronized (mLock) {
+                    mLock.set(mView.getLeft(), mView.getTop());
                     mLock.notify();
                 }
                 mView.getViewTreeObserver().removeOnPreDrawListener(this);