Merge "Fix blend name change." into klp-dev
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 354775d..b9f7ceb 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -18,7 +18,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.android.cts.verifier"
       android:versionCode="1"
-      android:versionName="1337">
+      android:versionName="4.4_r0">
 
     <!-- Using 10+ for more complete NFC support... -->
     <uses-sdk android:minSdkVersion="12"></uses-sdk>
@@ -412,7 +412,23 @@
         </service>
         
         <service  android:name="nls.NotificationListenerVerifierActivity$DismissService"/>
-        
+        <activity android:name=".security.CAInstallNotificationVerifierActivity"
+                android:label="@string/cacert_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+        </activity>
+        <activity android:name=".security.CANotifyOnBootActivity"
+                android:label="@string/caboot_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+        </activity>
+
         <activity android:name=".p2p.GoNegRequesterTestListActivity"
                 android:label="@string/p2p_go_neg_requester"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
diff --git a/apps/CtsVerifier/assets/myCA.cer b/apps/CtsVerifier/assets/myCA.cer
new file mode 100644
index 0000000..3b98d3e
--- /dev/null
+++ b/apps/CtsVerifier/assets/myCA.cer
Binary files differ
diff --git a/apps/CtsVerifier/res/layout/ca_boot_notify.xml b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
new file mode 100644
index 0000000..29fa549
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2013 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:orientation="vertical" android:layout_width="fill_parent"
+  android:layout_height="fill_parent">
+
+
+  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/check_cert_desc"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_check_cert_installed"/>
+
+    <Button android:id="@+id/check_creds"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_check_creds" />
+
+     <TextView
+        android:id="@+id/need_to_install_cert"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_if_not_installed"/>
+
+    <Button android:id="@+id/install"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_install_cert" />
+
+     <TextView
+        android:id="@+id/reboot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_reboot_desc"/>
+
+    <TextView
+        android:id="@+id/after_reboot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/caboot_after_boot"/>
+  </LinearLayout>
+
+  <include layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_item.xml b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
new file mode 100644
index 0000000..1359cb4
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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="wrap_content" >
+
+    <ImageView
+        android:id="@+id/ca_notify_status"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginTop="10dip"
+        android:contentDescription="@string/pass_button_text"
+        android:padding="10dip"
+        android:src="@drawable/fs_indeterminate" />
+
+    <TextView
+        android:id="@+id/ca_notify_instructions"
+        style="@style/InstructionsSmallFont"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:layout_toRightOf="@id/ca_notify_status" />
+
+    <Button
+        android:id="@+id/ca_notify_do_something"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_below="@id/ca_notify_instructions"
+        android:layout_marginLeft="20dip"
+        android:layout_marginRight="20dip"
+        android:layout_toRightOf="@id/ca_notify_status"
+        android:text="@string/cacert_do_something" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_main.xml b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
new file mode 100644
index 0000000..16882bd
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 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:orientation="vertical"
+    android:padding="10dip" >
+
+    <ScrollView
+        android:id="@+id/ca_notify_test_scroller"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:padding="10dip" >
+
+        <LinearLayout
+            android:id="@+id/ca_notify_test_items"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical" >
+        </LinearLayout>
+    </ScrollView>
+
+    <include
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="0"
+        layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 0f164ef..6df4b42 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -607,6 +607,24 @@
     <string name="nls_service_stopped">Service should stop once disabled.</string>
     <string name="nls_note_missed">Check that notification was not received.</string>
     
+    <string name="cacert_test">CA Cert Notification Test</string>
+    <string name="cacert_info">This test checks that when a CA Certificate is installed, the user is notified.</string>
+    <string name="cacert_do_something">Do it</string>
+    <string name="cacert_done">Done</string>
+    <string name="cacert_install_cert">Use the CertInstaller to install the certificate. When it opens, just tap "Okay". If this button does nothing, pass the test and move on.</string>
+    <string name="cacert_check_cert_in_settings">Visit the user-installed trusted credentials page and confirm that the "Internet Widgits Pty Ltd" cert appears in the list.</string>
+    <string name="cacert_check_notification">Please look at the new notification and confirm: It say the network may be monitored. Tapping it brings up a more detailed explanation and a button to check trusted credentials. Tapping that button brings up the Trusted Credentials page you just visited.</string>
+    <string name="cacert_dismiss_notification">Dismiss the notification. If it cannot be dismissed, fail the test.</string>
+
+    <string name="caboot_test">CA Cert Notification on Boot test</string>
+    <string name="caboot_info">This test is to confirm that when the user has installed a trusted credential, the system notifies the user when it boots.</string>
+    <string name="caboot_check_cert_installed">Please check here to see whether a certificate is already installed. (If this button does nothing, pass the test and move on.)</string>
+    <string name="caboot_check_creds">Check Credentials</string>
+    <string name="caboot_if_not_installed">Only if there is no credential currently installed, install one. (If this button does nothing, pass the test and move on.)</string>
+    <string name="caboot_install_cert">Install credential</string>
+    <string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
+    <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification that the network may be monitored. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
+
     <!-- Strings for Widget -->
     <string name="widget_framework_test">Widget Framework Test</string>
     <string name="widget_framework_test_info">This test checks some basic features of the widget
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
index 8549214..0b74fa3 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
@@ -49,12 +49,12 @@
     static final int RESULT_TIMEOUT = Activity.RESULT_FIRST_USER;
     static final int RESULT_NO_SERVER = Activity.RESULT_FIRST_USER + 1;
 
-    static final String JSON_FLAGS = "flag";
-    static final String JSON_ICON = "icon";
-    static final String JSON_ID = "id";
-    static final String JSON_PACKAGE = "pkg";
-    static final String JSON_WHEN = "when";
-    static final String JSON_TAG = "tag";
+    public static final String JSON_FLAGS = "flag";
+    public static final String JSON_ICON = "icon";
+    public static final String JSON_ID = "id";
+    public static final String JSON_PACKAGE = "pkg";
+    public static final String JSON_WHEN = "when";
+    public static final String JSON_TAG = "tag";
 
     private ArrayList<String> mPosted = new ArrayList<String>();
     private ArrayList<String> mPayloads = new ArrayList<String>();
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
new file mode 100644
index 0000000..3e8110e
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright (C) 2013 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.cts.verifier.security;
+
+import android.app.Service;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class CAInstallNotificationVerifierActivity extends PassFailButtons.Activity
+implements Runnable {
+    static final String TAG = CAInstallNotificationVerifierActivity.class.getSimpleName();
+    private static final String STATE = "state";
+    private static final int PASS = 1;
+    private static final int FAIL = 2;
+    private static final int WAIT_FOR_USER = 3;
+    private static LinkedBlockingQueue<String> sDeletedQueue = new LinkedBlockingQueue<String>();
+
+    private int mState;
+    private int[] mStatus;
+    private LayoutInflater mInflater;
+    private ViewGroup mItemList;
+    private Runnable mRunner;
+    private View mHandler;
+
+    private static final String CERT_ASSET_NAME = "myCA.cer";
+    private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+    protected boolean doneInstallingCert = false;
+    protected boolean doneCheckingInSettings = false;
+    protected boolean doneCheckingNotification = false;
+    protected boolean doneDismissingNotification = false;
+
+
+    public static class DismissService extends Service {
+        @Override
+        public IBinder onBind(Intent intent) {
+            return null;
+        }
+
+        @Override
+        public void onStart(Intent intent, int startId) {
+            sDeletedQueue.offer(intent.getAction());
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (savedInstanceState != null) {
+            mState = savedInstanceState.getInt(STATE, 0);
+        }
+        mRunner = this;
+        mInflater = getLayoutInflater();
+        View view = mInflater.inflate(R.layout.cainstallnotify_main, null);
+        mItemList = (ViewGroup) view.findViewById(R.id.ca_notify_test_items);
+        mHandler = mItemList;
+        createTestItems();
+        mStatus = new int[mItemList.getChildCount()];
+        setContentView(view);
+
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.cacert_test, R.string.cacert_info, -1);
+    }
+
+    @Override
+    protected void onSaveInstanceState (Bundle outState) {
+        outState.putInt(STATE, mState);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        next();
+    }
+
+    // Interface Utilities
+
+    private void createTestItems() {
+        createUserItem(R.string.cacert_install_cert, new InstallCert());
+        createUserItem(R.string.cacert_check_cert_in_settings, new OpenTrustedCredentials());
+        createUserItem(R.string.cacert_check_notification,
+                new DoneCheckingNotification(), R.string.cacert_done);
+        createUserItem(R.string.cacert_dismiss_notification,
+                new DoneCheckingDismissed(), R.string.cacert_done);
+    }
+
+    private void setItemState(int index, boolean passed) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+        status.setImageResource(passed ? R.drawable.fs_good : R.drawable.fs_error);
+        View button = item.findViewById(R.id.ca_notify_do_something);
+        button.setClickable(false);
+        button.setEnabled(false);
+        status.invalidate();
+    }
+
+    private void markItemWaiting(int index) {
+        ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+        ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+        status.setImageResource(R.drawable.fs_warning);
+        status.invalidate();
+    }
+
+    private View createUserItem(int stringId, OnClickListener listener) {
+        return createUserItem(stringId, listener, 0);
+    }
+
+    private View createUserItem(int stringId, OnClickListener listener, int buttonLabel) {
+        View item = mInflater.inflate(R.layout.cainstallnotify_item, mItemList, false);
+        TextView instructions = (TextView) item.findViewById(R.id.ca_notify_instructions);
+        instructions.setText(stringId);
+        Button button = (Button) item.findViewById(R.id.ca_notify_do_something);
+        if (buttonLabel != 0) {
+            button.setText(buttonLabel);
+        }
+        button.setOnClickListener(listener);
+        mItemList.addView(item);
+        return item;
+    }
+
+    // Test management
+
+    public void run() {
+        while (mState < mStatus.length && mStatus[mState] != WAIT_FOR_USER) {
+            if (mStatus[mState] == PASS) {
+                setItemState(mState, true);
+                mState++;
+            } else if (mStatus[mState] == FAIL) {
+                setItemState(mState, false);
+                return;
+            } else {
+                break;
+            }
+        }
+
+        if (mState < mStatus.length && mStatus[mState] == WAIT_FOR_USER) {
+            markItemWaiting(mState);
+        }
+
+        switch (mState) {
+            case 0:
+                testInstalledCert(0);
+                break;
+            case 1:
+                testCheckedSettings(1);
+                break;
+            case 2:
+                testCheckedNotification(2);
+                break;
+            case 3:
+                testNotificationDismissed(3);
+                break;
+        }
+    }
+
+    /**
+     * Return to the state machine to progress through the tests.
+     */
+    private void next() {
+        mHandler.post(mRunner);
+    }
+
+    /**
+     * Wait for things to settle before returning to the state machine.
+     */
+    private void delay() {
+        mHandler.postDelayed(mRunner, 2000);
+    }
+
+    // Listeners
+
+    class InstallCert implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            InputStream is = null;
+            FileOutputStream os = null;
+            try {
+                try {
+                    is = getAssets().open(CERT_ASSET_NAME);
+                    os = new FileOutputStream(certStagingFile);
+                    byte[] buffer = new byte[1024];
+                    int length;
+                    while ((length = is.read(buffer)) > 0) {
+                        os.write(buffer, 0, length);
+                    }
+                } finally {
+                    if (is != null) is.close();
+                    if (os != null) os.close();
+                    certStagingFile.setReadable(true, false);
+                }
+            } catch (IOException ioe) {
+                Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+                return;
+            }
+            try {
+                startActivity(new Intent("android.credentials.INSTALL"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+            doneInstallingCert = true;
+        }
+    }
+
+    class OpenTrustedCredentials implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            try {
+                startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+            doneCheckingInSettings = true;
+        }
+    }
+
+    class DoneCheckingNotification implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            doneCheckingNotification = true;
+        }
+    }
+
+    class DoneCheckingDismissed implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            doneDismissingNotification = true;
+        }
+    }
+
+    // Tests
+
+    private void testInstalledCert(final int i) {
+        if (doneInstallingCert) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testCheckedSettings(final int i) {
+        if (doneCheckingInSettings) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testCheckedNotification(final int i) {
+        if (doneCheckingNotification) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+
+    private void testNotificationDismissed(final int i) {
+        if (doneDismissingNotification) {
+            mStatus[i] = PASS;
+            next();
+        } else {
+            delay();
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
new file mode 100644
index 0000000..5537b15
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
@@ -0,0 +1,88 @@
+package com.android.cts.verifier.security;
+
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CANotifyOnBootActivity extends PassFailButtons.Activity {
+
+    private static final String TAG = CANotifyOnBootActivity.class.getSimpleName();
+    private static final String CERT_ASSET_NAME = "myCA.cer";
+    private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        View view = getLayoutInflater().inflate(R.layout.ca_boot_notify, null);
+        Button checkCredsButton = (Button) view.findViewById(R.id.check_creds);
+        Button installButton = (Button) view.findViewById(R.id.install);
+        checkCredsButton.setOnClickListener(new OpenTrustedCredentials());
+        installButton.setOnClickListener(new InstallCert());
+
+        setContentView(view);
+
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.caboot_test, R.string.caboot_info, -1);
+
+        getPassButton().setEnabled(true);
+    }
+
+    class OpenTrustedCredentials implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            try {
+                startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+        }
+    }
+
+    class InstallCert implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            InputStream is = null;
+            FileOutputStream os = null;
+            try {
+                try {
+                    is = getAssets().open(CERT_ASSET_NAME);
+                    os = new FileOutputStream(certStagingFile);
+                    byte[] buffer = new byte[1024];
+                    int length;
+                    while ((length = is.read(buffer)) > 0) {
+                        os.write(buffer, 0, length);
+                    }
+                } finally {
+                    if (is != null) is.close();
+                    if (os != null) os.close();
+                    certStagingFile.setReadable(true, false);
+                }
+            } catch (IOException ioe) {
+                Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+                return;
+            }
+
+            try {
+                startActivity(new Intent("android.credentials.INSTALL"));
+            } catch (ActivityNotFoundException e) {
+                // do nothing
+            }
+        }
+    }
+
+
+}
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
index 5f534c4..5d3bdb6 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
@@ -86,9 +86,10 @@
     public void testAllPackageDirsWritable() throws Exception {
         final List<File> paths = getAllPackageSpecificPaths(getContext());
         for (File path : paths) {
-            if (path == null) continue;
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
 
-            assertEquals(Environment.MEDIA_MOUNTED, Environment.getStorageState(path));
             assertDirReadWriteAccess(path);
 
             final File directChild = new File(path, "directChild");
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
index 31a3f47..46e1dff 100644
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
@@ -19,27 +19,82 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.UriPermission;
+import android.net.Uri;
 import android.util.Log;
 
+import java.util.List;
+
 public class GrantUriPermission extends BroadcastReceiver {
+    public static final String ACTION_GRANT_URI = "grantUri";
+    public static final String ACTION_REVOKE_URI = "revokeUri";
+    public static final String ACTION_START_ACTIVITY = "startActivity";
+    public static final String ACTION_START_SERVICE = "startService";
+    public static final String ACTION_VERIFY_OUTGOING_PERSISTED = "verifyOutgoingPersisted";
+
+    public static final String EXTRA_PACKAGE_NAME = "packageName";
+    public static final String EXTRA_INTENT = Intent.EXTRA_INTENT;
+    public static final String EXTRA_URI = "uri";
+    public static final String EXTRA_MODE = "mode";
+
+    public static final int SUCCESS = 101;
+    public static final int FAILURE = 100;
+
     @Override
     public void onReceive(Context context, Intent intent) {
-        Intent newIntent = (Intent)intent.getParcelableExtra("intent");
-        boolean service = intent.getBooleanExtra("service", false);
         try {
-            if (!service) {
+            final String action = intent.getAction();
+            if (ACTION_GRANT_URI.equals(action)) {
+                final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+                context.grantUriPermission(intent.getStringExtra(EXTRA_PACKAGE_NAME), uri,
+                        intent.getIntExtra(EXTRA_MODE, 0));
+
+            } else if (ACTION_REVOKE_URI.equals(action)) {
+                final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+                context.revokeUriPermission(uri, intent.getIntExtra(EXTRA_MODE, 0));
+
+            } else if (ACTION_START_ACTIVITY.equals(action)) {
+                final Intent newIntent = intent.getParcelableExtra(EXTRA_INTENT);
                 newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 context.startActivity(newIntent);
-            } else {
+
+            } else if (ACTION_START_SERVICE.equals(action)) {
+                final Intent newIntent = intent.getParcelableExtra(EXTRA_INTENT);
                 context.startService(newIntent);
+
+            } else if (ACTION_VERIFY_OUTGOING_PERSISTED.equals(action)) {
+                verifyOutgoingPersisted(context, intent);
             }
+
             if (isOrderedBroadcast()) {
-                setResultCode(101);
+                setResultCode(SUCCESS);
             }
         } catch (SecurityException e) {
             Log.i("GrantUriPermission", "Security exception", e);
             if (isOrderedBroadcast()) {
-                setResultCode(100);
+                setResultCode(FAILURE);
+            }
+        }
+    }
+
+    private void verifyOutgoingPersisted(Context context, Intent intent) {
+        final Uri uri = intent.getParcelableExtra(EXTRA_URI);
+        final List<UriPermission> perms = context.getContentResolver()
+                .getOutgoingPersistedUriPermissions();
+        if (uri != null) {
+            // Should have a single persisted perm
+            if (perms.size() != 1) {
+                throw new SecurityException("Missing grant");
+            }
+            final UriPermission perm = perms.get(0);
+            if (!perm.getUri().equals(uri)) {
+                throw new SecurityException(
+                        "Expected " + uri + " but found " + perm.getUri());
+            }
+        } else {
+            // Should have zero persisted perms
+            if (perms.size() != 0) {
+                throw new SecurityException("Unexpected grant");
             }
         }
     }
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
index 6e85c73..bbd1e7a 100644
--- a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
@@ -52,7 +52,9 @@
         final String packageName = getContext().getPackageName();
 
         for (File path : paths) {
-            if (path == null) continue;
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
 
             assertTrue(path.getAbsolutePath().contains(packageName));
 
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
index acf9f6f..d836042 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
@@ -18,7 +18,8 @@
 
 LOCAL_MODULE_TAGS := tests
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/GrantUriPermission.java
 
 LOCAL_SDK_VERSION := current
 
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
index 8f40cf1..db26eec 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
@@ -23,13 +23,17 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
+import android.content.UriPermission;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.SystemClock;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+import com.android.cts.permissiondeclareapp.GrantUriPermission;
+
 import java.io.IOException;
+import java.util.List;
 
 /**
  * Tests that signature-enforced permissions cannot be accessed by apps signed
@@ -54,6 +58,14 @@
     private static final String EXPECTED_MIME_TYPE_AMBIGUOUS = "got/theUnspecifiedMIME";
     private static final Uri AMBIGUOUS_URI = Uri.parse("content://ctsambiguousprovider");
 
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        // Always dispose, usually to clean up from failed tests
+        ReceiveUriActivity.finishCurInstanceSync();
+    }
+
     private void assertReadingContentUriNotAllowed(Uri uri, String msg) {
         try {
             getContext().getContentResolver().query(uri, null, null, null, null);
@@ -423,11 +435,11 @@
             synchronized (this) {
                 mHaveResult = true;
                 switch (getResultCode()) {
-                    case 100:
+                    case GrantUriPermission.FAILURE:
                         mGoodResult = true;
                         mSucceeded = false;
                         break;
-                    case 101:
+                    case GrantUriPermission.SUCCESS:
                         mGoodResult = true;
                         mSucceeded = true;
                         break;
@@ -491,8 +503,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         Intent intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         GrantResultReceiver receiver = new GrantResultReceiver();
         getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
         receiver.assertFailure("Able to grant URI permission to " + grantDataUri + " when should not");
@@ -502,8 +515,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         receiver = new GrantResultReceiver();
         getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
         receiver.assertFailure("Able to grant URI permission to " + grantIntent.getClipData()
@@ -578,8 +592,9 @@
                 service ? ReceiveUriService.class : ReceiveUriActivity.class);
         Intent intent = new Intent();
         intent.setComponent(GRANT_URI_PERM_COMP);
-        intent.putExtra("intent", grantIntent);
-        intent.putExtra("service", service);
+        intent.setAction(service ? GrantUriPermission.ACTION_START_SERVICE
+                : GrantUriPermission.ACTION_START_ACTIVITY);
+        intent.putExtra(GrantUriPermission.EXTRA_INTENT, grantIntent);
         getContext().sendBroadcast(intent);
     }
 
@@ -843,7 +858,7 @@
         doTestGrantActivityUriWritePermission(PRIV_URI_GRANTING, false);
     }
 
-    void doTestGrantServiceUriReadPermission(Uri uri, boolean useClip) {
+    private void doTestGrantServiceUriReadPermission(Uri uri, boolean useClip) {
         final Uri subUri = Uri.withAppendedPath(uri, "foo");
         final Uri subSubUri = Uri.withAppendedPath(subUri, "bar");
         final Uri sub2Uri = Uri.withAppendedPath(uri, "yes");
@@ -1207,4 +1222,137 @@
         assertEquals(EXPECTED_MIME_TYPE_AMBIGUOUS,
                 getContext().getContentResolver().getType(AMBIGUOUS_URI_COMPAT));
     }
+
+    /**
+     * Validate behavior of persistable permission grants.
+     */
+    public void testGrantPersistableUriPermission() {
+        final ContentResolver resolver = getContext().getContentResolver();
+
+        final Uri target = Uri.withAppendedPath(PERM_URI_GRANTING, "foo");
+        final ClipData clip = makeSingleClipData(target);
+
+        // Make sure we can't see the target
+        assertReadingClipNotAllowed(clip, "reading should have failed");
+        assertWritingClipNotAllowed(clip, "writing should have failed");
+
+        // Make sure we can't take a grant we don't have
+        try {
+            resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            fail("taking read should have failed");
+        } catch (SecurityException expected) {
+        }
+
+        // And since we were just installed, no persisted grants yet
+        assertNoPersistedUriPermission();
+
+        // Now, let's grant ourselves some access
+        ReceiveUriActivity.clearStarted();
+        grantClipUriPermission(clip, Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, false);
+        ReceiveUriActivity.waitForStart();
+
+        // We should now have reading access, even before taking the persistable
+        // grant. Persisted grants should still be empty.
+        assertReadingClipAllowed(clip);
+        assertWritingClipNotAllowed(clip, "writing should have failed");
+        assertNoPersistedUriPermission();
+
+        // Take the read grant and verify we have it!
+        long before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        long after = System.currentTimeMillis();
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // Make sure we can't take a grant we don't have
+        try {
+            resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+            fail("taking write should have failed");
+        } catch (SecurityException expected) {
+        }
+
+        // Launch again giving ourselves persistable read and write access
+        ReceiveUriActivity.clearNewIntent();
+        grantClipUriPermission(clip, Intent.FLAG_GRANT_READ_URI_PERMISSION
+                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
+                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, false);
+        ReceiveUriActivity.waitForNewIntent();
+
+        // Previous persisted grant should be unchanged
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // We should have both read and write; read is persisted, and write
+        // isn't persisted yet.
+        assertReadingClipAllowed(clip);
+        assertWritingClipAllowed(clip);
+
+        // Take again, but still only read; should just update timestamp
+        before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        after = System.currentTimeMillis();
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION, before, after);
+
+        // And take yet again, both read and write
+        before = System.currentTimeMillis();
+        resolver.takePersistableUriPermission(target,
+                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        after = System.currentTimeMillis();
+        assertPersistedUriPermission(target,
+                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION,
+                before, after);
+
+        // Now drop the persisted grant; write first, then read
+        resolver.releasePersistableUriPermission(target, Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        assertPersistedUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION, before, after);
+        resolver.releasePersistableUriPermission(target, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        assertNoPersistedUriPermission();
+
+        // And even though we dropped the persistable grants, our activity is
+        // still running with the global grants (until reboot).
+        assertReadingClipAllowed(clip);
+        assertWritingClipAllowed(clip);
+
+        ReceiveUriActivity.finishCurInstanceSync();
+    }
+
+    private void assertNoPersistedUriPermission() {
+        assertPersistedUriPermission(null, 0, -1, -1);
+    }
+
+    private void assertPersistedUriPermission(Uri uri, int flags, long before, long after) {
+        // Assert local
+        final List<UriPermission> perms = getContext()
+                .getContentResolver().getPersistedUriPermissions();
+        if (uri != null) {
+            assertEquals("expected exactly one permission", 1, perms.size());
+
+            final UriPermission perm = perms.get(0);
+            assertEquals("unexpected uri", uri, perm.getUri());
+
+            final long actual = perm.getPersistedTime();
+            if (before != -1) {
+                assertTrue("found " + actual + " before " + before, actual >= before);
+            }
+            if (after != -1) {
+                assertTrue("found " + actual + " after " + after, actual <= after);
+            }
+
+            final boolean expectedRead = (flags & Intent.FLAG_GRANT_READ_URI_PERMISSION) != 0;
+            final boolean expectedWrite = (flags & Intent.FLAG_GRANT_WRITE_URI_PERMISSION) != 0;
+            assertEquals("unexpected read status", expectedRead, perm.isReadPermission());
+            assertEquals("unexpected write status", expectedWrite, perm.isWritePermission());
+
+        } else {
+            assertEquals("expected zero permissions", 0, perms.size());
+        }
+
+        // And assert remote
+        Intent intent = new Intent();
+        intent.setComponent(GRANT_URI_PERM_COMP);
+        intent.setAction(GrantUriPermission.ACTION_VERIFY_OUTGOING_PERSISTED);
+        intent.putExtra(GrantUriPermission.EXTRA_URI, uri);
+        GrantResultReceiver receiver = new GrantResultReceiver();
+        getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
+        receiver.assertSuccess("unexpected outgoing persisted Uri status");
+    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
index 851d8da..dd9a5c5 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/ReceiveUriActivity.java
@@ -32,7 +32,7 @@
     private static final Object sLock = new Object();
     private static boolean sStarted;
     private static boolean sNewIntent;
-    private static boolean sDestroyed;
+    private static boolean sDestroyed = true;
     private static ReceiveUriActivity sCurInstance;
 
     private static final long TIMEOUT_MILLIS = 30 * SECOND_IN_MILLIS;
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
index cef2639..6857236 100644
--- a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
@@ -20,7 +20,6 @@
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.TAG;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoWriteAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadOnlyAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
@@ -130,7 +129,10 @@
         final String packageName = getContext().getPackageName();
 
         for (File path : paths) {
-            assertNotNull(path);
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
+
             assertTrue(path.getAbsolutePath().contains(packageName));
 
             // Walk until we leave device, writing the whole way
@@ -205,7 +207,9 @@
         final String packageName = getContext().getPackageName();
 
         for (File path : paths) {
-            if (path == null) continue;
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
 
             assertTrue(path.getAbsolutePath().contains(packageName));
 
@@ -233,7 +237,9 @@
 
         // Require that .nomedia was created somewhere above each dir
         for (File path : paths) {
-            if (path == null) continue;
+            assertNotNull("Valid media must be inserted during CTS", path);
+            assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
+                    Environment.getStorageState(path));
 
             final File start = path;
 
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index d7ef39f..6b0f214 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -6,5 +6,13 @@
 {
   name: "android.holo.cts.HoloTest",
   bug: 8148617
+},
+{
+  name: "android.hardware.camera2.cts.ImageReaderTest",
+  name: "android.hardware.camera2.cts.CameraCharacteristicsTest",
+  name: "android.hardware.camera2.cts.CameraCaptureResultTest",
+  name: "android.hardware.camera2.cts.CameraDeviceTest",
+  name: "android.hardware.camera2.cts.CameraManagerTest",
+  bug: 11141002
 }
 ]
diff --git a/tests/plans/CTS-flaky.xml b/tests/plans/CTS-flaky.xml
index 1c2c30d..4605f20 100644
--- a/tests/plans/CTS-flaky.xml
+++ b/tests/plans/CTS-flaky.xml
@@ -1,8 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <TestPlan version="1.0">
-  <Entry uri="android.app" exclude="android.app.backup.cts.BackupAgentHelperTest#testAndroidtestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testBackupAGentHelper;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.backup"/>
-  <Entry uri="android.hardware"/>
-  <Entry uri="android.media"/>
-  <Entry uri="android.net"/>
-  <Entry uri="android.provider"/>
+  <Entry uri="android.app" exclude="android.app.cts.SystemFeaturesTest#testTelephonyFeatures;android.app.cts.InstrumentationTest#testCallActivityOnResume;android.app.cts.ActivityManagerRecentTaskInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testMisc;android.app.cts.DialogTest#testSetContentView;android.app.cts.ServiceTest#testLocalBindAutoClassPermissionGranted;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamInt;android.app.cts.LocalActivityManagerTest#testConstructor;android.app.cts.ActivityManager_RunningServiceInfoTest#testDescribeContents;android.app.cts.DialogTest#testTakeKeyEvents;android.app.cts.LifecycleTest#testBasic;android.app.cts.NotificationTest#testConstructor;android.app.cts.ActivityManagerMemoryInfoTest#testWriteToParcel;android.app.cts.DialogTest#testConstructor_protectedCancellable;android.app.cts.ProgressDialogTest#testIncrementProgressBy;android.app.cts.ApplicationTest#testApplication;android.app.cts.InstrumentationTest#testSendKeySync;android.app.cts.LocalActivityManagerTest#testDispatchCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPI;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCursor;android.app.cts.InstrumentationTest#testCallActivityOnRestart;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCharSequence;android.app.cts.ActivityManager_RunningServiceInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.ServiceTest#testLocalBindAutoAction;android.app.cts.DialogTest#testSetFeatureDrawableUri;android.app.cts.KeyguardManagerKeyguardLockTest#testDisableKeyguard;android.app.cts.LaunchTest#testClearTopWhilResumed;android.app.cts.WallpaperManagerTest#testSuggestDesiredDimensions;android.app.cts.SystemFeaturesTest#testLiveWallpaperFeature;android.app.cts.InstrumentationTest#testCallActivityOnUserLeaving;android.app.cts.AlertDialog_BuilderTest#testSetCancelable;android.app.cts.AlertDialogTest#testAlertDialogTheme;android.app.cts.PendingIntentTest#testGetBroadcast;android.app.cts.ActivityManager_RunningServiceInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testGetComponentName;android.app.backup.cts.FileBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.SystemFeaturesTest#testTouchScreenFeatures;android.app.cts.AlarmManagerTest#testAlarmTriggersImmediatelyIfSetTimeIsNegative;android.app.cts.ActivityManagerMemoryInfoTest#testReadFromParcel;android.app.cts.NotificationTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetOnCancelListener;android.app.cts.ServiceTest#testLocalBindClass;android.app.cts.ServiceTest#testLocalStartClass;android.app.cts.LauncherActivity_ListItemTest#testConstructor;android.app.cts.InstrumentationTest#testCallActivityOnCreate;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntent;android.app.cts.InstrumentationTest#testSendPointerSync;android.app.cts.DialogTest#testRequestWindowFeature;android.app.cts.LocalActivityManagerTest#testDispatchPauseFalse;android.app.cts.Instrumentation_ActivityResultTest#testActivityResultOp;android.app.cts.ProgressDialogTest#testOnStartCreateStop;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamInt;android.app.cts.KeyguardManagerKeyguardLockTest#testReenableKeyguard;android.app.cts.DialogTest#testShow;android.app.cts.ActivityManagerMemoryInfoTest#testDescribeContents;android.app.cts.SystemFeaturesTest#testFeatureNamespaces;android.app.cts.PendingIntent_CanceledExceptionTest#testConstructor;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamInt;android.app.cts.PendingIntentTest#testSendWithParamInt;android.app.cts.PendingIntentTest#testGetActivity;android.app.cts.AlertDialog_BuilderTest#testSetCursor;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testWriteToParcel;android.app.cts.AlertDialog_BuilderTest#testConstructor;android.app.cts.LocalActivityManagerTest#testDispatchDestroy;android.app.cts.DownloadManagerTest#testDownloadManager;android.app.cts.ServiceTest#testLocalBindAction;android.app.cts.LocalActivityManagerTest#testSaveInstanceState;android.app.cts.LifecycleTest#testTabDialog;android.app.cts.LaunchTest#testLocalActivity;android.app.cts.AlertDialog_BuilderTest#testSetInverseBackgroundForced;android.app.cts.SystemFeaturesTest#testLocationFeatures;android.app.cts.DialogTest#testOnStartCreateStop;android.app.cts.ActivityManagerRecentTaskInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalStartClassPermissions;android.app.cts.ServiceTest#testLocalUnbindTwice;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testConstructor;android.app.cts.DialogTest#testSetFeatureDrawableResource;android.app.cts.ProgressDialogTest#testAccessProgress;android.app.cts.DialogTest#testTrackballEvent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItems;android.app.cts.LaunchTest#testColdActivity;android.app.cts.ActivityManagerTest#testGetMemoryInfo;android.app.cts.PendingIntentTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testOnContentChanged;android.app.cts.SearchManagerTest#testSetOnDismissListener;android.app.cts.InstrumentationTest#testContext;android.app.cts.LauncherActivity_IconResizerTest#testIconResizer;android.app.cts.DialogTest#testCancel_listener;android.app.cts.ActivityManagerTest#testIsUserAMonkey;android.app.cts.NotificationManagerTest#testCancelAll;android.app.cts.ActivityGroupTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testCreate;android.app.cts.SystemFeaturesTest#testUsbAccessory;android.app.cts.ActivityManagerRecentTaskInfoTest#testDescribeContents;android.app.cts.ActivityManagerRunningTaskInfoTest#testDescribeContents;android.app.cts.AlertDialog_BuilderTest#testDisableCancelable;android.app.cts.InstrumentationTest#testSendKeyDownUpSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testConstructor;android.app.cts.TimePickerDialogTest#testUpdateTime;android.app.cts.ActivityManagerRunningTaskInfoTest#testReadFromParcel;android.app.cts.ProgressDialogTest#testSetProgressStyle;android.app.cts.InstrumentationTest#testMonitor;android.app.cts.AliasActivityTest#testAliasActivity;android.app.cts.InstrumentationTest#testSendTrackballEventSync;android.app.cts.LifecycleTest#testScreen;android.app.cts.AlarmManagerTest#testCancel;android.app.cts.ActivityGroupTest#testTabDialog;android.app.cts.PendingIntentTest#testDescribeContents;android.app.cts.DialogTest#testOnSearchRequested;android.app.cts.SearchManagerTest#testSetOnCancelListener;android.app.cts.ProgressDialogTest#testAccessMax;android.app.cts.PendingIntentTest#testGetTargetPackage;android.app.cts.SystemFeaturesTest#testWifiFeature;android.app.cts.ActivityManagerRecentTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testSetFeatureDrawableAlpha;android.app.cts.DialogTest#testSetTitle;android.app.cts.FragmentTest#testInstantiateNonFragment;android.app.cts.DialogTest#testSetDismissMessage;android.app.cts.PendingIntentTest#testWriteToParcel;android.app.cts.ActivityManagerMemoryInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamCharSequence;android.app.cts.NotificationTest#testToString;android.app.cts.LaunchTest#testColdScreen;android.app.cts.AlertDialogTest#testAlertDialog;android.app.cts.SystemFeaturesTest#testSensorFeatures;android.app.cts.ProgressDialogTest#testShow1;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamInt;android.app.cts.ActivityManagerRunningTaskInfoTest#testWriteToParcel;android.app.cts.ProgressDialogTest#testShow2;android.app.cts.ProgressDialogTest#testShow3;android.app.cts.ProgressDialogTest#testShow4;android.app.cts.InstrumentationTest#testCallActivityOnStart;android.app.cts.PendingIntentTest#testCancel;android.app.cts.InstrumentationTest#testConstructor;android.app.cts.ProgressDialogTest#testSetIndeterminate;android.app.cts.AlertDialog_BuilderTest#testShow;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamDrawable;android.app.cts.AlarmManagerTest#testSetTypes;android.app.cts.AlarmManagerTest#testSetInexactRepeating;android.app.cts.PendingIntentTest#testSendWithParamIntOnFinishedHandler;android.app.backup.cts.FileBackupHelperTest#testConstructor;android.app.cts.Instrumentation_ActivityResultTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testDownloadManagerDestinationExtension;android.app.cts.LaunchTest#testClearTopInCreate;android.app.cts.InstrumentationTest#testRunOnMainSync;android.app.cts.DialogTest#testOnKeyDownKeyUp;android.app.cts.ServiceTest#testLocalStartActionPermissions;android.app.cts.KeyguardManagerTest#testInKeyguardRestrictedInputMode;android.app.cts.DialogTest#testConstructor;android.app.cts.AlertDialogTest#testCallback;android.app.cts.ActivityManagerTest#testGetRunningTasks;android.app.cts.ProgressDialogTest#testIncrementSecondaryProgressBy;android.app.cts.DialogTest#testAccessOwnerActivity;android.app.cts.LifecycleTest#testTabScreen;android.app.cts.TimePickerDialogTest#testOnRestoreInstanceState;android.app.cts.ActivityGroupTest#testTabBasic;android.app.cts.ServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntentOnFinishedHandler;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.cts.ActivityManagerRecentTaskInfoTest#testConstructor;android.app.cts.DialogTest#testOnWindowFocusChanged;android.app.cts.DialogTest#testGetCurrentFocus;android.app.cts.TabActivityTest#testChildTitleCallback;android.app.cts.DialogTest#testSetOnDismissListener_listener;android.app.cts.ServiceTest#testLocalStartAction;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamInt;android.app.cts.DialogTest#testGetLayoutInflater;android.app.cts.InstrumentationTest#testInvokeContextMenuAction;android.app.cts.InstrumentationTest#testProfiling;android.app.cts.IntentServiceTest#testIntentServiceLifeCycle;android.app.cts.ProgressDialogTest#testAccessSecondaryProgress;android.app.cts.NotificationManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.cts.ActivityManagerTest#testGetProcessInErrorState;android.app.cts.SearchManagerTest#testStopSearch;android.app.cts.NotificationTest#testSetLatestEventInfo;android.app.cts.DialogTest#testSetCancellable_false;android.app.cts.PendingIntentTest#testSend;android.app.cts.LocalActivityManagerTest#testDispatchResume;android.app.cts.AlertDialog_BuilderTest#testSetViewCustom;android.app.cts.InstrumentationTest#testInvokeMenuActionSync;android.app.cts.DialogTest#testOnSaveInstanceState;android.app.cts.DialogTest#testOnKeyMultiple;android.app.cts.ActivityGroupTest#testTabScreen;android.app.cts.InstrumentationTest#testCallActivityOnSaveInstanceState;android.app.cts.ActivityManagerTest#testGetDeviceConfigurationInfo;android.app.cts.NotificationTest#testWriteToParcel;android.app.cts.InstrumentationTest#testWaitForIdle;android.app.cts.InstrumentationTest#testCallActivityOnStop;android.app.cts.InstrumentationTest#testSendCharacterSync;android.app.cts.TimePickerDialogTest#testOnTimeChanged;android.app.cts.PendingIntentTest#testEquals;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamInt;android.app.cts.DialogTest#testContextMenu;android.app.cts.SystemFeaturesTest#testBluetoothFeature;android.app.cts.ExpandableListActivityTest#testView;android.app.cts.AlarmManagerTest#testSetRepeating;android.app.cts.ActivityManager_RunningServiceInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalBindActionPermissions;android.app.cts.LocalActivityManagerTest#testDispatchStop;android.app.cts.LauncherActivity_ListItemTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewApplication;android.app.cts.LaunchTest#testForwardResult;android.app.cts.ProgressDialogTest#testSetMessage;android.app.cts.ActivityManagerTest#testGetRunningServices;android.app.cts.AlertDialogTest#testCustomAlertDialogView;android.app.backup.cts.SharedPreferencesBackupHelperTest#testConstructor;android.app.cts.LifecycleTest#testTabBasic;android.app.cts.FragmentTest#testInstantiateFragment;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testRunningAppProcessInfo;android.app.cts.AlertDialogTest#testAlertDialogNotCancelable;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamCharSequence;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testDescribeContents;android.app.cts.DialogTest#testConstructor_protectedNotCancellable;android.app.cts.ExpandableListActivityTest#testSelect;android.app.cts.SystemFeaturesTest#testScreenFeatures;android.app.cts.LauncherActivityTest#testLaunchActivity;android.app.cts.LaunchTest#testAndroidTestCaseSetupProperly;android.app.cts.LifecycleTest#testAndroidTestCaseSetupProperly;android.app.cts.NotificationTest#testDescribeContents;android.app.cts.DialogTest#testOnWindowAttributesChanged;android.app.cts.ServiceTest#testLocalBindAutoActionPermissionGranted;android.app.cts.InstrumentationTest#testCallActivityOnPostCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPIWithMessage;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamCharSequence;android.app.cts.AlarmManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetView;android.app.cts.ActivityManager_RunningServiceInfoTest#testConstructor;android.app.cts.InstrumentationTest#testPerformanceSnapshot;android.app.cts.InstrumentationTest#testCallApplicationOnCreate;android.app.cts.DialogTest#testSetFeatureDrawable;android.app.cts.AliasActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testGetService;android.app.cts.IntentServiceTest#testIntents;android.app.cts.AlertDialog_BuilderTest#testSetOnItemSelectedListener;android.app.cts.LifecycleTest#testDialog;android.app.cts.DownloadManagerTest#testDownloadManagerDestination;android.app.cts.WallpaperManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.ExpandableListActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewActivity;android.app.cts.ProgressDialogTest#testSetProgressDrawable;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testAllocCounting;android.app.cts.LocalActivityManagerTest#testRemoveAllActivities;android.app.cts.ServiceTest#testLocalBindAutoClass;android.app.backup.cts.BackupAgentHelperTest#testBackupAgentHelper;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testReadFromParcel;android.app.cts.PendingIntent_CanceledExceptionTest#testAndroidTestCaseSetupProperly;android.app.cts.TimePickerDialogTest#testOnClick;android.app.cts.AlertDialog_BuilderTest#testSetOnKeyListener;android.app.cts.DialogTest#testTouchEvent;android.app.cts.ProgressDialogTest#testProgressDialog1;android.app.cts.InstrumentationTest#testCallActivityOnRestoreInstanceState;android.app.cts.ProgressDialogTest#testProgressDialog2;android.app.cts.InstrumentationTest#testCallActivityOnPause;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCharSequence;android.app.cts.SystemFeaturesTest#testCameraFeatures;android.app.cts.ServiceTest#testLocalBindClassPermissions;android.app.cts.ActivityManagerTest#testGetRecentTasks;android.app.cts.SystemFeaturesTest#testNfcFeatures;android.app.cts.AlertDialogTest#testCustomAlertDialog;android.app.cts.SystemFeaturesTest#testSipFeatures;android.app.cts.InstrumentationTest#testSendStringSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.TabActivityTest#testTabActivity;android.app.cts.KeyguardManagerTest#testNewKeyguardLock;android.app.cts.NotificationManagerTest#testCancel;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCursor;android.app.cts.ActivityManagerMemoryClassTest#testGetMemoryClass;android.app.cts.ActivityManagerTest#testGetRunningAppProcesses;android.app.cts.AlertDialog_BuilderTest#testSetAdapter;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamInt;android.app.cts.DialogTest#testCancel_noListener;android.app.cts.DialogTest#testDispatchKeyEvent;android.app.cts.LaunchTest#testLocalScreen;android.app.cts.ActivityManagerTest#testRestartPackage;android.app.cts.FragmentTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testCallActivityOnNewIntent;android.app.cts.NotificationManagerTest#testNotify;android.app.cts.LocalActivityManagerTest#testDispatchPauseTrue;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.ProgressDialogTest#testSetIndeterminateDrawable;android.app.backup.cts.SharedPreferencesBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testMinimumDownload;android.app.cts.PendingIntentTest#testReadAndWritePendingIntentOrNullToParcel;android.app.cts.DialogTest#testSetOnDismissListener_noListener;android.app.cts.KeyguardManagerTest#testExitKeyguardSecurely;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamCharSequence;android.app.cts.DialogTest#testSetCancelable_true;android.app.cts.Instrumentation_ActivityMonitorTest#testActivityMonitor;android.app.cts.LocalActivityManagerTest#testStartActivity;android.app.cts.IntentServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.ActionBarTest#testAddTab;android.app.cts.DialogTest#testSetCancelMessage;android.app.cts.TimePickerDialogTest#testSaveInstanceState" />
+  <Entry uri="android.hardware" exclude="android.hardware.consumerir.cts.ConsumerIrTest#test_hasIrEmitter;android.hardware.consumerir.cts.ConsumerIrTest#test_getCarrierFrequencies;android.hardware.consumerir.cts.ConsumerIrTest#test_transmit;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCaptureBurst;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingBurst;android.hardware.cts.CameraGLTest#testSetPreviewTextureTextureCallback;android.hardware.cts.CameraTest#test3ALockInteraction;android.hardware.cts.CameraTest#testAutoExposureLock;android.hardware.cts.CameraTest#testAutoWhiteBalanceLock;android.hardware.cts.CameraTest#testCancelAutofocus;android.hardware.cts.CameraTest#testDisplayOrientation;android.hardware.cts.CameraTest#testEnableShutterSound;android.hardware.cts.CameraTest#testFaceDetection;android.hardware.cts.CameraTest#testFocusAreas;android.hardware.cts.CameraTest#testFocusDistances;android.hardware.cts.CameraTest#testGetParameterDuringFocus;android.hardware.cts.CameraTest#testInvalidParameters;android.hardware.cts.CameraTest#testJpegCallbackStartPreview;android.hardware.cts.CameraTest#testJpegExif;android.hardware.cts.CameraTest#testJpegThumbnailSize;android.hardware.cts.CameraTest#testLockUnlock;android.hardware.cts.CameraTest#testMeteringAreas;android.hardware.cts.CameraTest#testMultiCameraRelease;android.hardware.cts.CameraTest#testMultipleCameras;android.hardware.cts.CameraTest#testParameters;android.hardware.cts.CameraTest#testPreviewCallbackWithBuffer;android.hardware.cts.CameraTest#testPreviewCallbackWithPicture;android.hardware.cts.CameraTest#testPreviewFormats;android.hardware.cts.CameraTest#testPreviewFpsRange;android.hardware.cts.CameraTest#testPreviewPictureSizesCombination;android.hardware.cts.CameraTest#testRecordingHint;android.hardware.cts.CameraTest#testSceneMode;android.hardware.cts.CameraTest#testSetOneShotPreviewCallback;android.hardware.cts.CameraTest#testSetPreviewDisplay;android.hardware.cts.CameraTest#testTakePicture;android.hardware.camera2.cts.ImageReaderTest#testImageReaderInvalidAccessTest;android.hardware.cts.SensorAccelerometerTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegSizes;android.hardware.cts.SensorAccelerometerTest#testCanReceiveBatchEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorOrientation;android.hardware.camera2.cts.CameraCharacteristicsTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testUpdateRate;android.hardware.cts.SensorAccelerometerTest#testNotTriggerSensor;android.hardware.cts.SensorAccelerometerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testCanReceiveEvents;android.hardware.cts.SensorMagneticFieldTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoHyperfocalDistance;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCamerasSerially;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCreateCaptureBuilder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedMinDurations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidFlashInfoAvailable;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoShadingMapSize;android.hardware.cts.LowRamDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorTest#testSensorOperations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAwbAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorBaseGainFactor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoPhysicalSize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidInfoSupportedHardwareLevel;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidJpegAvailableThumbnailSizes;android.hardware.cts.SensorGyroscopeTest#testNotTriggerSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensFacing;android.hardware.cts.Camera_ParametersTest#testAccessMethods;android.hardware.cts.SensorMagneticFieldTest#testCanRegisterListener;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableFormats;android.hardware.cts.SensorTest#testBatchAndFlush;android.hardware.cts.SensorGyroscopeTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableEffects;android.hardware.camera2.cts.CameraManagerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorGyroscopeTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableAntibandingModes;android.hardware.cts.GeomagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAfAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorMaxAnalogSensitivity;android.hardware.cts.SensorTest#testRequestTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoMinimumFocusDistance;android.hardware.cts.SensorTest#testValuesForAllSensors;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveBatchEvents;android.hardware.cts.SensorAccelerometerTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlMaxRegions;android.hardware.cts.SensorMagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidRequestMaxNumOutputStreams;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoSensitivityRange;android.hardware.cts.SensorMagneticFieldTest#testNotTriggerSensor;android.hardware.cts.SensorGyroscopeTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerInvalidDevice;android.hardware.cts.LowRamDeviceTest#testLowRamProductProperty;android.hardware.cts.SensorTest#testCancelTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testMaxFrequency;android.hardware.cts.SensorAccelerometerTest#testSeveralClientsBatching;android.hardware.cts.SensorMagneticFieldTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventValidity;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraRaw;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationStep;android.hardware.cts.SensorMagneticFieldTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetCameraCharacteristics;android.hardware.cts.SensorAccelerometerTest#testCanRegisterListener;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraFlexibleYuv;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableVideoStabilizationModes;android.hardware.cts.SensorGyroscopeTest#testStartStopRepeatedly;android.hardware.cts.SensorAccelerometerTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testRegisterForBatchingZeroReport;android.hardware.cts.SensorGyroscopeTest#testCanRegisterListener;android.hardware.cts.SensorGyroscopeTest#testMaxFrequency;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedSizes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableTargetFpsRanges;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidTonemapMaxCurvePoints;android.hardware.cts.SensorGyroscopeTest#testCanReceiveEvents;android.hardware.cts.SensorTest#testRegisterTwiceWithSameSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableOpticalStabilization;android.hardware.camera2.cts.ImageReaderTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testSeveralClients;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCameraTwice;android.hardware.cts.SensorMagneticFieldTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableMaxDigitalZoom;android.hardware.cts.SensorAccelerometerTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoMaxFaceCount;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableSceneModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoActiveArraySize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoMaxFrameDuration;android.hardware.cts.SensorAccelerometerTest#testStartStopBatchingRepeatedly;android.hardware.cts.SensorGyroscopeTest#testEventJittering;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCapture;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoExposureTimeRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFocalLengths;android.hardware.cts.SensorGyroscopeTest#testCanReceiveBatchEvents;android.hardware.cts.SensorTest#testLegacySensorOperations;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerListener;android.hardware.cts.GeomagneticFieldTest#testGeomagneticField;android.hardware.cts.SensorGyroscopeTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFilterDensities;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceSetErrorListener;android.hardware.cts.SensorGyroscopeTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetDeviceIdList;android.hardware.cts.SensorAccelerometerTest#testMaxFrequency;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenAllCameras;android.hardware.cts.SensorAccelerometerTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegMinDurations;android.hardware.cts.SensorTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoAvailableFaceDetectModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableApertures;android.hardware.cts.SensorAccelerometerTest#testEventValidity;android.hardware.cts.SensorAccelerometerTest#testUpdateBatchRate;android.hardware.cts.SensorAccelerometerTest#testVarianceWhileStatic;android.hardware.cts.SensorGyroscopeTest#testUpdateBatchRate;android.hardware.cts.SensorGyroscopeTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testEventValidity;android.hardware.cts.SensorMagneticFieldTest#testUpdateBatchRate;android.hardware.cts.SensorTest#testRegisterWithTriggerSensor;android.hardware.cts.Camera_SizeTest#testConstructor" />
+  <Entry uri="android.media" exclude="android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.AudioPreProcessingTest#test2_1AecCreateAndRelease;android.media.cts.MediaCodecTest#testConcurrentAudioVideoEncodings;android.media.cts.EnvReverbTest#test2_0SetEnabledGetEnabled;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBufferQVGA;android.media.cts.AudioTrackTest#testSetLoopPointsStartTooFar;android.media.cts.RingtoneManagerTest#testStopPreviousRingtone;android.media.cts.EnvReverbTest#test1_3Reflections;android.media.cts.MediaPlayerTest#testGapless3;android.media.cts.MediaPlayerTest#testGapless2;android.media.cts.MediaPlayerTest#testGapless1;android.media.cts.BassBoostTest#testAndroidTestCaseSetupProperly;android.media.cts.EnvReverbTest#test3_1EnableStatusListener;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxQVGA;android.media.cts.MediaRecorderTest#testRecorderCamera;android.media.cts.MediaPlayerTest#testGetTrackInfo;android.media.cts.MediaDrmMockTest#testIsCryptoSchemeNotSupported;android.media.cts.AudioPreProcessingTest#testAndroidTestCaseSetupProperly;android.media.cts.DecodeEditEncodeTest#testVideoEditQCIF;android.media.cts.MediaPlayerTest#testDeselectTrack;android.media.cts.AudioEffectTest#test3_7SetParameterAfterRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Mono_24kbps_22050Hz;android.media.cts.AudioEffectTest#test4_2ControlStatusListener;android.media.cts.StreamingMediaPlayerTest#testHTTP_MPEG4SP_AAC_Video1;android.media.cts.StreamingMediaPlayerTest#testHTTP_MPEG4SP_AAC_Video2;android.media.cts.JetPlayerTest#testLoadJetFromFd;android.media.cts.MediaDrmMockTest#testProvideProvisionResponse;android.media.cts.JetPlayerTest#testQueueJetSegmentMuteArray;android.media.cts.StreamingMediaPlayerTest#testPlayOggStream;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.SoundPoolAacTest#testAndroidTestCaseSetupProperly;android.media.cts.PresetReverbTest#test3_2ParameterChangedListener;android.media.cts.MediaDrmMockTest#testNullPropertyString;android.media.cts.AudioEffectTest#test3_2SetParameterIntShort;android.media.cts.AudioRecord_BufferSizeTest#testGetMinBufferSize;android.media.cts.AudioEffectTest#test3_0SetParameterByteArrayByteArray;android.media.cts.MediaScannerConnectionTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1000kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.AudioTrackTest#testWriteShortSizeTooBig;android.media.cts.AudioTrackTest#testGetMinBufferSizeTooLowSR;android.media.cts.AudioEffectTest#test1_1ConstructorFromUuid;android.media.cts.ToneGeneratorTest#testSyncGenerate;android.media.cts.AudioEffectTest#test1_3GetEnabledAfterRelease;android.media.cts.BassBoostTest#test1_1Properties;android.media.cts.SoundPoolOggTest#testLoadMore;android.media.cts.AudioEffectTest#test1_7AuxiliaryOnAudioTrack;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.MediaCodecListTest#testMediaCodecXmlFileExist;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1000kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.VisualizerTest#test2_1ListenerCapture;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.StreamingMediaPlayerTest#testPlayMp3Stream2;android.media.cts.StreamingMediaPlayerTest#testPlayMp3Stream1;android.media.cts.MediaPlayerTest#testPlayNullSource;android.media.cts.VirtualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testSingleVirtualDisplay;android.media.cts.DecoderTest#testDecodeOgg;android.media.cts.MediaRecorderTest#testOnErrorListener;android.media.cts.EnvReverbTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testSetPlaybackRate;android.media.cts.AudioManagerTest#testVibrateNotification;android.media.cts.AudioManagerTest#testAccessMode;android.media.cts.EqualizerTest#test1_4SetBandLevelAfterRelease;android.media.cts.MediaPlayerTest#testPlayVideo;android.media.cts.MediaCodecTest#testSignalSurfaceEOS;android.media.cts.VisualizerTest#test0_0ConstructorAndRelease;android.media.cts.DecoderTest#testDecodeFlac;android.media.cts.MediaDrmMockTest#testEventWithSessionAndData;android.media.cts.MediaScannerConnectionTest#testMediaScannerConnection;android.media.cts.AudioTrackTest#testConstructorMono8MusicStatic;android.media.cts.AudioManagerTest#testMicrophoneMute;android.media.cts.MediaDrmMockTest#testMissingPropertyString;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.AudioTrackTest#testConstructorStereo16MusicStream;android.media.cts.Vp8EncoderTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testQueryKeyStatus;android.media.cts.BassBoostTest#test3_2ParameterChangedListener;android.media.cts.AudioManagerTest#testVibrateRinger;android.media.cts.AudioManagerTest#testMusicActive;android.media.cts.DecoderTest#testCodecResetsVP8WithoutSurface;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback90;android.media.cts.MediaPlayerFlakyNetworkTest#test_S3P00001;android.media.cts.AudioTrackTest#testGetMinBufferSizeTooHighSR;android.media.cts.CamcorderProfileTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.AudioManagerTest#testVolume;android.media.cts.MediaMuxerTest#testAudioOnly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.AudioEffectTest#test1_6AuxiliaryOnMediaPlayerFailure;android.media.cts.DecoderTest#testCodecResetsMpeg4WithSurface;android.media.cts.AudioEffectTest#test4_1setParameterLowerPriority;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_500kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.DecoderTest#testCodecResetsVP8WithSurface;android.media.cts.CamcorderProfileTest#testGet;android.media.cts.DecoderTest#testDecodeMonoM4a;android.media.cts.MediaRecorderTest#testSetCamera;android.media.cts.AudioTrackTest#testSetGetPlaybackRate;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurfaceQVGA;android.media.cts.EnvReverbTest#testAndroidTestCaseSetupProperly;android.media.cts.DecoderTest#testFlush;android.media.cts.AudioEffectTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Mono_24kbps_11025Hz;android.media.cts.DecoderTest#testDecodeMp3Lame;android.media.cts.EncoderTest#testAMRNBEncoders;android.media.cts.MediaScannerTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaCodecListTest#testRequiredMediaCodecList;android.media.cts.DecoderTest#testCodecResetsMpeg4WithoutSurface;android.media.cts.MediaRecorderTest#testGetAudioSourceMax;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_500kbps_25fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.AudioTrackTest#testSetLoopPointsLoopTooLong;android.media.cts.EqualizerTest#test1_1BandFrequency;android.media.cts.EncoderTest#testAMRWBEncoders;android.media.cts.AudioTrackTest#testWriteShortNegativeSize;android.media.cts.AudioTrackTest#testConstructorStreamType;android.media.cts.MediaPlayerTest#testCallback;android.media.cts.BassBoostTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerFlakyNetworkTest#test_S2P00001;android.media.cts.EncodeVirtualDisplayTest#testEncodeVirtualDisplay;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurfaceQCIF;android.media.cts.DecoderTest#testCodecEarlyEOSVP9;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_30fps_AAC_Stereo_192kbps_44110Hz;android.media.cts.DecoderTest#testCodecEarlyEOSVP8;android.media.cts.MediaPlayerFlakyNetworkTest#test_S5P00001;android.media.cts.MediaRandomTest#testRecorderRandomAction;android.media.cts.MediaDrmMockTest#testBadSession;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.CameraProfileTest#testGetWithId;android.media.cts.EnvReverbTest#test1_0Room;android.media.cts.StreamingMediaPlayerTest#testPlayMp3StreamNoLength;android.media.cts.SoundPoolAacTest#testMultiSound;android.media.cts.AudioTrackTest#testReloadStaticData;android.media.cts.MediaDrmMockTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testPlayAudio;android.media.cts.MediaDrmMockTest#testGetKeyRequestNoOptionalParameters;android.media.cts.MediaRecorderTest#testSetMaxDuration;android.media.cts.AudioPreProcessingTest#test2_2AecSetEnabledGetEnabled;android.media.cts.AsyncPlayerTest#testAsyncPlayer;android.media.cts.DecoderTest#testCodecBasicVP8;android.media.cts.DecoderTest#testCodecBasicVP9;android.media.cts.AudioTrackTest#testSetLoopPointsStream;android.media.cts.AudioTrackTest#testConstructorStereo8MusicStatic;android.media.cts.MediaCodecTest#testDequeueSurface;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBuffer720p;android.media.cts.MediaRecorderTest#testRecorderTimelapsedVideo;android.media.cts.MediaCodecTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionStopped;android.media.cts.AudioTrackTest#testWriteByteSizeTooBig;android.media.cts.MediaMuxerTest#testAndroidTestCaseSetupProperly;android.media.cts.EnvReverbTest#test1_1Decay;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.DecoderTest#testDecodeWav;android.media.cts.DecoderTest#testCodecEarlyEOSH263;android.media.cts.SoundPoolOggTest#testSoundPoolOp;android.media.cts.DecoderTest#testCodecEarlyEOSH264;android.media.cts.MediaPlayerFlakyNetworkTest#test_S6P00002;android.media.cts.EnvReverbTest#test1_2Reverb;android.media.cts.AudioManagerTest#testSoundEffects;android.media.cts.ToneGeneratorTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaCodecTest#testReconfigureWithoutSurface;android.media.cts.RingtoneManagerTest#testConstructors;android.media.cts.MediaCodecListTest#testGetCapabilities;android.media.cts.MediaDrmMockTest#testIsMimeTypeSupported;android.media.cts.DecoderTest#testDecodeMonoMp3;android.media.cts.DecoderTest#testCodecResetsH263WithoutSurface;android.media.cts.MediaScannerNotificationTest#testMediaScannerNotification;android.media.cts.VisualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.VirtualizerTest#test0_0ConstructorAndRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Mono_24kbps_22050Hz;android.media.cts.AudioTrackTest#testWriteShort;android.media.cts.AudioRecordTest#testAndroidTestCaseSetupProperly;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMux720p;android.media.cts.EqualizerTest#test3_0ControlStatusListener;android.media.cts.MediaDrmMockTest#testRestoreKeys;android.media.cts.MediaMuxerTest#testVideoAudio;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Mono_24kbps_11025Hz;android.media.cts.AudioTrackTest#testConstructorStereo8MusicStream;android.media.cts.MediaPlayerTest#testSetNextMediaPlayerWithRelease;android.media.cts.VisualizerTest#test1_0CaptureRates;android.media.cts.CameraProfileTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurfaceQVGA;android.media.cts.VirtualizerTest#test1_1Properties;android.media.cts.AudioManagerTest#testRouting;android.media.cts.EqualizerTest#test3_1EnableStatusListener;android.media.cts.PresetReverbTest#test3_1EnableStatusListener;android.media.cts.EnvReverbTest#test0_0ConstructorAndRelease;android.media.cts.MediaPlayerTest#testChangeSubtitleTrack;android.media.cts.JetPlayerTest#testClone;android.media.cts.AudioEffectTest#test1_5AuxiliaryOnMediaPlayer;android.media.cts.MediaPlayerTest#testSetNextMediaPlayerWithReset;android.media.cts.AudioEffectTest#test2_0SetEnabledGetEnabled;android.media.cts.VisualizerTest#test1_1CaptureSize;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterInit;android.media.cts.EqualizerTest#test1_3Properties;android.media.cts.AudioTrackTest#testWriteByte;android.media.cts.VirtualizerTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testSetStereoVolumeMin;android.media.cts.MediaRecorderTest#testRecorderVideo;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxAudioVideo;android.media.cts.EqualizerTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerTest#testSetNextMediaPlayer;android.media.cts.AudioTrackTest#testSetStereoVolumeMid;android.media.cts.VirtualizerTest#test1_0Strength;android.media.cts.EncodeDecodeTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testAudioTrackProperties;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionPaused;android.media.cts.SoundPoolAacTest#testLoadMore;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxQCIF;android.media.cts.EncodeVirtualDisplayTest#testAndroidTestCaseSetupProperly;android.media.cts.RingtoneManagerTest#testSetType;android.media.cts.MediaDrmMockTest#testMultipleSessions;android.media.cts.MediaPlayerFlakyNetworkTest#test_S0P0;android.media.cts.SoundPoolOggTest#testLoad;android.media.cts.PresetReverbTest#test0_0ConstructorAndRelease;android.media.cts.RingtoneManagerTest#testAccessMethods;android.media.cts.EnvReverbTest#test1_4DiffusionAndDensity;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.MediaDrmMockTest#testGetProvisionRequest;android.media.cts.CamcorderProfileTest#testGetWithId;android.media.cts.AudioEffectTest#test1_2ConstructorUnknownType;android.media.cts.SoundPoolOggTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testWriteByte8bit;android.media.cts.PresetReverbTest#testAndroidTestCaseSetupProperly;android.media.cts.EncoderTest#testAACEncoders;android.media.cts.ExtractDecodeEditEncodeMuxTest#testExtractDecodeEditEncodeMuxAudio;android.media.cts.DecoderTest#testCodecBasicH263;android.media.cts.DecoderTest#testCodecBasicH264;android.media.cts.AudioTrackTest#testSetLoopPointsSuccess;android.media.cts.MediaDrmMockTest#testRemoveKeys;android.media.cts.FaceDetectorTest#testFindFaces;android.media.cts.MediaDrmMockTest#testGetKeyRequest;android.media.cts.MediaCodecListTest#testIsAVCBaselineProfileSupported;android.media.cts.AudioEffectTest#test3_4SetParameterIntArrayIntArray;android.media.cts.MediaCodecListTest#testIsH263BaselineProfileSupported;android.media.cts.EqualizerTest#test0_0ConstructorAndRelease;android.media.cts.EqualizerTest#test3_2ParameterChangedListener;android.media.cts.AudioTrackTest#testSetPlaybackRateZero;android.media.cts.MediaDrmMockTest#testGetSecureStops;android.media.cts.EnvReverbTest#test3_2ParameterChangedListener;android.media.cts.StreamingMediaPlayerTest#testHTTP_H263_AMR_Video2;android.media.cts.MediaDrmMockTest#testGetKeyRequestRelease;android.media.cts.StreamingMediaPlayerTest#testHTTP_H263_AMR_Video1;android.media.cts.EqualizerTest#testAndroidTestCaseSetupProperly;android.media.cts.ExtractDecodeEditEncodeMuxTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testNullSession;android.media.cts.PresetReverbTest#test1_1Properties;android.media.cts.BassBoostTest#test3_1EnableStatusListener;android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallbackWithHandler;android.media.cts.VirtualizerTest#test3_2ParameterChangedListener;android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1350kbps_30fps_AAC_Stereo_128kbps_44110Hz;android.media.cts.BassBoostTest#test1_0Strength;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterFlushAndPlay;android.media.cts.PresetReverbTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testWriteShortNegativeOffset;android.media.cts.DecoderTest#testCodecResetsMp3;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterFlush;android.media.cts.MediaScannerTest#testCanonicalize;android.media.cts.MediaDrmMockTest#testMediaDrmConstructorFails;android.media.cts.PresetReverbTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaDrmMockTest#testCryptoSession;android.media.cts.DecoderTest#testCodecResetsH263WithSurface;android.media.cts.AudioPreProcessingTest#test1_1NsCreateAndRelease;android.media.cts.DecodeEditEncodeTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioEffectTest#test3_6SetParameterIntArrayByteArray;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterStop;android.media.cts.AsyncPlayerTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioPreProcessingTest#test3_2AgcSetEnabledGetEnabled;android.media.cts.MediaDrmMockTest#testGetKeyRequestOffline;android.media.cts.MediaDrmMockTest#testReleaseSecureStops;android.media.cts.MediaPlayerFlakyNetworkTest#test_S4P00001;android.media.cts.MediaDrmMockTest#testNullPropertyByteArray;android.media.cts.EqualizerTest#test1_2Presets;android.media.cts.EnvReverbTest#test1_5Properties;android.media.cts.CameraProfileTest#testGetImageEncodingQualityParameter;android.media.cts.VirtualizerTest#test3_0ControlStatusListener;android.media.cts.AudioTrackTest#testWriteByteNegativeOffset;android.media.cts.StreamingMediaPlayerTest#testPlayMp3StreamRedirect;android.media.cts.DecoderTest#testCodecEarlyEOSMpeg4;android.media.cts.EnvReverbTest#test3_0ControlStatusListener;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurfaceQCIF;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToSurface720p;android.media.cts.MediaDrmMockTest#testCryptoSessionEncrypt;android.media.cts.EqualizerTest#test1_0BandLevel;android.media.cts.EncodeVirtualDisplayWithCompositionTest#testMultipleVirtualDisplays;android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallback;android.media.cts.DecoderTest#testCodecResetsVP9WithoutSurface;android.media.cts.DecoderTest#testCodecResetsH264WithSurface;android.media.cts.DecodeEditEncodeTest#testVideoEdit720p;android.media.cts.AudioEffectTest#test1_0ConstructorFromType;android.media.cts.AudioTrackTest#testPlayStreamData;android.media.cts.MediaDrmMockTest#testCryptoSessionSign;android.media.cts.MediaDrmMockTest#testMediaDrmConstructor;android.media.cts.AudioTrackTest#testSetStereoVolumeMax;android.media.cts.MediaMuxerTest#testIllegalStateExceptions;android.media.cts.MediaCodecTest#testCreateInputSurfaceErrors;android.media.cts.AudioTrackTest#testConstructorMono16MusicStatic;android.media.cts.MediaDrmMockTest#testOpenCloseSession;android.media.cts.AudioManagerTest#testAndroidTestCaseSetupProperly;android.media.cts.DecoderTest#testEOSBehaviorMpeg4;android.media.cts.SoundPoolOggTest#testMultiSound;android.media.cts.AudioTrackTest#testConstructorMono8MusicStream;android.media.cts.MediaCodecListTest#testIsM4VSimpleProfileSupported;android.media.cts.VirtualizerTest#test1_2SetStrengthAfterRelease;android.media.cts.MediaDrmMockTest#testCryptoSessionVerify;android.media.cts.MediaMuxerTest#testVideoOnly;android.media.cts.AudioTrackTest#testWriteShortOffsetTooBig;android.media.cts.AudioManagerTest#testSetInvalidRingerMode;android.media.cts.MediaDrmMockTest#testIsMimeTypeNotSupported;android.media.cts.StreamingMediaPlayerTest#testPlayOggStreamNoLength;android.media.cts.MediaPlayerFlakyNetworkTest#test_S1P000005;android.media.cts.MediaRandomTest#testPlayerRandomAction;android.media.cts.EncoderTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback0;android.media.cts.AudioRecordTest#testAudioRecordProperties;android.media.cts.AudioTrackTest#testWriteByteOffsetTooBig;android.media.cts.PresetReverbTest#test3_0ControlStatusListener;android.media.cts.DecodeEditEncodeTest#testVideoEditQVGA;android.media.cts.MediaDrmMockTest#testMissingPropertyByteArray;android.media.cts.MediaPlayerTest#testRecordAndPlay;android.media.cts.PresentationSyncTest#testThroughput;android.media.cts.MediaPlayerTest#testVideoSurfaceResetting;android.media.cts.AudioTrack_ListenerTest#testAndroidTestCaseSetupProperly;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBufferQCIF;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback180;android.media.cts.MediaRecorderTest#testRecorderAudio;android.media.cts.EqualizerTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioTrackTest#testPlaybackHeadPositionAfterPause;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_128kbps_11025Hz;android.media.cts.MediaRecorderTest#testSetMaxFileSize;android.media.cts.Vp8EncoderTest#testBasic;android.media.cts.AudioTrackTest#testPlaybackHeadPositionIncrease;android.media.cts.AudioTrackTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaDrmMockTest#testEventNoSessionNoData;android.media.cts.MediaDrmMockTest#testByteArrayProperties;android.media.cts.DecoderTest#testCodecResetsM4a;android.media.cts.RingtoneTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioPreProcessingTest#test3_1AgcCreateAndRelease;android.media.cts.AudioTrackTest#testSetPlaybackRateTwiceOutputSR;android.media.cts.PresetReverbTest#test1_0Presets;android.media.cts.StreamingMediaPlayerTest#testPlayOggStreamRedirect;android.media.cts.MediaCodecListTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testSetLoopPointsStartAfterEnd;android.media.cts.MediaRecorderTest#testOnInfoListener;android.media.cts.VirtualizerTest#test3_1EnableStatusListener;android.media.cts.DecoderTest#testCodecResetsH264WithoutSurface;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.MediaPlayerTest#testRecordedVideoPlayback270;android.media.cts.BassBoostTest#test3_0ControlStatusListener;android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromSurfaceToSurface720p;android.media.cts.AudioTrackTest#testSetPlaybackRateUninit;android.media.cts.BassBoostTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioEffectTest#test0_0QueryEffects;android.media.cts.VisualizerTest#test2_0PollingCapture;android.media.cts.MediaDrmMockTest#testStringProperties;android.media.cts.BassBoostTest#test0_0ConstructorAndRelease;android.media.cts.MediaScannerNotificationTest#testAndroidTestCaseSetupProperly;android.media.cts.AudioTrackTest#testConstructorMono16MusicStream;android.media.cts.MediaRecorderTest#testRecordingAudioInRawFormats;android.media.cts.AudioEffectTest#test3_1SetParameterIntInt;android.media.cts.DecoderTest#testEOSBehaviorVP8;android.media.cts.StreamingMediaPlayerTest#testHTTP_H264Base_AAC_Video2;android.media.cts.AudioEffectTest#test1_4InsertOnMediaPlayer;android.media.cts.StreamingMediaPlayerTest#testHTTP_H264Base_AAC_Video1;android.media.cts.DecoderTest#testCodecResetsVP9WithSurface;android.media.cts.JetPlayerTest#testLoadJetFromPath;android.media.cts.DecoderTest#testEOSBehaviorVP9;android.media.cts.MediaDrmMockTest#testProvideKeyResponse;android.media.cts.DecoderTest#testDecodeM4a;android.media.cts.AudioTrackTest#testWriteByteNegativeSize;android.media.cts.AudioEffectTest#test4_0setEnabledLowerPriority;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_12fps_AAC_Mono_24kbps_22050Hz;android.media.cts.DecoderTest#testEOSBehaviorH264;android.media.cts.DecoderTest#testEOSBehaviorH263;android.media.cts.DecoderTest#testDecodeMonoOgg;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_24kbps_22050Hz;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionTooFar;android.media.cts.AudioRecord_BufferSizeTest#testAndroidTestCaseSetupProperly;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_12fps_AAC_Mono_24kbps_11025Hz;android.media.cts.MediaCodecListTest#testComponentInstantiation;android.media.cts.BassBoostTest#test1_2SetStrengthAfterRelease;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Stereo_24kbps_11025Hz;android.media.cts.AudioTrackTest#testSetLoopPointsEndTooFar;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Mono_24kbps_11025Hz;android.media.cts.MediaScannerTest#testMediaScanner;android.media.cts.RingtoneTest#testRingtone;android.media.cts.AudioEffectTest#test5_0Command;android.media.cts.DecoderTest#testDecodeMp3Smpb;android.media.cts.AudioTrackTest#testWriteShort8bit;android.media.cts.AudioEffectTest#test3_3SetParameterIntByteArray;android.media.cts.AudioEffectTest#test4_3EnableStatusListener;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_300kbps_25fps_AAC_Mono_24kbps_22050Hz;android.media.cts.JetPlayerTest#testAndroidTestCaseSetupProperly;android.media.cts.Vp8EncoderTest#testSyncFrame;android.media.cts.VirtualizerTest#test2_0SetEnabledGetEnabled;android.media.cts.MediaPlayerSurfaceTest#testSetSurface;android.media.cts.SoundPoolAacTest#testLoad;android.media.cts.AudioEffectTest#test3_5SetParameterIntArrayShortArray;android.media.cts.MediaDrmMockTest#testBadCryptoSession;android.media.cts.AudioTrackTest#testConstructorStereo16MusicStatic;android.media.cts.AudioPreProcessingTest#test1_2NsSetEnabledGetEnabled;android.media.cts.AudioEffectTest#test2_1SetEnabledAfterRelease;android.media.cts.AudioManagerTest#testAccessRingMode;android.media.cts.SoundPoolAacTest#testSoundPoolOp;android.media.cts.AudioEffectTest#test4_4ParameterChangedListener;android.media.cts.DecoderTest#testCodecBasicMpeg4;android.media.cts.AudioTrackTest#testSetPlaybackHeadPositionPlaying;android.media.cts.AudioRecordTest#testAudioRecordOP;android.media.cts.MediaScannerTest#testWildcardPaths;android.media.cts.AudioEffectTest#test3_8GetParameterAfterRelease;android.media.cts.FaceDetector_FaceTest#testFaceProperties;android.media.cts.MediaPlayerTest#testLocalVideo_3gp_H263_176x144_56kbps_25fps_AAC_Stereo_128kbps_22050Hz;android.media.cts.MediaDrmMockTest#testCryptoSessionDecrypt" />
+  <Entry uri="android.mediastress" exclude="android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay10;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay07;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay10;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay05;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay06;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay03;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay04;android.mediastress.cts.MediaRecorderStressTest#testStressRecorder;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay02;android.mediastress.cts.H263QcifShortPlayerTest#testPlay07;android.mediastress.cts.MediaRecorderStressTest#testStressCamera;android.mediastress.cts.H263QcifShortPlayerTest#testPlay08;android.mediastress.cts.H263QcifShortPlayerTest#testPlay05;android.mediastress.cts.H263QcifShortPlayerTest#testPlay06;android.mediastress.cts.H263QcifShortPlayerTest#testPlay03;android.mediastress.cts.H263QcifShortPlayerTest#testPlay04;android.mediastress.cts.H263QcifShortPlayerTest#testPlay01;android.mediastress.cts.H263QcifShortPlayerTest#testPlay02;android.mediastress.cts.H264R720pAacLongPlayerTest#testPlay01;android.mediastress.cts.H264R720pAacLongPlayerTest#testPlay00;android.mediastress.cts.MediaRecorderStressTest#testStressCameraSwitchRecorder;android.mediastress.cts.H263QcifShortPlayerTest#testPlay09;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay06;android.mediastress.cts.NativeMediaTest#test1080pPlay;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay05;android.mediastress.cts.NativeMediaTest#testDefaultPlay;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay07;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay02;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay03;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay09;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay01;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay06;android.mediastress.cts.H263QcifShortPlayerTest#testPlay00;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay07;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay04;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay00;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay05;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay01;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay08;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay04;android.mediastress.cts.Vp8R480x360ShortPlayerTest#testPlay09;android.mediastress.cts.H264R1080pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay03;android.mediastress.cts.H264R1080pAacRepeatedPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay13;android.mediastress.cts.H263QcifShortPlayerTest#testPlay12;android.mediastress.cts.H263QcifShortPlayerTest#testPlay15;android.mediastress.cts.H263QcifShortPlayerTest#testPlay14;android.mediastress.cts.H263QcifLongPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay17;android.mediastress.cts.H264R480pAacLongPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay16;android.mediastress.cts.H263QcifShortPlayerTest#testPlay19;android.mediastress.cts.H263QcifShortPlayerTest#testPlay18;android.mediastress.cts.H263QcifShortPlayerTest#testPlay10;android.mediastress.cts.H263QcifShortPlayerTest#testPlay11;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay11;android.mediastress.cts.H264R480x360AacShortPlayerTest#testPlay10;android.mediastress.cts.NativeMediaTest#test720pPlay;android.mediastress.cts.H264R1080pAacLongPlayerTest#testPlay00;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay12;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay01;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay00;android.mediastress.cts.H263QcifShortPlayerTest#testPlay23;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay11;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay10;android.mediastress.cts.H263QcifShortPlayerTest#testPlay21;android.mediastress.cts.H263QcifShortPlayerTest#testPlay22;android.mediastress.cts.H263QcifShortPlayerTest#testPlay20;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay02;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay03;android.mediastress.cts.MediaRecorderStressTest#testStressRecordVideoAndPlayback;android.mediastress.cts.H264R720pAacShortPlayerTest#testPlay09;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay04;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay05;android.mediastress.cts.Vp8R480x360LongPlayerTest#testPlay00;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay06;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay07;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay08;android.mediastress.cts.H264R480pAacShortPlayerTest#testPlay09" />
+  <Entry uri="android.net" exclude="android.net.cts.ConnectivityManagerTest#testStartUsingNetworkFeature_enableHipri;android.net.wifi.cts.ScanResultTest#testScanResultProperties;android.net.wifi.cts.WifiManagerTest#testWifiManagerActions;android.net.cts.UriTest#testStringUri;android.net.cts.UrlQuerySanitizer_IllegalCharacterValueSanitizerTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioGroupTest#testAdd;android.net.rtp.cts.AudioGroupTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioGroupTest#testRemove;android.net.cts.LocalSocketTest#testAccessors;android.net.http.cts.SslErrorTest#testConstructorIgnoresInvalidValues;android.net.cts.UriTest#testCompareTo;android.net.http.cts.SslErrorTest#testAddErrorIgnoresInvalidValues;android.net.cts.VpnServiceTest#testProtect_DatagramSocket;android.net.wifi.cts.WifiConfigurationTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testGetCodecs;android.net.http.cts.ApacheHttpClientTest#testExecute_withWifi;android.net.cts.DnsTest#testAndroidTestCaseSetupProperly;android.net.cts.VpnServiceTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.SupplicantStateTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfo_StateTest#testValues;android.net.cts.UriTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketTest#testLocalConnections;android.net.wifi.cts.WifiManager_WifiLockTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiManagerTest#testWifiManagerNetWork;android.net.cts.ConnectivityManagerTest#testGetAllNetworkInfo;android.net.rtp.cts.AudioGroupTest#testTraffic;android.net.cts.Uri_BuilderTest#testBuilderOperations;android.net.cts.UriTest#testBuildUpon;android.net.cts.TrafficStatsTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.ScanResultTest#testAndroidTestCaseSetupProperly;android.net.cts.ProxyTest#testConstructor;android.net.rtp.cts.AudioCodecTest#testGetCodec;android.net.wifi.cts.NsdManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.DhcpInfoTest#testConstructor;android.net.cts.LocalSocketAddress_NamespaceTest#testValues;android.net.cts.ConnectivityManagerTest#testRequestRouteToHost;android.net.cts.ConnectivityManagerTest#testSetNetworkPreference;android.net.http.cts.SslCertificateTest#testState;android.net.cts.NetworkInfo_DetailedStateTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testConstants;android.net.http.cts.SslCertificateTest#testSslCertificate;android.net.cts.ProxyTest#testAccessProperties;android.net.cts.CredentialsTest#testCredentials;android.net.rtp.cts.AudioStreamTest#testDoubleRelease;android.net.cts.TrafficStatsTest#testValidMobileStats;android.net.http.cts.SslErrorTest#testGetUrlWithDeprecatedConstructor;android.net.cts.VpnServiceTest#testProtect_int;android.net.cts.ConnectivityManagerTest#testGetNetworkInfo;android.net.cts.MailToTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalSocketAddress_NamespaceTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfo_DetailedStateTest#testValueOf;android.net.cts.DhcpInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.UriTest#testPathOperations;android.net.rtp.cts.AudioStreamTest#testAndroidTestCaseSetupProperly;android.net.http.cts.SslCertificate_DNameTest#testDName;android.net.wifi.cts.WifiManagerTest#testSignal;android.net.cts.UrlQuerySanitizerTest#testUrlQuerySanitizer;android.net.wifi.cts.WifiManager_WifiLockTest#testWifiLock;android.net.rtp.cts.AudioStreamTest#testSetCodec;android.net.cts.MailToTest#testParseMailToURI;android.net.cts.UriTest#testParcelling;android.net.cts.UrlQuerySanitizerTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiConfigurationTest#testWifiConfiguration;android.net.cts.NetworkInfoTest#testAccessNetworkInfoProperties;android.net.cts.ConnectivityManagerTest#testTest;android.net.http.cts.SslErrorTest#testGetPrimaryError;android.net.cts.NetworkInfo_StateTest#testValueOf;android.net.cts.UriTest#testFromFile;android.net.cts.VpnServiceTest#testTunDevice;android.net.rtp.cts.AudioStreamTest#testSetDtmfType;android.net.cts.SSLCertificateSocketFactoryTest#testAndroidTestCaseSetupProperly;android.net.http.cts.SslCertificateTest#testConstructor;android.net.http.cts.SslErrorTest#testAddError;android.net.cts.UriTest#testNormalizeScheme;android.net.wifi.cts.WifiInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testStartUsingNetworkFeature;android.net.cts.UriTest#testHierarchicalUris;android.net.cts.DhcpInfoTest#testToString;android.net.rtp.cts.AudioStreamTest#testV6Stream;android.net.cts.LocalSocketAddressTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_IllegalCharacterValueSanitizerTest#testSanitize;android.net.rtp.cts.AudioStreamTest#testV4Stream;android.net.wifi.cts.ConcurrencyTest#testConcurrency;android.net.cts.LocalSocketAddress_NamespaceTest#testValueOf;android.net.wifi.cts.WifiManagerTest#testWifiWatchdog;android.net.cts.UriTest#testEqualsAndHashCode;android.net.cts.VpnServiceTest#testPrepare;android.net.cts.UriTest#testOpaqueUri;android.net.cts.UriTest#testQueryParameters;android.net.cts.TrafficStatsTest#testThreadStatsTag;android.net.wifi.cts.SupplicantStateTest#testIsValidState;android.net.http.cts.SslErrorTest#testHasError;android.net.cts.SSLCertificateSocketFactoryTest#testAccessProperties;android.net.cts.VpnServiceTest#testEstablish;android.net.ipv6.cts.PingTest#testAndroidTestCaseSetupProperly;android.net.cts.NetworkInfoTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.UriTest#testEncodeAndDecode;android.net.rtp.cts.AudioGroupTest#testClear;android.net.cts.NetworkInfo_StateTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_ParameterValuePairTest#testAndroidTestCaseSetupProperly;android.net.cts.ProxyTest#testAndroidTestCaseSetupProperly;android.net.cts.LocalServerSocketTest#testLocalServerSocket;android.net.cts.CredentialsTest#testAndroidTestCaseSetupProperly;android.net.rtp.cts.AudioCodecTest#testAndroidTestCaseSetupProperly;android.net.cts.UrlQuerySanitizer_ParameterValuePairTest#testConstructor;android.net.cts.NetworkInfo_DetailedStateTest#testValues;android.net.http.cts.SslErrorTest#testGetPrimaryErrorWithEmptySet;android.net.rtp.cts.AudioGroupTest#testSetMode;android.net.wifi.cts.WifiInfoTest#testWifiInfoProperties;android.net.wifi.cts.ConcurrencyTest#testAndroidTestCaseSetupProperly;android.net.http.cts.ApacheHttpClientTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiManagerTest#testWifiManagerProperties;android.net.rtp.cts.AudioGroupTest#testDoubleClear;android.net.wifi.cts.WifiManagerTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testGetActiveNetworkInfo;android.net.cts.LocalSocketAddressTest#testNewLocalSocketAddressWithDefaultNamespace;android.net.http.cts.SslErrorTest#testGetUrl;android.net.ipv6.cts.PingTest#testLoopbackPing;android.net.cts.TrafficStatsTest#testValidTotalStats;android.net.wifi.cts.WifiEnterpriseConfigTest#testAddEapNetwork;android.net.cts.VpnServiceTest#testProtect_Socket;android.net.wifi.cts.WifiEnterpriseConfigTest#testAndroidTestCaseSetupProperly;android.net.cts.ConnectivityManagerTest#testIsNetworkTypeValid;android.net.cts.ConnectivityManagerTest#testIsNetworkSupported;android.net.cts.LocalServerSocketTest#testAndroidTestCaseSetupProperly;android.net.wifi.cts.WifiEnterpriseConfigTest#testSettersAndGetters;android.net.http.cts.ApacheHttpClientTest#testExecute_withMobile" />
+  <Entry uri="android.provider" exclude="android.provider.cts.ContactsContract_CommonDataKinds_EventTest#testGetTypeLabel;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testStoreAudioGenresMembersInternal;android.provider.cts.ContactsContract_DataTest#testDataInsert_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_EmailTest#testGetTypeLabel;android.provider.cts.Settings_NameValueTableTest#testPutString;android.provider.cts.CalendarTest#testCalendarEntityQuery;android.provider.cts.ContactsContract_DataUsageTest#testSingleDataUsageFeedback_incrementsCorrectDataItems;android.provider.cts.BrowserTest#testSendString;android.provider.cts.MediaStore_Video_MediaTest#testStoreVideoMediaInternal;android.provider.cts.UserDictionary_WordsTest#testAddWord_deprecated;android.provider.cts.MediaStoreIntentsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DeletedContacts#testQuerySinceTimestamp;android.provider.cts.BrowserTest#testRequestAllIcons;android.provider.cts.ContactsContract_CommonDataKinds_EmailTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testReminders;android.provider.cts.MediaStore_Audio_ArtistsTest#testStoreAudioArtistsExternal;android.provider.cts.ContactsContractIntentsTest#testViewContactDir;android.provider.cts.CalendarTest#testBulkUpdate;android.provider.cts.ContactsContract_PhotoTest#testAddPhoto;android.provider.cts.Settings_NameValueTableTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_hasDeleteLogsForContacts;android.provider.cts.ContactsContract_PhotoTest#testAddEmptyPhoto;android.provider.cts.Settings_SecureTest#testGetPutFloat;android.provider.cts.MediaStore_Images_MediaTest#testGetContentUri;android.provider.cts.ContactsContract_DeletedContacts#testDelete_isUnsupported;android.provider.cts.CalendarTest#testCalendarCreationAndDeletion;android.provider.cts.BrowserTest#testBookmarksTable;android.provider.cts.Settings_SecureTest#testGetUriFor;android.provider.cts.ContactsContract_StatusUpdatesTest#testGetPresenceIconresourceId;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testStoreAudioPlaylistsMembersInternal;android.provider.cts.ContactsContract_CommonDataKinds_EventTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PhonesTest#testGetDisplayLabel;android.provider.cts.ContactsContract_DeletedContacts#testInsert_isUnsupported;android.provider.cts.MediaStore_Audio_AlbumsTest#testStoreAudioAlbumsExternal;android.provider.cts.ContactsContract_DeletedContacts#testAndroidTestCaseSetupProperly;android.provider.cts.BrowserTest#testGetAllVisitedUrls;android.provider.cts.Contacts_ContactMethodsTest#testEncodeAndDecodeProtocol;android.provider.cts.ContactsContract_DeletedContacts#testQueryAll;android.provider.cts.MediaStore_Audio_MediaTest#testStoreAudioMediaInternal;android.provider.cts.ContactsContract_RawContactsTest#testRawContactPsuedoDelete_hasDeleteLogForContact;android.provider.cts.MediaStore_FilesTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Images_MediaTest#testStoreImagesMediaInternal;android.provider.cts.MediaStore_Audio_AlbumsTest#testAlbumArt;android.provider.cts.ContactsContract_ContactsTest#testLookupUri;android.provider.cts.MediaStoreIntentsTest#testPickVideoDir;android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithBitmap;android.provider.cts.MediaStoreIntentsTest#testViewAudioFile;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testStoreAudioGenresMembersExternal;android.provider.cts.ContactsContract_CommonDataKinds_StructuredPostalTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testInstanceSearch;android.provider.cts.VoicemailContractTest#testStatusTablePermissions;android.provider.cts.ContactsContract_CommonDataKinds_OrganizationTest#testAndroidTestCaseSetupProperly;android.provider.cts.SettingsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_PlaylistsTest#testStoreAudioPlaylistsInternal;android.provider.cts.ContactsContract_DumpFileProviderTest#testQuery_worksWithValidFileName;android.provider.cts.Settings_SecureTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Video_MediaTest#testAndroidTestCaseSetupProperly;android.provider.cts.BrowserTest#testAccessHistory;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByPhonePrefix_returnsCorrectDataRows;android.provider.cts.MediaStore_Images_ThumbnailsTest#testStoreImagesMediaInternal;android.provider.cts.ContactsTest#testCallsTable;android.provider.cts.CalendarTest#testEventCreationAndDeletion;android.provider.cts.VoicemailContractTest#testVoicemailTablePermissions;android.provider.cts.CalendarTest#testEventsUid2445;android.provider.cts.MediaStore_VideoTest#testQuery;android.provider.cts.CalendarTest#testDefaultProjections;android.provider.cts.MediaStoreIntentsTest#testViewVideoDir;android.provider.cts.MediaStore_FilesTest#testGetContentUri;android.provider.cts.ContactsContract_ContactsTest#testInsert_isUnsupported;android.provider.cts.ContactsContract_CommonDataKinds_PhoneTest#testGetTypeLabel;android.provider.cts.VoicemailContractTest#testVoicemailsTable;android.provider.cts.ContactsContract_CommonDataKinds_RelationTest#testGetTypeLabel;android.provider.cts.Settings_SystemTest#testGetDefaultValues;android.provider.cts.ContactsContract_RawContactsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStoreTest#testGetMediaScannerUri;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_removesRecord;android.provider.cts.Settings_SecureTest#testGetPutString;android.provider.cts.ContactsTest#testGroupMembershipTable;android.provider.cts.MediaStore_Audio_MediaTest#testGetContentUri;android.provider.cts.CalendarTest#testFullRecurrenceUpdate;android.provider.cts.MediaStore_FilesTest#testCaseSensitivity;android.provider.cts.MediaStore_Audio_AlbumsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_ArtistsTest#testStoreAudioArtistsInternal;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_hasDeleteLog;android.provider.cts.ContactsContract_DataUsageTest#testMultiIdDataUsageFeedback_incrementsCorrectDataItems;android.provider.cts.CalendarTest#testSyncOnlyInsertEnforcement;android.provider.cts.VoicemailContractTest#testDataColumnUpdate_throwsIllegalArgumentException;android.provider.cts.CalendarTest#testColorWriteRequirements;android.provider.cts.CalendarTest#testWhenByDayQuery;android.provider.cts.ContactsContract_StreamItemsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_AudioTest#testKeyFor;android.provider.cts.ContactsContract_ContactsTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryInternalThumbnails;android.provider.cts.ContactsContract_DumpFileProviderTest#testOpenFileDescriptor_throwsErrorWithIllegalFileName;android.provider.cts.CalendarTest#testEventColors;android.provider.cts.SettingsTest#testBluetoothDevicesTable;android.provider.cts.ContactsContract_RawContactsTest#testRawContactUpdate_updatesContactUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_RelationTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStoreTest#testGetVersion;android.provider.cts.MediaStore_Audio_GenresTest#testGetContentUri;android.provider.cts.ContactsContract_DataTest#testDataDelete_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsContract_CommonDataKinds_SipAddressTest#testGetTypeLabel;android.provider.cts.BrowserTest#testSaveBookmark;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Video_MediaTest#testGetContentUri;android.provider.cts.CalendarTest#testExtendedProperties;android.provider.cts.Settings_SystemTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testNonAdapterRecurrenceExceptions;android.provider.cts.CalendarTest#testOutOfOrderRecurrenceExceptions;android.provider.cts.CalendarTest#testConversionToRecurring;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testStoreAudioPlaylistsMembersExternal;android.provider.cts.CalendarTest#testMultiRuleRecurrence;android.provider.cts.MediaStoreIntentsTest#testPickAudioDir;android.provider.cts.MediaStore_Audio_GenresTest#testStoreAudioGenresExternal;android.provider.cts.MediaStoreIntentsTest#testViewVideoFile;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemoval_deletesContacts;android.provider.cts.Contacts_ContactMethodsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithGroupRowId;android.provider.cts.TelephonyProviderTest#testOpeningAnyFile;android.provider.cts.MediaStore_Audio_GenresTest#testGetContentUriForAudioId;android.provider.cts.ContactsContract_CommonDataKinds_PhoneTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PeopleTest#testMarkAsContacted;android.provider.cts.MediaStore_FilesTest#testAccess;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testGetTypeLabel;android.provider.cts.SearchRecentSuggestionsTest#testSuggestionsTable;android.provider.cts.CalendarTest#testAttendees;android.provider.cts.SettingsTest#testAccessNonTable;android.provider.cts.MediaStoreIntentsTest#testPickImageDir;android.provider.cts.BrowserTest#testSearchesTable;android.provider.cts.Contacts_SettingsTest#testAccessSetting;android.provider.cts.ContactsContract_StreamItemPhotosTest#testContentPhotoUri;android.provider.cts.ContactsContract_DataTest#testGetLookupUriByDisplayName;android.provider.cts.ContactsContract_StatusUpdatesTest#testInsertStatus;android.provider.cts.MediaStore_Video_ThumbnailsTest#testGetContentUri;android.provider.cts.MediaStore_Audio_GenresTest#testStoreAudioGenresInternal;android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithImagePath;android.provider.cts.CalendarTest#testForwardRecurrenceExceptions;android.provider.cts.Settings_SecureTest#testUnknownSourcesOffByDefault;android.provider.cts.CalendarTest#testBadRequests;android.provider.cts.ContactsTest#testSettingsTable;android.provider.cts.VoicemailContractTest#testInsert_doesNotUpdateDataColumn;android.provider.cts.ContactsContract_RawContactsTest#testRawContactCreate_updatesContactUpdatedTimestamp;android.provider.cts.MediaStoreIntentsTest#testViewImageDir;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_removesContactRecord;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryExternalMiniThumbnails;android.provider.cts.ContactsContract_ContactsTest#testContactUpdate_updatesContactUpdatedTimestamp;android.provider.cts.Settings_SettingNotFoundExceptionTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_RawContactsTest#testGetLookupUriByDisplayName;android.provider.cts.BrowserTest#testAccessSearches;android.provider.cts.ContactsContract_CommonDataKinds_SipAddressTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithUnknownGroupSourceId;android.provider.cts.MediaStore_Audio_MediaTest#testStoreAudioMediaExternal;android.provider.cts.MediaStore_Audio_PlaylistsTest#testGetContentUri;android.provider.cts.ContactsTest#testGroupsTable;android.provider.cts.MediaStore_Audio_AlbumsTest#testGetContentUri;android.provider.cts.Settings_SystemTest#testGetUriFor;android.provider.cts.ContactsContract_StreamItemPhotosTest#testContentDirectoryUri;android.provider.cts.SearchRecentSuggestionsTest#testSearchRecentSuggestions;android.provider.cts.Contacts_ContactMethodsTest#testAddPostalLocation;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testGetContentUri;android.provider.cts.SearchRecentSuggestionsTest#testConstructor;android.provider.cts.ContactsContract_ContactsTest#testMarkAsContacted;android.provider.cts.ContactsTest#testPeopleTable;android.provider.cts.CalendarTest#testCalendarColors;android.provider.cts.CalendarTest#testCalendarIsPrimary;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_hasDeleteLogForContact;android.provider.cts.Settings_SystemTest#testSystemSettings;android.provider.cts.CalendarTest#testRecurrence;android.provider.cts.ContactsContract_GroupMembershipTest#testAddGroupMembershipWithGroupSourceId;android.provider.cts.MediaStore_Audio_Genres_MembersTest#testGetContentUri;android.provider.cts.VoicemailContractTest#testStatusTable;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByFirstName_returnsCorrectDataRows;android.provider.cts.Settings_NameValueTableTest#testGetUriFor;android.provider.cts.ContactsContract_DumpFileProviderTest#testQuery_throwsErrorWithIllegalFileName;android.provider.cts.ContactsTest#testContactMethodsTable;android.provider.cts.ContactsContractIntentsTest#testPickContactDir;android.provider.cts.MediaStore_Audio_AlbumsTest#testStoreAudioAlbumsInternal;android.provider.cts.Contacts_PeopleTest#testAddToGroup;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByEmailPrefix_returnsCorrectDataRows;android.provider.cts.ContactsContract_StatusUpdatesTest#testGetPresencePrecedence;android.provider.cts.BrowserTest#testUpdateVisitedHistory;android.provider.cts.SettingsTest#testSecureTable;android.provider.cts.ContactsContract_StreamItemsTest#testContentUri;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testStoreAudioArtistsAlbumsInternal;android.provider.cts.MediaStore_Video_ThumbnailsTest#testGetThumbnail;android.provider.cts.ContactsContractIntentsTest#testGetContentContactDir;android.provider.cts.SettingsTest#testSystemTable;android.provider.cts.CalendarTest#testEventUpdateAsApp;android.provider.cts.MediaStore_Images_MediaTest#testStoreImagesMediaExternal;android.provider.cts.CalendarTest#testEventsEntityQuery;android.provider.cts.ContactsContractIntentsTest#testAndroidTestCaseSetupProperly;android.provider.cts.CalendarTest#testSyncState;android.provider.cts.MediaStore_Video_ThumbnailsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DataTest#testGetLookupUriBySourceId;android.provider.cts.UserDictionary_WordsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsTest#testExtensionsTable;android.provider.cts.ContactsContract_DataTest#testContactablesUri;android.provider.cts.ContactsContract_CommonDataKinds_ImTest#testGetProtocolLabel;android.provider.cts.Settings_SettingNotFoundExceptionTest#testConstructor;android.provider.cts.CalendarTest#testEventsIsOrganizer;android.provider.cts.ContactsContract_StreamItemsTest#testContentDirectoryUri;android.provider.cts.Contacts_PeopleTest#testAccessPhotoData;android.provider.cts.UserDictionary_WordsTest#testAddWord;android.provider.cts.CalendarTest#testSingleRecurrenceExceptions;android.provider.cts.BrowserTest#testGetAllBookmarks;android.provider.cts.ContactsContract_RawContactsTest#testRawContactDelete_setsDeleteFlag;android.provider.cts.MediaStoreIntentsTest#testViewImageFile;android.provider.cts.Settings_SecureTest#testGetPutLong;android.provider.cts.ContactsContract_DataTest#testContactablesFilterByLastName_returnsCorrectDataRows;android.provider.cts.SearchRecentSuggestionsTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_PhonesTest#testGetDisplayLabelCharSequenceArray;android.provider.cts.SettingsTest#testUserDictionarySettingsExists;android.provider.cts.Contacts_OrganizationsTest#testGetDisplayLabel;android.provider.cts.Settings_SecureTest#testGetDefaultValues;android.provider.cts.ContactsContract_ContactsTest#testContactDelete_marksRawContactsForDeletion;android.provider.cts.ContactsTest#testPhotosTable;android.provider.cts.ContactsContract_ContactsTest#testContentUri;android.provider.cts.MediaStore_Audio_Artists_AlbumsTest#testStoreAudioArtistsAlbumsExternal;android.provider.cts.Contacts_PhonesTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_doesNotDeleteContactAndTimestampUpdated;android.provider.cts.ContactsTest#testOrganizationsTable;android.provider.cts.MediaStore_Audio_Playlists_MembersTest#testGetContentUri;android.provider.cts.MediaStore_Audio_PlaylistsTest#testStoreAudioPlaylistsExternal;android.provider.cts.Contacts_OrganizationsTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsTest#testPhonesTable;android.provider.cts.Settings_SecureTest#testGetPutInt;android.provider.cts.ContactsContract_StatusUpdatesTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_MediaTest#testGetContentUriForPath;android.provider.cts.CalendarTest#testCalendarUpdateAsApp;android.provider.cts.ContactsContract_DeletedContacts#testQueryByContactId;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemoval_hasDeleteLogsForContacts;android.provider.cts.ContactsContract_StreamItemPhotosTest#testAndroidTestCaseSetupProperly;android.provider.cts.MediaStore_Audio_ArtistsTest#testGetContentUri;android.provider.cts.ContactsContract_DumpFileProviderTest#testAndroidTestCaseSetupProperly;android.provider.cts.ContactsContract_DataTest#testDataUpdate_updatesContactLastUpdatedTimestamp;android.provider.cts.ContactsProvider2_AccountRemovalTest#testAccountRemovalWithMergedContact_deletesContacts;android.provider.cts.ContactsContract_RawContactsTest#testGetLookupUriBySourceId;android.provider.cts.MediaStore_Images_ThumbnailsTest#testGetContentUri;android.provider.cts.ContactsContract_DumpFileProviderTest#testOpenFileDescriptor_worksWithValidFileName;android.provider.cts.ContactsContract_CommonDataKinds_StructuredPostalTest#testGetTypeLabel;android.provider.cts.ContactsContract_DataUsageTest#testAndroidTestCaseSetupProperly;android.provider.cts.Contacts_ContactMethodsTest#test;android.provider.cts.MediaStore_Video_MediaTest#testStoreVideoMediaExternal;android.provider.cts.ContactsContract_CommonDataKinds_OrganizationTest#testGetTypeLabel;android.provider.cts.MediaStore_Images_ThumbnailsTest#testStoreImagesMediaExternal;android.provider.cts.ContactsContract_DataTest#testContactablesFilter_doesNotExist_returnsCorrectDataRows;android.provider.cts.ContactsContract_DeletedContacts#testQuery_returnsProperColumns" />
+  <Entry uri="android.security" exclude="android.security.cts.KeystoreExploitTest#testAndroidTestCaseSetupProperly;android.security.cts.CharDeviceTest#testExynosKernelMemoryRead;android.security.cts.VoldExploitTest#testAndroidTestCaseSetupProperly;android.security.cts.LoadEffectLibraryTest#testLoadLibrary;android.security.cts.BrowserTest#testAndroidTestCaseSetupProperly;android.security.cts.LinuxRngTest#testDevUrandomMajorMinor;android.security.cts.ServicePermissionsTest#testDumpProtected;android.security.cts.BannedFilesTest#testNoSetuidTcpdump;android.security.cts.SqliteJournalLeakTest#testShm;android.security.cts.LinuxRngTest#testDevRandomMajorMinor;android.security.cts.ClonedSecureRandomTest#testCheckForDuplicateOutput;android.security.cts.BrowserTest#testBrowserPrivateDataAccess;android.security.cts.BrowserTest#testTabExhaustion;android.security.cts.KeystoreExploitTest#testKeystoreCrash;android.security.cts.SqliteJournalLeakTest#testJournal;android.security.cts.BannedFilesTest#testNoCmdClient;android.security.cts.BannedFilesTest#testNoSetuidIp;android.security.cts.BannedFilesTest#testNoSyncAgent;android.security.cts.ListeningPortsTest#testNoListeningLoopbackTcp6Ports;android.security.cts.KernelSettingsTest#testKptrRestrict;android.security.cts.AslrTest#testVaRandomize;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningUdp6Ports;android.security.cts.KernelSettingsTest#testMmapMinAddr;android.security.cts.CertificateTest#testBlockCertificates;android.security.cts.BrowserTest#testTabReuse;android.security.cts.KernelSettingsTest#testSELinuxEnforcing;android.security.cts.ListeningPortsTest#testNoListeningLoopbackUdp6Ports;android.security.cts.NativeCodeTest#testPerfEvent;android.security.cts.KernelSettingsTest#testSetuidDumpable;android.security.cts.PackageSignatureTest#testAndroidTestCaseSetupProperly;android.security.cts.ServicePermissionsTest#testAndroidTestCaseSetupProperly;android.security.cts.CertificateTest#testCertificates;android.security.cts.KernelSettingsTest#testNoConfigGz;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningUdpPorts;android.security.cts.KernelSettingsTest#testDmesgRestrict;android.security.cts.ListeningPortsTest#testAndroidTestCaseSetupProperly;android.security.cts.SqliteJournalLeakTest#testAndroidTestCaseSetupProperly;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningTcp6Ports;android.security.cts.ListeningPortsTest#testNoListeningLoopbackTcpPorts;android.security.cts.ClonedSecureRandomTest#testAndroidTestCaseSetupProperly;android.security.cts.VoldExploitTest#testTryCommandInjection;android.security.cts.VoldExploitTest#testZergRushCrash;android.security.cts.AslrTest#testOneExecutableIsPie;android.security.cts.VoldExploitTest#testTryToCrashVold;android.security.cts.ListeningPortsTest#testNoListeningLoopbackUdpPorts;android.security.cts.CertificateTest#testAndroidTestCaseSetupProperly;android.security.cts.SqliteJournalLeakTest#testWal;android.security.cts.ListeningPortsTest#testNoRemotelyAccessibleListeningTcpPorts;android.security.cts.CharDeviceTest#testExynosRootingVuln" />
+  <Entry uri="android.webkit" exclude="android.webkit.cts.WebViewTest#testDocumentHasImages;android.webkit.cts.WebViewTest#testScrollBarOverlay;android.webkit.cts.WebViewTest#testGoBackAndForward;android.webkit.cts.WebViewTest#testGetContentHeight;android.webkit.cts.WebChromeClientTest#testOnJsConfirm;android.webkit.cts.WebChromeClientTest#testOnProgressChanged;android.webkit.cts.WebViewTest#testAddJavascriptInterfaceNullObject;android.webkit.cts.WebViewTest#testConstructor;android.webkit.cts.WebViewTest#testInvokeZoomPicker;android.webkit.cts.WebSettingsTest#testAccessMinimumLogicalFontSize;android.webkit.cts.WebViewStartupTest#testCookieManagerBlockingUiThread;android.webkit.cts.WebViewTest#testInternals;android.webkit.cts.WebViewClientTest#testShouldOverrideUrlLoading;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestAcceptOnce;android.webkit.cts.WebSettingsTest#testDatabaseDisabled;android.webkit.cts.WebView_WebViewTransportTest#testAccessWebView;android.webkit.cts.WebSettingsTest#testAccessJavaScriptCanOpenWindowsAutomatically;android.webkit.cts.WebSettingsTest#testAppCacheEnabled;android.webkit.cts.WebSettingsTest#testAccessUserAgentString;android.webkit.cts.WebViewTest#testClearHistory;android.webkit.cts.WebSettingsTest#testAccessSerifFontFamily;android.webkit.cts.WebSettingsTest#testAccessLayoutAlgorithm;android.webkit.cts.WebSettingsTest#testAccessFantasyFontFamily;android.webkit.cts.WebViewTest#testAddJavascriptInterface;android.webkit.cts.WebSettingsTest#testAccessCacheMode;android.webkit.cts.WebViewTest#testDebugDump;android.webkit.cts.WebViewTest#testSslErrorProceedResponseNotReusedForDifferentHost;android.webkit.cts.WebSettingsTest#testLocalImageLoads;android.webkit.cts.WebViewTest#testSslErrorProceedResponseReusedForSameHost;android.webkit.cts.HttpAuthHandlerTest#testUseHttpAuthUsernamePassword;android.webkit.cts.WebViewTest#testSetLayoutParams;android.webkit.cts.WebViewTest#testAppInjectedXRequestedWithHeaderIsNotOverwritten;android.webkit.cts.WebSettingsTest#testAccessUseDoubleTree;android.webkit.cts.WebViewTest#testOnReceivedSslErrorCancel;android.webkit.cts.URLUtilTest#testIsHttpUrl;android.webkit.cts.DateSorterTest#testConstants;android.webkit.cts.WebSettingsTest#testAccessFixedFontFamily;android.webkit.cts.WebSettingsTest#testSetRenderPriority;android.webkit.cts.WebViewTest#testRemoveJavascriptInterface;android.webkit.cts.WebViewTest#testAndroidAssetAnchor;android.webkit.cts.WebViewTest#testOnReceivedSslError;android.webkit.cts.CookieTest#testEmptyValue;android.webkit.cts.WebViewTest#testPauseResumeTimers;android.webkit.cts.URLUtilTest#testIsContentUrl;android.webkit.cts.WebChromeClientTest#testBlockWindowsAsync;android.webkit.cts.WebViewTest#testGetVisibleTitleHeight;android.webkit.cts.WebBackForwardListTest#testClone;android.webkit.cts.WebSettingsTest#testAccessDefaultTextEncodingName;android.webkit.cts.URLUtilTest#testGuessUrl;android.webkit.cts.MimeTypeMapTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebChromeClientTest#testOnReceivedIcon;android.webkit.cts.CookieTest#testAndroidTestCaseSetupProperly;android.webkit.cts.CookieManagerTest#testRemoveCookies;android.webkit.cts.WebSettingsTest#testAccessPluginsPath;android.webkit.cts.WebSettingsTest#testAccessAllowFileAccess;android.webkit.cts.WebSettingsTest#testAccessSupportMultipleWindows;android.webkit.cts.WebViewTest#testAppCanInjectHeadersViaImmutableMap;android.webkit.cts.WebViewTest#testSecureSiteSetsCertificate;android.webkit.cts.WebViewTest#testSetWebViewClient;android.webkit.cts.WebViewTest#testSetScrollBarStyle;android.webkit.cts.CookieTest#testDomain;android.webkit.cts.WebViewTest#testZoom;android.webkit.cts.URLUtilTest#testIsDataUrl;android.webkit.cts.CookieManagerTest#testAcceptCookie;android.webkit.cts.WebChromeClientTest#testOnReceivedTitle;android.webkit.cts.URLUtilTest#testIsFileUrl;android.webkit.cts.WebSettingsTest#testAccessJavaScriptEnabled;android.webkit.cts.URLUtilTest#testIsNetworkUrl;android.webkit.cts.WebViewTest#testFindAddress;android.webkit.cts.WebViewTest#testSetNetworkAvailable;android.webkit.cts.WebViewTest#testClearSslPreferences;android.webkit.cts.URLUtilTest#testIsHttpsUrl;android.webkit.cts.MimeTypeMapTest#testGetFileExtensionFromUrl;android.webkit.cts.WebViewTest#testGetOriginalUrl;android.webkit.cts.WebChromeClientTest#testBlockWindowsSync;android.webkit.cts.WebViewTest#testLoadData;android.webkit.cts.WebViewTest#testInsecureSiteClearsCertificate;android.webkit.cts.WebBackForwardListTest#testGetCurrentItem;android.webkit.cts.URLUtilTest#testStripAnchor;android.webkit.cts.URLUtilTest#testGuessFileName;android.webkit.cts.URLUtilTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebViewTest#testEvaluateJavascript;android.webkit.cts.DateSorterTest#testConstructor;android.webkit.cts.WebViewTest#testPageScroll;android.webkit.cts.WebSettingsTest#testIframesWhenAccessFromFileURLsEnabled;android.webkit.cts.WebViewTest#testFlingScroll;android.webkit.cts.WebSettingsTest#testXHRWhenAccessFromFileURLsEnabled;android.webkit.cts.WebChromeClientTest#testOnJsPrompt;android.webkit.cts.WebSettingsTest#testAccessSupportZoom;android.webkit.cts.WebSettingsTest#testLoadsImagesAutomatically;android.webkit.cts.URLUtilTest#testIsValidUrl;android.webkit.cts.WebViewTest#testRequestFocusNodeHref;android.webkit.cts.WebViewTest#testLoadDataWithBaseUrl;android.webkit.cts.WebChromeClientTest#testOnJsAlert;android.webkit.cts.WebSettingsTest#testAccessSansSerifFontFamily;android.webkit.cts.CookieManagerTest#testCookieManager;android.webkit.cts.WebViewTest#testSetMapTrackballToArrowKeys;android.webkit.cts.WebViewTest#testCreatingWebViewCreatesCookieSyncManager;android.webkit.cts.DateSorterTest#testGetIndex;android.webkit.cts.GeolocationTest#testGeolocationPermissions;android.webkit.cts.WebChromeClientTest#testOnJsBeforeUnload;android.webkit.cts.CookieManagerTest#testClone;android.webkit.cts.CookieManagerTest#testGetInstance;android.webkit.cts.WebViewTest#testGetZoomControls;android.webkit.cts.CookieTest#testSubDomain;android.webkit.cts.WebSettingsTest#testUserAgentString_default;android.webkit.cts.MimeTypeMapTest#testGetMimeTypeFromExtension;android.webkit.cts.WebSettingsTest#testBlockNetworkImage;android.webkit.cts.WebViewTest#testPlatformNotifications;android.webkit.cts.URLUtilTest#testIsAboutUrl;android.webkit.cts.WebViewTest#testSetPictureListener;android.webkit.cts.MimeTypeMapTest#testHasMimeType;android.webkit.cts.WebViewTest#testOnReceivedSslErrorProceed;android.webkit.cts.DateSorterTest#testGetLabel;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestAcceptAlways;android.webkit.cts.URLUtilTest#testDecode;android.webkit.cts.HttpAuthHandlerTest#testProceed;android.webkit.cts.WebSettingsTest#testSetNeedInitialFocus;android.webkit.cts.WebSettingsTest#testIframesWhenAccessFromFileURLsDisabled;android.webkit.cts.WebSettingsTest#testAccessCursiveFontFamily;android.webkit.cts.WebViewTest#testFindAll;android.webkit.cts.WebViewTest#testStopLoading;android.webkit.cts.DateSorterTest#testAndroidTestCaseSetupProperly;android.webkit.cts.WebSettingsTest#testAccessDefaultFixedFontSize;android.webkit.cts.CookieManagerTest#testb3167208;android.webkit.cts.WebSettingsTest#testAccessMinimumFontSize;android.webkit.cts.WebSettingsTest#testAccessUseWideViewPort;android.webkit.cts.WebSettingsTest#testAccessSaveFormData;android.webkit.cts.WebViewTest#testRequestChildRectangleOnScreen;android.webkit.cts.URLUtilTest#testIsJavaScriptUrl;android.webkit.cts.WebViewTest#testFindNext;android.webkit.cts.MimeTypeMapTest#testHasExtension;android.webkit.cts.WebViewTest#testSetDownloadListener;android.webkit.cts.WebSettingsTest#testXHRWhenAccessFromFileURLsDisabled;android.webkit.cts.WebViewTest#testDestroy;android.webkit.cts.MimeTypeMapTest#testGetSingleton;android.webkit.cts.WebViewTest#testAndroidAssetQueryParam;android.webkit.cts.WebViewTest#testAccessPluginList;android.webkit.cts.CookieTest#testPath;android.webkit.cts.WebViewTest#testAccessHttpAuthUsernamePassword;android.webkit.cts.WebViewTest#testUseRemovedJavascriptInterface;android.webkit.cts.WebSettingsTest#testAccessTextSize;android.webkit.cts.URLUtilTest#testIsAssetUrl;android.webkit.cts.CookieTest#testInvalidDomain;android.webkit.cts.CookieSyncManagerTest#testCookieSyncManager;android.webkit.cts.URLUtilTest#testComposeSearchUrl;android.webkit.cts.WebChromeClientTest#testWindows;android.webkit.cts.WebViewTest#testRequestImageRef;android.webkit.cts.WebSettingsTest#testAccessDefaultFontSize;android.webkit.cts.WebViewClientTest#testShouldOverrideKeyEvent;android.webkit.cts.WebHistoryItemTest#testWebHistoryItem;android.webkit.cts.WebSettingsTest#testAccessBuiltInZoomControls;android.webkit.cts.WebSettingsTest#testAppCacheDisabled;android.webkit.cts.WebViewTest#testSetWebChromeClient;android.webkit.cts.WebViewTest#testGetHitTestResult;android.webkit.cts.WebSettingsTest#testAccessStandardFontFamily;android.webkit.cts.GeolocationTest#testSimpleGeolocationRequestReject;android.webkit.cts.WebSettingsTest#testBlockNetworkLoads;android.webkit.cts.DateSorterTest#testGetBoundary;android.webkit.cts.WebViewTest#testCapturePicture;android.webkit.cts.WebSettingsTest#testAccessPluginsEnabled;android.webkit.cts.WebViewTest#testSaveAndRestoreState;android.webkit.cts.WebViewTest#testLoadUrl;android.webkit.cts.HttpAuthHandlerTest#testCancel;android.webkit.cts.URLUtilTest#testIsCookielessProxyUrl;android.webkit.cts.WebViewTest#testGetFavicon;android.webkit.cts.MimeTypeMapTest#testGetExtensionFromMimeType" />
+  <Entry uri="android.widget" exclude="android.widget.cts.ImageSwitcherTest#testSetImageDrawable;android.widget.cts.ExpandableListViewTest#testOnSaveInstanceState;android.widget.cts.RemoteViewsTest#testSetFloat;android.widget.cts.ToggleButtonTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testOnGroupCollapsed;android.widget.cts.ListViewTest#testDispatchDraw;android.widget.cts.HorizontalScrollViewTest#testRequestLayout;android.widget.cts.TextViewTest#testDrawableResolution;android.widget.cts.CursorTreeAdapterTest#testGetGroup;android.widget.cts.RemoteViewsTest#testSetBoolean;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildrenCount;android.widget.cts.TimePickerTest#testSetEnabled;android.widget.cts.RemoteViewsTest#testSetChronometer;android.widget.cts.BaseExpandableListAdapterTest#testNotifyDataSetChanged;android.widget.cts.TextViewTest#testConstructor;android.widget.cts.FrameLayoutTest#testGenerateLayoutParams2;android.widget.cts.FrameLayoutTest#testGenerateLayoutParams1;android.widget.cts.DialerFilterTest#testClearText;android.widget.cts.ListViewTest#testFindViewWithTagTraversal;android.widget.cts.TextViewTest#testGetResolvedTextAlignmentWithInheritance;android.widget.cts.SimpleAdapterTest#testSetDropDownViewResource;android.widget.cts.GalleryTest#testShowContextMenu;android.widget.cts.ExpandableListViewTest#testSetChildIndicator;android.widget.cts.GalleryTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testGetGroupCount;android.widget.cts.TextViewTest#testDebug;android.widget.cts.ExpandableListViewTest#testSetIndicatorBounds;android.widget.cts.AutoCompleteTextViewTest#testOnKeyPreIme;android.widget.cts.TextViewTest#testOnTrackballEvent;android.widget.cts.ExpandableListViewTest#testAndroidTestCaseSetupProperly;android.widget.cts.PopupWindowTest#testAccessBackground;android.widget.cts.PopupWindowTest#testGetMaxAvailableHeight;android.widget.cts.TextViewTest#testGetTotalPaddingLeft;android.widget.cts.AutoCompleteTextViewTest#testAccessAdapter;android.widget.cts.AutoCompleteTextViewTest#testPerformCompletion;android.widget.cts.ZoomButtonTest#testDispatchUnhandledMove;android.widget.cts.AbsSpinnerTest#testOnMeasure;android.widget.cts.TextViewTest#testOnWindowFocusChanged;android.widget.cts.PopupWindowTest#testUpdateDimensionAndAlignAnchorViewWithOffsets;android.widget.cts.GridLayoutTest#testCheckLayoutParams;android.widget.cts.TabHostTest#testNewTabSpec;android.widget.cts.ViewAnimatorTest#testGetCurrentView;android.widget.cts.ListViewTest#testDispatchKeyEvent;android.widget.cts.TextViewTest#testSetMinEms;android.widget.cts.FrameLayoutTest#testGatherTransparentRegion;android.widget.cts.AbsListViewTest#testDraw;android.widget.cts.ZoomControlsTest#testHasFocus;android.widget.cts.RemoteViews_ActionExceptionTest#testConstructor;android.widget.cts.ViewFlipperTest#testActivityTestCaseSetUpProperly;android.widget.cts.RemoteViewsTest#testSetString;android.widget.cts.SimpleExpandableListAdapterTest#testConstructor;android.widget.cts.GalleryTest#testComputeHorizontalScrollExtent;android.widget.cts.DialerFilterTest#testGetFilterText;android.widget.cts.RadioGroupTest#testGenerateDefaultLayoutParams;android.widget.cts.DialerFilterTest#testSetFilterWatcher;android.widget.cts.CheckBoxTest#testConstructor;android.widget.cts.ProgressBarTest#testDrawableStateChanged;android.widget.cts.MultiAutoCompleteTextViewTest#testPerformFiltering;android.widget.cts.TextViewTest#testOnKeyMultiple;android.widget.cts.ProgressBarTest#testPostInvalidate;android.widget.cts.SlidingDrawerTest#testOpenAndClose;android.widget.cts.AutoCompleteTextViewTest#testConstructor;android.widget.cts.TextViewTest#testSetLineSpacing;android.widget.cts.ListViewTest#testFindViewTraversal;android.widget.cts.RadioGroupTest#testGetCheckedRadioButtonId;android.widget.cts.TabHostTest#testSetup2;android.widget.cts.TableLayout_LayoutParamsTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testRequestChildFocus;android.widget.cts.TabWidgetTest#testDispatchDraw;android.widget.cts.PopupWindowTest#testUpdate;android.widget.cts.BaseAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.ProgressBarTest#testOnSaveAndRestoreInstanceState;android.widget.cts.TabHostTest#testSetup1;android.widget.cts.TextViewTest#testOnMeasure;android.widget.cts.CompoundButtonTest#testAccessInstanceState;android.widget.cts.TabWidgetTest#testOnFocusChange;android.widget.cts.DialerFilterTest#testOnFinishInflate;android.widget.cts.ImageViewTest#testSetSelected;android.widget.cts.TextViewTest#testDrawableResolution2;android.widget.cts.ExpandableListViewWithHeadersTest#testPreconditions;android.widget.cts.AbsListViewTest#testSetFilterText;android.widget.cts.ExpandableListViewTest#testGetAdapter;android.widget.cts.TextViewTest#testSingleLine;android.widget.cts.HorizontalScrollViewTest#testComputeScroll;android.widget.cts.CursorAdapterTest#testRunQueryOnBackgroundThread;android.widget.cts.ToastTest#testMakeText2;android.widget.cts.CursorAdapterTest#testGetView;android.widget.cts.ViewSwitcherTest#testSetFactory;android.widget.cts.ToastTest#testMakeText1;android.widget.cts.GridViewTest#testAccessStretchMode;android.widget.cts.AutoCompleteTextViewTest#testGetThreshold;android.widget.cts.RemoteViewsTest#testConstructor;android.widget.cts.AbsListViewTest#testCheckLayoutParams;android.widget.cts.ViewAnimatorTest#testSetAnimateFirstView;android.widget.cts.DigitalClockTest#testActivityTestCaseSetUpProperly;android.widget.cts.SlidingDrawerTest#testAnimateOpenAndClose;android.widget.cts.PopupWindowTest#testAccessFocusable;android.widget.cts.TimePickerTest#testSetOnTimeChangedListener;android.widget.cts.ScrollViewTest#testGetMaxScrollAmount;android.widget.cts.CursorAdapterTest#testOnContentChanged;android.widget.cts.TextViewTest#testGetTotalPaddingBottom;android.widget.cts.AnalogClockTest#testOnMeasure;android.widget.cts.RadioGroupTest#testCheck;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetChanged;android.widget.cts.TwoLineListItemTest#testActivityTestCaseSetUpProperly;android.widget.cts.AbsListViewTest#testGetContextMenuInfo;android.widget.cts.ViewAnimatorTest#testAccessOutAnimation;android.widget.cts.SlidingDrawerTest#testConstructor;android.widget.cts.TimePickerTest#testOnSaveInstanceStateAndOnRestoreInstanceState;android.widget.cts.AbsListViewTest#testAccessFastScrollEnabled;android.widget.cts.BaseAdapterTest#testGetItemViewType;android.widget.cts.AbsListViewTest#testSetOnScrollListener;android.widget.cts.ImageViewTest#testSetImageURI;android.widget.cts.RadioGroupTest#testOnFinishInflate;android.widget.cts.TableRowTest#testGenerateLayoutParams;android.widget.cts.DialerFilterTest#testGetLetters;android.widget.cts.HorizontalScrollViewTest#testComputeHorizontalScrollRange;android.widget.cts.TextViewTest#testSetPadding;android.widget.cts.VideoViewTest#testPlayVideo1;android.widget.cts.ArrayAdapterTest#testRemove;android.widget.cts.GridViewTest#testGetNumColumns;android.widget.cts.AbsSpinnerTest#testSetSelectionIntBoolean;android.widget.cts.LayoutDirectionTest#testDirectionForAllLayoutsWithCode;android.widget.cts.SimpleCursorAdapterTest#testAccessStringConversionColumn;android.widget.cts.ViewAnimatorTest#testGetBaseline;android.widget.cts.ChronometerTest#testConstructor;android.widget.cts.ResourceCursorTreeAdapterTest#testConstructor;android.widget.cts.AdapterViewTest#testGetPositionForView;android.widget.cts.GridViewTest#testSetVerticalSpacing;android.widget.cts.ButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ToggleButtonTest#testToggleText;android.widget.cts.RatingBarTest#testSetMax;android.widget.cts.RemoteViewsTest#testSetViewVisibility;android.widget.cts.ScrollViewTest#testOnTouchEvent;android.widget.cts.BaseAdapterTest#testIsEnabled;android.widget.cts.ExpandableListViewTest#testSetOnChildClickListener;android.widget.cts.EditTextTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testMarquee;android.widget.cts.ImageViewTest#testActivityTestCaseSetUpProperly;android.widget.cts.RadioGroupTest#testConstructors;android.widget.cts.DialerFilterTest#testAccessMode;android.widget.cts.DatePickerTest#testInit;android.widget.cts.TextViewTest#testGetTextColors;android.widget.cts.ProgressBarTest#testAccessProgress;android.widget.cts.TextViewTest#testGetPaint;android.widget.cts.SimpleExpandableListAdapterTest#testNewGroupView;android.widget.cts.AdapterView_AdapterContextMenuInfoTest#testConstructor;android.widget.cts.CompoundButtonTest#testConstructor;android.widget.cts.ImageViewTest#testSetImageLevel;android.widget.cts.SimpleCursorTreeAdapterTest#testBindGroupView;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroup;android.widget.cts.TabWidgetTest#testFocusCurrentTab;android.widget.cts.RelativeLayoutTest#testOnLayout;android.widget.cts.ScrollViewTest#testComputeScroll;android.widget.cts.TextViewTest#testAccessHintTextColor;android.widget.cts.TableLayoutTest#testAccessShrinkAllColumns;android.widget.cts.RemoteViewsTest#testGetPackage;android.widget.cts.GridViewTest#testAttachLayoutAnimationParameters;android.widget.cts.LinearLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.CompoundButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetImageDrawable;android.widget.cts.AdapterViewTest#testAccessVisiblePosition;android.widget.cts.ListViewTest#testSaveAndRestoreInstanceState;android.widget.cts.CompoundButtonTest#testToggle;android.widget.cts.TextViewTest#testMoveCursorToVisibleOffset;android.widget.cts.AutoCompleteTextViewTest#testAccessDropDownWidth;android.widget.cts.RadioGroupTest#testGenerateLayoutParams;android.widget.cts.AdapterViewTest#testCanAnimate;android.widget.cts.ScrollViewTest#testOnLayout;android.widget.cts.AutoCompleteTextViewTest#testEnoughToFilter;android.widget.cts.CheckedTextViewTest#testOnCreateDrawableState;android.widget.cts.RelativeLayout_LayoutParamsTest#testDebug;android.widget.cts.ToastTest#testAccessDuration;android.widget.cts.ToggleButtonTest#testSetChecked;android.widget.cts.HeaderViewListAdapterTest#testGetFootersCount;android.widget.cts.GridLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsListViewTest#testAccessSmoothScrollbarEnabled;android.widget.cts.SlidingDrawerTest#testSetOnDrawerOpenListener;android.widget.cts.HeaderViewListAdapterTest#testGetHeadersCount;android.widget.cts.RemoteViewsTest#testSetLong;android.widget.cts.SlidingDrawerTest#testSetOnDrawerCloseListener;android.widget.cts.TextViewTest#testGetResolvedTextDirectionLtrWithInheritance;android.widget.cts.ScrollViewTest#testFullScroll;android.widget.cts.RelativeLayout_LayoutParamsTest#testAccessRule1;android.widget.cts.BaseExpandableListAdapterTest#testAreAllItemsEnabled;android.widget.cts.RelativeLayout_LayoutParamsTest#testAccessRule2;android.widget.cts.RemoteViewsActivityTest#testDerivedClass;android.widget.cts.ToastTest#testShowFailure;android.widget.cts.SimpleAdapterTest#testSetViewImage;android.widget.cts.TextViewTest#testAccessPrivateImeOptions;android.widget.cts.AdapterView_AdapterContextMenuInfoTest#testAndroidTestCaseSetupProperly;android.widget.cts.TwoLineListItemTest#testOnFinishInflate;android.widget.cts.ExpandableListViewTest#testGetExpandableListPosition;android.widget.cts.AbsListViewTest#testAccessListPadding;android.widget.cts.ExpandableListViewTest#testExpandGroup;android.widget.cts.TextViewTest#testGetUrls;android.widget.cts.LinearLayoutTest#testAccessBaselineAlignedChildIndex;android.widget.cts.CheckBoxTest#testAndroidTestCaseSetupProperly;android.widget.cts.ZoomControlsTest#testSetOnZoomInClickListener;android.widget.cts.AbsSpinnerTest#testGetCount;android.widget.cts.SimpleExpandableListAdapterTest#testNewChildView;android.widget.cts.ViewSwitcherTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testReplaceText;android.widget.cts.ScrollViewTest#testAccessFillViewport;android.widget.cts.ToastTest#testShow;android.widget.cts.TextViewTest#testDrawableStateChanged;android.widget.cts.TimePickerTest#testGetBaseline;android.widget.cts.TextViewTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnFocusChanged;android.widget.cts.ImageViewTest#testDrawableStateChanged;android.widget.cts.FrameLayoutTest#testOnLayout;android.widget.cts.ListViewTest#testAccessItemsCanFocus;android.widget.cts.AutoCompleteTextViewTest#testOnCommitCompletion;android.widget.cts.ScrollViewTest#testAccessSmoothScrollingEnabled;android.widget.cts.TextViewTest#testSelection;android.widget.cts.CheckedTextViewTest#testOnDraw;android.widget.cts.ViewAnimatorTest#testConstructor;android.widget.cts.RadioGroupTest#testInternalPassThroughHierarchyChangeListener;android.widget.cts.SimpleCursorAdapterTest#testSetViewImage;android.widget.cts.AdapterViewTest#testGetSelected;android.widget.cts.ExpandableListViewWithHeadersTest#testSelectedPosition;android.widget.cts.ProgressBarTest#testAccessIndeterminateDrawable;android.widget.cts.TableLayoutTest#testSetOnHierarchyChangeListener;android.widget.cts.ExpandableListViewTest#testSetOnItemClickListener;android.widget.cts.ProgressBarTest#testSetVisibility;android.widget.cts.AutoCompleteTextViewTest#testConvertSelectionToString;android.widget.cts.ImageViewTest#testSetImageResource;android.widget.cts.ScrollViewTest#testGetVerticalFadingEdgeStrengths;android.widget.cts.FilterTest#testFilter2;android.widget.cts.CursorTreeAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.FilterTest#testFilter1;android.widget.cts.ZoomControlsTest#testSetIsZoomOutEnabled;android.widget.cts.ScrollViewTest#testMeasureChildWithMargins;android.widget.cts.CompoundButtonTest#testSetOnCheckedChangeListener;android.widget.cts.TextViewTest#testGetEditableText;android.widget.cts.HorizontalScrollViewTest#testOnRequestFocusInDescendants;android.widget.cts.AbsSpinnerTest#testAccessAdapter;android.widget.cts.ChronometerTest#testAccessOnChronometerTickListener;android.widget.cts.HeaderViewListAdapterTest#testConstructor;android.widget.cts.FrameLayoutTest#testSetForegroundGravity;android.widget.cts.AbsSpinnerTest#testGetSelectedView;android.widget.cts.TextViewTest#testSetGetTextAlignment;android.widget.cts.TextViewTest#testGetLayout;android.widget.cts.ImageViewTest#testConstructor;android.widget.cts.ImageViewTest#testInvalidateDrawable;android.widget.cts.PopupWindowTest#testShowAsDropDownWithOffsets;android.widget.cts.PopupWindowTest#testIsAboveAnchor;android.widget.cts.AutoCompleteTextViewTest#testPerformFiltering;android.widget.cts.ViewFlipperTest#testConstructor;android.widget.cts.DatePickerTest#testUpdateDate;android.widget.cts.MultiAutoCompleteTextViewTest#testMultiAutoCompleteTextView;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testConstructor;android.widget.cts.RemoteViewsTest#testSetOnClickPendingIntent;android.widget.cts.HorizontalScrollViewTest#testScrollTo;android.widget.cts.HorizontalScrollViewTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnMeasure;android.widget.cts.TextViewTest#testSetHighlightColor;android.widget.cts.BaseExpandableListAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.ExpandableListViewWithHeadersTest#testConvertionBetweenFlatAndPacked;android.widget.cts.HeaderViewListAdapterTest#testRemoveFooter;android.widget.cts.ListViewTest#testTransientStateStableIds;android.widget.cts.ScrollViewTest#testSmoothScrollBy;android.widget.cts.ViewSwitcherTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testAccessAutoLinkMask;android.widget.cts.ScrollerTest#testScrollModeWithDefaultDuration;android.widget.cts.GalleryTest#testComputeHorizontalScrollRange;android.widget.cts.CheckedTextViewTest#testSetPadding;android.widget.cts.CursorTreeAdapterTest#testGetGroupId;android.widget.cts.RemoteViewsTest#testApply;android.widget.cts.DialerFilterTest#testIsQwertyKeyboard;android.widget.cts.GalleryTest#testShowContextMenuForChild;android.widget.cts.ScrollViewTest#testPageScroll;android.widget.cts.SimpleCursorTreeAdapterTest#testSetViewImage;android.widget.cts.TableLayoutTest#testOnLayout;android.widget.cts.ArrayAdapterTest#testGetPosition;android.widget.cts.TabWidgetTest#testOnSizeChanged;android.widget.cts.SimpleCursorAdapterTest#testNewDropDownView;android.widget.cts.AutoCompleteTextViewTest#testAccessListSelection;android.widget.cts.TextViewTest#testSetText1;android.widget.cts.TextViewTest#testSetText2;android.widget.cts.RemoteViewsActivityTest#testWebView;android.widget.cts.TextViewTest#testSetText3;android.widget.cts.ToastTest#testAccessGravity;android.widget.cts.HorizontalScrollViewTest#testAddViewWithIndex;android.widget.cts.ResourceCursorTreeAdapterTest#testNewChildView;android.widget.cts.HeaderViewListAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.ExpandableListViewTest#testGetPackedPositionForGroup;android.widget.cts.ZoomControlsTest#testShowAndHide;android.widget.cts.CompoundButtonTest#testAccessChecked;android.widget.cts.SimpleAdapterTest#testGetView;android.widget.cts.DialerFilterTest#testGetDigits;android.widget.cts.ArrayAdapterTest#testDataChangeEvent;android.widget.cts.ImageSwitcherTest#testAndroidTestCaseSetupProperly;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildView;android.widget.cts.ZoomControlsTest#testConstructor;android.widget.cts.CompoundButtonTest#testVerifyDrawable;android.widget.cts.TextViewTest#testSetEms;android.widget.cts.AbsSpinnerTest#testGenerateDefaultLayoutParams;android.widget.cts.TextViewTest#testAccessError;android.widget.cts.ZoomButtonTest#testOnTouchEvent;android.widget.cts.TextViewTest#testSetMaxLinesException;android.widget.cts.CompoundButtonTest#testSetButtonDrawableById;android.widget.cts.FrameLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.HorizontalScrollViewTest#testComputeScrollDeltaToGetChildRectOnScreen;android.widget.cts.ExpandableListViewTest#testSetSelectedChild;android.widget.cts.MediaControllerTest#testShow;android.widget.cts.CursorAdapterTest#testGetDropDownView;android.widget.cts.ListViewTest#testNoSelectableItems;android.widget.cts.TextViewTest#testGetBaseLine;android.widget.cts.AbsSpinnerTest#testConstructor;android.widget.cts.ListViewTest#testAccessDividerHeight;android.widget.cts.TabWidgetTest#testChildDrawableStateChanged;android.widget.cts.AbsListViewTest#testAccessSelectedItem;android.widget.cts.ScrollerTest#testTimePassed;android.widget.cts.ArrayAdapterTest#testGetItem;android.widget.cts.ImageViewTest#testVerifyDrawable;android.widget.cts.ProgressBarTest#testConstructor;android.widget.cts.ProgressBarTest#testIncrementSecondaryProgressBy;android.widget.cts.CursorTreeAdapterTest#testSetChildrenCursor;android.widget.cts.FrameLayoutTest#testCheckLayoutParams;android.widget.cts.AbsoluteLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ZoomButtonTest#testOnKeyUp;android.widget.cts.BaseExpandableListAdapterTest#testGetCombinedId;android.widget.cts.ListViewTest#testSetSelection;android.widget.cts.SimpleCursorAdapterTest#testNewView;android.widget.cts.AutoCompleteTextViewTest#testPopupWindow;android.widget.cts.TextView_SaveStateTest#testWriteToParcel;android.widget.cts.TabHost_TabSpecTest#testSetContent2;android.widget.cts.SeekBarTest#testConstructor;android.widget.cts.TabHost_TabSpecTest#testSetContent1;android.widget.cts.TextViewTest#testSetExtractedText;android.widget.cts.TabHost_TabSpecTest#testSetContent3;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupCount;android.widget.cts.TextViewTest#testComputeVerticalScrollRange;android.widget.cts.GridLayoutTest#testAlignment;android.widget.cts.ExpandableListViewTest#testGetPackedPositionForChild;android.widget.cts.FrameLayoutTest#testConstructor;android.widget.cts.CursorAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.RelativeLayoutTest#testSetHorizontalGravity;android.widget.cts.GalleryTest#testDispatchKeyEvent;android.widget.cts.ToastTest#testSetText1;android.widget.cts.HorizontalScrollViewTest#testFullScroll;android.widget.cts.RemoteViewsTest#testSetCharSequence;android.widget.cts.ToastTest#testSetText2;android.widget.cts.HeaderViewListAdapterTest#testRemoveHeader;android.widget.cts.TextSwitcherTest#testSetCurrentText;android.widget.cts.TwoLineListItemTest#testConstructor;android.widget.cts.MediaControllerTest#testMediaController;android.widget.cts.ListViewTest#testConstructor;android.widget.cts.AbsListViewTest#testAccessSelector;android.widget.cts.BaseExpandableListAdapterTest#testDataSetObserver;android.widget.cts.BaseAdapterTest#testHasStableIds;android.widget.cts.TextViewTest#testAccessImeActionLabel;android.widget.cts.CompoundButtonTest#testSetButtonDrawableByDrawable;android.widget.cts.AbsListViewTest#testLayoutChildren;android.widget.cts.ImageViewTest#testClearColorFilter;android.widget.cts.TextViewTest#testGetResolvedTextDirectionRtl;android.widget.cts.CheckedTextViewTest#testChecked;android.widget.cts.MultiAutoCompleteTextViewTest#testReplaceText;android.widget.cts.DigitalClockTest#testOnDetachedFromWindow;android.widget.cts.CursorTreeAdapterTest#testGetChildView;android.widget.cts.FrameLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetMaxWidth;android.widget.cts.TabHostTest#testDispatchWindowFocusChanged;android.widget.cts.DigitalClockTest#testConstructor;android.widget.cts.DialerFilterTest#testOnKeyUpDown;android.widget.cts.TextViewTest#testSetHorizontallyScrolling;android.widget.cts.HeaderViewListAdapterTest#testGetViewTypeCount;android.widget.cts.AbsSeekBarTest#testAccessKeyProgressIncrement;android.widget.cts.AbsSeekBarTest#testSetThumb;android.widget.cts.ProgressBarTest#testOnDraw;android.widget.cts.TextViewTest#testSetText;android.widget.cts.PopupWindowTest#testAccessContentView;android.widget.cts.GridLayoutTest#testConstructor;android.widget.cts.PopupWindowTest#testAccessHeight;android.widget.cts.ToggleButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.ProgressBarTest#testVerifyDrawable;android.widget.cts.TableRowTest#testOnLayout;android.widget.cts.RadioGroupTest#testInternalCheckedStateTracker;android.widget.cts.HorizontalScrollViewTest#testOnSizeChanged;android.widget.cts.ResourceCursorAdapterTest#testNewView;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testFindTokenEnd;android.widget.cts.ZoomButtonTest#testOnLongClick;android.widget.cts.AnalogClockTest#testOnDetachedFromWindow;android.widget.cts.TextViewTest#testSetMaxLines;android.widget.cts.ExpandableListViewTest#testPerformItemClick;android.widget.cts.TextViewTest#testResetTextDirection;android.widget.cts.ScrollViewTest#testScrollTo;android.widget.cts.TableLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ImageViewTest#testSetAdjustViewBounds;android.widget.cts.TableRowTest#testCheckLayoutParams;android.widget.cts.CheckedTextViewTest#testToggle;android.widget.cts.RemoteViewsTest#testSetProgressBar;android.widget.cts.VideoViewTest#testSetOnErrorListener;android.widget.cts.GalleryTest#testDispatchSetPressed;android.widget.cts.HorizontalScrollViewTest#testSmoothScrollTo;android.widget.cts.ZoomControlsTest#testSetZoomSpeed;android.widget.cts.ExpandableListViewTest#testSetAdapter;android.widget.cts.AutoCompleteTextViewTest#testOnFilterComplete;android.widget.cts.ImageViewTest#testGetDrawable;android.widget.cts.CursorTreeAdapterTest#testRunQueryOnBackgroundThread;android.widget.cts.SlidingDrawerTest#testGetHandle;android.widget.cts.BaseAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.MediaControllerTest#testOnTrackballEvent;android.widget.cts.GalleryTest#testGenerateLayoutParams;android.widget.cts.PopupWindowTest#testConstructor;android.widget.cts.GalleryTest#testFoo;android.widget.cts.PopupWindowTest#testAccessAnimationStyle;android.widget.cts.ToggleButtonTest#testAccessTextOn;android.widget.cts.AbsoluteLayoutTest#testGenerateLayoutParams1;android.widget.cts.TextViewTest#testGetDefaultEditable;android.widget.cts.AbsoluteLayoutTest#testGenerateLayoutParams2;android.widget.cts.ArrayAdapterTest#testGetFilter;android.widget.cts.CheckedTextViewTest#testSetCheckMarkDrawableById;android.widget.cts.ScrollerTest#testAbortAnimation;android.widget.cts.LinearLayout_LayoutParamsTest#testConstructor;android.widget.cts.TextViewTest#testComputeVerticalScrollExtent;android.widget.cts.AbsSpinnerTest#testSetSelectionInt;android.widget.cts.TabHostTest#testGetTabContentView;android.widget.cts.TextViewTest#testGetDefaultMovementMethod;android.widget.cts.ScrollViewTest#testRequestChildRectangleOnScreen;android.widget.cts.TabHostTest#testGetCurrentView;android.widget.cts.TextViewTest#testAccessFilters;android.widget.cts.GalleryTest#testCheckLayoutParams;android.widget.cts.RadioGroup_LayoutParamsTest#testConstructor;android.widget.cts.BaseExpandableListAdapterTest#testOnGroupExpanded;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testTerminateToken;android.widget.cts.ScrollViewTest#testConstructor;android.widget.cts.ListViewTest#testLayoutChildren;android.widget.cts.RemoteViewsTest#testSetImageViewUri;android.widget.cts.ViewAnimatorTest#testAccessDisplayedChild;android.widget.cts.ExpandableListViewTest#testCollapseGroup;android.widget.cts.AnalogClockTest#testConstructor;android.widget.cts.CursorAdapterTest#testConvertToString;android.widget.cts.BaseAdapterTest#testIsEmpty;android.widget.cts.ResourceCursorTreeAdapterTest#testNewGroupView;android.widget.cts.ScrollViewTest#testFling;android.widget.cts.SlidingDrawerTest#testOnMeasure;android.widget.cts.TextViewTest#testSetMaxEms;android.widget.cts.LinearLayoutTest#testGenerateLayoutParams;android.widget.cts.PopupWindowTest#testAccessInputMethodMode;android.widget.cts.ListViewTest#testPerformItemClick;android.widget.cts.TextViewTest#testOnTextChanged;android.widget.cts.GridViewTest#testSetSelection;android.widget.cts.CursorAdapterTest#testHasStableIds;android.widget.cts.ProgressBarTest#testSetIndeterminate;android.widget.cts.TableRowTest#testGetVirtualChildCount;android.widget.cts.AutoCompleteTextViewTest#testOnTextChanged;android.widget.cts.TextViewTest#testSetLinesException;android.widget.cts.TextViewTest#testLength;android.widget.cts.RelativeLayoutTest#testSetGravity;android.widget.cts.RelativeLayoutTest#testConstructor;android.widget.cts.TextViewTest#testGetLineHeight;android.widget.cts.GalleryTest#testSetAnimationDuration;android.widget.cts.PopupWindowTest#testAccessTouchable;android.widget.cts.RelativeLayoutTest#testSetVerticalGravity;android.widget.cts.CursorTreeAdapterTest#testConstructor;android.widget.cts.AbsSpinnerTest#testRequestLayout;android.widget.cts.TextViewTest#testOnKeyShortcut;android.widget.cts.TableRowTest#testGetVirtualChildAt;android.widget.cts.SpinnerTest#testConstructor;android.widget.cts.SimpleAdapterTest#testGetDropDownView;android.widget.cts.ScrollViewTest#testAddViewWithLayoutParams;android.widget.cts.HeaderViewListAdapterTest#testGetItemViewType;android.widget.cts.RadioGroupTest#testSetOnCheckedChangeListener;android.widget.cts.ToggleButtonTest#testOnFinishInflate;android.widget.cts.DialerFilterTest#testAppend;android.widget.cts.HorizontalScrollViewTest#testRequestChildRectangleOnScreen;android.widget.cts.RadioButtonTest#testConstructor;android.widget.cts.PopupWindowTest#testDismiss;android.widget.cts.TableLayoutTest#testAddView2;android.widget.cts.TableLayoutTest#testAddView3;android.widget.cts.TabHostTest#testOnTouchModeChanged;android.widget.cts.TableLayoutTest#testAddView4;android.widget.cts.HeaderViewListAdapterTest#testGetWrappedAdapter;android.widget.cts.TableLayoutTest#testAddView1;android.widget.cts.ImageSwitcherTest#testSetImageResource;android.widget.cts.ToggleButtonTest#testDrawableStateChanged;android.widget.cts.EditTextTest#testSetSelectionIndex;android.widget.cts.EditTextTest#testExtendSelection;android.widget.cts.AbsSeekBarTest#testSetMax;android.widget.cts.CursorTreeAdapterTest#testChangeCursor;android.widget.cts.AdapterViewTest#testItemOrItemIdAtPosition;android.widget.cts.HorizontalScrollViewTest#testDispatchKeyEvent;android.widget.cts.TableRowTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsListViewTest#testSetRecyclerListener;android.widget.cts.GalleryTest#testGetContextMenuInfo;android.widget.cts.AbsListViewTest#testAccessStackFromBottom;android.widget.cts.TextViewTest#testAccessText;android.widget.cts.SpinnerTest#testGetBaseline;android.widget.cts.ScrollViewTest#testRequestChildFocus;android.widget.cts.LinearLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.ButtonTest#testConstructor;android.widget.cts.ResourceCursorAdapterTest#testSetViewResource;android.widget.cts.ExpandableListViewBasicTest#testContextMenus;android.widget.cts.FrameLayoutTest#testVerifyDrawable;android.widget.cts.ExpandableListViewTest#testGetPackedPositionType;android.widget.cts.LinearLayoutTest#testLayoutHorizontal;android.widget.cts.ScrollViewTest#testComputeVerticalScrollRange;android.widget.cts.GridViewTest#testOnFocusChanged;android.widget.cts.ZoomControlsTest#testOnTouchEvent;android.widget.cts.GridViewTest#testActivityTestCaseSetUpProperly;android.widget.cts.ListViewTest#testAccessItemChecked;android.widget.cts.AbsoluteLayoutTest#testConstructor;android.widget.cts.TextViewTest#testComputeHorizontalScrollRange;android.widget.cts.HorizontalScrollViewTest#testAddViewWithLayoutParams;android.widget.cts.RemoteViewsTest#testGetLayoutId;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetChangedBoolean;android.widget.cts.TableRow_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.HorizontalScrollViewTest#testMeasureChildWithMargins;android.widget.cts.TextViewTest#testSetIncludeFontPadding;android.widget.cts.HorizontalScrollViewTest#testAddView;android.widget.cts.TimePickerTest#testAccessCurrentMinute;android.widget.cts.TextViewTest#testGetExtendedPaddingBottom;android.widget.cts.BaseExpandableListAdapterTest#testIsEmpty;android.widget.cts.SimpleAdapterTest#testAccessViewBinder;android.widget.cts.SpinnerTest#testOnLayout;android.widget.cts.AutoCompleteTextViewTest#testAccessValidater;android.widget.cts.ScrollViewTest#testAddViewWithIndex;android.widget.cts.FrameLayoutTest#testDrawableStateChanged;android.widget.cts.PopupWindowTest#testSetTouchInterceptor;android.widget.cts.SimpleAdapterTest#testGetItem;android.widget.cts.ImageViewTest#testSetColorFilter1;android.widget.cts.ImageViewTest#testSetColorFilter2;android.widget.cts.SlidingDrawerTest#testDispatchDraw;android.widget.cts.TextViewTest#testSetOnEditorActionListener;android.widget.cts.DatePickerTest#testSetEnabled;android.widget.cts.RemoteViewsTest#testReapply;android.widget.cts.TextViewTest#testCompound;android.widget.cts.AdapterViewTest#testAccessEmptyView;android.widget.cts.Gallery_LayoutParamsTest#testConstructor;android.widget.cts.TextViewTest#testGetResolvedTextDirectionRtlWithInheritance;android.widget.cts.PopupWindowTest#testShowAtLocation;android.widget.cts.TextViewTest#testPerformLongClick;android.widget.cts.ExpandableListViewTest#testSetChildDivider;android.widget.cts.PopupWindowTest#testAccessClippingEnabled;android.widget.cts.RemoteViewsTest#testSetTextViewText;android.widget.cts.ScrollViewTest#testMeasureChild;android.widget.cts.TableLayoutTest#testAccessColumnShrinkable;android.widget.cts.TableRow_LayoutParamsTest#testConstructor;android.widget.cts.GalleryTest#testComputeHorizontalScrollOffset;android.widget.cts.ProgressBarTest#testOnMeasure;android.widget.cts.ProgressBarTest#testAccessProgressDrawable;android.widget.cts.SimpleAdapterTest#testGetFilter;android.widget.cts.RadioGroupTest#testSetOnHierarchyChangeListener;android.widget.cts.AbsListViewTest#testHandleDataChanged;android.widget.cts.AbsListViewTest#testShowContextMenuForChild;android.widget.cts.ExpandableListViewTest#testConstructor;android.widget.cts.HeaderViewListAdapterTest#testIsEmpty;android.widget.cts.AlphabetIndexerTest#testAlphabetIndexer;android.widget.cts.ChronometerTest#testAccessBase;android.widget.cts.TextViewTest#testAccessRawContentType;android.widget.cts.ScrollViewTest#testExecuteKeyEvent;android.widget.cts.SpinnerTest#testAccessPrompt;android.widget.cts.AnalogClockTest#testOnDraw;android.widget.cts.ChronometerTest#testStartAndStop;android.widget.cts.TabWidgetTest#testSetCurrentTab;android.widget.cts.CursorTreeAdapterTest#testGetFilter;android.widget.cts.ImageSwitcherTest#testSetImageURI;android.widget.cts.TabHostTest#testSetOnTabChangedListener;android.widget.cts.ScrollViewTest#testSmoothScrollTo;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupId;android.widget.cts.AbsListViewTest#testAccessCacheColorHint;android.widget.cts.TabHostTest#testSetCurrentTabByTag;android.widget.cts.HeaderViewListAdapterTest#testIsEnabled;android.widget.cts.ImageViewTest#testSetImageState;android.widget.cts.ExpandableListViewTest#testSetSelectedGroup;android.widget.cts.DialerFilterTest#testRemoveFilterWatcher;android.widget.cts.ToggleButtonTest#testAccessTextOff;android.widget.cts.TextViewTest#testSetSelectAllOnFocus;android.widget.cts.TextViewTest#testAccessKeyListener;android.widget.cts.ArrayAdapterTest#testInsert;android.widget.cts.MediaControllerTest#testSetPrevNextListeners;android.widget.cts.PopupWindowTest#testUpdatePositionAndDimension;android.widget.cts.TextViewTest#testOnDraw;android.widget.cts.TextViewTest#testSetFrame;android.widget.cts.ScrollerTest#testAccessFinalX;android.widget.cts.ScrollerTest#testAccessFinalY;android.widget.cts.AdapterViewTest#testOnLayout;android.widget.cts.ScrollViewTest#testOnRequestFocusInDescendants;android.widget.cts.TextViewTest#testCancelLongPress;android.widget.cts.GridViewTest#testAccessAdapter;android.widget.cts.ZoomButtonTest#testSetZoomSpeed;android.widget.cts.ExpandableListViewTest#testGetPackedPositionGroup;android.widget.cts.ExpandableListViewTest#testSetGroupIndicator;android.widget.cts.TextViewTest#testGetResolvedTextDirectionLtr;android.widget.cts.BaseAdapterTest#testGetDropDownView;android.widget.cts.ViewAnimatorTest#testShowPrevious;android.widget.cts.TextViewTest#testOnCreateContextMenu;android.widget.cts.TextViewTest#testAppend;android.widget.cts.DialerFilterTest#testOnFocusChanged;android.widget.cts.SlidingDrawerTest#testOnLayout;android.widget.cts.TextViewTest#testGetFocusedRect;android.widget.cts.TextSwitcherTest#testAddView;android.widget.cts.ExpandableListViewTest#testSetChildIndicatorBounds;android.widget.cts.RemoteViewsTest#testSetImageViewBitmap;android.widget.cts.CursorTreeAdapterTest#testHasStableIds;android.widget.cts.ToastTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testConvertToString;android.widget.cts.AbsListViewTest#testGetTopBottomFadingEdgeStrength;android.widget.cts.EditTextTest#testGetDefaultMovementMethod;android.widget.cts.AbsListViewTest#testAddTouchables;android.widget.cts.SeekBarTest#testSetOnSeekBarChangeListener;android.widget.cts.TextViewTest#testAccessLinkTextColor;android.widget.cts.TextViewTest#testAccessEllipsize;android.widget.cts.RatingBarTest#testAccessNumStars;android.widget.cts.ImageViewTest#testGetBaseline;android.widget.cts.AnalogClockTest#testOnAttachedToWindow;android.widget.cts.LayoutDirectionTest#testDirectionInheritanceForAllLayoutsWithCode;android.widget.cts.AutoCompleteTextViewTest#testAccessItemSelectedListener;android.widget.cts.TextSwitcherTest#testConstructor;android.widget.cts.TextViewTest#testGetResolvedTextAlignment;android.widget.cts.ExpandableListView_ExpandableListContextMenuInfoTest#testConstructor;android.widget.cts.HeaderViewListAdapterTest#testGetFilter;android.widget.cts.AbsSeekBarTest#testConstructor;android.widget.cts.ZoomControlsTest#testSetOnZoomOutClickListener;android.widget.cts.ArrayAdapterTest#testSort;android.widget.cts.HorizontalScrollViewTest#testFling;android.widget.cts.GridViewTest#testConstructor;android.widget.cts.RemoteViewsTest#testNotFeasibleSetters;android.widget.cts.RemoteViewsTest#testWriteToParcel;android.widget.cts.ScrollViewTest#testAddView;android.widget.cts.FilterTest#testConstructor;android.widget.cts.SimpleExpandableListAdapterTest#testGetChildId;android.widget.cts.AutoCompleteTextViewTest#testOnDetachedFromWindow;android.widget.cts.ScrollViewTest#testRequestLayout;android.widget.cts.ImageButtonTest#testConstructor;android.widget.cts.EditTextTest#testSelectAll;android.widget.cts.PopupWindowTest#testSetOnDismissListener;android.widget.cts.TimePickerTest#testAccessCurrentHour;android.widget.cts.ArrayAdapterTest#testCreateFromResource;android.widget.cts.TextViewTest#testSetShadowLayer;android.widget.cts.CompoundButtonTest#testOnCreateDrawableState;android.widget.cts.SimpleCursorAdapterTest#testChangeCursorAndColumns;android.widget.cts.ImageViewTest#testSetFrame;android.widget.cts.ArrayAdapterTest#testSetDropDownViewResouce;android.widget.cts.ResourceCursorAdapterTest#testNewDropDownView;android.widget.cts.ToastTest#testCancel;android.widget.cts.RatingBarTest#testAccessStepSize;android.widget.cts.CheckedTextViewTest#testSetCheckMarkDrawableByDrawable;android.widget.cts.TextViewTest#testInstanceState;android.widget.cts.AbsListViewTest#testGetFocusedRect;android.widget.cts.ViewAnimatorTest#testAddView;android.widget.cts.AdapterViewTest#testUnsupportedMethods;android.widget.cts.TextViewTest#testOnPrivateIMECommand;android.widget.cts.CursorAdapterTest#testAccessCursor;android.widget.cts.TextViewTest#testBringPointIntoView;android.widget.cts.SpinnerTest#testOnClick;android.widget.cts.TextViewTest#testSetEditableFactory;android.widget.cts.ViewSwitcherTest#testGetNextView;android.widget.cts.AbsSeekBarTest#testAccessThumbOffset;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testDebug;android.widget.cts.DatePickerTest#testAccessDate;android.widget.cts.CursorAdapterTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testPageScroll;android.widget.cts.AutoCompleteTextViewTest#testPerformValidation;android.widget.cts.TextViewTest#testAccessLinksClickable;android.widget.cts.SlidingDrawerTest#testGetContent;android.widget.cts.ViewAnimatorTest#testShowNext;android.widget.cts.TextViewTest#testResetTextAlignment;android.widget.cts.ScrollerTest#testFlingMode;android.widget.cts.SlidingDrawerTest#testOnInterceptTouchEvent;android.widget.cts.DatePickerTest#testConstructor;android.widget.cts.TableLayoutTest#testAccessColumnCollapsed;android.widget.cts.AbsSeekBarTest#testVerifyDrawable;android.widget.cts.ScrollViewTest#testOnSizeChanged;android.widget.cts.TimePickerTest#testConstructors;android.widget.cts.TextViewTest#testAccessTransformationMethod;android.widget.cts.SimpleCursorTreeAdapterTest#testBindChildView;android.widget.cts.ScrollerTest#testExtendDuration;android.widget.cts.RatingBarTest#testAccessRating;android.widget.cts.RelativeLayoutTest#testCheckLayoutParams;android.widget.cts.GalleryTest#testGenerateDefaultLayoutParams;android.widget.cts.AbsoluteLayoutTest#testCheckLayoutParams;android.widget.cts.SlidingDrawerTest#testOnFinishInflate;android.widget.cts.EditTextTest#testSetSelectionStartstop;android.widget.cts.ToggleButtonTest#testSetBackgroundDrawable;android.widget.cts.HeaderViewListAdapterTest#testRegisterDataSetObserver;android.widget.cts.TextViewTest#testAccessFreezesText;android.widget.cts.ArrayAdapterTest#testAndroidTestCaseSetupProperly;android.widget.cts.ExpandableListViewTest#testGetSelectedPosition;android.widget.cts.TabHostTest#testGetCurrentTabTag;android.widget.cts.GridViewTest#testOnMeasure;android.widget.cts.HeaderViewListAdapterTest#testGetItemId;android.widget.cts.RadioButtonTest#testToggle;android.widget.cts.TextViewTest#testOnFocusChanged;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.ViewAnimatorTest#testAccessInAnimation;android.widget.cts.AdapterViewTest#testDispatchSaveInstanceState;android.widget.cts.HeaderViewListAdapterTest#testHasStableIds;android.widget.cts.RelativeLayoutTest#testOnMeasure;android.widget.cts.HorizontalScrollViewTest#testSmoothScrollBy;android.widget.cts.ListViewTest#testTransientStateUnstableIds;android.widget.cts.TableRowTest#testConstructor;android.widget.cts.TabHost_TabSpecTest#testSetIndicator2;android.widget.cts.ArrayAdapterTest#testAccessView;android.widget.cts.TabHost_TabSpecTest#testSetIndicator1;android.widget.cts.HorizontalScrollViewTest#testAccessSmoothScrollingEnabled;android.widget.cts.TextViewTest#testSetCursorVisible;android.widget.cts.FrameLayout_LayoutParamsTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testOnAttachedToWindow;android.widget.cts.CursorAdapterTest#testInit;android.widget.cts.SimpleAdapterTest#testGetItemId;android.widget.cts.TableLayout_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.ExpandableListViewBasicTest#testExpandedGroupMovement;android.widget.cts.TextViewTest#testAccessPaintFlags;android.widget.cts.CursorAdapterTest#testGetItemId;android.widget.cts.GalleryTest#testSetSpacing;android.widget.cts.TextViewTest#testSetLines;android.widget.cts.ScrollerTest#testConstructor;android.widget.cts.CompoundButtonTest#testOnDraw;android.widget.cts.ListViewTest#testGetMaxScrollAmount;android.widget.cts.TwoLineListItemTest#testGetTexts;android.widget.cts.AbsListViewTest#testBeforeAndAfterTextChanged;android.widget.cts.AdapterViewTest#testConstructor;android.widget.cts.SimpleAdapterTest#testSetViewText;android.widget.cts.ExpandableListViewTest#testGetSelectedId;android.widget.cts.TableLayoutTest#testOnMeasure;android.widget.cts.DialerFilterTest#testSetDigitsWatcher;android.widget.cts.AbsListViewTest#testPointToPosition;android.widget.cts.ExpandableListViewTest#testGetPackedPositionChild;android.widget.cts.ExpandableListViewBasicTest#testSelectedPosition;android.widget.cts.RemoteViewsTest#testSetBitmap;android.widget.cts.TextViewTest#testFoo;android.widget.cts.EditTextTest#testAccessText;android.widget.cts.AbsListViewTest#testComputeVerticalScrollValues;android.widget.cts.VideoViewTest#testConstructor;android.widget.cts.EditTextTest#testGetDefaultEditable;android.widget.cts.EditTextTest#testConstructor;android.widget.cts.ExpandableListViewWithHeadersTest#testExpandOnFirstGroup;android.widget.cts.RelativeLayout_LayoutParamsTest#testStartEnd;android.widget.cts.ScrollViewTest#testAddViewWithIndexAndLayoutParams;android.widget.cts.ViewFlipperTest#testSetFlipInterval;android.widget.cts.ZoomButtonTest#testConstructor;android.widget.cts.TableRowTest#testOnMeasure;android.widget.cts.TableLayoutTest#testAccessStretchAllColumns;android.widget.cts.GridViewTest#testSetHorizontalSpacing;android.widget.cts.ExpandableListViewWithHeadersTest#testContextMenus;android.widget.cts.ListViewTest#testRequestChildRectangleOnScreen;android.widget.cts.VideoViewTest#testSetMediaController;android.widget.cts.AdapterViewTest#testAccessOnItemClickAndLongClickListener;android.widget.cts.RemoteViewsTest#testSetImageViewResource;android.widget.cts.TextViewTest#testScroll;android.widget.cts.VideoViewTest#testResolveAdjustedSize;android.widget.cts.ScrollViewTest#testOnInterceptTouchEvent;android.widget.cts.ViewAnimatorTest#testRemoveViews;android.widget.cts.AlphabetIndexerTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageViewTest#testSetMaxHeight;android.widget.cts.ImageViewTest#testOnMeasure;android.widget.cts.RadioGroup_LayoutParamsTest#testSetBaseAttributes;android.widget.cts.AbsoluteLayoutTest#testOnMeasure;android.widget.cts.CompoundButtonTest#testPerformClick;android.widget.cts.ExpandableListViewTest#testAccessExpandableListAdapter;android.widget.cts.TextView_SaveStateTest#testToString;android.widget.cts.CursorTreeAdapterTest#testGetGroupView;android.widget.cts.TextViewTest#testPressKey;android.widget.cts.ProgressBarTest#testAccessMax;android.widget.cts.TextViewTest#testBeginEndBatchEdit;android.widget.cts.HeaderViewListAdapterTest#testGetItem;android.widget.cts.LinearLayoutTest#testActivityTestCaseSetUpProperly;android.widget.cts.TextViewTest#testSetGetTextDirection;android.widget.cts.HeaderViewListAdapterTest#testGetView;android.widget.cts.ScrollerTest#testScrollMode;android.widget.cts.ProgressBarTest#testAccessInterpolator;android.widget.cts.TextViewTest#testTextAttr;android.widget.cts.AbsListViewTest#testAccessScrollingCacheEnabled;android.widget.cts.MediaControllerTest#testSetEnabled;android.widget.cts.SimpleCursorAdapterTest#testConvertToString;android.widget.cts.ExpandableListViewTest#testDispatchDraw;android.widget.cts.DigitalClockTest#testOnAttachedToWindow;android.widget.cts.BaseAdapterTest#testGetViewTypeCount;android.widget.cts.CursorAdapterTest#testGetCount;android.widget.cts.ToastTest#testAccessView;android.widget.cts.FrameLayoutTest#testOnMeasure;android.widget.cts.HorizontalScrollViewTest#testGetMaxScrollAmount;android.widget.cts.AbsListViewTest#testSetScrollIndicators;android.widget.cts.TabHostTest#testOnAttachedToAndDetachedFromWindow;android.widget.cts.CursorAdapterTest#testGetFilter;android.widget.cts.CursorTreeAdapterTest#testGetChild;android.widget.cts.SlidingDrawerTest#testSetOnDrawerScrollListener;android.widget.cts.ProgressBarTest#testOnSizeChange;android.widget.cts.TextViewTest#testGetTotalPaddingRight;android.widget.cts.GridViewTest#testPressKey;android.widget.cts.CheckedTextViewTest#testDrawableStateChanged;android.widget.cts.ScrollerTest#testGetDuration;android.widget.cts.TableLayoutTest#testRequestLayout;android.widget.cts.ImageViewTest#testAccessImageMatrix;android.widget.cts.PopupWindowTest#testAccessWidth;android.widget.cts.BaseAdapterTest#testDataSetObserver;android.widget.cts.SpinnerTest#testPerformClick;android.widget.cts.MediaControllerTest#testConstructor;android.widget.cts.SimpleCursorTreeAdapterTest#testConstructor;android.widget.cts.TextViewTest#testGetTextColor;android.widget.cts.DialerFilterTest#testOnModechange;android.widget.cts.AdapterViewTest#testDispatchRestoreInstanceState;android.widget.cts.ImageViewTest#testOnCreateDrawableState;android.widget.cts.CursorTreeAdapterTest#testNotifyDataSetInvalidated;android.widget.cts.SimpleExpandableListAdapterTest#testGetGroupView;android.widget.cts.ListViewTest#testRequestLayout;android.widget.cts.Gallery_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.SimpleExpandableListAdapterTest#testGetChild;android.widget.cts.TableRowTest#testSetOnHierarchyChangeListener;android.widget.cts.TextViewTest#testGetExtendedPaddingTop;android.widget.cts.ResourceCursorAdapterTest#testSetDropDownViewResource;android.widget.cts.LinearLayoutTest#testAccessBaselineAligned;android.widget.cts.CursorTreeAdapterTest#testGetChildId;android.widget.cts.GridViewTest#testSetColumnWidth;android.widget.cts.AbsListViewTest#testAccessTranscriptMode;android.widget.cts.VideoViewTest#testGetBufferPercentage;android.widget.cts.LinearLayoutTest#testConstructor;android.widget.cts.TextViewTest#testAccessContentType;android.widget.cts.SimpleCursorAdapterTest#testBindView;android.widget.cts.SlidingDrawerTest#testOnTouchEvent;android.widget.cts.ListViewTest#testOnKeyUpDown;android.widget.cts.SimpleCursorAdapterTest#testAccessCursorToStringConverter;android.widget.cts.TabWidgetTest#testAddView;android.widget.cts.TextViewTest#testIsInputMethodTarget;android.widget.cts.AbsoluteLayout_LayoutParamsTest#testConstructor;android.widget.cts.RelativeLayoutTest#testGetBaseline;android.widget.cts.TextViewTest#testGetLineCount;android.widget.cts.GridLayoutTest#testActivityTestCaseSetUpProperly;android.widget.cts.ProgressBarTest#testInvalidateDrawable;android.widget.cts.AbsSpinnerTest#testOnSaveAndRestoreInstanceState;android.widget.cts.MultiAutoCompleteTextViewTest#testConstructor;android.widget.cts.ExpandableListViewTest#testGetFlatListPosition;android.widget.cts.ArrayAdapterTest#testAddAllParams;android.widget.cts.CursorTreeAdapterTest#testSetGroupCursor;android.widget.cts.TextViewTest#testDidTouchFocusSelect;android.widget.cts.SimpleCursorAdapterTest#testConstructor;android.widget.cts.TextViewTest#testAccessImeOptions;android.widget.cts.TabHostTest#testClearAllTabs;android.widget.cts.TextViewTest#testGetFadingEdgeStrength;android.widget.cts.TextViewTest#testSetMinLines;android.widget.cts.DialerFilterTest#testConstructor;android.widget.cts.AbsListViewTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testAddViewWithIndexAndLayoutParams;android.widget.cts.TextViewTest#testTextDirectionDefault;android.widget.cts.TextViewTest#testGetLineBounds;android.widget.cts.HorizontalScrollViewTest#testConstructor;android.widget.cts.AutoCompleteTextViewTest#testSetFrame;android.widget.cts.RelativeLayoutTest#testGenerateLayoutParams2;android.widget.cts.RelativeLayoutTest#testGenerateLayoutParams1;android.widget.cts.ArrayAdapterTest#testAdd;android.widget.cts.PopupWindowTest#testUpdateDimensionAndAlignAnchorView;android.widget.cts.ToastTest#testAccessMargin;android.widget.cts.RemoteViewsActivityTest#testGood;android.widget.cts.TextViewTest#testAccessTextSize;android.widget.cts.TableLayoutTest#testColumnStretchableEffect;android.widget.cts.CompoundButtonTest#testDrawableStateChanged;android.widget.cts.CursorAdapterTest#testAccessFilterQueryProvider;android.widget.cts.HorizontalScrollViewTest#testArrowScroll;android.widget.cts.ScrollViewTest#testOnMeasure;android.widget.cts.TextViewTest#testTextChangedListener;android.widget.cts.AutoCompleteTextViewTest#testSetCompletionHint;android.widget.cts.TextViewTest#testAccessTextColor;android.widget.cts.FrameLayoutTest#testAccessMeasureAllChildren;android.widget.cts.LinearLayoutTest#testAccessWeightSum;android.widget.cts.HorizontalScrollViewTest#testOnMeasure;android.widget.cts.ResourceCursorAdapterTest#testConstructor;android.widget.cts.FrameLayoutTest#testOnSizeChanged;android.widget.cts.LinearLayoutTest#testCheckLayoutParams;android.widget.cts.PopupWindowTest#testSetWindowLayoutMode;android.widget.cts.ExpandableListView_ExpandableListContextMenuInfoTest#testAndroidTestCaseSetupProperly;android.widget.cts.ListViewTest#testAccessHeaderView;android.widget.cts.RatingBarTest#testAccessOnRatingBarChangeListener;android.widget.cts.GridViewTest#testSetGravity;android.widget.cts.TextViewTest#testAccessHint;android.widget.cts.HorizontalScrollViewTest#testOnLayout;android.widget.cts.ListViewTest#testAccessAdapter;android.widget.cts.ArrayAdapterTest#testGetItemId;android.widget.cts.ImageButtonTest#testAndroidTestCaseSetupProperly;android.widget.cts.TextViewTest#testOnDetachedFromWindow;android.widget.cts.ProgressBarTest#testAccessSecondaryProgress;android.widget.cts.SimpleExpandableListAdapterTest#testIsChildSelectable;android.widget.cts.TextViewTest#testTextAlignmentDefault;android.widget.cts.TableLayoutTest#testCheckLayoutParams;android.widget.cts.AnalogClockTest#testOnSizeChanged;android.widget.cts.DialerFilterTest#testSetLettersWatcher;android.widget.cts.ViewAnimatorTest#testAccessDisplayedChildBoundary;android.widget.cts.TextViewTest#testSetSpannableFactory;android.widget.cts.ImageSwitcherTest#testConstructor;android.widget.cts.TextViewTest#testAccessMovementMethod;android.widget.cts.AbsSeekBarTest#testDrawableStateChanged;android.widget.cts.RadioGroupTest#testAddView;android.widget.cts.HorizontalScrollViewTest#testOnInterceptTouchEvent;android.widget.cts.TabHostTest#testConstructor;android.widget.cts.CursorTreeAdapterTest#testGetChildrenCount;android.widget.cts.SimpleCursorAdapterTest#testChangeCursor;android.widget.cts.HorizontalScrollViewTest#testAccessFillViewport;android.widget.cts.AbsSeekBarTest#testFoo;android.widget.cts.TableLayoutTest#testConstructor;android.widget.cts.GalleryTest#testSetUnselectedAlpha;android.widget.cts.AbsListViewTest#testInvalidateViews;android.widget.cts.HeaderViewListAdapterTest#testGetCount;android.widget.cts.RatingBarTest#testAccessIndicator;android.widget.cts.RelativeLayout_LayoutParamsTest#testConstructor;android.widget.cts.CursorAdapterTest#testNewDropDownView;android.widget.cts.ChronometerTest#testAccessFormat;android.widget.cts.ExpandableListViewBasicTest#testPreconditions;android.widget.cts.AbsListViewTest#testFoo;android.widget.cts.ListViewTest#testOnTouchEvent;android.widget.cts.TabHostTest#testAddTab;android.widget.cts.AdapterViewTest#testChangeFocusable;android.widget.cts.ListViewTest#testAccessDivider;android.widget.cts.ListViewTest#testAccessFooterView;android.widget.cts.SimpleCursorAdapterTest#testAccessViewBinder;android.widget.cts.ZoomButtonTest#testSetEnabled;android.widget.cts.CheckedTextViewTest#testConstructor;android.widget.cts.GridViewTest#testLayoutChildren;android.widget.cts.ImageViewTest#testSetAlpha;android.widget.cts.TextViewTest#testClearComposingText;android.widget.cts.ZoomControlsTest#testSetIsZoomInEnabled;android.widget.cts.TabWidgetTest#testConstructor;android.widget.cts.TableRowTest#testGenerateLayoutParams2;android.widget.cts.TextViewTest#testSetTextAppearance;android.widget.cts.FilterTest#testConvertResultToString;android.widget.cts.MultiAutoCompleteTextViewTest#testPerformValidation;android.widget.cts.TextViewTest#testHeightAndWidth;android.widget.cts.CursorTreeAdapterTest#testIsChildSelectable;android.widget.cts.ArrayAdapterTest#testAddAllCollection;android.widget.cts.AbsListView_LayoutParamsTest#testConstructors;android.widget.cts.ScrollViewTest#testDispatchKeyEvent;android.widget.cts.TabHostTest#testAccessCurrentTab;android.widget.cts.ViewSwitcherTest#testReset;android.widget.cts.TimePickerTest#testAccessIs24HourView;android.widget.cts.TextViewTest#testGetTotalPaddingTop;android.widget.cts.HorizontalScrollViewTest#testExecuteKeyEvent;android.widget.cts.AbsoluteLayoutTest#testOnLayout;android.widget.cts.ImageViewTest#testAccessScaleType;android.widget.cts.TabHostTest#testGetTabWidget;android.widget.cts.SlidingDrawerTest#testAnimateToggle;android.widget.cts.SlidingDrawerTest#testLockAndUnlock;android.widget.cts.GalleryTest#testSetGravity;android.widget.cts.ListViewTest#testOnFinishInflate;android.widget.cts.ScrollViewTest#testArrowScroll;android.widget.cts.ScrollViewTest#testComputeScrollDeltaToGetChildRectOnScreen;android.widget.cts.TabHostTest#testGetCurrentTabView;android.widget.cts.ExpandableListViewBasicTest#testExpandGroup;android.widget.cts.TextViewTest#testExtractText;android.widget.cts.RemoteViewsTest#testOnLoadClass;android.widget.cts.RadioGroupTest#testCheckLayoutParams;android.widget.cts.TextSwitcherTest#testSetText;android.widget.cts.AbsListViewTest#testGenerateLayoutParams;android.widget.cts.TabWidgetTest#testSetEnabled;android.widget.cts.AutoCompleteTextViewTest#testAccessItemClickListener;android.widget.cts.ChronometerTest#testFoo;android.widget.cts.ExpandableListViewBasicTest#testConvertionBetweenFlatAndPacked;android.widget.cts.DatePickerTest#testOnSaveInstanceState;android.widget.cts.DatePickerTest#testAndroidTestCaseSetupProperly;android.widget.cts.ImageButtonTest#testOnSetAlpha;android.widget.cts.AdapterViewTest#testAccessOnItemSelectedListener;android.widget.cts.BaseExpandableListAdapterTest#testOnGroupCollapsed;android.widget.cts.TableLayoutTest#testGenerateLayoutParams1;android.widget.cts.TableLayoutTest#testGenerateLayoutParams2;android.widget.cts.LinearLayoutTest#testLayoutVertical;android.widget.cts.CursorTreeAdapterTest#testAccessQueryProvider;android.widget.cts.TextViewTest#testSetTextKeepState1;android.widget.cts.ArrayAdapterTest#testConstructor;android.widget.cts.RemoteViewsTest#testDescribeContents;android.widget.cts.RelativeLayoutTest#testGenerateDefaultLayoutParams;android.widget.cts.SimpleExpandableListAdapterTest#testHasStableIds;android.widget.cts.TextViewTest#testOnPreDraw;android.widget.cts.ExpandableListViewBasicTest#testCollapseGroup;android.widget.cts.ExpandableListViewWithHeadersTest#testExpandOnFirstPosition;android.widget.cts.SimpleCursorAdapterTest#testSetViewText;android.widget.cts.RelativeLayoutTest#testSetIgnoreGravity;android.widget.cts.RadioGroup_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.BaseAdapterTest#testAreAllItemsEnabled;android.widget.cts.RemoteViewsTest#testSetInt;android.widget.cts.AutoCompleteTextViewTest#testAccessDropDownAnchor;android.widget.cts.ScrollerTest#testIsFinished;android.widget.cts.TextViewTest#testAccessGravity;android.widget.cts.TableLayoutTest#testAccessColumnStretchable;android.widget.cts.ExpandableListViewTest#testSetOnGroupClickListener;android.widget.cts.AlphabetIndexerTest#testCompare;android.widget.cts.AbsListView_LayoutParamsTest#testAndroidTestCaseSetupProperly;android.widget.cts.LayoutDirectionTest#testLayoutDirectionDefaults;android.widget.cts.HeaderViewListAdapterTest#testAreAllItemsEnabled;android.widget.cts.LinearLayout_LayoutParamsTest#testDebug;android.widget.cts.CursorTreeAdapterTest#testGetCursor;android.widget.cts.ImageViewTest#testOnDraw;android.widget.cts.GalleryTest#testGetChildDrawingOrder;android.widget.cts.TextViewTest#testAccessInputExtras;android.widget.cts.LinearLayoutTest#testGetBaseline;android.widget.cts.RatingBarTest#testConstructor;android.widget.cts.RemoteViewsTest#testSetUri;android.widget.cts.SpinnerTest#testsetPromptId;android.widget.cts.RemoteViewsTest#testSetTextColor;android.widget.cts.VideoViewTest#testGetDuration;android.widget.cts.AdapterViewTest#testGetCount;android.widget.cts.MultiAutoCompleteTextView_CommaTokenizerTest#testFindTokenStart;android.widget.cts.ImageViewTest#testSetImageBitmap;android.widget.cts.HeaderViewListAdapterTest#testUnregisterDataSetObserver;android.widget.cts.PopupWindowTest#testAccessOutsideTouchable;android.widget.cts.EditTextTest#testSetEllipsize;android.widget.cts.SimpleAdapterTest#testGetCount;android.widget.cts.SpinnerTest#testSetOnItemClickListener;android.widget.cts.SlidingDrawerTest#testToggle;android.widget.cts.AbsSpinnerTest#testPointToPosition;android.widget.cts.ViewFlipperTest#testViewFlipper;android.widget.cts.TabHostTest#testDispatchKeyEvent;android.widget.cts.ExpandableListViewTest#testIsGroupExpanded;android.widget.cts.LayoutDirectionTest#testDirectionFromXml;android.widget.cts.TextViewTest#testVerifyDrawable;android.widget.cts.ProgressBarTest#testIncrementProgressBy;android.widget.cts.PopupWindowTest#testShowAsDropDown;android.widget.cts.ListViewTest#testCanAnimate;android.widget.cts.HorizontalScrollViewTest#testMeasureChild;android.widget.cts.RadioGroupTest#testClearCheck;android.widget.cts.SimpleAdapterTest#testConstructor;android.widget.cts.HorizontalScrollViewTest#testGetHorizontalFadingEdgeStrengths;android.widget.cts.CursorAdapterTest#testGetItem" />
 </TestPlan>
diff --git a/tests/plans/CTS-stable.xml b/tests/plans/CTS-stable.xml
index 984d709..1a46a3e 100644
--- a/tests/plans/CTS-stable.xml
+++ b/tests/plans/CTS-stable.xml
@@ -7,11 +7,13 @@
   <Entry uri="android.accounts"/>
   <Entry uri="android.admin"/>
   <Entry uri="android.animation"/>
-  <Entry uri="android.app" exclude="android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.AlertDialogTest#testCallback"/>
+  <Entry uri="android.app" exclude="android.app.cts.ActivityManagerTest#testIsRunningInTestHarness;android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.ExpandableListActivityTest#testCallback" />
+  <Entry uri="android.bionic"/>
   <Entry uri="android.bluetooth"/>
   <Entry uri="android.calendarcommon"/>
   <Entry uri="android.content"/>
   <Entry uri="android.core.tests.libcore.package.com"/>
+  <Entry uri="android.core.tests.libcore.package.conscrypt"/>
   <Entry uri="android.core.tests.libcore.package.dalvik"/>
   <Entry uri="android.core.tests.libcore.package.libcore"/>
   <Entry uri="android.core.tests.libcore.package.org"/>
@@ -29,18 +31,18 @@
   <Entry uri="android.gesture"/>
   <Entry uri="android.graphics"/>
   <Entry uri="android.graphics2"/>
-  <Entry uri="android.hardware" exclude="android.hardware.cts.CameraTest#testCancelAutofocus"/>
+  <Entry uri="android.hardware" exclude="android.hardware.cts.SensorIntegrationTests#testAccelerometerDoesNotStopGyroscope;android.hardware.cts.SensorIntegrationTests#testsAccelerometerDoesnNotStopMagnetometer;android.hardware.cts.SensorIntegrationTests#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorIntegrationTests#testBatchAndFlush;android.hardware.cts.SensorIntegrationTests#testGyroscopeDoesNotStopAccelerometer;android.hardware.cts.SensorIntegrationTests#testGyroscopeDoesNotStopMagnetometer;android.hardware.cts.SensorIntegrationTests#testMagnetometerDoesNotStopAccelerometer;android.hardware.cts.SensorIntegrationTests#testMagnetometerDoesNotStopGyroscope;android.hardware.cts.SensorMagneticFieldTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorMagneticFieldTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorMagneticFieldTest#testFrequencyAccuracy;android.hardware.cts.SensorMagneticFieldTest#testOneClientSeveralThreads;android.hardware.cts.SensorMagneticFieldTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorMagneticFieldTest#testStandardDeviationWhileStatic;android.hardware.cts.SensorMagneticFieldTest#testStoppingOtherClients;android.hardware.cts.SensorMagneticFieldTest#testStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorAccelerometerTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testFrequencyAccuracy;android.hardware.cts.SensorAccelerometerTest#testOneClientSeveralThreads;android.hardware.cts.SensorAccelerometerTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorGyroscopeTest#testBatchingStoppingOtherClients;android.hardware.cts.SensorGyroscopeTest#testBatchingStoppingOtherClientsBatching;android.hardware.cts.SensorGyroscopeTest#testFrequencyAccuracy;android.hardware.cts.SensorGyroscopeTest#testOneClientSeveralThreads;android.hardware.cts.SensorGyroscopeTest#testOneClientSeveralThreadsBatching;android.hardware.cts.SensorGyroscopeTest#testStandardDeviationWhilStatic;android.hardware.cts.SensorGyroscopeTest#testStoppingOtherClients;android.hardware.cts.SensorGyroscopeTest#testStoppingOtherClientsBatching;android.hardware.cts.SensorAccelerometerTest#testStandardDeviationWhileStatic;android.hardware.cts.SensorAccelerometerTest#testStoppingOtherClients;android.hardware.cts.SensorAccelerometerTest#testStoppingOtherClientsBatching;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingRequest;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraJpeg;android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata;android.hardware.cts.CameraTest#testImmediateZoom;android.hardware.cts.CameraTest#testPreviewCallback;android.hardware.cts.CameraTest#testSmoothZoom;android.hardware.cts.CameraTest#testVideoSnapshot;android.hardware.cts.CameraGLTest#testSetPreviewTextureBothCallbacks;android.hardware.cts.CameraGLTest#testSetPreviewTexturePreviewCallback" />
   <Entry uri="android.holo"/>
   <Entry uri="android.jni"/>
   <Entry uri="android.keystore"/>
   <Entry uri="android.location"/>
-  <Entry uri="android.media" exclude="android.media.cts.DecodeEditEncodeTest#testVideoEditQCIF"/>
-  <Entry uri="android.mediastress"/>
+  <Entry uri="android.media" exclude="android.media.cts.StreamingMediaPlayerTest#testHLS" />
+  <Entry uri="android.mediastress" exclude="android.mediastress.cts.NativeMediaTest#test480pPlay" />
   <Entry uri="android.nativemedia.sl"/>
   <Entry uri="android.nativemedia.xa"/>
   <Entry uri="android.nativeopengl"/>
   <Entry uri="android.ndef"/>
-  <Entry uri="android.net" exclude="android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.trafficStatsTest#testTrafficStatsForLocalhost;android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp"/>
+  <Entry uri="android.net" exclude="android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp;android.net.cts.DnsTest#testDnsWorks;android.net.cts.TrafficStatsTest#testTrafficStatsForLocalhost;android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_bind;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_simple;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_wrapping" />
   <Entry uri="android.opengl"/>
   <Entry uri="android.openglperf"/>
   <Entry uri="android.os"/>
@@ -48,10 +50,12 @@
   <Entry uri="android.permission2"/>
   <Entry uri="android.preference"/>
   <Entry uri="android.preference2"/>
-  <Entry uri="android.provider" exclude="android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithBitmap;android.provider.cts.MediaStore_Images_MediaTes#testInsertImageWithImagePath;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryExternalMiniThumbnails"/>
+  <Entry uri="android.provider" exclude="android.provider.cts.CalendarTest#testRemindersAlarm" />
   <Entry uri="android.renderscript"/>
+  <Entry uri="android.rscpp"/>
+  <Entry uri="android.rsg"/>
   <Entry uri="android.sax"/>
-  <Entry uri="android.security"/>
+  <Entry uri="android.security" exclude="android.security.cts.BannedFilesTest#testNoSu;android.security.cts.BannedFilesTest#testNoSuInPath;android.security.cts.PackageSignatureTest#testPackageSignatures" />
   <Entry uri="android.speech"/>
   <Entry uri="android.telephony"/>
   <Entry uri="android.tests.appsecurity"/>
@@ -60,9 +64,20 @@
   <Entry uri="android.textureview"/>
   <Entry uri="android.theme"/>
   <Entry uri="android.uiautomator"/>
+  <Entry uri="android.usb"/>
   <Entry uri="android.util"/>
   <Entry uri="android.view"/>
-  <Entry uri="android.webkit"/>
-  <Entry uri="android.widget"/>
+  <Entry uri="android.webkit" exclude="android.webkit.cts.WebViewClientTest#testDoUpdateVisitedHistory;android.webkit.cts.WebViewClientTest#testLoadPage;android.webkit.cts.WebViewClientTest#testOnFormResubmission;android.webkit.cts.WebViewClientTest#testOnReceivedError;android.webkit.cts.WebViewClientTest#testOnReceivedHttpAuthRequest;android.webkit.cts.WebViewClientTest#testOnScaleChanged;android.webkit.cts.WebViewClientTest#testOnUnhandledKeyEvent;android.webkit.cts.WebViewTest#testSetInitialScale" />
+  <Entry uri="android.widget" exclude="android.widget.cts.GridViewTest#testSetNumColumns" />
+  <Entry uri="com.android.pts.bootup"/>
+  <Entry uri="com.android.pts.browserbench"/>
+  <Entry uri="com.android.pts.dram"/>
+  <Entry uri="com.android.pts.filesystemperf"/>
+  <Entry uri="com.android.pts.jank.opengl"/>
+  <Entry uri="com.android.pts.opengl"/>
+  <Entry uri="com.android.pts.simplecpu"/>
+  <Entry uri="com.android.pts.ui"/>
+  <Entry uri="com.android.pts.uihost"/>
+  <Entry uri="com.android.pts.videoperf"/>
   <Entry uri="zzz.android.monkey"/>
 </TestPlan>
diff --git a/tests/res/layout/windowstub_presentation.xml b/tests/res/layout/windowstub_presentation.xml
new file mode 100644
index 0000000..80490c4
--- /dev/null
+++ b/tests/res/layout/windowstub_presentation.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2013 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:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+    <Button
+        android:id="@+id/presentation_button1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_1" />
+    <Button
+        android:id="@+id/presentation_button2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_2" />
+    <Button
+        android:id="@+id/presentation_button3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_weight="1"
+        android:text="@string/vertical_text_3" />
+</LinearLayout>
diff --git a/tests/src/android/webkit/cts/WebViewStartupStubActivity.java b/tests/src/android/webkit/cts/WebViewStartupStubActivity.java
index 6d56efd..f902a48 100644
--- a/tests/src/android/webkit/cts/WebViewStartupStubActivity.java
+++ b/tests/src/android/webkit/cts/WebViewStartupStubActivity.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.view.ViewGroup;
 import android.webkit.WebView;
 
 public class WebViewStartupStubActivity extends Activity {
@@ -39,8 +40,9 @@
     }
 
     public void detachAndDestroyWebView() {
-        setContentView(null);
         if (mWebView != null) {
+            ViewGroup vg = (ViewGroup)mWebView.getParent();
+            vg.removeView(mWebView);
             mWebView.destroy();
         }
     }
diff --git a/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java b/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
index 0dfd504..012148d 100644
--- a/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
+++ b/tests/tests/app/src/android/app/cts/SystemFeaturesTest.java
@@ -229,6 +229,10 @@
                 Sensor.TYPE_LIGHT);
         assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_PROXIMITY,
                 Sensor.TYPE_PROXIMITY);
+        assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_STEP_COUNTER,
+                Sensor.TYPE_STEP_COUNTER);
+        assertFeatureForSensor(featuresLeft, PackageManager.FEATURE_SENSOR_STEP_DETECTOR,
+                Sensor.TYPE_STEP_DETECTOR);
 
         assertTrue("Assertions need to be added to this test for " + featuresLeft,
                 featuresLeft.isEmpty());
diff --git a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
index 30a1f67..85159a8 100644
--- a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
+++ b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
@@ -68,9 +68,12 @@
                 reportedVersion, getVersionFromPackageManager(mActivity));
 
         assertGlVersionString(1);
-        if (detectedVersion >= 2) {
+        if (detectedVersion == 2) {
             restartActivityWithClientVersion(2);
             assertGlVersionString(2);
+        } else if (detectedVersion == 3) {
+            restartActivityWithClientVersion(3);
+            assertGlVersionString(3);
         }
     }
 
@@ -190,9 +193,6 @@
         String versionString = "" + majorVersion;
         String message = "OpenGL version string '" + mActivity.getVersionString()
                 + "' is not " + majorVersion + ".0+.";
-        if (majorVersion == 2) {
-             versionString = "(2|3)";
-        }
         assertTrue(message, Pattern.matches(".*OpenGL.*ES.*" + versionString + "\\.\\d.*",
                 mActivity.getVersionString()));
     }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java
new file mode 100644
index 0000000..6a708e3
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCaptureResultTest.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright 2013 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 android.hardware.camera2.cts;
+
+import android.content.Context;
+import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraMetadata;
+import android.hardware.camera2.CaptureFailure;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
+import android.hardware.camera2.Size;
+import static android.hardware.camera2.cts.CameraTestUtils.*;
+import android.media.ImageReader;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.test.AndroidTestCase;
+import android.util.Log;
+import android.view.Surface;
+
+import com.android.ex.camera2.blocking.BlockingStateListener;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class CameraCaptureResultTest extends AndroidTestCase {
+    private static final String TAG = "CameraCaptureResultTest";
+    private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
+
+    private CameraManager mCameraManager;
+    private HandlerThread mHandlerThread;
+    private Handler mHandler;
+    private ImageReader mImageReader;
+    private Surface mSurface;
+    private BlockingStateListener mCameraListener;
+
+    private static final int MAX_NUM_IMAGES = 5;
+    private static final int NUM_FRAMES_VERIFIED = 300;
+    private static final long WAIT_FOR_RESULT_TIMEOUT_MS = 3000;
+
+    // List that includes all public keys from CaptureResult
+    List<CameraMetadata.Key<?>> mAllKeys;
+
+    // List tracking the failed test keys.
+    List<CameraMetadata.Key<?>> mFailedKeys = new ArrayList<CameraMetadata.Key<?>>();
+
+    @Override
+    public void setContext(Context context) {
+        mAllKeys = getAllCaptureResultKeys();
+        super.setContext(context);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
+        assertNotNull("Can't connect to camera manager", mCameraManager);
+        mHandlerThread = new HandlerThread(TAG);
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mCameraListener = new BlockingStateListener();
+        mFailedKeys.clear();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mHandlerThread.quitSafely();
+        super.tearDown();
+    }
+
+    public void testCameraCaptureResultAllKeys() throws Exception {
+        /**
+         * Hardcode a key waiver list for the keys we want to skip the sanity check.
+         * FIXME: We need get ride of this list, see bug 11116270.
+         */
+        List<CameraMetadata.Key<?>> waiverkeys = new ArrayList<CameraMetadata.Key<?>>();
+        waiverkeys.add(CaptureResult.EDGE_MODE);
+        waiverkeys.add(CaptureResult.JPEG_GPS_COORDINATES);
+        waiverkeys.add(CaptureResult.JPEG_GPS_PROCESSING_METHOD);
+        waiverkeys.add(CaptureResult.JPEG_GPS_TIMESTAMP);
+        waiverkeys.add(CaptureResult.JPEG_ORIENTATION);
+        waiverkeys.add(CaptureResult.JPEG_QUALITY);
+        waiverkeys.add(CaptureResult.JPEG_THUMBNAIL_QUALITY);
+        waiverkeys.add(CaptureResult.JPEG_THUMBNAIL_SIZE);
+        waiverkeys.add(CaptureResult.SENSOR_TEMPERATURE);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_BLUE);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_GREEN);
+        waiverkeys.add(CaptureResult.TONEMAP_CURVE_RED);
+        waiverkeys.add(CaptureResult.TONEMAP_MODE);
+        waiverkeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_GAINS);
+        waiverkeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_TRANSFORM);
+        waiverkeys.add(CaptureResult.STATISTICS_SCENE_FLICKER);
+
+        String[] ids = mCameraManager.getCameraIdList();
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull("CameraCharacteristics shouldn't be null", props);
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            if (hwLevel != CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL) {
+                continue;
+            }
+            // TODO: check for LIMITED keys
+
+            CameraDevice camera = null;
+            try {
+                Size[] sizes = CameraTestUtils.getSupportedSizeForFormat(
+                        ImageFormat.YUV_420_888, ids[i], mCameraManager);
+                CameraTestUtils.assertArrayNotEmpty(sizes, "Available sizes shouldn't be empty");
+                createDefaultSurface(sizes[0]);
+
+                if (VERBOSE) {
+                    Log.v(TAG, "Testing camera " + ids[i] + "for size " + sizes[0].toString());
+                }
+
+                camera = CameraTestUtils.openCamera(
+                        mCameraManager, ids[i], mCameraListener, mHandler);
+                assertNotNull(
+                        String.format("Failed to open camera device %s", ids[i]), camera);
+                mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
+
+                List<Surface> outputSurfaces = new ArrayList<Surface>(1);
+                outputSurfaces.add(mSurface);
+                camera.configureOutputs(outputSurfaces);
+                mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+                mCameraListener.waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
+
+                CaptureRequest.Builder requestBuilder =
+                        camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
+                assertNotNull("Failed to create capture request", requestBuilder);
+                requestBuilder.addTarget(mSurface);
+
+                // Enable face detection if supported
+                byte[] faceModes = props.get(
+                        CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES);
+                assertNotNull("Available face detection modes shouldn't be null", faceModes);
+                for (int m = 0; m < faceModes.length; m++) {
+                    if (faceModes[m] == CameraMetadata.STATISTICS_FACE_DETECT_MODE_FULL) {
+                        if (VERBOSE) {
+                            Log.v(TAG, "testCameraCaptureResultAllKeys - " +
+                                    "setting facedetection mode to full");
+                        }
+                        requestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE,
+                                (int)faceModes[m]);
+                    }
+                }
+
+                // Enable lensShading mode, it should be supported by full mode device.
+                requestBuilder.set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE,
+                        CameraMetadata.STATISTICS_LENS_SHADING_MAP_MODE_ON);
+
+                SimpleCaptureListener captureListener = new SimpleCaptureListener();
+                camera.setRepeatingRequest(requestBuilder.build(), captureListener, mHandler);
+
+                for (int m = 0; m < NUM_FRAMES_VERIFIED; m++) {
+                    if(VERBOSE) {
+                        Log.v(TAG, "Testing frame " + m);
+                    }
+                    validateCaptureResult(
+                            captureListener.getCaptureResult(WAIT_FOR_RESULT_TIMEOUT_MS),
+                            waiverkeys);
+                }
+
+                // Stop repeat, wait for captures to complete, and disconnect from surfaces
+                camera.configureOutputs(/*outputs*/ null);
+                mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+                mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_IDLE_TIMEOUT_MS);
+                // Camera has disconnected, clear out the reader
+                mSurface.release();
+                mImageReader.close();
+            } finally {
+                if (camera != null) {
+                    camera.close();
+                }
+            }
+
+        }
+    }
+
+    private void validateCaptureResult(CaptureResult result,
+            List<CameraMetadata.Key<?>> skippedKeys) throws Exception {
+        for (CameraMetadata.Key<?> key : mAllKeys) {
+            if (!skippedKeys.contains(key) && result.get(key) == null) {
+                mFailedKeys.add(key);
+            }
+        }
+
+        StringBuffer failedKeyNames = new StringBuffer("Below Keys have null values:\n");
+        for (CameraMetadata.Key<?> key : mFailedKeys) {
+            failedKeyNames.append(key.getName() + "\n");
+        }
+
+        assertTrue("Some keys have null values, " + failedKeyNames.toString(),
+                mFailedKeys.isEmpty());
+    }
+
+    private static class SimpleCaptureListener extends CameraDevice.CaptureListener {
+        LinkedBlockingQueue<CaptureResult> mQueue = new LinkedBlockingQueue<CaptureResult>();
+
+        @Override
+        public void onCaptureStarted(CameraDevice camera, CaptureRequest request, long timestamp)
+        {
+        }
+
+        @Override
+        public void onCaptureCompleted(CameraDevice camera, CaptureRequest request,
+                CaptureResult result) {
+            try {
+                mQueue.put(result);
+            } catch (InterruptedException e) {
+                throw new UnsupportedOperationException(
+                        "Can't handle InterruptedException in onCaptureCompleted");
+            }
+        }
+
+        @Override
+        public void onCaptureFailed(CameraDevice camera, CaptureRequest request,
+                CaptureFailure failure) {
+        }
+
+        @Override
+        public void onCaptureSequenceCompleted(CameraDevice camera, int sequenceId,
+                int frameNumber) {
+        }
+
+        public CaptureResult getCaptureResult(long timeout) throws InterruptedException {
+            CaptureResult result = mQueue.poll(timeout, TimeUnit.MILLISECONDS);
+            assertNotNull("Wait for a capture result timed out in " + timeout + "ms", result);
+            return result;
+        }
+    }
+
+    private void createDefaultSurface(Size sz) {
+        mImageReader =
+                ImageReader.newInstance(sz.getWidth(),
+                        sz.getHeight(),
+                        ImageFormat.YUV_420_888,
+                        MAX_NUM_IMAGES);
+        mImageReader.setOnImageAvailableListener(new ImageDropperListener(), mHandler);
+        mSurface = mImageReader.getSurface();
+    }
+
+    /**
+     * TODO: Use CameraCharacteristics.getAvailableCaptureResultKeys() once we can filter out
+     * @hide keys.
+     *
+     */
+
+    /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
+     * The key entries below this point are generated from metadata
+     * definitions in /system/media/camera/docs. Do not modify by hand or
+     * modify the comment blocks at the start or end.
+     *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
+
+    private static List<CameraMetadata.Key<?>> getAllCaptureResultKeys() {
+        ArrayList<CameraMetadata.Key<?>> resultKeys = new ArrayList<CameraMetadata.Key<?>>();
+        resultKeys.add(CaptureResult.COLOR_CORRECTION_TRANSFORM);
+        resultKeys.add(CaptureResult.COLOR_CORRECTION_GAINS);
+        resultKeys.add(CaptureResult.CONTROL_AE_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_AF_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AF_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_AWB_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AWB_REGIONS);
+        resultKeys.add(CaptureResult.CONTROL_MODE);
+        resultKeys.add(CaptureResult.CONTROL_AE_STATE);
+        resultKeys.add(CaptureResult.CONTROL_AF_STATE);
+        resultKeys.add(CaptureResult.CONTROL_AWB_STATE);
+        resultKeys.add(CaptureResult.EDGE_MODE);
+        resultKeys.add(CaptureResult.FLASH_MODE);
+        resultKeys.add(CaptureResult.FLASH_STATE);
+        resultKeys.add(CaptureResult.JPEG_GPS_COORDINATES);
+        resultKeys.add(CaptureResult.JPEG_GPS_PROCESSING_METHOD);
+        resultKeys.add(CaptureResult.JPEG_GPS_TIMESTAMP);
+        resultKeys.add(CaptureResult.JPEG_ORIENTATION);
+        resultKeys.add(CaptureResult.JPEG_QUALITY);
+        resultKeys.add(CaptureResult.JPEG_THUMBNAIL_QUALITY);
+        resultKeys.add(CaptureResult.JPEG_THUMBNAIL_SIZE);
+        resultKeys.add(CaptureResult.LENS_APERTURE);
+        resultKeys.add(CaptureResult.LENS_FILTER_DENSITY);
+        resultKeys.add(CaptureResult.LENS_FOCAL_LENGTH);
+        resultKeys.add(CaptureResult.LENS_FOCUS_DISTANCE);
+        resultKeys.add(CaptureResult.LENS_OPTICAL_STABILIZATION_MODE);
+        resultKeys.add(CaptureResult.LENS_FOCUS_RANGE);
+        resultKeys.add(CaptureResult.LENS_STATE);
+        resultKeys.add(CaptureResult.NOISE_REDUCTION_MODE);
+        resultKeys.add(CaptureResult.REQUEST_FRAME_COUNT);
+        resultKeys.add(CaptureResult.SCALER_CROP_REGION);
+        resultKeys.add(CaptureResult.SENSOR_EXPOSURE_TIME);
+        resultKeys.add(CaptureResult.SENSOR_FRAME_DURATION);
+        resultKeys.add(CaptureResult.SENSOR_SENSITIVITY);
+        resultKeys.add(CaptureResult.SENSOR_TIMESTAMP);
+        resultKeys.add(CaptureResult.SENSOR_TEMPERATURE);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_DETECT_MODE);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_IDS);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_LANDMARKS);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_RECTANGLES);
+        resultKeys.add(CaptureResult.STATISTICS_FACE_SCORES);
+        resultKeys.add(CaptureResult.STATISTICS_LENS_SHADING_MAP);
+        resultKeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_GAINS);
+        resultKeys.add(CaptureResult.STATISTICS_PREDICTED_COLOR_TRANSFORM);
+        resultKeys.add(CaptureResult.STATISTICS_SCENE_FLICKER);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_BLUE);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_GREEN);
+        resultKeys.add(CaptureResult.TONEMAP_CURVE_RED);
+        resultKeys.add(CaptureResult.TONEMAP_MODE);
+        resultKeys.add(CaptureResult.BLACK_LEVEL_LOCK);
+
+        // Add STATISTICS_FACES key separately here because it is not
+        // defined in metadata xml file.
+        resultKeys.add(CaptureResult.STATISTICS_FACES);
+
+        return resultKeys;
+    }
+
+    /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
+     * End generated code
+     *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
+}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
index 1a07a39..1b892ba 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
@@ -63,14 +63,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.aeAvailableAntibandingModes",
-                    props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.aeAvailableAntibandingModes",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+            {
+
+                assertNotNull("Invalid property: android.control.aeAvailableAntibandingModes",
+                        props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeAvailableAntibandingModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+            }
+
         }
     }
 
@@ -80,14 +86,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.aeAvailableTargetFpsRanges",
-                    props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.aeAvailableTargetFpsRanges",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+            {
+
+                assertNotNull("Invalid property: android.control.aeAvailableTargetFpsRanges",
+                        props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeAvailableTargetFpsRanges", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+            }
+
         }
     }
 
@@ -97,14 +109,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.aeCompensationRange",
-                    props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.aeCompensationRange",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+            {
+
+                assertNotNull("Invalid property: android.control.aeCompensationRange",
+                        props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeCompensationRange", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+            }
+
         }
     }
 
@@ -114,14 +132,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.aeCompensationStep",
-                    props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.aeCompensationStep",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+            {
+
+                assertNotNull("Invalid property: android.control.aeCompensationStep",
+                        props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.aeCompensationStep", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+            }
+
         }
     }
 
@@ -131,14 +155,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.afAvailableModes",
-                    props.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.afAvailableModes",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+            {
+
+                assertNotNull("Invalid property: android.control.afAvailableModes",
+                        props.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.afAvailableModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+            }
+
         }
     }
 
@@ -148,14 +178,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.availableEffects",
-                    props.get(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.availableEffects",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+            {
+
+                assertNotNull("Invalid property: android.control.availableEffects",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableEffects", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+            }
+
         }
     }
 
@@ -165,14 +201,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.availableSceneModes",
-                    props.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.availableSceneModes",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+            {
+
+                assertNotNull("Invalid property: android.control.availableSceneModes",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableSceneModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+            }
+
         }
     }
 
@@ -182,14 +224,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.availableVideoStabilizationModes",
-                    props.get(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.availableVideoStabilizationModes",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+            {
+
+                assertNotNull("Invalid property: android.control.availableVideoStabilizationModes",
+                        props.get(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.availableVideoStabilizationModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+            }
+
         }
     }
 
@@ -199,14 +247,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.awbAvailableModes",
-                    props.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.awbAvailableModes",
-                    allKeys.contains(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+            {
+
+                assertNotNull("Invalid property: android.control.awbAvailableModes",
+                        props.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.awbAvailableModes", allKeys.contains(
+                        CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+            }
+
         }
     }
 
@@ -216,14 +270,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.control.maxRegions",
-                    props.get(CameraCharacteristics.CONTROL_MAX_REGIONS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.control.maxRegions",
-                    allKeys.contains(CameraCharacteristics.CONTROL_MAX_REGIONS));
+            {
+
+                assertNotNull("Invalid property: android.control.maxRegions",
+                        props.get(CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.control.maxRegions", allKeys.contains(
+                        CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+            }
+
         }
     }
 
@@ -233,14 +293,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.flash.info.available",
-                    props.get(CameraCharacteristics.FLASH_INFO_AVAILABLE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.flash.info.available",
-                    allKeys.contains(CameraCharacteristics.FLASH_INFO_AVAILABLE));
+            {
+
+                assertNotNull("Invalid property: android.flash.info.available",
+                        props.get(CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.flash.info.available", allKeys.contains(
+                        CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+            }
+
         }
     }
 
@@ -250,14 +316,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.jpeg.availableThumbnailSizes",
-                    props.get(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.jpeg.availableThumbnailSizes",
-                    allKeys.contains(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+            {
+
+                assertNotNull("Invalid property: android.jpeg.availableThumbnailSizes",
+                        props.get(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.jpeg.availableThumbnailSizes", allKeys.contains(
+                        CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+            }
+
         }
     }
 
@@ -267,14 +339,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.facing",
-                    props.get(CameraCharacteristics.LENS_FACING));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.facing",
-                    allKeys.contains(CameraCharacteristics.LENS_FACING));
+            {
+
+                assertNotNull("Invalid property: android.lens.facing",
+                        props.get(CameraCharacteristics.LENS_FACING));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.facing", allKeys.contains(
+                        CameraCharacteristics.LENS_FACING));
+
+            }
+
         }
     }
 
@@ -284,14 +362,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.availableApertures",
-                    props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.availableApertures",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableApertures",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableApertures", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+            }
+
         }
     }
 
@@ -301,14 +385,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.availableFilterDensities",
-                    props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.availableFilterDensities",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableFilterDensities",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableFilterDensities", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+            }
+
         }
     }
 
@@ -318,14 +408,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.availableFocalLengths",
-                    props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.availableFocalLengths",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableFocalLengths",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableFocalLengths", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+            }
+
         }
     }
 
@@ -335,14 +431,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.availableOpticalStabilization",
-                    props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.availableOpticalStabilization",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.availableOpticalStabilization",
+                        props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.availableOpticalStabilization", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+            }
+
         }
     }
 
@@ -352,14 +454,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.hyperfocalDistance",
-                    props.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.hyperfocalDistance",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.hyperfocalDistance",
+                        props.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.hyperfocalDistance", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+            }
+
         }
     }
 
@@ -369,14 +477,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.minimumFocusDistance",
-                    props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.minimumFocusDistance",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.minimumFocusDistance",
+                        props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.minimumFocusDistance", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+            }
+
         }
     }
 
@@ -386,14 +500,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.lens.info.shadingMapSize",
-                    props.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.lens.info.shadingMapSize",
-                    allKeys.contains(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+            {
+
+                assertNotNull("Invalid property: android.lens.info.shadingMapSize",
+                        props.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.lens.info.shadingMapSize", allKeys.contains(
+                        CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+            }
+
         }
     }
 
@@ -403,14 +523,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.request.maxNumOutputStreams",
-                    props.get(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.request.maxNumOutputStreams",
-                    allKeys.contains(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+            {
+
+                assertNotNull("Invalid property: android.request.maxNumOutputStreams",
+                        props.get(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.request.maxNumOutputStreams", allKeys.contains(
+                        CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+            }
+
         }
     }
 
@@ -420,14 +546,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableFormats",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableFormats",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableFormats",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableFormats", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+            }
+
         }
     }
 
@@ -437,14 +569,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableJpegMinDurations",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableJpegMinDurations",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableJpegMinDurations",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableJpegMinDurations", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+            }
+
         }
     }
 
@@ -454,14 +592,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableJpegSizes",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableJpegSizes",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableJpegSizes",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableJpegSizes", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+            }
+
         }
     }
 
@@ -471,14 +615,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableMaxDigitalZoom",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableMaxDigitalZoom",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableMaxDigitalZoom",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableMaxDigitalZoom", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+            }
+
         }
     }
 
@@ -488,14 +638,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableProcessedMinDurations",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableProcessedMinDurations",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableProcessedMinDurations",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableProcessedMinDurations", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+            }
+
         }
     }
 
@@ -505,14 +661,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.scaler.availableProcessedSizes",
-                    props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.scaler.availableProcessedSizes",
-                    allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+            {
+
+                assertNotNull("Invalid property: android.scaler.availableProcessedSizes",
+                        props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.scaler.availableProcessedSizes", allKeys.contains(
+                        CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+            }
+
         }
     }
 
@@ -522,14 +684,24 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.baseGainFactor",
-                    props.get(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.baseGainFactor",
-                    allKeys.contains(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+                    hwLevel);
+            if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+            {
+
+                assertNotNull("Invalid property: android.sensor.baseGainFactor",
+                        props.get(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.baseGainFactor", allKeys.contains(
+                        CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+            }
+
         }
     }
 
@@ -539,14 +711,24 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.maxAnalogSensitivity",
-                    props.get(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.maxAnalogSensitivity",
-                    allKeys.contains(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+            Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+            assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+                    hwLevel);
+            if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+            {
+
+                assertNotNull("Invalid property: android.sensor.maxAnalogSensitivity",
+                        props.get(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.maxAnalogSensitivity", allKeys.contains(
+                        CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+            }
+
         }
     }
 
@@ -556,14 +738,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.orientation",
-                    props.get(CameraCharacteristics.SENSOR_ORIENTATION));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.orientation",
-                    allKeys.contains(CameraCharacteristics.SENSOR_ORIENTATION));
+            {
+
+                assertNotNull("Invalid property: android.sensor.orientation",
+                        props.get(CameraCharacteristics.SENSOR_ORIENTATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.orientation", allKeys.contains(
+                        CameraCharacteristics.SENSOR_ORIENTATION));
+
+            }
+
         }
     }
 
@@ -573,14 +761,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.info.activeArraySize",
-                    props.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.info.activeArraySize",
-                    allKeys.contains(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.activeArraySize",
+                        props.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.activeArraySize", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+            }
+
         }
     }
 
@@ -590,14 +784,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.info.sensitivityRange",
-                    props.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.info.sensitivityRange",
-                    allKeys.contains(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.sensitivityRange",
+                        props.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.sensitivityRange", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+            }
+
         }
     }
 
@@ -607,14 +807,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.info.exposureTimeRange",
-                    props.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.info.exposureTimeRange",
-                    allKeys.contains(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.exposureTimeRange",
+                        props.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.exposureTimeRange", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+            }
+
         }
     }
 
@@ -624,14 +830,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.info.maxFrameDuration",
-                    props.get(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.info.maxFrameDuration",
-                    allKeys.contains(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.maxFrameDuration",
+                        props.get(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.maxFrameDuration", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+            }
+
         }
     }
 
@@ -641,14 +853,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.sensor.info.physicalSize",
-                    props.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.sensor.info.physicalSize",
-                    allKeys.contains(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+            {
+
+                assertNotNull("Invalid property: android.sensor.info.physicalSize",
+                        props.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.sensor.info.physicalSize", allKeys.contains(
+                        CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+            }
+
         }
     }
 
@@ -658,14 +876,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.statistics.info.availableFaceDetectModes",
-                    props.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.statistics.info.availableFaceDetectModes",
-                    allKeys.contains(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+            {
+
+                assertNotNull("Invalid property: android.statistics.info.availableFaceDetectModes",
+                        props.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.statistics.info.availableFaceDetectModes", allKeys.contains(
+                        CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+            }
+
         }
     }
 
@@ -675,14 +899,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.statistics.info.maxFaceCount",
-                    props.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.statistics.info.maxFaceCount",
-                    allKeys.contains(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+            {
+
+                assertNotNull("Invalid property: android.statistics.info.maxFaceCount",
+                        props.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.statistics.info.maxFaceCount", allKeys.contains(
+                        CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+            }
+
         }
     }
 
@@ -692,14 +922,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.tonemap.maxCurvePoints",
-                    props.get(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.tonemap.maxCurvePoints",
-                    allKeys.contains(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+            {
+
+                assertNotNull("Invalid property: android.tonemap.maxCurvePoints",
+                        props.get(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.tonemap.maxCurvePoints", allKeys.contains(
+                        CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+            }
+
         }
     }
 
@@ -709,14 +945,20 @@
             CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
             assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
                                         props);
-            assertNotNull("Invalid property: android.info.supportedHardwareLevel",
-                    props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
 
-            List<Key<?>> allKeys = props.getKeys();
-            assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
-                                        props));
-            assertTrue("Key not in keys list: android.info.supportedHardwareLevel",
-                    allKeys.contains(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+            {
+
+                assertNotNull("Invalid property: android.info.supportedHardwareLevel",
+                        props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+                List<Key<?>> allKeys = props.getKeys();
+                assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+                        ids[i], props));
+                assertTrue("Key not in keys list: android.info.supportedHardwareLevel", allKeys.contains(
+                        CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+            }
+
         }
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
index a2d965c..7f10cb8 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -24,6 +24,7 @@
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.Size;
 import android.media.Image;
+import android.media.ImageReader;
 import android.media.Image.Plane;
 import android.os.Handler;
 import android.util.Log;
@@ -52,6 +53,20 @@
     public static final int CAMERA_ACTIVE_TIMEOUT_MS = 500;
     public static final int CAMERA_BUSY_TIMEOUT_MS = 500;
 
+    public static class ImageDropperListener implements ImageReader.OnImageAvailableListener {
+        @Override
+        public void onImageAvailable(ImageReader reader) {
+            Image image = null;
+            try {
+                image = reader.acquireNextImage();
+            } finally {
+                if (image != null) {
+                    image.close();
+                }
+            }
+        }
+    }
+
     /**
      * Block until the camera is opened.
      *
@@ -214,21 +229,21 @@
         int format = image.getFormat();
         Plane[] planes = image.getPlanes();
         switch (format) {
-          case ImageFormat.YUV_420_888:
-          case ImageFormat.NV21:
-          case ImageFormat.YV12:
-              assertEquals("YUV420 format Images should have 3 planes", 3, planes.length);
-              break;
-          case ImageFormat.Y8:
-          case ImageFormat.Y16:
-              assertEquals("Y8/Y16 Image should have 1 plane", 1, planes.length);
-              break;
-          case ImageFormat.JPEG:
-              assertEquals("Jpeg Image should have one plane", 1, planes.length);
-              break;
-          default:
-              fail("Unsupported Image Format: " + format);
-      }
+            case ImageFormat.YUV_420_888:
+            case ImageFormat.NV21:
+            case ImageFormat.YV12:
+                assertEquals("YUV420 format Images should have 3 planes", 3, planes.length);
+                break;
+            case ImageFormat.Y8:
+            case ImageFormat.Y16:
+                assertEquals("Y8/Y16 Image should have 1 plane", 1, planes.length);
+                break;
+            case ImageFormat.JPEG:
+                assertEquals("Jpeg Image should have one plane", 1, planes.length);
+                break;
+            default:
+                fail("Unsupported Image Format: " + format);
+        }
     }
 
     public static void dumpFile(String fileName, byte[] data) {
diff --git a/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java b/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java
new file mode 100644
index 0000000..cff1fc6
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/consumerir/cts/ConsumerIrTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2013 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 android.hardware.consumerir.cts;
+
+import android.content.Context;
+import android.hardware.ConsumerIrManager;
+import android.util.Log;
+import android.content.pm.PackageManager;
+import android.test.AndroidTestCase;
+import java.io.IOException;
+
+/**
+ * Very basic test, just of the static methods of {@link
+ * android.hardware.ConsumerIrManager}.
+ */
+public class ConsumerIrTest extends AndroidTestCase {
+    private boolean mHasConsumerIr;
+    private ConsumerIrManager mCIR;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        mHasConsumerIr = getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_CONSUMER_IR);
+        if (mHasConsumerIr) {
+            mCIR = (ConsumerIrManager)getContext().getSystemService(
+                    Context.CONSUMER_IR_SERVICE);
+        }
+    }
+
+    public void test_hasIrEmitter() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+        assertTrue(mCIR.hasIrEmitter());
+    }
+
+    public void test_getCarrierFrequencies() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+
+        ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
+
+        assertTrue(freqs.length > 0);
+        for (ConsumerIrManager.CarrierFrequencyRange range : freqs) {
+            // Each range must be valid
+            assertTrue(range.getMinFrequency() > 0);
+            assertTrue(range.getMaxFrequency() > 0);
+            assertTrue(range.getMinFrequency() <= range.getMaxFrequency());
+        }
+    }
+
+
+    public void test_transmit() {
+        if (!mHasConsumerIr) {
+            // Skip the test if consumer IR is not present.
+            return;
+        }
+
+        ConsumerIrManager.CarrierFrequencyRange[] freqs = mCIR.getCarrierFrequencies();
+
+        int[] pattern = {1901, 4453, 625, 1614, 625, 1588, 625, 1614, 625, 442, 625, 442, 625,
+            468, 625, 442, 625, 494, 572, 1614, 625, 1588, 625, 1614, 625, 494, 572, 442, 651,
+            442, 625, 442, 625, 442, 625, 1614, 625, 1588, 651, 1588, 625, 442, 625, 494, 598,
+            442, 625, 442, 625, 520, 572, 442, 625, 442, 625, 442, 651, 1588, 625, 1614, 625,
+            1588, 625, 1614, 625, 1588, 625, 48958};
+
+        // just use the first frequency in the range
+        mCIR.transmit(freqs[0].getMinFrequency(), pattern);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
index 9d7dacb..788cb60 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
@@ -70,8 +70,8 @@
 
     private boolean mSurfaceTextureCallbackResult = false;
 
-    private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 1500;  // Milliseconds.
-    private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 3000;
+    private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 5000;  // Milliseconds.
+    private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 5000;
     private static final int WAIT_FOR_SNAPSHOT_TO_COMPLETE = 5000;
 
     private SurfaceTextureCallback mSurfaceTextureCallback = new SurfaceTextureCallback();
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index 979e27b..f877d8b 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -809,21 +809,6 @@
         assertTrue(mJpegPictureCallbackResult);
         exif = new ExifInterface(JPEG_PATH);
         assertFalse(exif.hasThumbnail());
-        // Primary image should still be valid for no thumbnail capture.
-        BitmapFactory.decodeFile(JPEG_PATH, bmpOptions);
-        if (!recording) {
-            assertTrue("Jpeg primary image size should match requested size",
-                    bmpOptions.outWidth == pictureSize.width &&
-                    bmpOptions.outHeight == pictureSize.height);
-        } else {
-            assertTrue(bmpOptions.outWidth >= recordingWidth ||
-                    bmpOptions.outWidth == size.width);
-            assertTrue(bmpOptions.outHeight >= recordingHeight ||
-                    bmpOptions.outHeight == size.height);
-        }
-
-        assertNotNull("Jpeg primary image data should be decodable",
-                BitmapFactory.decodeFile(JPEG_PATH));
     }
 
     @UiThreadTest
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorAccelerometerTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorAccelerometerTest.java
index 51fd5f6..2e33a5d 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorAccelerometerTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorAccelerometerTest.java
@@ -20,6 +20,8 @@
 import android.hardware.SensorManager;
 
 public class SensorAccelerometerTest extends SensorCommonTests {
+    private final int AXIS_COUNT = 3;
+
     @Override
     protected int getMaxFrequencySupportedInuS() {
         return 10000; // 100Hz
@@ -37,21 +39,13 @@
      */
     @Override
     public void testEventValidity() {
-        final float THRESHOLD = 0.25f; // m / s^2
-        validateSensorEvent(
-                0 /*x-axis*/,
-                0 /*y-axis*/,
-                SensorManager.STANDARD_GRAVITY /*z-axis*/,
-                THRESHOLD);
+        final float THRESHOLD = 0.5f; // m / s^2
+        validateNormForSensorEvent(SensorManager.STANDARD_GRAVITY, THRESHOLD, AXIS_COUNT);
     }
 
     @Override
-    public void testVarianceWhileStatic() {
-        final float THRESHOLD = 0.25f; // m / s^2
-        validateVarianceWhileStatic(
-                0 /*x-axis*/,
-                0 /*y-axis*/,
-                SensorManager.STANDARD_GRAVITY /*z-axis*/,
-                THRESHOLD);
+    public void testStandardDeviationWhileStatic() {
+        final float STANDARD_DEVIATION = 1f; // m / s^2
+        validateStandardDeviationWhileStatic(STANDARD_DEVIATION, AXIS_COUNT);
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorCommonTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorCommonTests.java
index 5cc65bb..b535c71 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorCommonTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorCommonTests.java
@@ -18,45 +18,34 @@
 
 import android.content.Context;
 
-import android.hardware.FlushCompleteListener;
 import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.hardware.TriggerEvent;
 import android.hardware.TriggerEventListener;
 
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.TestSensorManager;
+
 import android.os.PowerManager;
 
+import android.os.SystemClock;
 import android.test.AndroidTestCase;
 
-import java.util.List;
 import android.util.Log;
 
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import java.text.SimpleDateFormat;
-
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
+import java.util.List;
 import java.util.Random;
-import java.util.concurrent.ConcurrentLinkedDeque;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
+import junit.framework.Assert;
+
 /**
  * Class is not marked public to avoid TestRunner to pick the tests in it
  */
 abstract class SensorCommonTests extends AndroidTestCase {
     protected final String LOG_TAG = "TestRunner";
-
-    protected SensorManager mSensorManager;
-    protected Sensor mSensorUnderTest;
-    protected TestSensorListener mEventListener;
-
-    private FlushCompleteListener mFlushListener;
+    protected TestSensorManager mTestSensorManager;
     private PowerManager.WakeLock mWakeLock;
 
     protected SensorCommonTests() {}
@@ -71,15 +60,11 @@
      * Abstract test methods that sensors need to verify
      */
     public abstract void testEventValidity();
-    public abstract void testVarianceWhileStatic();
+    public abstract void testStandardDeviationWhileStatic();
 
     /**
      * Methods to control the behavior of the tests by concrete sensor tests
      */
-    protected int getWaitTimeoutInSeconds() {
-        return 30;
-    }
-
     protected int getHighNumberOfIterationsToExecute() {
         return 100;
     }
@@ -101,31 +86,27 @@
                 Context.POWER_SERVICE);
         mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getLogTag());
         mWakeLock.acquire();
-
-        mEventListener = new TestSensorListener();
-        mFlushListener = new TestFlushListener();
     }
 
     @Override
     protected void tearDown() throws Exception {
-        mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
-
-        mFlushListener = null;
-        mEventListener = null;
-        mSensorUnderTest = null;
+        if(mTestSensorManager != null) {
+            mTestSensorManager.close();
+            mTestSensorManager = null;
+        }
 
         releaseWakeLock();
     }
 
     @Override
     public void runBare() throws Throwable {
-        mSensorManager = (SensorManager) this.getContext().getSystemService(Context.SENSOR_SERVICE);
-        assertNotNull("getSystemService#Sensor_Service", mSensorManager);
+        SensorManager sensorManager = (SensorManager) this.getContext().getSystemService(Context.SENSOR_SERVICE);
+        assertNotNull("getSystemService#Sensor_Service", sensorManager);
 
-        List<Sensor> availableSensors = mSensorManager.getSensorList(this.getSensorType());
+        List<Sensor> availableSensors = sensorManager.getSensorList(this.getSensorType());
         // it is OK if there are no sensors available
         for(Sensor sensor : availableSensors) {
-            mSensorUnderTest = sensor;
+            mTestSensorManager = new TestSensorManager(this, sensorManager, sensor);
             super.runBare();
         }
     }
@@ -134,49 +115,34 @@
      * Test cases continuous mode.
      */
     public void testCanRegisterListener() {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                SensorManager.SENSOR_DELAY_NORMAL);
-        assertTrue("registerListener", result);
+        mTestSensorManager.registerListener(SensorManager.SENSOR_DELAY_NORMAL);
     }
 
     public void testNotTriggerSensor() {
         TestTriggerListener listener = new TestTriggerListener();
-        assertFalse(
-                "requestTriggerSensor",
-                mSensorManager.requestTriggerSensor(listener, mSensorUnderTest));
+        boolean result = mTestSensorManager.getUnderlyingSensorManager().requestTriggerSensor(
+                listener,
+                mTestSensorManager.getSensorUnderTest());
+        assertFalse("requestTriggerSensor", result);
     }
 
     public void testCanReceiveEvents() {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                SensorManager.SENSOR_DELAY_NORMAL);
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(5);
+        mTestSensorManager.collectEvents(SensorManager.SENSOR_DELAY_NORMAL, 5);
     }
 
     public void testMaxFrequency() {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                this.getMaxFrequencySupportedInuS());
-        assertTrue("registerListener", result);
+        // TODO: verify that events do arrive at the proper rate
+        mTestSensorManager.registerListener(this.getMaxFrequencySupportedInuS());
     }
 
     public void testEventsArriveInOrder() {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                SensorManager.SENSOR_DELAY_FASTEST);
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(100);
-
-        SensorEventForTest[] events = mEventListener.getAllEvents();
+        // TODO: test for other sensor frequencies, rely on helper test classes for sensors
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectEvents(
+                SensorManager.SENSOR_DELAY_FASTEST,
+                100);
         for(int i = 1; i < events.length; ++i) {
-            long previousTimestamp = events[i-1].getTimestamp();
-            long timestamp = events[i].getTimestamp();
+            long previousTimestamp = events[i-1].timestamp;
+            long timestamp = events[i].timestamp;
             assertTrue(
                     String.format("[timestamp:%d] %d >= %d", i, previousTimestamp, timestamp),
                     previousTimestamp < timestamp);
@@ -184,17 +150,7 @@
     }
 
     public void testStartStopRepeatedly() {
-        for(int i = 0; i < this.getLowNumberOfIterationsToExecute(); ++i) {
-            String iterationInfo = String.format("registerListener:%d", i);
-            boolean result = mSensorManager.registerListener(
-                    mEventListener,
-                    mSensorUnderTest,
-                    SensorManager.SENSOR_DELAY_FASTEST);
-            assertTrue(iterationInfo, result);
-            mEventListener.waitForEvents(1, iterationInfo);
-
-            mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
-        }
+        validateRegisterUnregisterRepeteadly(mTestSensorManager);
     }
 
     public void testUpdateRate() {
@@ -221,33 +177,87 @@
                     rate = this.getMaxFrequencySupportedInuS() * generator.nextInt(10);
             }
 
-            String iterationInfo = String.format("registerListener:%d, rate:%d", i, rate);
-            assertTrue(
-                    iterationInfo,
-                    mSensorManager.registerListener(mEventListener, mSensorUnderTest, rate));
-
-            mEventListener.waitForEvents(generator.nextInt(5) + 1, iterationInfo);
-            mEventListener.clearEvents();
-
-            mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
+            // TODO: check that the rate has indeed changed
+            mTestSensorManager.collectEvents(
+                    rate,
+                    generator.nextInt(5) + 1,
+                    String.format("iteration:%d, rate:%d", i, rate));
         }
     }
 
-    public void testSeveralClients() throws InterruptedException {
-        ArrayList<Thread> threads = new ArrayList<Thread>();
-        for(int i = 0; i < this.getNumberOfThreadsToUse(); ++i) {
-            threads.add(new Thread() {
-                @Override
-                public void run() {
-                    testStartStopRepeatedly();
-                }
-            });
-        }
+    public void testOneClientSeveralThreads() throws InterruptedException {
+        Runnable operation = new Runnable() {
+            @Override
+            public void run() {
+                validateRegisterUnregisterRepeteadly(mTestSensorManager);
+            }
+        };
+        SensorCtsHelper.performOperationInThreads(this.getNumberOfThreadsToUse(), operation);
+    }
 
-        while(!threads.isEmpty()) {
-            Thread thread = threads.remove(0);
-            thread.join();
-        }
+    public void testSeveralClients() throws InterruptedException {
+        final Assert assertionObject = this;
+        Runnable operation = new Runnable() {
+            @Override
+            public void run() {
+                TestSensorManager testSensorManager = new TestSensorManager(
+                        assertionObject,
+                        mTestSensorManager.getUnderlyingSensorManager(),
+                        mTestSensorManager.getSensorUnderTest());
+                validateRegisterUnregisterRepeteadly(testSensorManager);
+            }
+        };
+        SensorCtsHelper.performOperationInThreads(this.getNumberOfThreadsToUse(), operation);
+    }
+
+    public void testStoppingOtherClients() {
+        // TODO: use a higher test abstraction and move these to integration tests
+        final int EVENT_COUNT = 1;
+        final int SECOND_EVENT_COUNT = 5;
+        TestSensorManager sensorManager2 = new TestSensorManager(
+                this,
+                mTestSensorManager.getUnderlyingSensorManager(),
+                mTestSensorManager.getSensorUnderTest());
+
+        mTestSensorManager.registerListener(SensorManager.SENSOR_DELAY_NORMAL);
+
+        // is receiving events
+        mTestSensorManager.getEvents(EVENT_COUNT);
+
+        // operate in a different client
+        sensorManager2.collectEvents(SensorManager.SENSOR_DELAY_FASTEST, SECOND_EVENT_COUNT);
+
+        // verify first client is still operating
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.getEvents(EVENT_COUNT);
+        assertTrue(
+                String.format("Events| expected:%d, actual:%d", EVENT_COUNT, events.length),
+                events.length >= EVENT_COUNT);
+    }
+
+    public void testStoppingOtherClientsBatching() {
+        final int EVENT_COUNT = 1;
+        final int SECOND_EVENT_COUNT = 5;
+        TestSensorManager sensorManager2 = new TestSensorManager(
+                this,
+                mTestSensorManager.getUnderlyingSensorManager(),
+                mTestSensorManager.getSensorUnderTest());
+
+        mTestSensorManager.registerListener(SensorManager.SENSOR_DELAY_NORMAL);
+
+        // is receiving events
+        mTestSensorManager.getEvents(EVENT_COUNT);
+
+        // operate in a different client
+        sensorManager2.collectBatchEvents(
+                SensorManager.SENSOR_DELAY_FASTEST,
+                SensorCtsHelper.getSecondsAsMicroSeconds(1),
+                SECOND_EVENT_COUNT);
+
+        // verify first client is still operating
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.getEvents(EVENT_COUNT);
+        assertTrue(
+                String.format("Events| expected:%d, actual:%d", EVENT_COUNT, events.length),
+                events.length >= EVENT_COUNT);
     }
 
     /**
@@ -255,50 +265,52 @@
      */
     public void testRegisterForBatchingZeroReport() {
         releaseWakeLock();
-
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                SensorManager.SENSOR_DELAY_NORMAL,
-                0 /*maxBatchReportLatencyUs*/,
-                0 /*reservedFlags*/,
-                mFlushListener);
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(10);
+        // TODO: use test wrappers to verify for reportLatency ==0 !=0
+        mTestSensorManager.collectBatchEvents(SensorManager.SENSOR_DELAY_NORMAL, 0, 10);
     }
 
     public void testCanReceiveBatchEvents() {
         releaseWakeLock();
-
-        // TODO: refactor out common code across tests that register for events and do post-process
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
+        mTestSensorManager.collectBatchEvents(
                 SensorManager.SENSOR_DELAY_NORMAL,
-                5 * 1000000 /*maxBatchReportLatencyUs*/,
-                0 /*reservedFlags*/,
-                mFlushListener);
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(10);
+                SensorCtsHelper.getSecondsAsMicroSeconds(5),
+                10 /*eventCount*/);
+    }
+
+    /**
+     * Regress:
+     * -b/10790905
+     */
+    public void ignore_testBatchingReportLatency() {
+        long startTime = SystemClock.elapsedRealtimeNanos();
+        // TODO: define the sensor frequency per sensor
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectBatchEvents(
+                SensorCtsHelper.getSecondsAsMicroSeconds(1),
+                SensorCtsHelper.getSecondsAsMicroSeconds(5),
+                1 /*eventCount*/);
+        long elapsedTime = SystemClock.elapsedRealtimeNanos() - startTime;
+        long expectedTime =
+                TimeUnit.NANOSECONDS.convert(5, TimeUnit.SECONDS) +
+                TimeUnit.NANOSECONDS.convert(500, TimeUnit.MILLISECONDS);
+
+        // TODO: ensure the proper batching time considers the size of the FIFO (fifoMaxEventCount),
+        //       and make sure that no other application is registered
+        assertTrue(
+                String.format("WaitTime| expected:%d, actual:%d", expectedTime, elapsedTime),
+                elapsedTime <= expectedTime);
     }
 
     public void testBatchEventsArriveInOrder() {
         releaseWakeLock();
 
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
+        // TODO: identify if we can reuse code from the non-batching case, same for other batch tests
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectBatchEvents(
                 SensorManager.SENSOR_DELAY_NORMAL,
-                5 * 1000000 /*maxBatchReportLatencyUs*/,
-                0 /*reservedFlags*/,
-                mFlushListener);
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(100);
-
-        SensorEventForTest[] events = mEventListener.getAllEvents();
+                SensorCtsHelper.getSecondsAsMicroSeconds(5),
+                100);
         for(int i = 1; i < events.length; ++i) {
-            long previousTimestamp = events[i-1].getTimestamp();
-            long timestamp = events[i].getTimestamp();
+            long previousTimestamp = events[i-1].timestamp;
+            long timestamp = events[i].timestamp;
             assertTrue(
                     String.format("[timestamp:%d] %d >= %d", i, previousTimestamp, timestamp),
                     previousTimestamp < timestamp);
@@ -307,22 +319,7 @@
 
     public void testStartStopBatchingRepeatedly() {
         releaseWakeLock();
-
-        for(int i = 0; i < this.getLowNumberOfIterationsToExecute(); ++i) {
-            String iterationInfo = String.format("registerListener:%d", i);
-            boolean result = mSensorManager.registerListener(
-                    mEventListener,
-                    mSensorUnderTest,
-                    SensorManager.SENSOR_DELAY_FASTEST,
-                    5 * 1000000 /*maxBatchReportLatencyUs*/,
-                    0 /*reservedFlags*/,
-                    mFlushListener);
-
-            assertTrue(iterationInfo, result);
-            mEventListener.waitForEvents(5, iterationInfo);
-
-            mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
-        }
+        validateRegisterUnregisterRepeteadlyBatching(mTestSensorManager);
     }
 
     public void testUpdateBatchRate() {
@@ -351,76 +348,114 @@
                     rate = this.getMaxFrequencySupportedInuS() * generator.nextInt(10);
             }
 
-            String iterationInfo = String.format("registerListener:%d, rate:%d", i, rate);
-            boolean result = mSensorManager.registerListener(
-                    mEventListener,
-                    mSensorUnderTest,
+            String iterationInfo = String.format("iteration:%d, rate:%d", i, rate);
+            mTestSensorManager.collectBatchEvents(
                     rate,
-                    generator.nextInt(5 * 1000000),
-                    0 /*reservedFlags*/,
-                    mFlushListener);
-            assertTrue(iterationInfo, result);
-
-            mEventListener.waitForEvents(generator.nextInt(5) + 1, iterationInfo);
-            mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
-            mEventListener.clearEvents();
+                    generator.nextInt(SensorCtsHelper.getSecondsAsMicroSeconds(5)),
+                    generator.nextInt(5) + 1,
+                    iterationInfo);
         }
     }
 
-    public void testSeveralClientsBatching() {
-        ArrayList<Thread> threads = new ArrayList<Thread>();
-        for(int i = 0; i < this.getNumberOfThreadsToUse(); ++i) {
-            threads.add(new Thread() {
-                @Override
-                public void run() {
-                    testStartStopBatchingRepeatedly();
-                }
-            });
-        }
-
-        while(!threads.isEmpty()) {
-            Thread thread = threads.remove(0);
-            try {
-                thread.join();
-            } catch(InterruptedException e) {
-                // just continue
+    public void testOneClientSeveralThreadsBatching() throws InterruptedException {
+        Runnable operation = new Runnable() {
+            @Override
+            public void run() {
+                validateRegisterUnregisterRepeteadlyBatching(mTestSensorManager);
             }
-        }
+        };
+        SensorCtsHelper.performOperationInThreads(this.getNumberOfThreadsToUse(), operation);
+    }
+
+    public void testSeveralClientsBatching() throws InterruptedException {
+        final Assert assertionObject = this;
+        Runnable operation = new Runnable() {
+            @Override
+            public void run() {
+                TestSensorManager testSensorManager = new TestSensorManager(
+                        assertionObject,
+                        mTestSensorManager.getUnderlyingSensorManager(),
+                        mTestSensorManager.getSensorUnderTest());
+                validateRegisterUnregisterRepeteadlyBatching(testSensorManager);
+            }
+        };
+        SensorCtsHelper.performOperationInThreads(this.getNumberOfThreadsToUse(), operation);
+    }
+
+    public void testBatchingStoppingOtherClients() {
+        final int EVENT_COUNT = 1;
+        final int SECOND_EVENT_COUNT = 5;
+        TestSensorManager sensorManager2 = new TestSensorManager(
+                this,
+                mTestSensorManager.getUnderlyingSensorManager(),
+                mTestSensorManager.getSensorUnderTest());
+
+        mTestSensorManager.registerBatchListener(
+                SensorManager.SENSOR_DELAY_NORMAL,
+                SensorCtsHelper.getSecondsAsMicroSeconds(5));
+
+        // is receiving events
+        mTestSensorManager.getEvents(EVENT_COUNT);
+
+        // operate in a different client
+        sensorManager2.collectEvents(SensorManager.SENSOR_DELAY_FASTEST, SECOND_EVENT_COUNT);
+
+        // verify first client is still operating
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.getEvents(EVENT_COUNT);
+        assertTrue(
+                String.format("Events| expected:%d, actual:%d", EVENT_COUNT, events.length),
+                events.length >= EVENT_COUNT);
+    }
+
+    public void testBatchingStoppingOtherClientsBatching() {
+        final int EVENT_COUNT = 1;
+        final int SECOND_EVENT_COUNT = 5;
+        TestSensorManager sensorManager2 = new TestSensorManager(
+                this,
+                mTestSensorManager.getUnderlyingSensorManager(),
+                mTestSensorManager.getSensorUnderTest());
+
+        mTestSensorManager.registerBatchListener(
+                SensorManager.SENSOR_DELAY_NORMAL,
+                SensorCtsHelper.getSecondsAsMicroSeconds(5));
+
+        // is receiving events
+        mTestSensorManager.getEvents(EVENT_COUNT);
+
+        // operate in a different client
+        sensorManager2.collectBatchEvents(
+                SensorManager.SENSOR_DELAY_FASTEST,
+                SensorCtsHelper.getSecondsAsMicroSeconds(1),
+                SECOND_EVENT_COUNT);
+
+        // verify first client is still operating
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.getEvents(EVENT_COUNT);
+        assertTrue(
+                String.format("Events| expected:%d, actual:%d", EVENT_COUNT, events.length),
+                events.length >= EVENT_COUNT);
     }
 
     /**
      * Tests for sensor characteristics.
      */
-    public void testEventJittering() {
+    public void ignore_testEventJittering() {
         final long EXPECTED_TIMESTAMP_NS = this.getMaxFrequencySupportedInuS() * 1000;
         final long THRESHOLD_IN_NS = EXPECTED_TIMESTAMP_NS / 10; // 10%
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                this.getMaxFrequencySupportedInuS());
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(100);
 
-        SensorEventForTest[] events = mEventListener.getAllEvents();
-        ArrayList<Long> timestampDeltas = new ArrayList<Long>();
-        for(int i = 1; i < events.length; ++i) {
-            long previousTimestamp = events[i-1].getTimestamp();
-            long timestamp = events[i].getTimestamp();
-            long delta = timestamp - previousTimestamp;
-            long jitterValue = Math.abs(EXPECTED_TIMESTAMP_NS - delta);
-            timestampDeltas.add(jitterValue);
-        }
-
-        Collections.sort(timestampDeltas);
-        long percentile95InNs = timestampDeltas.get(95);
-        long actualPercentValue = (percentile95InNs * 100) / EXPECTED_TIMESTAMP_NS;
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectEvents(
+                this.getMaxFrequencySupportedInuS(),
+                100);
+        ArrayList<Double> jitterValues = new ArrayList<Double>();
+        double jitterMean = SensorCtsHelper.getJitterMean(events, jitterValues);
+        double percentile95InNs = SensorCtsHelper.get95PercentileValue(jitterValues);
 
         if(percentile95InNs > THRESHOLD_IN_NS) {
-            for(long jitter : timestampDeltas) {
-                Log.e(LOG_TAG, "Jittering delta: " + jitter);
+            for(double jitter : jitterValues) {
+                Log.e(LOG_TAG, "Jitter: " + jitter);
             }
+            double actualPercentValue = (percentile95InNs * 100) / jitterMean;
             String message = String.format(
-                    "95%%Jitter| 10%%:%dns, observed:%dns(%d%%)",
+                    "95%% Jitter| 10%%:%dns, actual:%fns(%.2f%%)",
                     THRESHOLD_IN_NS,
                     percentile95InNs,
                     actualPercentValue);
@@ -428,6 +463,29 @@
         }
     }
 
+    public void ignore_testFrequencyAccuracy() {
+        final long EXPECTED_TIMESTAMP_NS = this.getMaxFrequencySupportedInuS() * 1000;
+        final long THRESHOLD_IN_NS = EXPECTED_TIMESTAMP_NS / 10; // 10%
+
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectEvents(
+                this.getMaxFrequencySupportedInuS(),
+                100);
+        ArrayList<Long> timestampDelayValues = new ArrayList<Long>();
+        Double frequencyMean = SensorCtsHelper.getAverageTimestampDelayWithValues(
+                events,
+                timestampDelayValues);
+        if(Math.abs(EXPECTED_TIMESTAMP_NS - frequencyMean) > THRESHOLD_IN_NS) {
+            for(long value : timestampDelayValues) {
+                Log.e(LOG_TAG, "TimestampDelay: " + value);
+            }
+            String message = String.format(
+                    "Frequency| expected:%d, actual:%f",
+                    EXPECTED_TIMESTAMP_NS,
+                    frequencyMean);
+            fail(message);
+        }
+    }
+
     /**
      * Private helpers.
      */
@@ -444,252 +502,84 @@
         }
     }
 
-    private void collectBugreport() {
-        String commands[] = new String[] {
-                "dumpstate",
-                "dumpsys",
-                "logcat -d -v threadtime",
-                "exit"
-        };
-
-        SimpleDateFormat dateFormat = new SimpleDateFormat("M-d-y_H:m:s.S");
-        String outputFile = String.format(
-                "%s/%s_%s",
-                this.getLogTag(),
-                "/sdcard/Download",
-                dateFormat.format(new Date()));
-
-        DataOutputStream processOutput = null;
-        try {
-            Process process = Runtime.getRuntime().exec("/system/bin/sh -");
-            processOutput = new DataOutputStream(process.getOutputStream());
-
-            for(String command : commands) {
-                processOutput.writeBytes(String.format("%s >> %s\n", command, outputFile));
-            }
-
-            processOutput.flush();
-            process.waitFor();
-
-            Log.d(this.getLogTag(), String.format("Bug-Report collected at: %s", outputFile));
-        } catch (IOException e) {
-            fail("Unable to collect Bug Report. " + e.toString());
-        } catch (InterruptedException e) {
-            fail("Unable to collect Bug Report. " + e.toString());
-        } finally {
-            if(processOutput != null) {
-                try {
-                    processOutput.close();
-                } catch(IOException e) {}
-            }
-        }
-    }
-
     /**
      * Test method helper implementations
      */
-    protected void validateSensorEvent(
-            float expectedX,
-            float expectedY,
-            float expectedZ,
-            float threshold) {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                SensorManager.SENSOR_DELAY_FASTEST);
+    protected void validateNormForSensorEvent(float reference, float threshold, int axisCount) {
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectEvents(
+                SensorManager.SENSOR_DELAY_FASTEST,
+                1);
+        TestSensorManager.SensorEventForTest event = events[0];
 
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(1);
-        SensorEventForTest event = mEventListener.getLastEvent();
+        StringBuilder valuesBuilder = new StringBuilder();
+        double norm = 0.0;
+        for(int i = 0; i < axisCount; ++i) {
+            float value = event.values[i];
+            norm += Math.pow(value, 2);
 
-        float xValue = event.getX();
-        assertTrue(
-                String.format("x-axis| expected:%f, actual:%f, threshold:%f", expectedX, xValue, threshold),
-                Math.abs(expectedX - xValue) <= threshold);
+            valuesBuilder.append(value);
+            valuesBuilder.append(", ");
+        }
+        norm = Math.sqrt(norm);
 
-        float yValue = event.getY();
-        assertTrue(
-                String.format("y-axis| expected:%f, actual:%f, threshold:%f", expectedY, yValue, threshold),
-                Math.abs(expectedY - yValue) <= threshold);
-
-        float zValue = event.getZ();
-        assertTrue(
-                String.format("z-axis| expected:%f, actual:%f, threshold:%f", expectedZ, zValue, threshold),
-                Math.abs(expectedZ - zValue) <= threshold);
+        String message = String.format(
+                "Norm| expected:%f, threshold:%f, actual:%f (%s)",
+                reference,
+                threshold,
+                norm,
+                valuesBuilder.toString());
+        assertTrue(message, Math.abs(reference - norm) <= threshold);
     }
 
-    protected void validateVarianceWhileStatic(
-            float referenceX,
-            float referenceY,
-            float referenceZ,
-            float threshold) {
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                this.getMaxFrequencySupportedInuS());
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(100);
-
-        SensorEventForTest[] events = mEventListener.getAllEvents();
-        ArrayList<Float> deltaValuesX = new ArrayList<Float>();
-        ArrayList<Float> deltaValuesY = new ArrayList<Float>();
-        ArrayList<Float> deltaValuesZ = new ArrayList<Float>();
-        for(int i = 0; i < events.length; ++i) {
-            SensorEventForTest event = events[i];
-            deltaValuesX.add(Math.abs(event.getX() - referenceX));
-            deltaValuesY.add(Math.abs(event.getY() - referenceY));
-            deltaValuesZ.add(Math.abs(event.getZ() - referenceZ));
+    protected void validateRegisterUnregisterRepeteadly(TestSensorManager testSensorManager) {
+        for(int i = 0; i < this.getLowNumberOfIterationsToExecute(); ++i) {
+            String iterationInfo = String.format("iteration:%d", i);
+            testSensorManager.collectEvents(SensorManager.SENSOR_DELAY_FASTEST, 1, iterationInfo);
         }
+    }
 
-        Collections.sort(deltaValuesX);
-        float percentile95X = deltaValuesX.get(95);
-        if(percentile95X > threshold) {
-            for(float valueX : deltaValuesX) {
-                Log.e(LOG_TAG, "Variance|X delta: " + valueX);
-            }
-            String message = String.format(
-                    "95%%Variance|X expected:%f, observed:%f",
-                    threshold,
-                    percentile95X);
-            fail(message);
+    protected void validateRegisterUnregisterRepeteadlyBatching(
+            TestSensorManager testSensorManager) {
+        // TODO: refactor if allowed with test wrapper abstractions
+        for(int i = 0; i < this.getLowNumberOfIterationsToExecute(); ++i) {
+            testSensorManager.collectBatchEvents(
+                    SensorManager.SENSOR_DELAY_FASTEST,
+                    SensorCtsHelper.getSecondsAsMicroSeconds(5),
+                    5 /*eventCont*/,
+                    String.format("iteration:%d", i));
         }
+    }
 
-        Collections.sort(deltaValuesY);
-        float percentile95Y = deltaValuesY.get(95);
-        if(percentile95Y > threshold) {
-            for(float valueY : deltaValuesY) {
-                Log.e(LOG_TAG, "Variance|Y delta: " + valueY);
-            }
-            String message = String.format(
-                    "95%%Variance|Y expected:%f, observed:%f",
-                    threshold,
-                    percentile95Y);
-            fail(message);
-        }
+    protected void validateStandardDeviationWhileStatic(
+            float expectedStandardDeviation,
+            int axisCount) {
+        // TODO: refactor the report parameter with test wrappers if available
+        TestSensorManager.SensorEventForTest[] events = mTestSensorManager.collectEvents(
+                this.getMaxFrequencySupportedInuS(),
+                100);
 
-        Collections.sort(deltaValuesZ);
-        float percentile95Z = deltaValuesZ.get(95);
-        if(percentile95Z > threshold) {
-            for(float valueZ : deltaValuesZ) {
-                Log.e(LOG_TAG, "Variance|Z delta: " + valueZ);
+        for(int i = 0; i < axisCount; ++i) {
+            ArrayList<Float> values = new ArrayList<Float>();
+            for(TestSensorManager.SensorEventForTest event : events) {
+                values.add(event.values[i]);
             }
+
+            double standardDeviation = SensorCtsHelper.getStandardDeviation(values);
             String message = String.format(
-                    "95%%Variance|Z expected:%f, observed:%f",
-                    threshold,
-                    percentile95Z);
-            fail(message);
+                    "StandardDeviation| axis:%d, expected:%f, actual:%f",
+                    i,
+                    expectedStandardDeviation,
+                    standardDeviation);
+            assertTrue(message, standardDeviation <= expectedStandardDeviation);
         }
     }
 
     /**
      * Private class definitions to support test of event handlers.
      */
-    protected class SensorEventForTest {
-        private Sensor mSensor;
-        private long mTimestamp;
-        private int mAccuracy;
-
-        private float mValueX;
-        private float mValueY;
-        private float mValueZ;
-
-        public SensorEventForTest(SensorEvent event) {
-            mSensor = event.sensor;
-            mTimestamp = event.timestamp;
-            mAccuracy = event.accuracy;
-            mValueX = event.values[0];
-            mValueY = event.values[1];
-            mValueZ = event.values[2];
-        }
-
-        public Sensor getSensor() {
-            return mSensor;
-        }
-
-        public int getAccuracy() {
-            return mAccuracy;
-        }
-
-        public float getX() {
-            return mValueX;
-        }
-
-        public float getY() {
-            return mValueY;
-        }
-
-        public float getZ() {
-            return mValueZ;
-        }
-
-        public long getTimestamp() {
-            return mTimestamp;
-        }
-    }
-
-    protected class TestSensorListener implements SensorEventListener {
-        private final ConcurrentLinkedDeque<SensorEventForTest> mSensorEventsList =
-                new ConcurrentLinkedDeque<SensorEventForTest>();
-        private volatile CountDownLatch mEventLatch;
-
-        @Override
-        public void onSensorChanged(SensorEvent event) {
-            // copy the event because there is no better way to do this in the platform
-            mSensorEventsList.addLast(new SensorEventForTest(event));
-
-            CountDownLatch latch = mEventLatch;
-            if(latch != null) {
-                latch.countDown();
-            }
-        }
-
-        @Override
-        public void onAccuracyChanged(Sensor sensor, int accuracy) {
-        }
-
-        public void waitForEvents(int eventCount) {
-            waitForEvents(eventCount, null);
-        }
-
-        public void waitForEvents(int eventCount, String timeoutInfo) {
-            mEventLatch = new CountDownLatch(eventCount);
-            try {
-                boolean awaitCompleted = mEventLatch.await(getWaitTimeoutInSeconds(), TimeUnit.SECONDS);
-                if(!awaitCompleted) {
-                    collectBugreport();
-                }
-
-                String assertMessage = String.format(
-                        "WaitForEvents:%d, available:%d, %s",
-                        eventCount,
-                        mSensorEventsList.size(),
-                        timeoutInfo);
-                assertTrue(assertMessage, awaitCompleted);
-            } catch(InterruptedException e) { }
-        }
-
-        public SensorEventForTest getLastEvent() {
-            return mSensorEventsList.getLast();
-        }
-
-        public SensorEventForTest[] getAllEvents() {
-            return mSensorEventsList.toArray(new SensorEventForTest[0]);
-        }
-
-        public void clearEvents() {
-            mSensorEventsList.clear();
-        }
-    }
-
     private class TestTriggerListener extends TriggerEventListener {
         @Override
         public void onTrigger(TriggerEvent event) {
         }
     }
-
-    private class TestFlushListener implements FlushCompleteListener {
-        @Override
-        public void onFlushCompleted(Sensor sensor) {
-        }
-    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorGyroscopeTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorGyroscopeTest.java
index d3d72a3..b7c082e 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorGyroscopeTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorGyroscopeTest.java
@@ -19,6 +19,8 @@
 import android.hardware.Sensor;
 
 public class SensorGyroscopeTest extends SensorCommonTests {
+    private final int AXIS_COUNT = 3;
+
     @Override
     protected int getMaxFrequencySupportedInuS() {
         return 10000; // 100Hz
@@ -32,20 +34,12 @@
     @Override
     public void testEventValidity() {
         final float THRESHOLD = 0.1f; // dps
-        validateSensorEvent(
-                0 /*x-axis*/,
-                0 /*y-axis*/,
-                0 /*z-axis*/,
-                THRESHOLD);
+        validateNormForSensorEvent(0 /*reference*/, THRESHOLD, AXIS_COUNT);
     }
 
     @Override
-    public void testVarianceWhileStatic() {
-        final float THRESHOLD = 0.1f; // dps
-        validateVarianceWhileStatic(
-                0 /*x-axis*/,
-                0 /*y-axis*/,
-                0 /*z-axis*/,
-                THRESHOLD);
+    public void testStandardDeviationWhileStatic() {
+        final float STANDARD_DEVIATION = 0.5f; // dps
+        validateStandardDeviationWhileStatic(STANDARD_DEVIATION, AXIS_COUNT);
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
new file mode 100644
index 0000000..7272d72
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2008 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 android.hardware.cts;
+
+import android.content.Context;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+
+import android.hardware.cts.helpers.SensorCtsHelper;
+import android.hardware.cts.helpers.TestSensorManager;
+
+import android.os.PowerManager;
+
+import android.test.AndroidTestCase;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+public class SensorIntegrationTests extends AndroidTestCase {
+    protected final String LOG_TAG = "SensorIntegrationTests";
+    private PowerManager.WakeLock mWakeLock;
+    private SensorManager mSensorManager;
+
+    /**
+     * Test execution methods
+     */
+    @Override
+    protected void setUp() throws Exception {
+        PowerManager powerManager = (PowerManager) this.getContext().getSystemService(
+                Context.POWER_SERVICE);
+        mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG);
+        mWakeLock.acquire();
+
+        mSensorManager = (SensorManager) this.getContext().getSystemService(
+                Context.SENSOR_SERVICE);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mSensorManager = null;
+
+        mWakeLock.release();
+        mWakeLock = null;
+    }
+
+    /**
+     * Test cases.
+     */
+
+    /**
+     * Regress:
+     * - b/10641388
+     */
+    public void testAccelerometerDoesNotStopGyroscope() {
+        validateSensorCanBeStoppedIndependently(Sensor.TYPE_ACCELEROMETER, Sensor.TYPE_GYROSCOPE);
+    }
+
+    public void testAccelerometerDoesNotStopMagnetometer() {
+        validateSensorCanBeStoppedIndependently(
+                Sensor.TYPE_ACCELEROMETER,
+                Sensor.TYPE_MAGNETIC_FIELD);
+    }
+
+    public void testGyroscopeDoesNotStopAccelerometer() {
+        validateSensorCanBeStoppedIndependently(Sensor.TYPE_GYROSCOPE, Sensor.TYPE_ACCELEROMETER);
+    }
+
+    public void testGyroscopeDoesNotStopMagnetometer() {
+        validateSensorCanBeStoppedIndependently(Sensor.TYPE_GYROSCOPE, Sensor.TYPE_MAGNETIC_FIELD);
+    }
+
+    public void testMagnetometerDoesNotStopAccelerometer() {
+        validateSensorCanBeStoppedIndependently(
+                Sensor.TYPE_MAGNETIC_FIELD,
+                Sensor.TYPE_ACCELEROMETER);
+    }
+
+    public void testMagnetometerDoesNotStopGyroscope() {
+        validateSensorCanBeStoppedIndependently(Sensor.TYPE_MAGNETIC_FIELD, Sensor.TYPE_GYROSCOPE);
+    }
+
+    /**
+     * Private methods for sensor validation.
+     */
+    public void validateSensorCanBeStoppedIndependently(int sensorTypeTester, int sensorTypeTestee) {
+        // if any of the required sensors is not supported, skip the test
+        Sensor sensorTester = mSensorManager.getDefaultSensor(sensorTypeTester);
+        if(sensorTester == null) {
+            return;
+        }
+        Sensor sensorTestee = mSensorManager.getDefaultSensor(sensorTypeTestee);
+        if(sensorTestee == null) {
+            return;
+        }
+
+        TestSensorManager tester = new TestSensorManager(this, mSensorManager, sensorTester);
+        tester.registerListener(SensorManager.SENSOR_DELAY_NORMAL);
+
+        TestSensorManager testee = new TestSensorManager(this, mSensorManager, sensorTestee);
+        testee.registerBatchListener(
+                (int) TimeUnit.MICROSECONDS.convert(200, TimeUnit.MILLISECONDS),
+                SensorCtsHelper.getSecondsAsMicroSeconds(10));
+
+        testee.getEvents(10);
+        tester.getEvents(5);
+
+        tester.unregisterListener();
+        testee.getEvents(5);
+
+        // clean up
+        tester.close();
+        testee.close();
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorMagneticFieldTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorMagneticFieldTest.java
index 10cabb8..e4041d6 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorMagneticFieldTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorMagneticFieldTest.java
@@ -19,12 +19,9 @@
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
 
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
 public class SensorMagneticFieldTest extends SensorCommonTests {
+    private final int AXIS_COUNT = 3;
+
     @Override
     protected int getMaxFrequencySupportedInuS() {
         return 100000; // 10Hz
@@ -37,73 +34,15 @@
 
     @Override
     public void testEventValidity() {
-        validateSensorEvent(
-                0 /*x-axis*/,
-                0 /*y-axis*/,
-                0 /*z-axis*/,
-                SensorManager.MAGNETIC_FIELD_EARTH_MAX);
+        validateNormForSensorEvent(
+                SensorManager.MAGNETIC_FIELD_EARTH_MAX,
+                SensorManager.MAGNETIC_FIELD_EARTH_MIN,
+                AXIS_COUNT);
     }
 
     @Override
-    public void testVarianceWhileStatic() {
-        float THRESHOLD_IN_UT = SensorManager.MAGNETIC_FIELD_EARTH_MAX / 10;
-        boolean result = mSensorManager.registerListener(
-                mEventListener,
-                mSensorUnderTest,
-                this.getMaxFrequencySupportedInuS());
-        assertTrue("registerListener", result);
-        mEventListener.waitForEvents(100);
-
-        SensorEventForTest[] events = mEventListener.getAllEvents();
-        ArrayList<Float> deltaValuesX = new ArrayList<Float>();
-        ArrayList<Float> deltaValuesY = new ArrayList<Float>();
-        ArrayList<Float> deltaValuesZ = new ArrayList<Float>();
-        for(int i = 1; i < events.length; ++i) {
-            SensorEventForTest previousEvent = events[i-1];
-            SensorEventForTest event = events[i];
-
-            deltaValuesX.add(Math.abs(event.getX() - previousEvent.getX()));
-            deltaValuesY.add(Math.abs(event.getY() - previousEvent.getY()));
-            deltaValuesZ.add(Math.abs(event.getZ() - previousEvent.getZ()));
-        }
-
-        Collections.sort(deltaValuesX);
-        float percentile95X = deltaValuesX.get(95);
-        if(percentile95X > THRESHOLD_IN_UT) {
-            for(float valueX : deltaValuesX) {
-                Log.e(LOG_TAG, "Variance|X delta: " + valueX);
-            }
-            String message = String.format(
-                    "95%%Variance|X expected:%f, observed:%f",
-                    THRESHOLD_IN_UT,
-                    percentile95X);
-            fail(message);
-        }
-
-        Collections.sort(deltaValuesY);
-        float percentile95Y = deltaValuesY.get(95);
-        if(percentile95Y > THRESHOLD_IN_UT) {
-            for(float valueY : deltaValuesY) {
-                Log.e(LOG_TAG, "Variance|Y delta: " + valueY);
-            }
-            String message = String.format(
-                    "95%%Variance|Y expected:%f, observed:%f",
-                    THRESHOLD_IN_UT,
-                    percentile95Y);
-            fail(message);
-        }
-
-        Collections.sort(deltaValuesZ);
-        float percentile95Z = deltaValuesZ.get(95);
-        if(percentile95Z > THRESHOLD_IN_UT) {
-            for(float valueZ : deltaValuesZ) {
-                Log.e(LOG_TAG, "Variance|Z delta: " + valueZ);
-            }
-            String message = String.format(
-                    "95%%Variance|Z expected:%f, observed:%f",
-                    THRESHOLD_IN_UT,
-                    percentile95Z);
-            fail(message);
-        }
+    public void testStandardDeviationWhileStatic() {
+        final float STANDARD_DEVIATION = 2f; // uT
+        validateStandardDeviationWhileStatic(STANDARD_DEVIATION, AXIS_COUNT);
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index 4af2a45..cce7d0f 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -23,10 +23,10 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.hardware.FlushCompleteListener;
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
+import android.hardware.SensorEventListener2;
 import android.hardware.SensorManager;
 import android.hardware.TriggerEvent;
 import android.hardware.TriggerEventListener;
@@ -61,6 +61,28 @@
             assertNull(sensor);
         }
 
+        sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+        boolean hasStepCounter = getContext().getPackageManager().hasSystemFeature(
+                                        PackageManager.FEATURE_SENSOR_STEP_COUNTER);
+        // stepcounter sensor is optional
+        if (hasStepCounter) {
+            assertEquals(Sensor.TYPE_STEP_COUNTER, sensor.getType());
+            assertSensorValues(sensor);
+        } else {
+            assertNull(sensor);
+        }
+
+        sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
+        boolean hasStepDetector = getContext().getPackageManager().hasSystemFeature(
+                                        PackageManager.FEATURE_SENSOR_STEP_DETECTOR);
+        // stepdetector sensor is optional
+        if (hasStepDetector) {
+            assertEquals(Sensor.TYPE_STEP_DETECTOR, sensor.getType());
+            assertSensorValues(sensor);
+        } else {
+            assertNull(sensor);
+        }
+
         sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
         boolean hasCompass = getContext().getPackageManager().hasSystemFeature(
                 PackageManager.FEATURE_SENSOR_COMPASS);
@@ -149,7 +171,8 @@
             }
 
             final CountDownLatch eventReceived = new CountDownLatch(25);
-            SensorEventListener listener = new SensorEventListener() {
+            final CountDownLatch flushReceived = new CountDownLatch(1);
+            SensorEventListener2 listener = new SensorEventListener2() {
                 @Override
                 public void onSensorChanged(SensorEvent event) {
                     eventReceived.countDown();
@@ -158,22 +181,18 @@
                 @Override
                 public void onAccuracyChanged(Sensor sensor, int accuracy) {
                 }
-            };
 
-            final CountDownLatch flushReceived = new CountDownLatch(1);
-            FlushCompleteListener flushCompleteListener = new FlushCompleteListener() {
                 @Override
                 public void onFlushCompleted(Sensor sensor) {
                     flushReceived.countDown();
                 }
             };
             boolean result = mSensorManager.registerListener(listener, sensor,
-                                            SensorManager.SENSOR_DELAY_NORMAL, 10000000, 0,
-                                            flushCompleteListener);
+                                            SensorManager.SENSOR_DELAY_NORMAL, 10000000);
             assertTrue(result);
             // Wait for 25 events and call flush.
             eventReceived.await();
-            result = mSensorManager.flush(sensor);
+            result = mSensorManager.flush(listener);
             assertTrue(result);
             flushReceived.await();
             mSensorManager.unregisterListener(listener);
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
new file mode 100644
index 0000000..5abdd06
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 android.hardware.cts.helpers;
+
+import android.os.Environment;
+import android.util.Log;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import java.text.SimpleDateFormat;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Set of static helper methods for CTS tests.
+ */
+public class SensorCtsHelper {
+    /**
+     * This is an static class.
+     */
+    private SensorCtsHelper() {}
+
+    public static <TValue extends Comparable> TValue get95PercentileValue(
+            Collection<TValue> collection) {
+        validateCollection(collection);
+
+        ArrayList<TValue> arrayCopy = new ArrayList<TValue>(collection);
+        Collections.sort(arrayCopy);
+
+        // zero-based array index
+        int arrayIndex = (int)(arrayCopy.size() * 0.95) - 1;
+        if(arrayIndex < 0) {
+            arrayIndex = 0;
+        }
+
+        return arrayCopy.get(arrayIndex);
+    }
+
+    // TODO: are there any internal libraries for this?
+    public static <TValue extends Number> double getMean(Collection<TValue> collection) {
+        validateCollection(collection);
+
+        double sum = 0.0;
+        for(TValue value : collection) {
+            sum += value.doubleValue();
+        }
+        return sum / collection.size();
+    }
+
+    public static <TValue extends Number> double getVariance(Collection<TValue> collection) {
+        validateCollection(collection);
+
+        double mean = getMean(collection);
+        ArrayList<Double> squaredDifferences = new ArrayList<Double>();
+        for(TValue value : collection) {
+            double difference = mean - value.doubleValue();
+            squaredDifferences.add(Math.pow(difference, 2));
+        }
+
+        double variance = getMean(squaredDifferences);
+        return variance;
+    }
+
+    public static <TValue extends Number> double getStandardDeviation(Collection<TValue> collection) {
+        validateCollection(collection);
+
+        double variance = getVariance(collection);
+        return Math.sqrt(variance);
+    }
+
+    /**
+     * Gets the jitter values associated with a set of sensor events.
+     *
+     * @param events The events to use to obtain the jittering information.
+     * @param jitterValues The Collection that will contain the computed jitter values.
+     * @return The mean of the jitter Values.
+     */
+    public static double getJitterMean(
+            TestSensorManager.SensorEventForTest events[],
+            Collection<Double> jitterValues) {
+        ArrayList<Long> timestampDelayValues = new ArrayList<Long>();
+        double averageTimestampDelay = SensorCtsHelper.getAverageTimestampDelayWithValues(events,
+                timestampDelayValues);
+        for(long frequency : timestampDelayValues) {
+            jitterValues.add(Math.abs(averageTimestampDelay - frequency));
+        }
+
+        double jitterMean = SensorCtsHelper.getMean(timestampDelayValues);
+        return jitterMean;
+    }
+
+    /**
+     * Gets the frequency values associated with a set of sensor events.
+     *
+     * @param events The events to use to obtain the frequency information.
+     * @param timestampDelayValues The Collection that will contain the computed frequency values.
+     * @return The mean of the frequency values.
+     */
+    public static double getAverageTimestampDelayWithValues(
+            TestSensorManager.SensorEventForTest events[],
+            Collection<Long> timestampDelayValues) {
+        for(int i = 1; i < events.length; ++i) {
+            long previousTimestamp = events[i-1].timestamp;
+            long timestamp = events[i].timestamp;
+            timestampDelayValues.add(timestamp - previousTimestamp);
+        }
+
+        double timestampDelayMean = SensorCtsHelper.getMean(timestampDelayValues);
+        return timestampDelayMean;
+    }
+
+    public static int getSecondsAsMicroSeconds(int seconds) {
+        return (int) TimeUnit.MICROSECONDS.convert(seconds, TimeUnit.SECONDS);
+    }
+
+    /**
+     * NOTE: The bug report is usually written to /sdcard/Downloads
+     */
+    public static void collectBugreport(String collectorId)
+            throws IOException, InterruptedException {
+        String commands[] = new String[] {
+                "dumpstate",
+                "dumpsys",
+                "logcat -d -v threadtime",
+                "exit"
+        };
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("M-d-y_H:m:s.S");
+        String outputFile = String.format(
+                "%s/%s_%s",
+                collectorId,
+                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
+                dateFormat.format(new Date()));
+
+        DataOutputStream processOutput = null;
+        try {
+            Process process = Runtime.getRuntime().exec("/system/bin/sh -");
+            processOutput = new DataOutputStream(process.getOutputStream());
+
+            for(String command : commands) {
+                processOutput.writeBytes(String.format("%s >> %s\n", command, outputFile));
+            }
+
+            processOutput.flush();
+            process.waitFor();
+
+            Log.d(collectorId, String.format("Bug-Report collected at: %s", outputFile));
+        } finally {
+            if(processOutput != null) {
+                try {
+                    processOutput.close();
+                } catch(IOException e) {}
+            }
+        }
+    }
+
+    public static void performOperationInThreads(int numberOfThreadsToUse, Runnable operation)
+            throws InterruptedException {
+        ArrayList<Thread> threads = new ArrayList<Thread>();
+        for(int i = 0; i < numberOfThreadsToUse; ++i) {
+            threads.add(new Thread(operation));
+        }
+
+        while(!threads.isEmpty()) {
+            Thread thread = threads.remove(0);
+            thread.join();
+        }
+    }
+
+    /**
+     * Private helpers
+     */
+    private static void validateCollection(Collection collection) {
+        if(collection == null || collection.size() == 0) {
+            throw new IllegalStateException("Collection cannot be null or empty");
+        }
+    }
+}
+
+
+
+
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java
new file mode 100644
index 0000000..98a0af0
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 2008 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 android.hardware.cts.helpers;
+
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener2;
+import android.hardware.SensorManager;
+import android.hardware.TriggerEvent;
+import android.hardware.TriggerEventListener;
+
+import java.io.Closeable;
+
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import junit.framework.Assert;
+
+/**
+ * Test class to wrap SensorManager with verifications and test checks.
+ * This class allows to perform operations in the Sensor Manager and performs all the expected test
+ * verification on behalf of th owner.
+ * An object can be used to quickly writing tests that focus on the scenario that needs to be verified,
+ * and not in the implicit verifications that need to take place at any step.
+ */
+public class TestSensorManager implements Closeable {
+    private final int WAIT_TIMEOUT_IN_SECONDS = 30;
+
+    private Assert mAssert;
+    private SensorManager mSensorManager;
+    private Sensor mSensorUnderTest;
+    private TestSensorListener mEventListener;
+
+    public TestSensorManager(Assert assertionObject, SensorManager sensorManager, Sensor sensor) {
+        mAssert = assertionObject;
+        mSensorManager = sensorManager;
+        mSensorUnderTest = sensor;
+
+        mEventListener = new TestSensorListener();
+    }
+
+    public void close() {
+        this.unregisterListener();
+        mEventListener = null;
+        mSensorUnderTest = null;
+    }
+
+    public SensorManager getUnderlyingSensorManager() {
+        return mSensorManager;
+    }
+
+    public Sensor getSensorUnderTest() {
+        return mSensorUnderTest;
+    }
+
+    public void registerListener(int delay, String debugInfo) {
+        mAssert.assertTrue(
+                "registerListener| " + debugInfo,
+                mSensorManager.registerListener(mEventListener, mSensorUnderTest, delay));
+    }
+
+    public void registerListener(int delay) {
+        registerListener(delay, "");
+    }
+
+    public void registerBatchListener(int delay, int reportLatency, String debugInfo) {
+        boolean result = mSensorManager.registerListener(
+                mEventListener,
+                mSensorUnderTest,
+                delay,
+                reportLatency);
+        mAssert.assertTrue("registerBatchListener| " + debugInfo, result);
+    }
+
+    public void registerBatchListener(int delay, int reportLatency) {
+        registerBatchListener(delay, reportLatency, "");
+    }
+
+    public void unregisterListener() {
+        mSensorManager.unregisterListener(mEventListener, mSensorUnderTest);
+    }
+
+    public SensorEventForTest[] getEvents(int count, String debugInfo) {
+        mEventListener.waitForEvents(count, debugInfo);
+        SensorEventForTest[] events = mEventListener.getAllEvents();
+        mEventListener.clearEvents();
+
+        return events;
+    }
+
+    public SensorEventForTest[] getEvents(int count) {
+        return this.getEvents(count, "");
+    }
+
+    public SensorEventForTest[] collectEvents(
+            int collectionDelay,
+            int eventCount,
+            String debugInfo) {
+        this.registerListener(collectionDelay, debugInfo);
+        SensorEventForTest[] events = this.getEvents(eventCount, debugInfo);
+        this.unregisterListener();
+
+        return events;
+    }
+
+    public SensorEventForTest[] collectEvents(int collectionDelay, int eventCount) {
+        return this.collectEvents(collectionDelay, eventCount, "");
+    }
+
+    public SensorEventForTest[] collectBatchEvents(
+            int collectionDelay,
+            int batchReportLatency,
+            int eventCount,
+            String debugInfo) {
+        this.registerBatchListener(collectionDelay, batchReportLatency, debugInfo);
+        SensorEventForTest[] events = this.getEvents(eventCount, debugInfo);
+        this.unregisterListener();
+
+        return events;
+    }
+
+    public SensorEventForTest[] collectBatchEvents(
+            int collectionDelay,
+            int batchReportLatency,
+            int eventCount) {
+        return this.collectBatchEvents(collectionDelay, batchReportLatency, eventCount, "");
+    }
+
+    public void waitForFlush() throws InterruptedException {
+        mAssert.assertTrue(
+                String.format("flush| sensorType:%d", mSensorUnderTest.getType()),
+                mSensorManager.flush(mEventListener));
+        mEventListener.waitForFlushComplete();
+    }
+
+    /**
+     * Definition of support test classes.
+     */
+    public class SensorEventForTest {
+        public final Sensor sensor;
+        public final long timestamp;
+        public final int accuracy;
+        public final float values[];
+
+        public SensorEventForTest(SensorEvent event) {
+            values = new float[event.values.length];
+            System.arraycopy(event.values, 0, values, 0, event.values.length);
+
+            sensor = event.sensor;
+            timestamp = event.timestamp;
+            accuracy = event.accuracy;
+        }
+    }
+
+    private class TestSensorListener implements SensorEventListener2 {
+        private final ConcurrentLinkedDeque<SensorEventForTest> mSensorEventsList =
+                new ConcurrentLinkedDeque<SensorEventForTest>();
+        private volatile CountDownLatch mEventLatch;
+        private volatile CountDownLatch mFlushLatch = new CountDownLatch(1);
+
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            CountDownLatch latch = mEventLatch;
+            if(latch != null) {
+                // copy the event because there is no better way to do this in the platform
+                mSensorEventsList.addLast(new SensorEventForTest(event));
+                latch.countDown();
+            }
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+
+        @Override
+        public void onFlushCompleted(Sensor sensor) {
+            CountDownLatch latch = mFlushLatch;
+            mFlushLatch = new CountDownLatch(1);
+
+            if(latch != null) {
+                latch.countDown();
+            }
+        }
+
+        public void waitForFlushComplete() throws InterruptedException {
+            CountDownLatch latch = mFlushLatch;
+            if(latch != null) {
+                mAssert.assertTrue(
+                        "WaitForFlush",
+                        latch.await(WAIT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS));
+            }
+        }
+
+        public void waitForEvents(int eventCount) {
+            waitForEvents(eventCount, "");
+        }
+
+        public void waitForEvents(int eventCount, String timeoutInfo) {
+            mEventLatch = new CountDownLatch(eventCount);
+            try {
+                boolean awaitCompleted = mEventLatch.await(WAIT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
+                // TODO: can we collect bug reports on error based only if needed? env var?
+
+                String assertMessage = String.format(
+                        "WaitForEvents| count:%d, available:%d, %s",
+                        eventCount,
+                        mSensorEventsList.size(),
+                        timeoutInfo);
+                mAssert.assertTrue(assertMessage, awaitCompleted);
+            } catch(InterruptedException e) {
+            } finally {
+                mEventLatch = null;
+            }
+        }
+
+        public SensorEventForTest getLastEvent() {
+            return mSensorEventsList.getLast();
+        }
+
+        public SensorEventForTest[] getAllEvents() {
+            return mSensorEventsList.toArray(new SensorEventForTest[0]);
+        }
+
+        public void clearEvents() {
+            mSensorEventsList.clear();
+        }
+    }
+
+    public class TestTriggerListener extends TriggerEventListener {
+        @Override
+        public void onTrigger(TriggerEvent event) {
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java b/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java
new file mode 100644
index 0000000..4f8fb62
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2013 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 android.media.cts;
+
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.CodecProfileLevel;
+import android.media.MediaCodecList;
+import android.media.MediaPlayer;
+
+import android.util.Log;
+
+/**
+ * Basic sanity test of data returned by MediaCodeCapabilities.
+ */
+public class MediaCodecCapabilitiesTest extends MediaPlayerTestBase {
+
+    private static final String TAG = "MediaCodecCapabilitiesTest";
+    private static final String AVC_MIME = "video/avc";
+    private static final int PLAY_TIME_MS = 30000;
+
+    public void testAvcBaseline1() throws Exception {
+        if (!supports(AVC_MIME, CodecProfileLevel.AVCProfileBaseline,
+                CodecProfileLevel.AVCLevel1)) {
+            throw new RuntimeException("AVCLevel1 support is required by CDD");
+        }
+        // We don't have a test stream, but at least we're testing
+        // that supports() returns true for something.
+    }
+
+    public void testAvcBaseline12() throws Exception {
+        if (!supports(AVC_MIME, CodecProfileLevel.AVCProfileBaseline,
+                CodecProfileLevel.AVCLevel12)) {
+            Log.i(TAG, "AvcBaseline12 not supported");
+            return;  // TODO: Can we make this mandatory?
+        }
+        playVideoWithRetries("http://redirector.c.youtube.com/videoplayback?id=271de9756065677e"
+                + "&itag=160&source=youtube&user=android-device-test"
+                + "&sparams=ip,ipbits,expire,id,itag,source,user"
+                + "&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
+                + "&signature=341692D20FACCAE25B90EA2C131EA6ADCD8E2384."
+                + "9EB08C174BE401AAD20FB85EE4DBA51A2882BB60"
+                + "&key=test_key1", 256, 144, PLAY_TIME_MS);
+    }
+
+    public void testAvcBaseline30() throws Exception {
+        if (!supports(AVC_MIME, CodecProfileLevel.AVCProfileBaseline,
+                CodecProfileLevel.AVCLevel3)) {
+            Log.i(TAG, "AvcBaseline30 not supported");
+            return;
+        }
+        playVideoWithRetries("http://redirector.c.youtube.com/videoplayback?id=271de9756065677e"
+                + "&itag=18&source=youtube&user=android-device-test"
+                + "&sparams=ip,ipbits,expire,id,itag,source,user"
+                + "&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
+                + "&signature=8701A45F6422229D46ABB25A22E2C00C94024606."
+                + "08BCDF16C3F744C49D4C8A8AD1C38B3DC1810918"
+                + "&key=test_key1", 640, 360, PLAY_TIME_MS);
+    }
+
+    public void testAvcHigh31() throws Exception {
+        if (!supports(AVC_MIME, CodecProfileLevel.AVCProfileHigh,
+                CodecProfileLevel.AVCLevel31)) {
+            Log.i(TAG, "AvcHigh31 not supported");
+            return;
+        }
+        playVideoWithRetries("http://redirector.c.youtube.com/videoplayback?id=271de9756065677e"
+                + "&itag=22&source=youtube&user=android-device-test"
+                + "&sparams=ip,ipbits,expire,id,itag,source,user"
+                + "&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
+                + "&signature=42969CA8F7FFAE432B7135BC811F96F7C4172C3F."
+                + "1A8A92EA714C1B7C98A05DDF2DE90854CDD7638B"
+                + "&key=test_key1", 1280, 720, PLAY_TIME_MS);
+
+    }
+
+    public void testAvcHigh40() throws Exception {
+        if (!supports(AVC_MIME, CodecProfileLevel.AVCProfileHigh,
+                CodecProfileLevel.AVCLevel4)) {
+            Log.i(TAG, "AvcHigh40 not supported");
+            return;
+        }
+        playVideoWithRetries("http://redirector.c.youtube.com/videoplayback?id=271de9756065677e"
+                + "&itag=37&source=youtube&user=android-device-test"
+                + "&sparams=ip,ipbits,expire,id,itag,source,user"
+                + "&ip=0.0.0.0&ipbits=0&expire=999999999999999999"
+                + "&signature=7C3BBFB2F493E1BC396B6D31DDAF2E1367624487."
+                + "64197F3BB46039669E912297DCD68D1FB2811D9F"
+                + "&key=test_key1", 1920, 1080, PLAY_TIME_MS);
+    }
+
+    private boolean supports(String mimeType, int profile, int level) {
+        int numCodecs = MediaCodecList.getCodecCount();
+        for (int i = 0; i < numCodecs; i++) {
+            MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
+            if (codecInfo.isEncoder()) {
+                continue;
+            }
+
+            CodecCapabilities capabilities = codecInfo.getCapabilitiesForType(mimeType);
+            for (CodecProfileLevel profileLevel : capabilities.profileLevels) {
+                if (profileLevel.profile == profile
+                        && profileLevel.level >= level) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+}
diff --git a/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
index 482a4e3..d1e4c44 100644
--- a/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
@@ -43,6 +43,12 @@
     NsdManager.ResolveListener mResolveListener;
 
     public NsdManagerTest() {
+        initRegistrationListener();
+        initDiscoveryListener();
+        initResolveListener();
+    }
+
+    private void initRegistrationListener() {
         mRegistrationListener = new NsdManager.RegistrationListener() {
             @Override
             public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
@@ -64,6 +70,9 @@
                 setEvent("onServiceUnregistered", serviceInfo);
             }
         };
+    }
+
+    private void initDiscoveryListener() {
         mDiscoveryListener = new NsdManager.DiscoveryListener() {
             @Override
             public void onStartDiscoveryFailed(String serviceType, int errorCode) {
@@ -99,6 +108,9 @@
                 setEvent("onServiceLost", serviceInfo);
             }
         };
+    }
+
+    private void initResolveListener() {
         mResolveListener = new NsdManager.ResolveListener() {
             @Override
             public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
@@ -112,6 +124,8 @@
         };
     }
 
+
+
     private final class EventData {
         EventData(String callbackName, NsdServiceInfo info) {
             mCallbackName = callbackName;
@@ -198,6 +212,29 @@
         }
     }
 
+    private EventData waitForNewEvents() throws InterruptedException {
+        if (DBG) Log.d(TAG, "Waiting for a bit, id=" + String.valueOf(mWaitId));
+
+        long startTime = android.os.SystemClock.uptimeMillis();
+        long elapsedTime = 0;
+        synchronized (mEventCache) {
+            int index = mEventCache.size();
+            while (elapsedTime < TIMEOUT ) {
+                // first check if we've received that event
+                for (; index < mEventCache.size(); index++) {
+                    EventData e = mEventCache.get(index);
+                    return e;
+                }
+
+                // Not yet received, just wait
+                mEventCache.wait(TIMEOUT - elapsedTime);
+                elapsedTime = android.os.SystemClock.uptimeMillis() - startTime;
+            }
+        }
+
+        return null;
+    }
+
     private String mServiceName;
 
     @Override
@@ -266,7 +303,9 @@
         assertTrue(lastEvent.mSucceeded);
 
         // Remove this event, so accounting becomes easier later
-        mEventCache.remove(lastEvent);
+        synchronized (mEventCache) {
+            mEventCache.remove(lastEvent);
+        }
 
         // Expect a service record to be discovered (and filter the ones
         // that are unrelated to this test)
@@ -292,7 +331,9 @@
 
             // Remove this event from the event cache, so it won't be found by subsequent
             // calls to waitForCallback
-            mEventCache.remove(lastEvent);
+            synchronized (mEventCache) {
+                mEventCache.remove(lastEvent);
+            }
         }
 
         assertTrue(found);
@@ -315,6 +356,7 @@
         assertTrue(lastEvent.mInfo.getPort() == localPort);
         assertTrue(eventCacheSize() == 1);
 
+        assertTrue(checkForAdditionalEvents());
         clearEventCache();
 
         // Unregister the service
@@ -333,12 +375,17 @@
         assertTrue(eventCacheSize() == 2);
 
         // Register service again to see if we discover it
+        checkForAdditionalEvents();
         clearEventCache();
 
         si = new NsdServiceInfo();
         si.setServiceType(SERVICE_TYPE);
         si.setServiceName(mServiceName);
         si.setPort(localPort);
+
+        // Create a new registration listener and register same service again
+        initRegistrationListener();
+
         mNsdManager.registerService(si, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
 
         lastEvent = waitForCallback("onServiceRegistered");                 // id = 7
@@ -358,67 +405,55 @@
                 lastEvent.mInfo.getServiceName());
 
         assertTrue(lastEvent.mInfo.getServiceName().equals(registeredName));
+        assertTrue(checkCacheSize(2));
 
-        assertTrue(eventCacheSize() == 2);
+        checkForAdditionalEvents();
         clearEventCache();
 
         mNsdManager.stopServiceDiscovery(mDiscoveryListener);
         lastEvent = waitForCallback("onDiscoveryStopped");                  // id = 9
         assertTrue(lastEvent != null);
         assertTrue(lastEvent.mSucceeded);
-        assertTrue(eventCacheSize() == 1);
+        assertTrue(checkCacheSize(1));
 
+        checkForAdditionalEvents();
         clearEventCache();
+
         mNsdManager.unregisterService(mRegistrationListener);
 
         lastEvent =  waitForCallback("onServiceUnregistered");              // id = 10
         assertTrue(lastEvent != null);
         assertTrue(lastEvent.mSucceeded);
-        assertTrue(eventCacheSize() == 1);
+        assertTrue(checkCacheSize(1));
+    }
+
+    boolean checkCacheSize(int size) {
+        synchronized (mEventCache) {
+            int cacheSize = mEventCache.size();
+            if (cacheSize != size) {
+                Log.d(TAG, "id = " + mWaitId + ": event cache size = " + cacheSize);
+                for (int i = 0; i < cacheSize; i++) {
+                    EventData e = mEventCache.get(i);
+                    String sname = (e.mInfo != null) ? "(" + e.mInfo.getServiceName() + ")" : "";
+                    Log.d(TAG, "eventName is " + e.mCallbackName + sname);
+                }
+            }
+            return (cacheSize == size);
+        }
+    }
+
+    boolean checkForAdditionalEvents() {
+        try {
+            EventData e = waitForNewEvents();
+            if (e != null) {
+                String sname = (e.mInfo != null) ? "(" + e.mInfo.getServiceName() + ")" : "";
+                Log.d(TAG, "ignoring unexpected event " + e.mCallbackName + sname);
+            }
+            return (e == null);
+        }
+        catch (InterruptedException ex) {
+            return false;
+        }
     }
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
index de3755c..fbe65b1 100644
--- a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
@@ -16,6 +16,8 @@
 
 package android.telephony.cts;
 
+import android.content.Context;
+import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
@@ -26,6 +28,8 @@
  */
 public class SmsUsageMonitorShortCodeTest extends AndroidTestCase {
 
+    private PackageManager mPackageManager;
+
     /** Return value from {@link SmsUsageMonitor#checkDestination} for regular phone numbers. */
     static final int CATEGORY_NOT_SHORT_CODE = 0;
 
@@ -475,8 +479,19 @@
             new ShortCodeTest(null, "112", CATEGORY_NOT_SHORT_CODE),
     };
 
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mPackageManager = getContext().getPackageManager();
+    }
+
     @SmallTest
     public void testSmsUsageMonitor() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            // do not test if device does not support telephony (voice or sms)
+            return;
+        }
+
         SmsUsageMonitor monitor = new SmsUsageMonitor(getContext());
         for (ShortCodeTest test : sShortCodeTests) {
             assertEquals("country: " + test.countryIso + " number: " + test.address,
diff --git a/tests/tests/view/src/android/view/cts/WindowTest.java b/tests/tests/view/src/android/view/cts/WindowTest.java
index 8f45f5c..7e147ab 100644
--- a/tests/tests/view/src/android/view/cts/WindowTest.java
+++ b/tests/tests/view/src/android/view/cts/WindowTest.java
@@ -18,37 +18,52 @@
 
 import com.android.cts.stub.R;
 
-
 import android.app.Instrumentation;
+import android.app.Presentation;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.TypedArray;
+import android.cts.util.PollingCheck;
 import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.SystemClock;
 import android.test.ActivityInstrumentationTestCase2;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.ActionMode;
+import android.view.Display;
 import android.view.Gravity;
+import android.view.InputDevice;
 import android.view.InputQueue;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
+import android.view.Surface;
 import android.view.SurfaceHolder;
+import android.view.SurfaceView;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityEvent;
+import android.widget.Button;
 import android.widget.TextView;
 
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
 public class WindowTest extends ActivityInstrumentationTestCase2<WindowStubActivity> {
+    static final String TAG = "WindowTest";
     private Window mWindow;
     private Context mContext;
     private Instrumentation mInstrumentation;
@@ -57,6 +72,10 @@
     private static final int VIEWGROUP_LAYOUT_HEIGHT = 100;
     private static final int VIEWGROUP_LAYOUT_WIDTH = 200;
 
+    // for testing setLocalFocus
+    private ProjectedPresentation mPresentation;
+    private VirtualDisplay mVirtualDisplay;
+
     public WindowTest() {
         super("com.android.cts.stub", WindowStubActivity.class);
     }
@@ -629,6 +648,189 @@
         // No way to test protected final method
     }
 
+    /**
+     * Test setLocalFocus together with injectInputEvent.
+     */
+    public void testSetLocalFocus() throws Throwable {
+        final SurfaceView surfaceView = new SurfaceView(mContext);
+        final Semaphore waitingSemaphore = new Semaphore(0);
+        surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {
+            }
+
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                destroyPresentation();
+                createPresentation(holder.getSurface(), width, height);
+                waitingSemaphore.release();
+            }
+
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {
+                destroyPresentation();
+            }
+          });
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWindow.setContentView(surfaceView);
+            }
+        });
+        assertTrue(waitingSemaphore.tryAcquire(5, TimeUnit.SECONDS));
+        assertNotNull(mVirtualDisplay);
+        assertNotNull(mPresentation);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return (mPresentation.button1 != null) && (mPresentation.button2 != null) &&
+                        (mPresentation.button3 != null) && mPresentation.ready;
+            }
+        }.run();
+        assertTrue(mPresentation.button1.isFocusable() && mPresentation.button2.isFocusable() &&
+                mPresentation.button3.isFocusable());
+        // currently it is only for debugging
+        View.OnFocusChangeListener listener = new View.OnFocusChangeListener() {
+            @Override
+            public void onFocusChange(View v, boolean hasFocus) {
+                Log.d(TAG, "view " + v + " focus " + hasFocus);
+            }
+        };
+
+        // check key event focus
+        mPresentation.button1.setOnFocusChangeListener(listener);
+        mPresentation.button2.setOnFocusChangeListener(listener);
+        mPresentation.button3.setOnFocusChangeListener(listener);
+        final Window presentationWindow = mPresentation.getWindow();
+        presentationWindow.setLocalFocus(true, false);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mPresentation.button1.hasWindowFocus();
+            }
+        }.run();
+        checkPresentationButtonFocus(true, false, false);
+        assertFalse(mPresentation.button1.isInTouchMode());
+        injectKeyEvent(presentationWindow, KeyEvent.KEYCODE_TAB);
+        checkPresentationButtonFocus(false, true, false);
+        injectKeyEvent(presentationWindow, KeyEvent.KEYCODE_TAB);
+        checkPresentationButtonFocus(false, false, true);
+
+        // check touch input injection
+        presentationWindow.setLocalFocus(true, true);
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return mPresentation.button1.isInTouchMode();
+            }
+        }.run();
+        View.OnClickListener clickListener = new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "onClick " + v);
+                if (v == mPresentation.button1) {
+                    waitingSemaphore.release();
+                }
+            }
+        };
+        mPresentation.button1.setOnClickListener(clickListener);
+        mPresentation.button2.setOnClickListener(clickListener);
+        mPresentation.button3.setOnClickListener(clickListener);
+        injectTouchEvent(presentationWindow, mPresentation.button1.getX() +
+                mPresentation.button1.getWidth() / 2,
+                mPresentation.button1.getY() + mPresentation.button1.getHeight() / 2);
+        assertTrue(waitingSemaphore.tryAcquire(5, TimeUnit.SECONDS));
+
+        destroyPresentation();
+    }
+
+    private void checkPresentationButtonFocus(final boolean button1Focused,
+            final boolean button2Focused, final boolean button3Focused) {
+        new PollingCheck() {
+            @Override
+            protected boolean check() {
+                return (mPresentation.button1.isFocused() == button1Focused) &&
+                        (mPresentation.button2.isFocused() == button2Focused) &&
+                        (mPresentation.button3.isFocused() == button3Focused);
+            }
+        }.run();
+    }
+
+    private void injectKeyEvent(Window window, int keyCode) {
+        KeyEvent downEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
+        window.injectInputEvent(downEvent);
+        KeyEvent upEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode);
+        window.injectInputEvent(upEvent);
+    }
+
+    private void injectTouchEvent(Window window, float x, float y) {
+        Log.d(TAG, "injectTouchEvent " + x + "," + y);
+        long downTime = SystemClock.uptimeMillis();
+        MotionEvent downEvent = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN,
+                x, y, 0);
+        downEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+        window.injectInputEvent(downEvent);
+        long upTime = SystemClock.uptimeMillis();
+        MotionEvent upEvent = MotionEvent.obtain(downTime, upTime, MotionEvent.ACTION_UP,
+                x, y, 0);
+        upEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+        window.injectInputEvent(upEvent);
+    }
+
+    private void createPresentation(final Surface surface, final int width,
+            final int height) {
+        Context context = getInstrumentation().getTargetContext();
+        DisplayManager displayManager =
+                (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
+        mVirtualDisplay = displayManager.createVirtualDisplay("localFocusTest",
+                width, height, 300, surface, 0);
+        mPresentation = new ProjectedPresentation(
+                context, mVirtualDisplay.getDisplay());
+        mPresentation.show();
+    }
+
+    private void destroyPresentation() {
+        if (mPresentation != null) {
+            mPresentation.dismiss();
+        }
+        if (mVirtualDisplay != null) {
+            mVirtualDisplay.release();
+        }
+    }
+
+    private class ProjectedPresentation extends Presentation {
+        public Button button1 = null;
+        public Button button2 = null;
+        public Button button3 = null;
+        public volatile boolean ready = false;
+
+        public ProjectedPresentation(Context outerContext, Display display) {
+            super(outerContext, display);
+            getWindow().setType(WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE);
+        }
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            setContentView(R.layout.windowstub_presentation);
+            button1 = (Button) findViewById(R.id.presentation_button1);
+            button2 = (Button) findViewById(R.id.presentation_button2);
+            button3 = (Button) findViewById(R.id.presentation_button3);
+        }
+
+        @Override
+        public void show() {
+            super.show();
+            new Handler().post(new Runnable() {
+
+                @Override
+                public void run() {
+                    ready = true;
+                }
+            });
+        }
+    }
+
     public class MockWindow extends Window {
         public boolean mIsOnConfigurationChangedCalled = false;
         public boolean mIsOnActiveCalled = false;
diff --git a/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java b/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java
deleted file mode 100644
index 005ede3..0000000
--- a/tests/tests/webkit/src/android/webkit/cts/UrlInterceptRegistryTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2009 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 android.webkit.cts;
-
-
-import android.test.AndroidTestCase;
-import android.webkit.PluginData;
-import android.webkit.UrlInterceptHandler;
-import android.webkit.UrlInterceptRegistry;
-import android.webkit.CacheManager.CacheResult;
-
-import java.util.Map;
-
-@SuppressWarnings("deprecation")
-public class UrlInterceptRegistryTest extends AndroidTestCase {
-    private int mService;
-
-    public void testRegisterHandler() {
-        UrlInterceptHandler handler1 = new MockUrlInterceptHandler();
-        UrlInterceptHandler handler2 = new MockUrlInterceptHandler();
-
-        assertFalse(UrlInterceptRegistry.unregisterHandler(handler1));
-
-        assertTrue(UrlInterceptRegistry.registerHandler(handler1));
-        assertFalse(UrlInterceptRegistry.registerHandler(handler1));
-        assertTrue(UrlInterceptRegistry.registerHandler(handler2));
-
-        assertTrue(UrlInterceptRegistry.unregisterHandler(handler1));
-        assertTrue(UrlInterceptRegistry.unregisterHandler(handler2));
-        assertFalse(UrlInterceptRegistry.unregisterHandler(handler1));
-    }
-
-    public void testGetSurrogate() {
-        mService = 0;
-
-        UrlInterceptHandler handler1 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 1;
-                return new CacheResult();
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptHandler handler2 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 2;
-                return new CacheResult();
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptHandler handler3 = new UrlInterceptHandler() {
-            public CacheResult service(String url, Map<String, String> headers) {
-                mService = 3;
-                return null;
-            }
-
-            public PluginData getPluginData(String url,
-                    Map<String, String> headers) {
-                return null;
-            }
-        };
-        UrlInterceptRegistry.registerHandler(handler1);
-        UrlInterceptRegistry.registerHandler(handler2);
-        UrlInterceptRegistry.registerHandler(handler3);
-
-        UrlInterceptRegistry.setUrlInterceptDisabled(true);
-        assertNull(UrlInterceptRegistry.getSurrogate(null, null));
-        assertNull(UrlInterceptRegistry.getPluginData(null, null));
-        // no handlers get called
-        assertEquals(mService, 0);
-
-        UrlInterceptRegistry.setUrlInterceptDisabled(false);
-        assertNotNull(UrlInterceptRegistry.getSurrogate(null, null));
-        // handler3 gets called first, but returns null, handler2 returns the surrogate
-        assertEquals(mService, 2);
-    }
-
-    private class MockUrlInterceptHandler implements UrlInterceptHandler {
-        public CacheResult service(String url, Map<String, String> headers) {
-            return null;
-        }
-
-        public PluginData getPluginData(String url, Map<String, String> headers) {
-            return null;
-        }
-    }
-}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index 0b8af7a..21fee65 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -1080,7 +1080,8 @@
         new PollingCheck() {
             @Override
             protected boolean check() {
-                return mOnUiThread.getScale() != 0 && mOnUiThread.getContentHeight() != 0;
+                return mOnUiThread.getScale() != 0 && mOnUiThread.getContentHeight() != 0
+                    && mOnUiThread.getHeight() != 0;
             }
         }.run();
         assertEquals(mOnUiThread.getHeight(),
diff --git a/tools/device-setup/TestDeviceSetup/Android.mk b/tools/device-setup/TestDeviceSetup/Android.mk
index 39f989e..ba1998c 100644
--- a/tools/device-setup/TestDeviceSetup/Android.mk
+++ b/tools/device-setup/TestDeviceSetup/Android.mk
@@ -27,7 +27,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-LOCAL_SDK_VERSION := 17
+LOCAL_SDK_VERSION := current
 
 LOCAL_PACKAGE_NAME := TestDeviceSetup
 
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
index 3614e22..e18e626 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoActivity.java
@@ -23,10 +23,10 @@
 import android.content.res.Configuration;
 import android.os.Bundle;
 
+import java.util.HashSet;
 import java.util.Locale;
 import java.util.concurrent.CountDownLatch;
 
-
 /**
  * Collect device information on target device.
  */
@@ -34,7 +34,7 @@
 
     // work done should be reported in GLES..View
     private CountDownLatch mDone = new CountDownLatch(1);
-    private GLESSurfaceView mGLView;
+    private HashSet<String> mFormats = new HashSet<String>();
 
     /**
      * Other classes can call this function to wait for this activity
@@ -47,6 +47,37 @@
         }
     }
 
+    private void runIterations(int glVersion) {
+        for (int i = 1; i <= glVersion; i++) {
+            final CountDownLatch done = new CountDownLatch(1);
+            final int version = i;
+            DeviceInfoActivity.this.runOnUiThread(new Runnable() {
+              public void run() {
+                setContentView(new GLESSurfaceView(DeviceInfoActivity.this, version, done));
+              }
+            });
+            try {
+                done.await();
+            } catch (InterruptedException e) {
+                // just move on
+            }
+        }
+
+        StringBuilder builder = new StringBuilder();
+        for (String format: mFormats) {
+            builder.append(format);
+            builder.append(";");
+        }
+        DeviceInfoInstrument.addResult(
+                DeviceInfoConstants.OPEN_GL_COMPRESSED_TEXTURE_FORMATS,
+                builder.toString());
+        mDone.countDown();
+    }
+
+    public void addCompressedTextureFormat(String format) {
+        mFormats.add(format);
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -54,10 +85,12 @@
         ActivityManager am =
                 (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         ConfigurationInfo info = am.getDeviceConfigurationInfo();
-        boolean useGL20 = (info.reqGlEsVersion >= 0x20000);
-
-        mGLView = new GLESSurfaceView(this, useGL20, mDone);
-        setContentView(mGLView);
+        final int glVersion = (info.reqGlEsVersion & 0xffff0000) >> 16;
+        new Thread() {
+          public void run() {
+            runIterations(glVersion);
+          }
+        }.start();
 
         Configuration con = getResources().getConfiguration();
         String touchScreen = null;
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
index c06c21e..4a0ea66 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoConstants.java
@@ -60,4 +60,6 @@
     public static final String BUILD_VERSION = "buildVersion";
     public static final String BUILD_TAGS = "build_tags";
     public static final String SERIAL_NUMBER = "deviceID";
+    public static final String STORAGE_DEVICES = "storage_devices";
+    public static final String MULTI_USER = "multi_user";
 }
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
index 49e96a0..29b29bf 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/DeviceInfoInstrument.java
@@ -25,6 +25,8 @@
 import android.content.res.Configuration;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Environment;
+import android.os.UserManager;
 import android.telephony.TelephonyManager;
 import android.util.DisplayMetrics;
 import android.util.Log;
@@ -33,6 +35,8 @@
 
 import java.io.IOException;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -135,6 +139,12 @@
         String sysLibraries = getSystemLibraries();
         addResult(SYS_LIBRARIES, sysLibraries);
 
+        // Storage devices
+        addResult(STORAGE_DEVICES, getStorageDevices());
+
+        // Multi-user support
+        addResult(MULTI_USER, getMultiUserInfo());
+
         finish(Activity.RESULT_OK, mResults);
     }
 
@@ -343,4 +353,42 @@
 
         return builder.toString();
     }
+
+    private String getStorageDevices() {
+        int count = 0;
+        count = Math.max(count, getContext().getExternalCacheDirs().length);
+        count = Math.max(count, getContext().getExternalFilesDirs(null).length);
+        count = Math.max(
+                count, getContext().getExternalFilesDirs(Environment.DIRECTORY_PICTURES).length);
+        count = Math.max(count, getContext().getObbDirs().length);
+
+        final String result;
+        if (Environment.isExternalStorageEmulated()) {
+            if (count == 1) {
+                return "1 emulated";
+            } else {
+                return "1 emulated, " + (count - 1) + " physical media";
+            }
+        } else {
+            return count + " physical media";
+        }
+    }
+
+    private String getMultiUserInfo() {
+        try {
+            final Method method = UserManager.class.getMethod("getMaxSupportedUsers");
+            final Integer maxUsers = (Integer) method.invoke(null);
+            if (maxUsers == 1) {
+                return "single user";
+            } else {
+                return maxUsers + " users supported";
+            }
+        } catch (ClassCastException e) {
+        } catch (NoSuchMethodException e) {
+        } catch (InvocationTargetException e) {
+        } catch (IllegalAccessException e) {
+        }
+
+        return "unknown";
+    }
 }
diff --git a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
index 0ec11b7..b2f2211 100644
--- a/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
+++ b/tools/device-setup/TestDeviceSetup/src/android/tests/getinfo/GLESSurfaceView.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.opengl.GLES20;
+import android.opengl.GLES30;
 import android.opengl.GLSurfaceView;
 import android.util.Log;
 
@@ -30,22 +31,24 @@
 class GLESSurfaceView extends GLSurfaceView {
     private static final String TAG = "GLESSurfaceView";
 
-    private boolean mUseGL20;
-    CountDownLatch mDone;
-
+    private int mGLVersion;//1, 2, 3
+    private CountDownLatch mDone;
+    private DeviceInfoActivity mParent;
     /**
      *
-     * @param context
+     * @param parent
      * @param useGL20 whether to use GLES2.0 API or not inside the view
      * @param done to notify the completion of the task
      */
-    public GLESSurfaceView(Context context, boolean useGL20, CountDownLatch done){
-        super(context);
+    public GLESSurfaceView(DeviceInfoActivity parent, int glVersion, CountDownLatch done){
+        super(parent);
 
-        mUseGL20 = useGL20;
+        mParent = parent;
+        mGLVersion = glVersion;
         mDone = done;
-        if (mUseGL20) {
-            setEGLContextClientVersion(2);
+        if (glVersion > 1) {
+            // Default is 1 so only set if bigger than 1
+            setEGLContextClientVersion(glVersion);
         }
         setRenderer(new OpenGLESRenderer());
     }
@@ -55,30 +58,26 @@
         @Override
         public void onSurfaceCreated(GL10 gl, EGLConfig config) {
             String extensions;
-            if (mUseGL20) {
+            if (mGLVersion == 2) {
                 extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS);
+            } else if (mGLVersion == 3) {
+                extensions = GLES30.glGetString(GLES30.GL_EXTENSIONS);
             } else {
                 extensions = gl.glGetString(GL10.GL_EXTENSIONS);
             }
             Log.i(TAG, "extensions : " + extensions);
             Scanner scanner = new Scanner(extensions);
             scanner.useDelimiter(" ");
-            StringBuilder builder = new StringBuilder();
             while (scanner.hasNext()) {
                 String ext = scanner.next();
                 if (ext.contains("texture")) {
                     if (ext.contains("compression") || ext.contains("compressed")) {
                         Log.i(TAG, "Compression supported: " + ext);
-                        builder.append(ext);
-                        builder.append(";");
+                        mParent.addCompressedTextureFormat(ext);
                     }
                 }
             }
 
-            DeviceInfoInstrument.addResult(
-                    DeviceInfoConstants.OPEN_GL_COMPRESSED_TEXTURE_FORMATS,
-                    builder.toString());
-
             mDone.countDown();
         }
 
@@ -93,4 +92,4 @@
         }
 
     }
-}
\ No newline at end of file
+}
diff --git a/tools/tradefed-host/res/report/cts_result.xsd b/tools/tradefed-host/res/report/cts_result.xsd
index 3f7f384..ce606e9 100644
--- a/tools/tradefed-host/res/report/cts_result.xsd
+++ b/tools/tradefed-host/res/report/cts_result.xsd
@@ -78,6 +78,8 @@
         <xs:attribute name="partitions" type="xs:string"/>
         <xs:attribute name="build_abi" type="xs:string"/>
         <xs:attribute name="build_abi2" type="xs:string"/>
+        <xs:attribute name="storage_devices" type="xs:string"/>
+        <xs:attribute name="multi_user" type="xs:string"/>
       </xs:complexType>
     </xs:element>
     <xs:element name="FeatureInfo" type="featureInfoType"/>
diff --git a/tools/tradefed-host/res/report/cts_result.xsl b/tools/tradefed-host/res/report/cts_result.xsl
index dfddc09..b6fb699 100644
--- a/tools/tradefed-host/res/report/cts_result.xsl
+++ b/tools/tradefed-host/res/report/cts_result.xsl
@@ -298,6 +298,18 @@
                                             </pre>
                                         </TD>
                                     </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Storage devices</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@storage_devices"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Multi-user support</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@multi_user"/>
+                                        </TD>
+                                    </TR>
                                 </TABLE>
                             </TD>
                         </TR>
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
index 6674bdf..59b9d3c 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
@@ -31,7 +31,7 @@
     @Option(name="cts-install-path", description="the path to the cts installation to use")
     private String mCtsRootDirPath = System.getProperty("CTS_ROOT");
 
-    public static final String CTS_BUILD_VERSION = "4.2_r1";
+    public static final String CTS_BUILD_VERSION = "4.4_r0";
 
     /**
      * {@inheritDoc}