Merge "Add BroadcastOptions.setDeferUntilActive() API."
diff --git a/media/java/android/media/ImageUtils.java b/media/java/android/media/ImageUtils.java
index 4957300..993155f 100644
--- a/media/java/android/media/ImageUtils.java
+++ b/media/java/android/media/ImageUtils.java
@@ -84,6 +84,7 @@
     public static int getNumPlanesForHardwareBufferFormat(int hardwareBufferFormat) {
         switch(hardwareBufferFormat) {
             case HardwareBuffer.YCBCR_420_888:
+            case HardwareBuffer.YCBCR_P010:
                 return 3;
             case HardwareBuffer.RGBA_8888:
             case HardwareBuffer.RGBX_8888:
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index a82d4ea..5096ad1 100644
--- a/services/core/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
@@ -61,6 +61,7 @@
 
 public final class ShutdownThread extends Thread {
     // constants
+    private static final boolean DEBUG = false;
     private static final String TAG = "ShutdownThread";
     private static final int ACTION_DONE_POLL_WAIT_MS = 500;
     private static final int RADIOS_STATE_POLL_SLEEP_MS = 100;
@@ -161,7 +162,9 @@
         // any additional calls are just returned
         synchronized (sIsStartedGuard) {
             if (sIsStarted) {
-                Log.d(TAG, "Request to shutdown already running, returning.");
+                if (DEBUG) {
+                    Log.d(TAG, "Request to shutdown already running, returning.");
+                }
                 return;
             }
         }
@@ -178,7 +181,9 @@
                         ? com.android.internal.R.string.shutdown_confirm_question
                         : com.android.internal.R.string.shutdown_confirm);
 
-        Log.d(TAG, "Notifying thread to start shutdown longPressBehavior=" + longPressBehavior);
+        if (DEBUG) {
+            Log.d(TAG, "Notifying thread to start shutdown longPressBehavior=" + longPressBehavior);
+        }
 
         if (confirm) {
             final CloseDialogReceiver closer = new CloseDialogReceiver(context);
@@ -348,26 +353,34 @@
     }
 
     private static boolean showSysuiReboot() {
-        Log.d(TAG, "Attempting to use SysUI shutdown UI");
+        if (DEBUG) {
+            Log.d(TAG, "Attempting to use SysUI shutdown UI");
+        }
         try {
             StatusBarManagerInternal service = LocalServices.getService(
                     StatusBarManagerInternal.class);
             if (service.showShutdownUi(mReboot, mReason)) {
                 // Sysui will handle shutdown UI.
-                Log.d(TAG, "SysUI handling shutdown UI");
+                if (DEBUG) {
+                    Log.d(TAG, "SysUI handling shutdown UI");
+                }
                 return true;
             }
         } catch (Exception e) {
             // If anything went wrong, ignore it and use fallback ui
         }
-        Log.d(TAG, "SysUI is unavailable");
+        if (DEBUG) {
+            Log.d(TAG, "SysUI is unavailable");
+        }
         return false;
     }
 
     private static void beginShutdownSequence(Context context) {
         synchronized (sIsStartedGuard) {
             if (sIsStarted) {
-                Log.d(TAG, "Shutdown sequence already running, returning.");
+                if (DEBUG) {
+                    Log.d(TAG, "Shutdown sequence already running, returning.");
+                }
                 return;
             }
             sIsStarted = true;
diff --git a/tests/CanvasCompare/Android.bp b/tests/CanvasCompare/Android.bp
deleted file mode 100644
index 9883115..0000000
--- a/tests/CanvasCompare/Android.bp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-package {
-    // See: http://go/android-license-faq
-    default_applicable_licenses: [
-        "frameworks_base_license",
-    ],
-}
-
-android_test {
-    name: "CanvasCompare",
-    srcs: [
-        "src/**/*.java",
-        ":CanvasCompare-rscript{CanvasCompare.srcjar}",
-    ],
-    resource_zips: [
-        ":CanvasCompare-rscript{CanvasCompare.res.zip}",
-    ],
-    platform_apis: true,
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-    ],
-    static_libs: ["junit"],
-}
-
-genrule {
-    name: "CanvasCompare-rscript",
-    srcs: [
-        "src/**/*.rscript",
-        ":rs_script_api",
-        ":rs_clang_headers",
-    ],
-    tools: [
-        "llvm-rs-cc",
-        "soong_zip",
-    ],
-    out: [
-        "CanvasCompare.srcjar",
-        "CanvasCompare.res.zip",
-    ],
-    cmd: "for f in $(locations src/**/*.rscript); do " +
-        "  $(location llvm-rs-cc) -o $(genDir)/res/raw -p $(genDir)/src " +
-        "  -I $$(dirname $$(echo $(locations :rs_script_api) | awk '{ print $$1 }')) " +
-        "  -I $$(dirname $$(echo $(locations :rs_clang_headers) | awk '{ print $$1 }')) $${f}; " +
-        "done && " +
-        "$(location soong_zip) -srcjar -o $(location CanvasCompare.srcjar) -C $(genDir)/src -D $(genDir)/src &&" +
-        "$(location soong_zip) -o $(location CanvasCompare.res.zip) -C $(genDir)/res -D $(genDir)/res",
-}
diff --git a/tests/CanvasCompare/AndroidManifest.xml b/tests/CanvasCompare/AndroidManifest.xml
deleted file mode 100644
index 2734e7f..0000000
--- a/tests/CanvasCompare/AndroidManifest.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-     package="com.android.test.hwuicompare">
-
-    <uses-permission android:name="android.permission.INTERNET"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
-    <application android:label="@string/app_name"
-         android:theme="@android:style/Theme.Holo.Light.NoActionBar">
-        <activity android:name="AutomaticActivity"
-             android:label="CanvasAutoCompare"
-             android:exported="true">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-        <activity android:name="ManualActivity"
-             android:label="CanvasManualCompare"
-             android:exported="true">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-        <uses-library android:name="android.test.runner"/>
-    </application>
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-         android:targetPackage="com.android.test.hwuicompare"
-         android:label="HW/SW Canvas comparison tool."/>
-
-</manifest>
diff --git a/tests/CanvasCompare/OWNERS b/tests/CanvasCompare/OWNERS
deleted file mode 100644
index c88a9f8..0000000
--- a/tests/CanvasCompare/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-include /libs/hwui/OWNERS
diff --git a/tests/CanvasCompare/res/drawable/sunset1.jpg b/tests/CanvasCompare/res/drawable/sunset1.jpg
deleted file mode 100644
index 3b4e056..0000000
--- a/tests/CanvasCompare/res/drawable/sunset1.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/CanvasCompare/res/layout/automatic_layout.xml b/tests/CanvasCompare/res/layout/automatic_layout.xml
deleted file mode 100644
index e049ec0..0000000
--- a/tests/CanvasCompare/res/layout/automatic_layout.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent" >
-
-    <com.android.test.hwuicompare.MainView
-        android:id="@+id/hardware_view"
-        android:layout_width="@dimen/layer_width"
-        android:layout_height="@dimen/layer_width" />
-
-    <ImageView
-        android:id="@+id/software_image_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentRight="true" />
-
-    <ImageView
-        android:id="@+id/hardware_image_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentRight="true" />
-
-</RelativeLayout>
diff --git a/tests/CanvasCompare/res/layout/manual_layout.xml b/tests/CanvasCompare/res/layout/manual_layout.xml
deleted file mode 100644
index 1a9288c..0000000
--- a/tests/CanvasCompare/res/layout/manual_layout.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="center_horizontal"
-    android:orientation="vertical" >
-
-    <HorizontalScrollView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" >
-
-        <LinearLayout
-            android:id="@+id/spinner_layout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal" />
-    </HorizontalScrollView>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1"
-        android:baselineAligned="true"
-        android:orientation="horizontal" >
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="horizontal" >
-
-            <com.android.test.hwuicompare.MainView
-                android:id="@+id/hardware_view"
-                android:layout_width="@dimen/layer_width"
-                android:layout_height="@dimen/layer_width" />
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="horizontal" >
-
-            <com.android.test.hwuicompare.MainView
-                android:id="@+id/software_view"
-                android:layout_width="@dimen/layer_width"
-                android:layout_height="@dimen/layer_width" />
-        </LinearLayout>
-    </LinearLayout>
-
-    <ImageView
-        android:id="@+id/compare_image_view"
-        android:layout_width="@dimen/layer_width_double"
-        android:layout_height="@dimen/layer_height_double"
-        android:filter="false" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center"
-        android:orientation="horizontal" >
-
-        <ImageButton
-            android:id="@+id/previous"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:contentDescription="@string/previous_combination"
-            android:src="@android:drawable/ic_media_previous" />
-
-        <ImageButton
-            android:id="@+id/next"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:contentDescription="@string/next_combination"
-            android:src="@android:drawable/ic_media_next" />
-
-        <TextView
-            android:id="@+id/current_error"
-            android:layout_width="100dp"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:textAppearance="?android:attr/textAppearanceLarge" />
-
-        <Button
-            android:id="@+id/show_hardware_version"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/show_hardware_version" />
-
-        <Button
-            android:id="@+id/show_software_version"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/show_software_version" />
-
-        <Button
-            android:id="@+id/show_error_heatmap"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/show_error_heatmap" />
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/tests/CanvasCompare/res/values/strings.xml b/tests/CanvasCompare/res/values/strings.xml
deleted file mode 100644
index edd4610..0000000
--- a/tests/CanvasCompare/res/values/strings.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <string name="app_name">Canvas Compare Test</string>
-
-    <!-- show hardware rendered version of the layer -->
-    <string name="show_hardware_version">Hardware</string>
-    <!-- show software rendered version of the layer -->
-    <string name="show_software_version">Software</string>
-    <!-- show layer error -->
-    <string name="show_error_values">Error</string>
-    <!-- show layer error heatmap -->
-    <string name="show_error_heatmap">Heatmap</string>
-    <!--  select and display the next combination of painting options-->
-    <string name="next_combination">Next Combination</string>
-    <!--  select and display the previous combination of painting options-->
-    <string name="previous_combination">Previous Combination</string>
-</resources>
diff --git a/tests/CanvasCompare/res/values/values.xml b/tests/CanvasCompare/res/values/values.xml
deleted file mode 100644
index f69378d..0000000
--- a/tests/CanvasCompare/res/values/values.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-
-    <!-- NOTE: the below MUST be multiples of 64 -->
-    <dimen name="layer_height">320px</dimen>
-    <dimen name="layer_width">320px</dimen>
-
-    <dimen name="layer_height_double">640px</dimen>
-    <dimen name="layer_width_double">640px</dimen>
-
-</resources>
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/AutomaticActivity.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/AutomaticActivity.java
deleted file mode 100644
index 8ccd4e2..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/AutomaticActivity.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.TreeSet;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Trace;
-import android.util.Log;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-public class AutomaticActivity extends CompareActivity {
-    private static final String LOG_TAG = "AutomaticActivity";
-    private static final float ERROR_DISPLAY_THRESHOLD = 0.01f;
-    protected static final boolean DRAW_BITMAPS = false;
-
-    /**
-     * Threshold of error change required to consider a test regressed/improved
-     */
-    private static final float ERROR_CHANGE_THRESHOLD = 0.001f;
-
-    private static final float[] ERROR_CUTOFFS = {
-            0, 0.005f, 0.01f, 0.02f, 0.05f, 0.1f, 0.25f, 0.5f, 1f, 2f
-    };
-
-    private final float[] mErrorRates = new float[ERROR_CUTOFFS.length];
-    private float mTotalTests = 0;
-    private float mTotalError = 0;
-    private int mTestsRegressed = 0;
-    private int mTestsImproved = 0;
-
-    private ImageView mSoftwareImageView = null;
-    private ImageView mHardwareImageView = null;
-
-
-    public abstract static class FinalCallback {
-        abstract void report(String name, float value);
-        void complete() {};
-    }
-
-    private final ArrayList<FinalCallback> mFinalCallbacks = new ArrayList<FinalCallback>();
-
-    Runnable mRunnable = new Runnable() {
-        @Override
-        public void run() {
-            loadBitmaps();
-            if (mSoftwareBitmap == null || mHardwareBitmap == null) {
-                Log.e(LOG_TAG, "bitmap is null");
-                return;
-            }
-
-            if (DRAW_BITMAPS) {
-                mSoftwareImageView.setImageBitmap(mSoftwareBitmap);
-                mHardwareImageView.setImageBitmap(mHardwareBitmap);
-            }
-
-            Trace.traceBegin(Trace.TRACE_TAG_ALWAYS, "calculateError");
-            float error = mErrorCalculator.calcErrorRS(mSoftwareBitmap, mHardwareBitmap);
-            Trace.traceEnd(Trace.TRACE_TAG_ALWAYS);
-
-            final String[] modifierNames = DisplayModifier.getLastAppliedModifications();
-            handleError(modifierNames, error);
-
-            if (DisplayModifier.step()) {
-                finishTest();
-            } else {
-                mHardwareView.invalidate();
-                if (DRAW_BITMAPS) {
-                    mSoftwareImageView.invalidate();
-                    mHardwareImageView.invalidate();
-                }
-            }
-            mHandler.removeCallbacks(mRunnable);
-        }
-    };
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mHandler.removeCallbacks(mRunnable);
-    };
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.automatic_layout);
-
-        mSoftwareImageView = findViewById(R.id.software_image_view);
-        mHardwareImageView = findViewById(R.id.hardware_image_view);
-
-        onCreateCommon(mRunnable);
-        beginTest();
-    }
-
-    private static class TestResult {
-        TestResult(String label, float error) {
-            mLabel = label;
-            mTotalError = error;
-            mCount = 1;
-        }
-        public void addInto(float error) {
-            mTotalError += error;
-            mCount++;
-        }
-        public float getAverage() {
-            return mTotalError / mCount;
-        }
-        final String mLabel;
-        float mTotalError;
-        int mCount;
-    }
-
-    JSONObject mOutputJson = null;
-    JSONObject mInputJson = null;
-    final HashMap<String, TestResult> mModifierResults = new HashMap<String, TestResult>();
-    final HashMap<String, TestResult> mIndividualResults = new HashMap<String, TestResult>();
-    final HashMap<String, TestResult> mModifierDiffResults = new HashMap<String, TestResult>();
-    final HashMap<String, TestResult> mIndividualDiffResults = new HashMap<String, TestResult>();
-    private void beginTest() {
-        mFinalCallbacks.add(new FinalCallback() {
-            @Override
-            void report(String name, float value) {
-                Log.d(LOG_TAG, name + " " + value);
-            };
-        });
-
-        File inputFile = new File(Environment.getExternalStorageDirectory(),
-                "CanvasCompareInput.json");
-        if (inputFile.exists() && inputFile.canRead() && inputFile.length() > 0) {
-            try {
-                FileInputStream inputStream = new FileInputStream(inputFile);
-                Log.d(LOG_TAG, "Parsing input file...");
-                StringBuffer content = new StringBuffer((int)inputFile.length());
-                byte[] buffer = new byte[1024];
-                while (inputStream.read(buffer) != -1) {
-                    content.append(new String(buffer));
-                }
-                mInputJson = new JSONObject(content.toString());
-                inputStream.close();
-                Log.d(LOG_TAG, "Parsed input file with " + mInputJson.length() + " entries");
-            } catch (JSONException e) {
-                Log.e(LOG_TAG, "error parsing input json", e);
-            } catch (IOException e) {
-                Log.e(LOG_TAG, "error reading input json from sd", e);
-            }
-        }
-
-        mOutputJson = new JSONObject();
-    }
-
-    private static void logTestResultHash(String label, HashMap<String, TestResult> map) {
-        Log.d(LOG_TAG, "---------------");
-        Log.d(LOG_TAG, label + ":");
-        Log.d(LOG_TAG, "---------------");
-        TreeSet<TestResult> set = new TreeSet<TestResult>(new Comparator<TestResult>() {
-            @Override
-            public int compare(TestResult lhs, TestResult rhs) {
-                if (lhs == rhs) return 0; // don't need to worry about complex equality
-
-                int cmp = Float.compare(lhs.getAverage(), rhs.getAverage());
-                if (cmp != 0) {
-                    return cmp;
-                }
-                return lhs.mLabel.compareTo(rhs.mLabel);
-            }
-        });
-
-        for (TestResult t : map.values()) {
-            set.add(t);
-        }
-
-        for (TestResult t : set.descendingSet()) {
-            if (Math.abs(t.getAverage()) > ERROR_DISPLAY_THRESHOLD) {
-                Log.d(LOG_TAG, String.format("%2.4f : %s", t.getAverage(), t.mLabel));
-            }
-        }
-        Log.d(LOG_TAG, "");
-    }
-
-    private void finishTest() {
-        for (FinalCallback c : mFinalCallbacks) {
-            c.report("averageError", (mTotalError / mTotalTests));
-            for (int i = 1; i < ERROR_CUTOFFS.length; i++) {
-                c.report(String.format("tests with error over %1.3f", ERROR_CUTOFFS[i]),
-                        mErrorRates[i]);
-            }
-            if (mInputJson != null) {
-                c.report("tests regressed", mTestsRegressed);
-                c.report("tests improved", mTestsImproved);
-            }
-            c.complete();
-        }
-
-        try {
-            if (mOutputJson != null) {
-                String outputString = mOutputJson.toString(4);
-                File outputFile = new File(Environment.getExternalStorageDirectory(),
-                        "CanvasCompareOutput.json");
-                FileOutputStream outputStream = new FileOutputStream(outputFile);
-                outputStream.write(outputString.getBytes());
-                outputStream.close();
-                Log.d(LOG_TAG, "Saved output file with " + mOutputJson.length() + " entries");
-            }
-        } catch (JSONException e) {
-            Log.e(LOG_TAG, "error during JSON stringify", e);
-        } catch (IOException e) {
-            Log.e(LOG_TAG, "error storing JSON output on sd", e);
-        }
-
-        logTestResultHash("Modifier change vs previous", mModifierDiffResults);
-        logTestResultHash("Invidual test change vs previous", mIndividualDiffResults);
-        logTestResultHash("Modifier average test results", mModifierResults);
-        logTestResultHash("Individual test results", mIndividualResults);
-
-        Toast.makeText(getApplicationContext(), "done!", Toast.LENGTH_SHORT).show();
-        finish();
-    }
-
-    /**
-     * Inserts the error value into all TestResult objects, associated with each of its modifiers
-     */
-    private static void addForAllModifiers(String fullName, float error, String[] modifierNames,
-            HashMap<String, TestResult> modifierResults) {
-        for (String modifierName : modifierNames) {
-            TestResult r = modifierResults.get(fullName);
-            if (r == null) {
-                modifierResults.put(modifierName, new TestResult(modifierName, error));
-            } else {
-                r.addInto(error);
-            }
-        }
-    }
-
-    private void handleError(final String[] modifierNames, final float error) {
-        String fullName = "";
-        for (String s : modifierNames) {
-            fullName = fullName.concat("." + s);
-        }
-        fullName = fullName.substring(1);
-
-        float deltaError = 0;
-        if (mInputJson != null) {
-            try {
-                deltaError = error - (float)mInputJson.getDouble(fullName);
-            } catch (JSONException e) {
-                Log.w(LOG_TAG, "Warning: unable to read from input json", e);
-            }
-            if (deltaError > ERROR_CHANGE_THRESHOLD) mTestsRegressed++;
-            if (deltaError < -ERROR_CHANGE_THRESHOLD) mTestsImproved++;
-            mIndividualDiffResults.put(fullName, new TestResult(fullName, deltaError));
-            addForAllModifiers(fullName, deltaError, modifierNames, mModifierDiffResults);
-        }
-
-        mIndividualResults.put(fullName, new TestResult(fullName, error));
-        addForAllModifiers(fullName, error, modifierNames, mModifierResults);
-
-        try {
-            if (mOutputJson != null) {
-                mOutputJson.put(fullName, error);
-            }
-        } catch (JSONException e) {
-            Log.e(LOG_TAG, "exception during JSON recording", e);
-            mOutputJson = null;
-        }
-
-        for (int i = 0; i < ERROR_CUTOFFS.length; i++) {
-            if (error <= ERROR_CUTOFFS[i]) break;
-            mErrorRates[i]++;
-        }
-        mTotalError += error;
-        mTotalTests++;
-    }
-
-    @Override
-    protected boolean forceRecreateBitmaps() {
-        // disable, unless needed for drawing into imageviews
-        return DRAW_BITMAPS;
-    }
-
-    // FOR TESTING
-    public void setFinalCallback(FinalCallback c) {
-        mFinalCallbacks.add(c);
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/CompareActivity.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/CompareActivity.java
deleted file mode 100644
index 0dec1de..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/CompareActivity.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import com.android.test.hwuicompare.R;
-
-import android.app.Activity;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Handler;
-import android.os.Trace;
-import android.util.Log;
-import android.view.View;
-
-abstract public class CompareActivity extends Activity {
-    private static final String LOG_TAG = "CompareActivity";
-
-    protected MainView mHardwareView = null;
-
-    protected Bitmap mSoftwareBitmap;
-    protected Bitmap mHardwareBitmap;
-
-    protected ErrorCalculator mErrorCalculator;
-
-    protected Handler mHandler;
-
-    Runnable mDrawCallback = null;
-    protected boolean mRedrewFlag = true;
-
-    protected void onCreateCommon(final Runnable postDrawCallback) {
-        mDrawCallback = new Runnable() {
-            @Override
-            public void run() {
-                mRedrewFlag = true;
-                mHandler.post(postDrawCallback);
-            };
-        };
-        getWindow().setBackgroundDrawable(new ColorDrawable(0xffefefef));
-        ResourceModifiers.init(getResources());
-
-        mHardwareView = findViewById(R.id.hardware_view);
-        mHardwareView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
-        mHardwareView.setBackgroundColor(Color.WHITE);
-        mHardwareView.addDrawCallback(mDrawCallback);
-
-        int width = getResources().getDimensionPixelSize(R.dimen.layer_width);
-        int height = getResources().getDimensionPixelSize(R.dimen.layer_height);
-        mSoftwareBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-        mHardwareBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-
-        mErrorCalculator = new ErrorCalculator(getApplicationContext(), getResources());
-
-        mHandler = new Handler();
-    }
-
-    protected abstract boolean forceRecreateBitmaps();
-
-    protected void loadBitmaps() {
-        Trace.traceBegin(Trace.TRACE_TAG_ALWAYS, "loadBitmaps");
-        if (forceRecreateBitmaps()) {
-            int width = mSoftwareBitmap.getWidth();
-            int height = mSoftwareBitmap.getHeight();
-
-            mSoftwareBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-            mHardwareBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-        }
-
-        Trace.traceBegin(Trace.TRACE_TAG_ALWAYS, "softwareDraw");
-        mHardwareView.draw(new Canvas(mSoftwareBitmap));
-        Trace.traceEnd(Trace.TRACE_TAG_ALWAYS);
-
-        try {
-            Method getHardwareLayer = View.class.getDeclaredMethod("getHardwareLayer");
-            if (!getHardwareLayer.isAccessible())
-                getHardwareLayer.setAccessible(true);
-            Object hardwareLayer = getHardwareLayer.invoke(mHardwareView);
-            if (hardwareLayer == null) {
-                Log.d(LOG_TAG, "failure to access hardware layer");
-                return;
-            }
-            Method copyInto = hardwareLayer.getClass()
-                    .getDeclaredMethod("copyInto", Bitmap.class);
-            if (!copyInto.isAccessible())
-                copyInto.setAccessible(true);
-
-            Trace.traceBegin(Trace.TRACE_TAG_ALWAYS, "copyInto");
-            boolean success = (Boolean) copyInto.invoke(hardwareLayer, mHardwareBitmap);
-            Trace.traceEnd(Trace.TRACE_TAG_ALWAYS);
-            if (!success) {
-                Log.d(LOG_TAG, "failure to copy hardware layer into bitmap");
-            }
-        } catch (NoSuchMethodException e) {
-            e.printStackTrace();
-        } catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        } catch (InvocationTargetException e) {
-            e.printStackTrace();
-        }
-        Trace.traceEnd(Trace.TRACE_TAG_ALWAYS);
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
deleted file mode 100644
index 4bcf5a4..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import static java.util.Map.entry;
-
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.Log;
-
-import java.util.Map;
-import java.util.Map.Entry;
-
-public abstract class DisplayModifier {
-
-    // automated tests ignore any combination of operations that don't together return TOTAL_MASK
-    protected final static int TOTAL_MASK = 0x1F;
-
-    // if we're filling, ensure we're not also sweeping over stroke parameters
-    protected final static int SWEEP_STROKE_WIDTH_BIT = 0x1 << 0;
-    protected final static int SWEEP_STROKE_CAP_BIT = 0x1 << 1;
-    protected final static int SWEEP_STROKE_JOIN_BIT = 0x1 << 2;
-
-    protected final static int SWEEP_SHADER_BIT = 0x1 << 3; // only allow non-simple shaders to use rectangle drawing
-    protected final static int SWEEP_TRANSFORM_BIT = 0x1 << 4; // only sweep over specified transforms
-
-    abstract public void modifyDrawing(Paint paint, Canvas canvas);
-    protected int mask() { return 0x0; };
-
-    private static final RectF gRect = new RectF(0, 0, 200, 175);
-    private static final float[] gPts = new float[] {
-            0, 100, 100, 0, 100, 200, 200, 100
-    };
-
-    private static final int NUM_PARALLEL_LINES = 24;
-    private static final float[] gTriPts = new float[] {
-        75, 0, 130, 130, 130, 130, 0, 130, 0, 130, 75, 0
-    };
-    private static final float[] gLinePts = new float[NUM_PARALLEL_LINES * 8 + gTriPts.length];
-    static {
-        int index;
-        for (index = 0; index < gTriPts.length; index++) {
-            gLinePts[index] = gTriPts[index];
-        }
-        float val = 0;
-        for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
-            gLinePts[index + 0] = 150;
-            gLinePts[index + 1] = val;
-            gLinePts[index + 2] = 300;
-            gLinePts[index + 3] = val;
-            index += 4;
-            val += 8 + (2.0f/NUM_PARALLEL_LINES);
-        }
-        val = 0;
-        for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
-            gLinePts[index + 0] = val;
-            gLinePts[index + 1] = 150;
-            gLinePts[index + 2] = val;
-            gLinePts[index + 3] = 300;
-            index += 4;
-            val += 8 + (2.0f/NUM_PARALLEL_LINES);
-        }
-    };
-
-    @SuppressWarnings("serial")
-    private static final Map<String, Map<String, DisplayModifier>> gMaps = Map.of(
-            "aa", Map.of(
-                    "true", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setAntiAlias(true);
-                        }
-                    },
-                    "false", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setAntiAlias(false);
-                        }
-                    }),
-            "style", Map.of(
-                    "fill", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStyle(Paint.Style.FILL);
-                        }
-                    },
-                    "stroke", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStyle(Paint.Style.STROKE);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_WIDTH_BIT; }
-                    },
-                    "fillAndStroke", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStyle(Paint.Style.FILL_AND_STROKE);
-                        }
-
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_WIDTH_BIT; }
-                    }),
-            "strokeWidth", Map.of(
-                    "hair", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeWidth(0);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_WIDTH_BIT; }
-                    },
-                    "0.3", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeWidth(0.3f);
-                        }
-                    },
-                    "1", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeWidth(1);
-                        }
-                    },
-                    "5", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeWidth(5);
-                        }
-                    },
-                    "30", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeWidth(30);
-                        }
-                    }),
-            "strokeCap", Map.of(
-                    "butt", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeCap(Paint.Cap.BUTT);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_CAP_BIT; }
-                    },
-                    "round", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeCap(Paint.Cap.ROUND);
-                        }
-                    },
-                    "square", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeCap(Paint.Cap.SQUARE);
-                        }
-                    }),
-            "strokeJoin", Map.of(
-                    "bevel", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeJoin(Paint.Join.BEVEL);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_JOIN_BIT; }
-                    },
-                    "round", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeJoin(Paint.Join.ROUND);
-                        }
-                    },
-                    "miter", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setStrokeJoin(Paint.Join.MITER);
-                        }
-                    }),
-                    // TODO: add miter0, miter1 etc to test miter distances
-            "transform", Map.of(
-                    "noTransform", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {}
-                        @Override
-                        protected int mask() { return SWEEP_TRANSFORM_BIT; };
-                    },
-                    "rotate5", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.rotate(5);
-                        }
-                    },
-                    "rotate45", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.rotate(45);
-                        }
-                    },
-                    "rotate90", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.rotate(90);
-                            canvas.translate(0, -200);
-                        }
-                    },
-                    "scale2x2", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.scale(2, 2);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_TRANSFORM_BIT; };
-                    },
-                    "rot20scl1x4", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.rotate(20);
-                            canvas.scale(1, 4);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_TRANSFORM_BIT; };
-                    }),
-            "shader", Map.ofEntries(
-                    entry("noShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {}
-                        @Override
-                        protected int mask() { return SWEEP_SHADER_BIT; };
-                    }),
-                    entry("repeatShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mRepeatShader);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_SHADER_BIT; };
-                    }),
-                    entry("translatedShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mTranslatedShader);
-                        }
-                    }),
-                    entry("scaledShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mScaledShader);
-                        }
-                    }),
-                    entry("horGradient", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mHorGradient);
-                        }
-                    }),
-                    entry("diagGradient", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mDiagGradient);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_SHADER_BIT; };
-                    }),
-                    entry("vertGradient", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mVertGradient);
-                        }
-                    }),
-                    entry("radGradient", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mRadGradient);
-                        }
-                    }),
-                    entry("sweepGradient", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mSweepGradient);
-                        }
-                    }),
-                    entry("composeShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mComposeShader);
-                        }
-                    }),
-                    entry("bad composeShader", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mBadComposeShader);
-                        }
-                    }),
-                    entry("bad composeShader 2", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setShader(ResourceModifiers.instance().mAnotherBadComposeShader);
-                        }
-                    })),
-            "drawing", Map.ofEntries(
-                    entry("roundRect", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawRoundRect(gRect, 20, 20, paint);
-                        }
-                    }),
-                    entry("rect", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawRect(gRect, paint);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_SHADER_BIT | SWEEP_STROKE_CAP_BIT; };
-                    }),
-                    entry("circle", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawCircle(100, 100, 75, paint);
-                        }
-                    }),
-                    entry("oval", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawOval(gRect, paint);
-                        }
-                    }),
-                    entry("lines", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawLines(gLinePts, paint);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_CAP_BIT; };
-                    }),
-                    entry("plusPoints", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawPoints(gPts, paint);
-                        }
-                    }),
-                    entry("text", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setTextSize(36);
-                            canvas.drawText("TEXTTEST", 0, 50, paint);
-                        }
-                    }),
-                    entry("shadowtext", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            paint.setTextSize(36);
-                            paint.setShadowLayer(3.0f, 0.0f, 3.0f, 0xffff00ff);
-                            canvas.drawText("TEXTTEST", 0, 50, paint);
-                        }
-                    }),
-                    entry("bitmapMesh", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawBitmapMesh(ResourceModifiers.instance().mBitmap, 3, 3,
-                                    ResourceModifiers.instance().mBitmapVertices, 0, null, 0, null);
-                        }
-                    }),
-                    entry("arc", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawArc(gRect, 260, 285, false, paint);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_CAP_BIT; };
-                    }),
-                    entry("arcFromCenter", new DisplayModifier() {
-                        @Override
-                        public void modifyDrawing(Paint paint, Canvas canvas) {
-                            canvas.drawArc(gRect, 260, 285, true, paint);
-                        }
-                        @Override
-                        protected int mask() { return SWEEP_STROKE_JOIN_BIT; };
-                    })));
-            // WARNING: DON'T PUT MORE MAPS BELOW THIS
-
-    private static Map<String, DisplayModifier> getMapAtIndex(int index) {
-        for (Map<String, DisplayModifier> map : gMaps.values()) {
-            if (index == 0) {
-                return map;
-            }
-            index--;
-        }
-        return null;
-    }
-
-    // indices instead of iterators for easier bidirectional traversal
-    private static final int mIndices[] = new int[gMaps.size()];
-    private static final String[] mLastAppliedModifications = new String[gMaps.size()];
-
-    private static boolean stepInternal(boolean forward) {
-        int modifierMapIndex = gMaps.size() - 1;
-        while (modifierMapIndex >= 0) {
-            Map<String, DisplayModifier> map = getMapAtIndex(modifierMapIndex);
-            mIndices[modifierMapIndex] += (forward ? 1 : -1);
-
-            if (mIndices[modifierMapIndex] >= 0 && mIndices[modifierMapIndex] < map.size()) {
-                break;
-            }
-
-            mIndices[modifierMapIndex] = (forward ? 0 : map.size() - 1);
-            modifierMapIndex--;
-        }
-        return modifierMapIndex < 0; // true if resetting
-    }
-
-    public static boolean step() {
-        boolean ret = false;
-        do {
-            ret |= stepInternal(true);
-        } while (!checkModificationStateMask());
-        return ret;
-    }
-
-    public static boolean stepBack() {
-        boolean ret = false;
-        do {
-            ret |= stepInternal(false);
-        } while (!checkModificationStateMask());
-        return ret;
-    }
-
-    private static boolean checkModificationStateMask() {
-        int operatorMask = 0x0;
-        int mapIndex = 0;
-        for (Map<String, DisplayModifier> map : gMaps.values()) {
-            int displayModifierIndex = mIndices[mapIndex];
-            for (Entry<String, DisplayModifier> modifierEntry : map.entrySet()) {
-                if (displayModifierIndex == 0) {
-                    mLastAppliedModifications[mapIndex] = modifierEntry.getKey();
-                    operatorMask |= modifierEntry.getValue().mask();
-                    break;
-                }
-                displayModifierIndex--;
-            }
-            mapIndex++;
-        }
-        return operatorMask == TOTAL_MASK;
-    }
-
-    public static void apply(Paint paint, Canvas canvas) {
-        int mapIndex = 0;
-        for (Map<String, DisplayModifier> map : gMaps.values()) {
-            int displayModifierIndex = mIndices[mapIndex];
-            for (Entry<String, DisplayModifier> modifierEntry : map.entrySet()) {
-                if (displayModifierIndex == 0) {
-                    mLastAppliedModifications[mapIndex] = modifierEntry.getKey();
-                    modifierEntry.getValue().modifyDrawing(paint, canvas);
-                    break;
-                }
-                displayModifierIndex--;
-            }
-            mapIndex++;
-        }
-    }
-
-    public static String[] getLastAppliedModifications() {
-        return mLastAppliedModifications.clone();
-    }
-
-    public static String[][] getStrings() {
-        String[][] keys = new String[gMaps.size()][];
-
-        int i = 0;
-        for (Map<String, DisplayModifier> map : gMaps.values()) {
-            keys[i] = new String[map.size()];
-            int j = 0;
-            for (String key : map.keySet()) {
-                keys[i][j++] = key;
-            }
-            i++;
-        }
-
-        return keys;
-    }
-
-    public static void setIndex(int mapIndex, int newIndexValue) {
-        mIndices[mapIndex] = newIndexValue;
-    }
-
-    public static int[] getIndices() {
-        return mIndices;
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java
deleted file mode 100644
index d402699..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.RenderScript;
-import android.util.Log;
-
-public class ErrorCalculator {
-    private static final String LOG_TAG = "ErrorCalculator";
-    private static final int REGION_SIZE = 8;
-
-    private static final boolean LOG_TIMING = false;
-    private static final boolean LOG_CALC = false;
-
-    private RenderScript mRS;
-    private Allocation mIdealPixelsAllocation;
-    private Allocation mGivenPixelsAllocation;
-    private Allocation mOutputPixelsAllocation;
-
-    private Allocation mInputRowsAllocation;
-    private Allocation mOutputRegionsAllocation;
-
-    private ScriptC_errorCalculator mScript;
-
-    private int[] mOutputRowRegions;
-
-    public ErrorCalculator(Context c, Resources resources) {
-        int width = resources.getDimensionPixelSize(R.dimen.layer_width);
-        int height = resources.getDimensionPixelSize(R.dimen.layer_height);
-        mOutputRowRegions = new int[height / REGION_SIZE];
-
-        mRS = RenderScript.create(c);
-        int[] rowIndices = new int[height / REGION_SIZE];
-        for (int i = 0; i < rowIndices.length; i++)
-            rowIndices[i] = i * REGION_SIZE;
-
-        mScript = new ScriptC_errorCalculator(mRS);
-        mScript.set_HEIGHT(height);
-        mScript.set_WIDTH(width);
-        mScript.set_REGION_SIZE(REGION_SIZE);
-
-        mInputRowsAllocation = Allocation.createSized(mRS, Element.I32(mRS), rowIndices.length,
-                Allocation.USAGE_SCRIPT);
-        mInputRowsAllocation.copyFrom(rowIndices);
-        mOutputRegionsAllocation = Allocation.createSized(mRS, Element.I32(mRS),
-                mOutputRowRegions.length, Allocation.USAGE_SCRIPT);
-    }
-
-
-    private static long startMillis, middleMillis;
-
-    public float calcErrorRS(Bitmap ideal, Bitmap given) {
-        if (LOG_TIMING) {
-            startMillis = System.currentTimeMillis();
-        }
-
-        mIdealPixelsAllocation = Allocation.createFromBitmap(mRS, ideal,
-                Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
-        mGivenPixelsAllocation = Allocation.createFromBitmap(mRS, given,
-                Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
-
-        mScript.set_ideal(mIdealPixelsAllocation);
-        mScript.set_given(mGivenPixelsAllocation);
-
-        mScript.forEach_countInterestingRegions(mInputRowsAllocation, mOutputRegionsAllocation);
-        mOutputRegionsAllocation.copyTo(mOutputRowRegions);
-
-        int regionCount = 0;
-        for (int region : mOutputRowRegions) {
-            regionCount += region;
-        }
-        int interestingPixels = Math.max(1, regionCount) * REGION_SIZE * REGION_SIZE;
-
-        if (LOG_TIMING) {
-            long startMillis2 = System.currentTimeMillis();
-        }
-
-        mScript.forEach_accumulateError(mInputRowsAllocation, mOutputRegionsAllocation);
-        mOutputRegionsAllocation.copyTo(mOutputRowRegions);
-        float totalError = 0;
-        for (int row : mOutputRowRegions) {
-            totalError += row;
-        }
-        totalError /= 1024.0f;
-
-        if (LOG_TIMING) {
-            long finalMillis = System.currentTimeMillis();
-            Log.d(LOG_TAG, "rs: first part took " + (middleMillis - startMillis) + "ms");
-            Log.d(LOG_TAG, "rs: last part took " + (finalMillis - middleMillis) + "ms");
-        }
-        if (LOG_CALC) {
-            Log.d(LOG_TAG, "rs: error " + totalError + ", pixels " + interestingPixels);
-        }
-        return totalError / interestingPixels;
-    }
-
-    public void calcErrorHeatmapRS(Bitmap ideal, Bitmap given, Bitmap output) {
-        mIdealPixelsAllocation = Allocation.createFromBitmap(mRS, ideal,
-                Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
-        mGivenPixelsAllocation = Allocation.createFromBitmap(mRS, given,
-                Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
-
-        mScript.set_ideal(mIdealPixelsAllocation);
-        mScript.set_given(mGivenPixelsAllocation);
-
-        mOutputPixelsAllocation = Allocation.createFromBitmap(mRS, output,
-                Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
-        mScript.forEach_displayDifference(mOutputPixelsAllocation, mOutputPixelsAllocation);
-        mOutputPixelsAllocation.copyTo(output);
-    }
-
-    public static float calcError(Bitmap ideal, Bitmap given) {
-        if (LOG_TIMING) {
-            startMillis = System.currentTimeMillis();
-        }
-
-        int interestingRegions = 0;
-        for (int x = 0; x < ideal.getWidth(); x += REGION_SIZE) {
-            for (int y = 0; y < ideal.getWidth(); y += REGION_SIZE) {
-                if (inspectRegion(ideal, x, y)) {
-                    interestingRegions++;
-                }
-            }
-        }
-
-        int interestingPixels = Math.max(1, interestingRegions) * REGION_SIZE * REGION_SIZE;
-
-        if (LOG_TIMING) {
-            long startMillis2 = System.currentTimeMillis();
-        }
-
-        float totalError = 0;
-        for (int x = 0; x < ideal.getWidth(); x++) {
-            for (int y = 0; y < ideal.getHeight(); y++) {
-                int idealColor = ideal.getPixel(x, y);
-                int givenColor = given.getPixel(x, y);
-                if (idealColor == givenColor)
-                    continue;
-                totalError += Math.abs(Color.red(idealColor) - Color.red(givenColor));
-                totalError += Math.abs(Color.green(idealColor) - Color.green(givenColor));
-                totalError += Math.abs(Color.blue(idealColor) - Color.blue(givenColor));
-                totalError += Math.abs(Color.alpha(idealColor) - Color.alpha(givenColor));
-            }
-        }
-        totalError /= 1024.0f;
-        if (LOG_TIMING) {
-            long finalMillis = System.currentTimeMillis();
-            Log.d(LOG_TAG, "dvk: first part took " + (middleMillis - startMillis) + "ms");
-            Log.d(LOG_TAG, "dvk: last part took " + (finalMillis - middleMillis) + "ms");
-        }
-        if (LOG_CALC) {
-            Log.d(LOG_TAG, "dvk: error " + totalError + ", pixels " + interestingPixels);
-        }
-        return totalError / interestingPixels;
-    }
-
-    private static boolean inspectRegion(Bitmap ideal, int x, int y) {
-        int regionColor = ideal.getPixel(x, y);
-        for (int i = 0; i < REGION_SIZE; i++) {
-            for (int j = 0; j < REGION_SIZE; j++) {
-                if (ideal.getPixel(x + i, y + j) != regionColor)
-                    return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/MainView.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/MainView.java
deleted file mode 100644
index 454fe7b..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/MainView.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-import android.view.View;
-
-public class MainView extends View {
-    Paint mPaint = new Paint();
-
-    public MainView(Context context) {
-        super(context);
-    }
-
-    public MainView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public MainView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-
-        mPaint.reset();
-        DisplayModifier.apply(mPaint, canvas);
-
-        if (mDrawCallback != null) {
-            mDrawCallback.run();
-        }
-    }
-
-    private Runnable mDrawCallback;
-    public void addDrawCallback(Runnable drawCallback) {
-        mDrawCallback = drawCallback;
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/ManualActivity.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/ManualActivity.java
deleted file mode 100644
index 405ff65..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/ManualActivity.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import com.android.test.hwuicompare.R;
-
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-public class ManualActivity extends CompareActivity {
-    private static final String LOG_TAG = "ManualActivity";
-    private ImageView mCompareImageView;
-    private Bitmap mCompareBitmap;
-    private TextView mErrorTextView;
-    private MainView mSoftwareView;
-
-    private static final int COMPARE_VIEW_UNINITIALIZED = -1;
-    private static final int COMPARE_VIEW_HARDWARE = 0;
-    private static final int COMPARE_VIEW_SOFTWARE = 1;
-    private static final int COMPARE_VIEW_HEATMAP = 2; // TODO: add more like this? any ideas?
-
-    private int mCompareImageViewState = COMPARE_VIEW_UNINITIALIZED;
-    private int mLastCompareImageViewState = COMPARE_VIEW_UNINITIALIZED;
-
-    Runnable mRunnable = new Runnable() {
-        @Override
-        public void run() {
-            Log.d(LOG_TAG, "mRunnable running, mRedrewFlag = " + mRedrewFlag);
-
-            if (mRedrewFlag) {
-                loadBitmaps();
-                // recalculate error
-                float error = mErrorCalculator.calcErrorRS(mSoftwareBitmap, mHardwareBitmap);
-                String modname = "";
-                for (String s : DisplayModifier.getLastAppliedModifications()) {
-                    modname = modname.concat(s + ".");
-                }
-
-                Log.d(LOG_TAG, "error for " + modname + " is " + error);
-                mErrorTextView.setText(String.format("%.4f", error));
-            }
-
-            if (mCompareImageViewState != mLastCompareImageViewState || mRedrewFlag) {
-                switch (mCompareImageViewState) {
-                    case COMPARE_VIEW_UNINITIALIZED:
-                        // set to hardware
-                    case COMPARE_VIEW_HARDWARE:
-                        mCompareImageView.setImageBitmap(mHardwareBitmap);
-                        break;
-                    case COMPARE_VIEW_SOFTWARE:
-                        mCompareImageView.setImageBitmap(mSoftwareBitmap);
-                        break;
-                    case COMPARE_VIEW_HEATMAP:
-                        mErrorCalculator.calcErrorHeatmapRS(mSoftwareBitmap, mHardwareBitmap,
-                                mCompareBitmap);
-                        mCompareImageView.setImageBitmap(mCompareBitmap);
-                        break;
-                }
-                mCompareImageView.getDrawable().setFilterBitmap(false);
-                mCompareImageView.invalidate();
-            }
-
-            mLastCompareImageViewState = mCompareImageViewState;
-            mRedrewFlag = false;
-            mHandler.removeCallbacks(mRunnable);
-        }
-    };
-
-    private void redrawViews() {
-        mHardwareView.invalidate();
-        mSoftwareView.invalidate();
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.manual_layout);
-        onCreateCommon(mRunnable);
-
-        mSoftwareView = (MainView) findViewById(R.id.software_view);
-        mSoftwareView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
-        mSoftwareView.setBackgroundColor(Color.WHITE);
-        mSoftwareView.addDrawCallback(mDrawCallback);
-
-        mCompareImageView = (ImageView) findViewById(R.id.compare_image_view);
-
-        int width = getResources().getDimensionPixelSize(R.dimen.layer_width);
-        int height = getResources().getDimensionPixelSize(R.dimen.layer_height);
-        mCompareBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-
-        mErrorTextView = (TextView) findViewById(R.id.current_error);
-        ((ImageButton) findViewById(R.id.next)).setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                DisplayModifier.step();
-                updateSpinners();
-                redrawViews();
-            }
-        });
-        ((ImageButton) findViewById(R.id.previous)).setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                DisplayModifier.stepBack();
-                updateSpinners();
-                redrawViews();
-            }
-        });
-        ((Button) findViewById(R.id.show_hardware_version))
-                .setOnClickListener(new OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        mCompareImageViewState = COMPARE_VIEW_HARDWARE;
-                        mHandler.post(mRunnable);
-                    }
-                });
-        ((Button) findViewById(R.id.show_software_version))
-                .setOnClickListener(new OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        mCompareImageViewState = COMPARE_VIEW_SOFTWARE;
-                        mHandler.post(mRunnable);
-                    }
-                });
-        ((Button) findViewById(R.id.show_error_heatmap)).setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mCompareImageViewState = COMPARE_VIEW_HEATMAP;
-                mHandler.post(mRunnable);
-            }
-        });
-
-        buildSpinnerLayout();
-    }
-
-    private class DisplayModifierSpinner extends Spinner {
-        private final int mIndex;
-
-        public DisplayModifierSpinner(int index) {
-            super(ManualActivity.this);
-            mIndex = index;
-            setOnItemSelectedListener(new OnItemSelectedListener() {
-
-                @Override
-                public void onItemSelected(AdapterView<?> parentView, View selectedItem,
-                        int position, long id) {
-                    DisplayModifier.setIndex(mIndex, position);
-                    redrawViews();
-                }
-
-                @Override
-                public void onNothingSelected(AdapterView<?> parentView) {
-                }
-            });
-        }
-    }
-
-    private Spinner[] mSpinners;
-
-    private void buildSpinnerLayout() {
-        LinearLayout layout = (LinearLayout) findViewById(R.id.spinner_layout);
-        String[][] mapsStrings = DisplayModifier.getStrings();
-        mSpinners = new Spinner[mapsStrings.length];
-        int index = 0;
-        for (String[] spinnerValues : mapsStrings) {
-            mSpinners[index] = new DisplayModifierSpinner(index);
-            mSpinners[index].setAdapter(new ArrayAdapter<String>(this,
-                    android.R.layout.simple_spinner_dropdown_item, spinnerValues));
-            layout.addView(mSpinners[index]);
-            index++;
-        }
-        Log.d(LOG_TAG, "created " + index + " spinners");
-    }
-
-    private void updateSpinners() {
-        int[] indices = DisplayModifier.getIndices();
-        for (int i = 0; i < mSpinners.length; i++) {
-            mSpinners[i].setSelection(indices[i]);
-        }
-    }
-
-    @Override
-    protected boolean forceRecreateBitmaps() {
-        // continually recreate bitmaps to avoid modifying bitmaps currently being drawn
-        return true;
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java
deleted file mode 100644
index d522481..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.test.hwuicompare;
-
-import com.android.test.hwuicompare.R;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.BitmapShader;
-import android.graphics.Color;
-import android.graphics.ComposeShader;
-import android.graphics.LinearGradient;
-import android.graphics.PorterDuff;
-import android.graphics.RadialGradient;
-import android.graphics.SweepGradient;
-import android.graphics.Matrix;
-import android.graphics.Shader;
-
-public class ResourceModifiers {
-        public final BitmapShader mRepeatShader;
-        public final BitmapShader mTranslatedShader;
-        public final BitmapShader mScaledShader;
-        private final int mTexWidth;
-        private final int mTexHeight;
-        private final float mDrawWidth;
-        private final float mDrawHeight;
-        public final LinearGradient mHorGradient;
-        public final LinearGradient mDiagGradient;
-        public final LinearGradient mVertGradient;
-        public final RadialGradient mRadGradient;
-        public final SweepGradient mSweepGradient;
-        public final ComposeShader mComposeShader;
-        public final ComposeShader mBadComposeShader;
-        public final ComposeShader mAnotherBadComposeShader;
-        public final Bitmap mBitmap;
-        private final Matrix mMtx1;
-        private final Matrix mMtx2;
-        private final Matrix mMtx3;
-
-        public final float[] mBitmapVertices;
-        public final int[] mBitmapColors;
-
-        private static ResourceModifiers sInstance = null;
-        public static ResourceModifiers instance() { return sInstance; }
-        public static void init(Resources resources) {
-            sInstance = new ResourceModifiers(resources);
-        }
-
-        public ResourceModifiers(Resources resources) {
-            mBitmap = BitmapFactory.decodeResource(resources, R.drawable.sunset1);
-            mTexWidth = mBitmap.getWidth();
-            mTexHeight = mBitmap.getHeight();
-
-            mDrawWidth = resources.getDimensionPixelSize(R.dimen.layer_width);
-            mDrawHeight = resources.getDimensionPixelSize(R.dimen.layer_height);
-
-            mRepeatShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT,
-                    Shader.TileMode.REPEAT);
-
-            mTranslatedShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT,
-                    Shader.TileMode.REPEAT);
-            mMtx1 = new Matrix();
-            mMtx1.setTranslate(mTexWidth / 2.0f, mTexHeight / 2.0f);
-            mMtx1.postRotate(45, 0, 0);
-            mTranslatedShader.setLocalMatrix(mMtx1);
-
-            mScaledShader = new BitmapShader(mBitmap, Shader.TileMode.MIRROR,
-                    Shader.TileMode.MIRROR);
-            mMtx2 = new Matrix();
-            mMtx2.setScale(0.5f, 0.5f);
-            mScaledShader.setLocalMatrix(mMtx2);
-
-            mHorGradient = new LinearGradient(0.0f, 0.0f, 1.0f, 0.0f,
-                    Color.RED, Color.GREEN, Shader.TileMode.CLAMP);
-            mMtx3 = new Matrix();
-            mMtx3.setScale(mDrawHeight, 1.0f);
-            mMtx3.postRotate(-90.0f);
-            mMtx3.postTranslate(0.0f, mDrawHeight);
-            mHorGradient.setLocalMatrix(mMtx3);
-
-            mDiagGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth / 2.0f, mDrawHeight / 2.0f,
-                    Color.BLUE, Color.RED, Shader.TileMode.CLAMP);
-
-            mVertGradient = new LinearGradient(0.0f, 0.0f, 0.0f, mDrawHeight / 2.0f,
-                    Color.YELLOW, Color.MAGENTA, Shader.TileMode.MIRROR);
-
-            mSweepGradient = new SweepGradient(mDrawWidth / 2.0f, mDrawHeight / 2.0f,
-                    Color.YELLOW, Color.MAGENTA);
-
-            mComposeShader = new ComposeShader(mRepeatShader, mHorGradient,
-                    PorterDuff.Mode.MULTIPLY);
-
-            final float width = mBitmap.getWidth() / 8.0f;
-            final float height = mBitmap.getHeight() / 8.0f;
-
-            mBitmapVertices = new float[] {
-                0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
-                0.0f, height, width, height, width * 2, height, width * 4, height,
-                0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
-                0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
-            };
-
-            mBitmapColors = new int[] {
-                0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff0000,
-                0xff0000ff, 0xffff0000, 0xff00ff00, 0xff00ff00,
-                0xff00ff00, 0xff0000ff, 0xffff0000, 0xff00ff00,
-                0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ff0000,
-            };
-
-            // Use a repeating gradient with many colors to test the non simple case.
-            mRadGradient = new RadialGradient(mDrawWidth / 4.0f, mDrawHeight / 4.0f, 4.0f,
-                    mBitmapColors, null, Shader.TileMode.REPEAT);
-
-            mBadComposeShader = new ComposeShader(mRadGradient, mComposeShader,
-                    PorterDuff.Mode.MULTIPLY);
-
-            mAnotherBadComposeShader = new ComposeShader(mRadGradient, mVertGradient,
-                    PorterDuff.Mode.MULTIPLY);
-        }
-
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/Test.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/Test.java
deleted file mode 100644
index 1ff153c..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/Test.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.android.test.hwuicompare;
-
-import com.android.test.hwuicompare.AutomaticActivity.FinalCallback;
-
-import android.os.Bundle;
-import android.test.ActivityInstrumentationTestCase2;
-
-public class Test extends ActivityInstrumentationTestCase2<AutomaticActivity> {
-    AutomaticActivity mActivity;
-    private Bundle mBundle;
-
-    public Test() {
-        super(AutomaticActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mBundle = new Bundle();
-        mActivity = getActivity();
-        mActivity.setFinalCallback(new FinalCallback() {
-
-            @Override
-            void report(String key, float value) {
-                mBundle.putFloat(key, value);
-            }
-            @Override
-            void complete() {
-                synchronized(mBundle) {
-                    mBundle.notify();
-                }
-            }
-        });
-    }
-
-    public void testCanvas() {
-        synchronized(mBundle) {
-            try {
-                mBundle.wait();
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-        getInstrumentation().sendStatus(0, mBundle);
-    }
-}
diff --git a/tests/CanvasCompare/src/com/android/test/hwuicompare/errorCalculator.rscript b/tests/CanvasCompare/src/com/android/test/hwuicompare/errorCalculator.rscript
deleted file mode 100644
index 0a1742e..0000000
--- a/tests/CanvasCompare/src/com/android/test/hwuicompare/errorCalculator.rscript
+++ /dev/null
@@ -1,61 +0,0 @@
-#pragma version(1)
-#pragma rs java_package_name(com.android.test.hwuicompare)
-
-int REGION_SIZE;
-int WIDTH;
-int HEIGHT;
-
-rs_allocation ideal;
-rs_allocation given;
-
-void countInterestingRegions(const int32_t *v_in, int32_t *v_out) {
-    int y = v_in[0];
-    v_out[0] = 0;
-
-    for (int x = 0; x < HEIGHT; x += REGION_SIZE) {
-        bool interestingRegion = false;
-        uchar4 regionColor = rsGetElementAt_uchar4(ideal, x, y);
-        for (int i = 0; i < REGION_SIZE && !interestingRegion; i++) {
-            for (int j = 0; j < REGION_SIZE && !interestingRegion; j++) {
-                uchar4 testVal = rsGetElementAt_uchar4(ideal, x + j, y + i);
-                interestingRegion |= (testVal.r != regionColor.r);
-                interestingRegion |= (testVal.g != regionColor.g);
-                interestingRegion |= (testVal.b != regionColor.b);
-                interestingRegion |= (testVal.a != regionColor.a);
-            }
-        }
-        if (interestingRegion) {
-            v_out[0]++;
-        }
-    }
-}
-
-void accumulateError(const int32_t *v_in, int32_t *v_out) {
-    int startY = v_in[0];
-    int error = 0;
-    for (int y = startY; y < startY + REGION_SIZE; y++) {
-        for (int x = 0; x < HEIGHT; x++) {
-            uchar4 idealPixel = rsGetElementAt_uchar4(ideal, x, y);
-            uchar4 givenPixel = rsGetElementAt_uchar4(given, x, y);
-
-            error += abs(idealPixel.x - givenPixel.x);
-            error += abs(idealPixel.y - givenPixel.y);
-            error += abs(idealPixel.z - givenPixel.z);
-            error += abs(idealPixel.w - givenPixel.w);
-        }
-    }
-    v_out[0] = error;
-}
-
-void displayDifference(const uchar4 *v_in, uchar4 *v_out, uint32_t x, uint32_t y) {
-    float4 idealPixel = rsGetElementAt_float4(ideal, x, y);
-    float4 givenPixel = rsGetElementAt_float4(given, x, y);
-
-    float4 diff = idealPixel - givenPixel;
-    float totalDiff = diff.x + diff.y + diff.z + diff.w;
-    if (totalDiff < 0) {
-        v_out[0] = rsPackColorTo8888(0, 0, clamp(-totalDiff/2.f, 0.f, 1.f));
-    } else {
-        v_out[0] = rsPackColorTo8888(clamp(totalDiff/2.f, 0.f, 1.f), 0, 0);
-    }
-}