am 910dad99: am 63bc12a8: am 76808c29: CTS version up to 4.4_r0

* commit '910dad99d13a901df8782cb16de404b25fa7224c':
  CTS version up to 4.4_r0
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index b9f7ceb..b3d32c6 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -208,6 +208,122 @@
                 android:label="@string/bt_device_picker"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
 
+        <service android:name=".bluetooth.BleClientService"
+                android:label="@string/ble_client_service_name" />
+
+        <service android:name=".bluetooth.BleServerService"
+                android:label="ble_server_service_name" />
+
+        <activity android:name=".bluetooth.BleClientTestActivity"
+                android:label="@string/ble_client_test_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientConnectActivity"
+                android:label="@string/ble_client_connect_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleDiscoverServiceActivity"
+                android:label="@string/ble_discover_service_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientCharacteristicActivity"
+                android:label="@string/ble_client_characteristic_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleNotifyCharacteristicActivity"
+                android:label="@string/ble_notify_characteristic_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientDescriptorActivity"
+                android:label="@string/ble_client_descriptor_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleReliableWriteActivity"
+                android:label="@string/ble_reliable_write_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleReadRssiActivity"
+                android:label="@string/ble_read_rssi_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleClientDisconnectActivity"
+                android:label="@string/ble_client_disconnect_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BleClientTestActivity" />
+        </activity>
+
+        <activity android:name=".bluetooth.BleServerStartActivity"
+                android:label="@string/ble_server_start_name"
+                android:configChanges="keyboardHidden|orientation|screenSize">
+            <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/bt_le" />
+            <meta-data android:name="test_parent" android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+        </activity>
+
         <activity android:name=".suid.SuidFilesActivity"
                 android:label="@string/suid_files"
                 android:configChanges="keyboardHidden|orientation|screenSize">
diff --git a/apps/CtsVerifier/res/layout/ble_button.xml b/apps/CtsVerifier/res/layout/ble_button.xml
new file mode 100644
index 0000000..6428fe2
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_button.xml
@@ -0,0 +1,33 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <Button android:id="@+id/ble_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_connect.xml b/apps/CtsVerifier/res/layout/ble_client_connect.xml
new file mode 100644
index 0000000..54a0a99
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_connect.xml
@@ -0,0 +1,46 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+
+    <LinearLayout android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <EditText android:id="@+id/ble_address"
+                android:layout_weight="1"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:hint="@string/ble_address"
+                />
+        <Button android:id="@+id/ble_connect"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/ble_connect"
+                />
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_read_write.xml b/apps/CtsVerifier/res/layout/ble_client_read_write.xml
new file mode 100644
index 0000000..7edba62
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_read_write.xml
@@ -0,0 +1,70 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <LinearLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <EditText android:id="@+id/write_text"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/ble_write_hint"
+                    android:padding="10dip"
+                    />
+            <Button android:id="@+id/ble_write"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:text="@string/ble_write"
+                    />
+        </LinearLayout>
+
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <TextView android:id="@+id/read_text"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:hint="@string/ble_read_hint"
+                    android:padding="10dip"
+                    android:textSize="18sp"
+                    />
+            <Button android:id="@+id/ble_read"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/ble_read"
+                    />
+        </LinearLayout>
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_client_test.xml b/apps/CtsVerifier/res/layout/ble_client_test.xml
new file mode 100644
index 0000000..660abd5
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_client_test.xml
@@ -0,0 +1,33 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <ListView android:id="@+id/ble_client_tests"
+            android:layout_height="fill_parent"
+            android:layout_width="match_parent"
+            android:padding="10dip"
+            />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml b/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml
new file mode 100644
index 0000000..786918a
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_notify_characteristic.xml
@@ -0,0 +1,49 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <RelativeLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <Button android:id="@+id/ble_notify"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ble_begin_notification"
+                android:padding="10dip"
+                />
+        <TextView android:id="@+id/ble_notify_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_below="@id/ble_notify"
+                android:textSize="20sp"
+                android:padding="10dip"
+                />
+    </RelativeLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_read_rssi.xml b/apps/CtsVerifier/res/layout/ble_read_rssi.xml
new file mode 100644
index 0000000..8aa3193
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_read_rssi.xml
@@ -0,0 +1,49 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <RelativeLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <Button android:id="@+id/ble_read_rssi"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ble_read_rssi"
+                android:padding="10dip"
+                />
+        <TextView android:id="@+id/ble_rssi_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_below="@id/ble_read_rssi"
+                android:textSize="20sp"
+                android:padding="10dip"
+                />
+    </RelativeLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_reliable_write.xml b/apps/CtsVerifier/res/layout/ble_reliable_write.xml
new file mode 100644
index 0000000..7db78ff
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_reliable_write.xml
@@ -0,0 +1,63 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <LinearLayout android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            >
+        <EditText android:id="@+id/write_text"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:hint="@string/ble_write_hint"
+                android:padding="5dip"
+                />
+        <LinearLayout android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+            <Button android:id="@+id/ble_begin"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_begin_write"
+                    />
+            <Button android:id="@+id/ble_write"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_write"
+                    />
+            <Button android:id="@+id/ble_execute"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="@string/ble_execute_write"
+                    />
+        </LinearLayout>
+    </LinearLayout>
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_server_start.xml b/apps/CtsVerifier/res/layout/ble_server_start.xml
new file mode 100644
index 0000000..9ce714d
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_server_start.xml
@@ -0,0 +1,35 @@
+<?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="match_parent"
+        android:orientation="vertical"
+        android:padding="10dip"
+        >
+    <include android:id="@+id/pass_fail_buttons" 
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+    <ListView android:id="@+id/ble_server_tests"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_above="@id/pass_fail_buttons"
+            android:layout_alignParentTop="true"
+            android:padding="10dip"
+            />
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/ble_server_start_item.xml b/apps/CtsVerifier/res/layout/ble_server_start_item.xml
new file mode 100644
index 0000000..136192f
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ble_server_start_item.xml
@@ -0,0 +1,34 @@
+<?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="wrap_content"
+        android:padding="10dip"
+        android:orientation="horizontal"
+        >
+    <ImageView android:id="@+id/status"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="10dip"
+            android:src="@drawable/fs_indeterminate"
+            />
+    <TextView android:id="@+id/instructions"
+            style="@style/InstructionsSmallFont"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            />
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 6df4b42..84b9d32 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -117,6 +117,7 @@
 
     <string name="bt_control">Bluetooth Control</string>
     <string name="bt_device_communication">Device Communication</string>
+    <string name="bt_le">Bluetooth Low Energy</string>
 
     <string name="bt_toggle_bluetooth">Toggle Bluetooth</string>
     <string name="bt_toggle_instructions">Disable and enable Bluetooth to successfully complete this test.</string>
@@ -177,6 +178,53 @@
     <string name="bt_unpair">Device must be unpaired via Bluetooth settings before completing the test.\n\nUnpair the device in settings, make the server discoverable, and rescan to pick this device.</string>
     <string name="bt_settings">Bluetooth Settings</string>
 
+    <!-- BLE client side strings -->
+    <string name="ble_client_service_name">Bluetooth LE GATT Client Handler Service</string>
+    <string name="ble_client_test_name">BLE Client Test</string>
+    <string name="ble_client_connect_name">1. BLE Client Connect</string>
+    <string name="ble_discover_service_name">2. BLE Discover Service</string>
+    <string name="ble_client_characteristic_name">3. BLE Read/Write Characteristic</string>
+    <string name="ble_reliable_write_name">4. BLE Reliable Write</string>
+    <string name="ble_notify_characteristic_name">5. BLE Notify Characteristic</string>
+    <string name="ble_client_descriptor_name">6. BLE Read/Write Descriptor</string>
+    <string name="ble_read_rssi_name">7. BLE Read RSSI</string>
+    <string name="ble_client_disconnect_name">8. BLE Client Disconnect</string>
+    <string name="ble_client_test_info">The BLE test must be done simultaneously on two devices. This device is the client. All tests listed here must be done in order.</string>
+    <string name="ble_client_send_connect_info">Type in the Bluetooth address of the remote device to connect to, and verify that the devices are connected.</string>
+    <string name="ble_discover_service_info">Verify that the service is discovered when you press the "Discover Service" button.</string>
+    <string name="ble_read_write_info">Write values to and read values from the server to verify that the write and read functionalities are working correctly.</string>
+    <string name="ble_reliable_write_info">A Reliable Write has two steps.\n\n1) Write to the device. This will trigger a callback from the server to verify that the value written was correct.\n2) Execute the write, if the value written is valid.</string>
+    <string name="ble_notify_characteristic_info">Start accepting notifications, and verify that notifications are being reported correctly. The server should be notifying this device with the time every second.</string>
+    <string name="ble_read_rssi_info">Press button to read the RSSI value. Verify that the RSSI changes as you move the two devices further apart or closer together.</string>
+    <string name="ble_client_disconnect_info">Verify that the device is disconnected when you press the "Disconnect" button</string>
+    <string name="ble_address">Bluetooth address</string>
+    <string name="ble_connect">Connect</string>
+    <string name="ble_discover_service">Discover service</string>
+    <string name="ble_write_hint">Nothing to write yet</string>
+    <string name="ble_read_hint">Nothing read yet</string>
+    <string name="ble_write">Write</string>
+    <string name="ble_read">Read</string>
+    <string name="ble_begin_write">Begin write</string>
+    <string name="ble_execute_write">Execute write</string>
+    <string name="ble_begin_notification">Begin notification</string>
+    <string name="ble_stop_notification">Stop notification</string>
+    <string name="ble_waiting_notification">Waiting on notification</string>
+    <string name="ble_read_rssi">Read RSSI</string>
+    <string name="ble_disconnect">Disconnect</string>
+
+    <!-- BLE server side strings -->
+    <string name="ble_server_service_name">Bluetooth LE GATT Server Handler Service</string>
+    <string name="ble_server_start_name">BLE Server Test</string>
+    <string name="ble_server_start_info">The BLE test must be done simultaneously on two devices, a server device and a client device. This device is the server.</string>
+    <string name="ble_server_receiving_connect">Waiting on connection from BLE client.</string>
+    <string name="ble_server_add_service">Adding service to BLE server.</string>
+    <string name="ble_server_write_characteristic">Waiting on write characteristic request</string>
+    <string name="ble_server_read_characteristic">Waiting on read characteristic request</string>
+    <string name="ble_server_write_descriptor">Waiting on write descriptor request</string>
+    <string name="ble_server_read_descriptor">Waiting on read descriptor request</string>
+    <string name="ble_server_reliable_write">Waiting on reliable write from client</string>
+    <string name="ble_server_receiving_disconnect">Waiting on disconnection from BLE client</string>
+
     <!-- Strings for FeatureSummaryActivity -->
     <string name="feature_summary">Hardware/Software Feature Summary</string>
     <string name="feature_summary_info">This is a test for...</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java
new file mode 100644
index 0000000..19900af
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleButtonActivity.java
@@ -0,0 +1,106 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+public class BleButtonActivity extends PassFailButtons.Activity {
+
+    static final int DISCOVER_SERVICE = 0;
+    static final int DISCONNECT = 1;
+
+    private int mName;
+    private int mInfo;
+    private int mButtonText;
+    private int mCommand;
+    private String mFilter;
+    private String mMessage;
+
+    BleButtonActivity(int target) {
+        if (target == DISCOVER_SERVICE) {
+            mName = R.string.ble_discover_service_name;
+            mInfo = R.string.ble_discover_service_info;
+            mButtonText = R.string.ble_discover_service;
+            mCommand = BleClientService.COMMAND_DISCOVER_SERVICE;
+            mFilter = BleClientService.BLE_SERVICES_DISCOVERED;
+            mMessage = "Service discovered.";
+        } else if (target == DISCONNECT) {
+            mName = R.string.ble_client_disconnect_name;
+            mInfo = R.string.ble_client_disconnect_name;
+            mButtonText = R.string.ble_disconnect;
+            mCommand = BleClientService.COMMAND_DISCONNECT;
+            mFilter = BleClientService.BLE_BLUETOOTH_DISCONNECTED;
+            mMessage = "Bluetooth LE disconnected.";
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_button);
+        setPassFailButtonClickListeners();
+        setInfoResources(mName, mInfo, -1);
+        getPassButton().setEnabled(false);
+
+        ((Button) findViewById(R.id.ble_button)).setText(mButtonText);
+        ((Button) findViewById(R.id.ble_button)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleButtonActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mCommand);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(mFilter);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            showMessage(mMessage);
+            getPassButton().setEnabled(true);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java
new file mode 100644
index 0000000..1e1941f
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientCharacteristicActivity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.bluetooth;
+
+public class BleClientCharacteristicActivity extends BleReadWriteActivity {
+    public BleClientCharacteristicActivity() {
+        super(BleReadWriteActivity.CHARACTERISTIC);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java
new file mode 100644
index 0000000..a3a9830
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientConnectActivity.java
@@ -0,0 +1,93 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class BleClientConnectActivity extends PassFailButtons.Activity {
+
+    private EditText mEditText;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_client_connect);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_client_connect_name,
+                         R.string.ble_client_send_connect_info, -1);
+        getPassButton().setEnabled(false);
+
+        mEditText = (EditText) findViewById(R.id.ble_address);
+
+        ((Button) findViewById(R.id.ble_connect)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String address = mEditText.getText().toString();
+                if (!BluetoothAdapter.checkBluetoothAddress(address)) {
+                    showMessage("Invalid bluetooth address.");
+                } else {
+                    Intent intent = new Intent(BleClientConnectActivity.this,
+                                               BleClientService.class);
+                    intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                    BleClientService.COMMAND_CONNECT);
+                    intent.putExtra(BluetoothDevice.EXTRA_DEVICE, address);
+                    startService(intent);
+                }
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_BLUETOOTH_CONNECTED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            showMessage("Bluetooth LE connected");
+            getPassButton().setEnabled(true);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java
new file mode 100644
index 0000000..ab2229a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDescriptorActivity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.bluetooth;
+
+public class BleClientDescriptorActivity extends BleReadWriteActivity {
+    public BleClientDescriptorActivity() {
+        super(BleReadWriteActivity.DESCRIPTOR);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java
new file mode 100644
index 0000000..083d327
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientDisconnectActivity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.bluetooth;
+
+public class BleClientDisconnectActivity extends BleButtonActivity {
+    public BleClientDisconnectActivity() {
+        super(BleButtonActivity.DISCONNECT);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java
new file mode 100644
index 0000000..556ad06
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java
@@ -0,0 +1,390 @@
+/*
+ * 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.bluetooth;
+
+import java.util.UUID;
+import java.util.List;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCallback;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.Log;
+import android.widget.Toast;
+
+public class BleClientService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleClientService";
+
+    public static final int COMMAND_CONNECT = 0;
+    public static final int COMMAND_DISCONNECT = 1;
+    public static final int COMMAND_DISCOVER_SERVICE = 2;
+    public static final int COMMAND_READ_RSSI = 3;
+    public static final int COMMAND_WRITE_CHARACTERISTIC = 4;
+    public static final int COMMAND_READ_CHARACTERISTIC = 5;
+    public static final int COMMAND_WRITE_DESCRIPTOR = 6;
+    public static final int COMMAND_READ_DESCRIPTOR = 7;
+    public static final int COMMAND_SET_NOTIFICATION = 8;
+    public static final int COMMAND_BEGIN_WRITE = 9;
+    public static final int COMMAND_EXECUTE_WRITE = 10;
+    public static final int COMMAND_ABORT_RELIABLE = 11;
+
+    public static final String BLE_BLUETOOTH_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_CONNECTED";
+    public static final String BLE_BLUETOOTH_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISCONNECTED";
+    public static final String BLE_SERVICES_DISCOVERED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVICES_DISCOVERED";
+    public static final String BLE_CHARACTERISTIC_READ =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_READ";
+    public static final String BLE_CHARACTERISTIC_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_WRITE";
+    public static final String BLE_CHARACTERISTIC_CHANGED =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_CHANGED";
+    public static final String BLE_DESCRIPTOR_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_READ";
+    public static final String BLE_DESCRIPTOR_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_WRITE";
+    public static final String BLE_RELIABLE_WRITE_COMPLETED =
+            "com.android.cts.verifier.bluetooth.BLE_RELIABLE_WRITE_COMPLETED";
+    public static final String BLE_READ_REMOTE_RSSI =
+            "com.android.cts.verifier.bluetooth.BLE_READ_REMOTE_RSSI";
+
+    public static final String EXTRA_COMMAND =
+            "com.android.cts.verifier.bluetooth.EXTRA_COMMAND";
+    public static final String EXTRA_WRITE_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_WRITE_VALUE";
+    public static final String EXTRA_BOOL =
+            "com.android.cts.verifier.bluetooth.EXTRA_BOOL";
+    public static final String EXTRA_CHARACTERISTIC_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_CHARACTERISTIC_VALUE";
+    public static final String EXTRA_DESCRIPTOR_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_DESCRIPTOR_VALUE";
+    public static final String EXTRA_RSSI_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_RSSI_VALUE";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_UUID =
+            UUID.fromString("00009998-0000-1000-8000-00805f9b34fb");
+    private static final UUID UPDATE_CHARACTERISTIC_UUID =
+            UUID.fromString("00009997-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_UUID =
+            UUID.fromString("00009996-0000-1000-8000-00805f9b34fb");
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothAdapter mBluetoothAdapter;
+    private BluetoothDevice mDevice;
+    private BluetoothGatt mBluetoothGatt;
+    private Handler mHandler;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mBluetoothAdapter = mBluetoothManager.getAdapter();
+        mHandler = new Handler();
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (intent != null) handleIntent(intent);
+        return START_NOT_STICKY;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mBluetoothGatt.disconnect();
+        mBluetoothGatt.close();
+    }
+
+    private void handleIntent(Intent intent) {
+        int command = intent.getIntExtra(EXTRA_COMMAND, -1);
+        String address = intent.getStringExtra(BluetoothDevice.EXTRA_DEVICE); // sometimes null
+        String writeValue = intent.getStringExtra(EXTRA_WRITE_VALUE); // sometimes null
+        boolean enable = intent.getBooleanExtra(EXTRA_BOOL, false);
+        BluetoothGattService service;
+        BluetoothGattCharacteristic characteristic;
+        BluetoothGattDescriptor descriptor;
+
+        switch (command) {
+            case COMMAND_CONNECT:
+                mDevice = mBluetoothAdapter.getRemoteDevice(address);
+                mBluetoothGatt = mDevice.connectGatt(this, false, mGattCallbacks);
+                break;
+            case COMMAND_DISCONNECT:
+                if (mBluetoothGatt != null) mBluetoothGatt.disconnect();
+                break;
+            case COMMAND_DISCOVER_SERVICE:
+                if (mBluetoothGatt != null) mBluetoothGatt.discoverServices();
+                break;
+            case COMMAND_READ_RSSI:
+                if (mBluetoothGatt != null) mBluetoothGatt.readRemoteRssi();
+                break;
+            case COMMAND_WRITE_CHARACTERISTIC:
+                writeCharacteristic(writeValue);
+                break;
+            case COMMAND_READ_CHARACTERISTIC:
+                readCharacteristic();
+                break;
+            case COMMAND_WRITE_DESCRIPTOR:
+                writeDescriptor(writeValue);
+                break;
+            case COMMAND_READ_DESCRIPTOR:
+                readDescriptor();
+                break;
+            case COMMAND_SET_NOTIFICATION:
+                setNotification(enable);
+                break;
+            case COMMAND_BEGIN_WRITE:
+                if (mBluetoothGatt != null) mBluetoothGatt.beginReliableWrite();
+                break;
+            case COMMAND_EXECUTE_WRITE:
+                if (mBluetoothGatt != null) mBluetoothGatt.executeReliableWrite();
+                break;
+            case COMMAND_ABORT_RELIABLE:
+                if (mBluetoothGatt != null) mBluetoothGatt.abortReliableWrite(mDevice);
+                break;
+            default:
+                showMessage("Unrecognized command: " + command);
+                break;
+        }
+    }
+
+    private void writeCharacteristic(String writeValue) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return;
+        characteristic.setValue(writeValue);
+        mBluetoothGatt.writeCharacteristic(characteristic);
+    }
+
+    private void readCharacteristic() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic != null) mBluetoothGatt.readCharacteristic(characteristic);
+    }
+
+    private void writeDescriptor(String writeValue) {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor == null) return;
+        descriptor.setValue(writeValue.getBytes());
+        mBluetoothGatt.writeDescriptor(descriptor);
+    }
+
+    private void readDescriptor() {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor != null) mBluetoothGatt.readDescriptor(descriptor);
+    }
+
+    private void setNotification(boolean enable) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(UPDATE_CHARACTERISTIC_UUID);
+        if (characteristic != null)
+            mBluetoothGatt.setCharacteristicNotification(characteristic, enable);
+    }
+
+    private void notifyConnected() {
+        Intent intent = new Intent(BLE_BLUETOOTH_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDisconnected() {
+        Intent intent = new Intent(BLE_BLUETOOTH_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyServicesDiscovered() {
+        Intent intent = new Intent(BLE_SERVICES_DISCOVERED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicRead(String value) {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_READ);
+        intent.putExtra(EXTRA_CHARACTERISTIC_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicWrite() {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicChanged(String value) {
+        Intent intent = new Intent(BLE_CHARACTERISTIC_CHANGED);
+        intent.putExtra(EXTRA_CHARACTERISTIC_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorRead(String value) {
+        Intent intent = new Intent(BLE_DESCRIPTOR_READ);
+        intent.putExtra(EXTRA_DESCRIPTOR_VALUE, value);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorWrite() {
+        Intent intent = new Intent(BLE_DESCRIPTOR_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyReliableWriteCompleted() {
+        Intent intent = new Intent(BLE_RELIABLE_WRITE_COMPLETED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyReadRemoteRssi(int rssi) {
+        Intent intent = new Intent(BLE_READ_REMOTE_RSSI);
+        intent.putExtra(EXTRA_RSSI_VALUE, rssi);
+        sendBroadcast(intent);
+    }
+
+    private BluetoothGattService getService() {
+        if (mBluetoothGatt == null) return null;
+
+        BluetoothGattService service = mBluetoothGatt.getService(SERVICE_UUID);
+        if (service == null) {
+            showMessage("Service not found");
+            return null;
+        }
+        return service;
+    }
+
+    private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
+        BluetoothGattService service = getService();
+        if (service == null) return null;
+
+        BluetoothGattCharacteristic characteristic = service.getCharacteristic(uuid);
+        if (characteristic == null) {
+            showMessage("Characteristic not found");
+            return null;
+        }
+        return characteristic;
+    }
+
+    private BluetoothGattDescriptor getDescriptor() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return null;
+
+        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(DESCRIPTOR_UUID);
+        if (descriptor == null) {
+            showMessage("Descriptor not found");
+            return null;
+        }
+        return descriptor;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleClientService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private final BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
+            if (DEBUG) Log.d(TAG, "onConnectionStateChange");
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) notifyConnected();
+                else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    notifyDisconnected();
+                    showMessage("Bluetooth LE disconnected");
+                }
+            }
+        }
+
+        @Override
+        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (mBluetoothGatt.getService(SERVICE_UUID) != null)) {
+                notifyServicesDiscovered();
+            }
+        }
+
+        @Override
+        public void onCharacteristicRead(BluetoothGatt gatt,
+                                         BluetoothGattCharacteristic characteristic, int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (characteristic.getUuid().equals(CHARACTERISTIC_UUID))) {
+                notifyCharacteristicRead(characteristic.getStringValue(0));
+            }
+        }
+
+        @Override
+        public void onCharacteristicWrite(BluetoothGatt gatt,
+                                          BluetoothGattCharacteristic characteristic, int status) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicWrite: characteristic.val=" + characteristic.getStringValue(0)
+                                  + " status=" + status);
+            BluetoothGattCharacteristic mCharacteristic = getCharacteristic(CHARACTERISTIC_UUID);
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (characteristic.getStringValue(0).equals(mCharacteristic.getStringValue(0)))) {
+                notifyCharacteristicWrite();
+            }
+        }
+
+        @Override
+        public void onCharacteristicChanged(BluetoothGatt gatt,
+                                            BluetoothGattCharacteristic characteristic) {
+            if (characteristic.getUuid().equals(UPDATE_CHARACTERISTIC_UUID))
+                notifyCharacteristicChanged(characteristic.getStringValue(0));
+        }
+
+        @Override
+        public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
+                                     int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (descriptor.getUuid().equals(DESCRIPTOR_UUID))) {
+                notifyDescriptorRead(new String(descriptor.getValue()));
+            }
+        }
+
+        @Override
+        public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
+                                      int status) {
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (descriptor.getUuid().equals(DESCRIPTOR_UUID))) {
+                notifyDescriptorWrite();
+            }
+        }
+
+        @Override
+        public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyReliableWriteCompleted();
+        }
+
+        @Override
+        public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyReadRemoteRssi(rssi);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java
new file mode 100644
index 0000000..a13d934
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 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.bluetooth;
+
+import com.android.cts.verifier.ManifestTestListAdapter;
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.os.Bundle;
+
+public class BleClientTestActivity extends PassFailButtons.TestListActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_list);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_client_test_name, R.string.ble_client_test_info, -1);
+
+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName()));
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java
new file mode 100644
index 0000000..6896b04
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleDiscoverServiceActivity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.bluetooth;
+
+public class BleDiscoverServiceActivity extends BleButtonActivity {
+    public BleDiscoverServiceActivity() {
+        super(BleButtonActivity.DISCOVER_SERVICE);
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java
new file mode 100644
index 0000000..e0c79bf
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleNotifyCharacteristicActivity.java
@@ -0,0 +1,92 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class BleNotifyCharacteristicActivity extends PassFailButtons.Activity {
+
+    private boolean mEnable;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_notify_characteristic);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_notify_characteristic_name,
+                         R.string.ble_notify_characteristic_info, -1);
+
+        mEnable = false;
+
+        ((Button) findViewById(R.id.ble_notify)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mEnable = !mEnable;
+                if (mEnable) ((Button) v).setText(getString(R.string.ble_stop_notification));
+                else ((Button) v).setText(getString(R.string.ble_begin_notification));
+
+                Intent intent = new Intent(BleNotifyCharacteristicActivity.this,
+                                           BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_SET_NOTIFICATION);
+                intent.putExtra(BleClientService.EXTRA_BOOL, mEnable);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_CHARACTERISTIC_CHANGED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+        mEnable = false;
+        Intent intent = new Intent(BleNotifyCharacteristicActivity.this,
+                                   BleClientService.class);
+        intent.putExtra(BleClientService.EXTRA_COMMAND,
+                        BleClientService.COMMAND_SET_NOTIFICATION);
+        intent.putExtra(BleClientService.EXTRA_BOOL, mEnable);
+        startService(intent);
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String value = intent.getStringExtra(BleClientService.EXTRA_CHARACTERISTIC_VALUE);
+            ((TextView) findViewById(R.id.ble_notify_text)).setText(value);
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java
new file mode 100644
index 0000000..800499c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadRssiActivity.java
@@ -0,0 +1,76 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class BleReadRssiActivity extends PassFailButtons.Activity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_read_rssi);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_read_rssi_name,
+                         R.string.ble_read_rssi_info, -1);
+
+        ((Button) findViewById(R.id.ble_read_rssi)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReadRssiActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_READ_RSSI);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_READ_REMOTE_RSSI);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int rssi = intent.getIntExtra(BleClientService.EXTRA_RSSI_VALUE, 128);
+            ((TextView) findViewById(R.id.ble_rssi_text)).setText(Integer.toString(rssi));
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java
new file mode 100644
index 0000000..22233ef
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReadWriteActivity.java
@@ -0,0 +1,127 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+class BleReadWriteActivity extends PassFailButtons.Activity {
+
+    static final int CHARACTERISTIC = 0;
+    static final int DESCRIPTOR = 1;
+
+    private int mWriteCommand;
+    private int mReadCommand;
+    private String mWriteFilter;
+    private String mReadFilter;
+    private String mExtraValue;
+    private int mName;
+    private EditText mEditText;
+
+    BleReadWriteActivity(int target) {
+        if (target == CHARACTERISTIC) {
+            mWriteCommand = BleClientService.COMMAND_WRITE_CHARACTERISTIC;
+            mReadCommand = BleClientService.COMMAND_READ_CHARACTERISTIC;
+            mWriteFilter = BleClientService.BLE_CHARACTERISTIC_WRITE;
+            mReadFilter = BleClientService.BLE_CHARACTERISTIC_READ;
+            mExtraValue = BleClientService.EXTRA_CHARACTERISTIC_VALUE;
+            mName = R.string.ble_client_characteristic_name;
+        } else if (target == DESCRIPTOR) {
+            mWriteCommand = BleClientService.COMMAND_WRITE_DESCRIPTOR;
+            mReadCommand = BleClientService.COMMAND_READ_DESCRIPTOR;
+            mWriteFilter = BleClientService.BLE_DESCRIPTOR_WRITE;
+            mReadFilter = BleClientService.BLE_DESCRIPTOR_READ;
+            mExtraValue = BleClientService.EXTRA_DESCRIPTOR_VALUE;
+            mName = R.string.ble_client_descriptor_name;
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_client_read_write);
+        setPassFailButtonClickListeners();
+        setInfoResources(mName, R.string.ble_read_write_info, -1);
+
+        mEditText = (EditText) findViewById(R.id.write_text);
+
+        ((Button) findViewById(R.id.ble_write)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String writeValue = mEditText.getText().toString();
+                Intent intent = new Intent(BleReadWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mWriteCommand);
+                intent.putExtra(BleClientService.EXTRA_WRITE_VALUE, writeValue);
+                startService(intent);
+                mEditText.setText("");
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_read)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReadWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND, mReadCommand);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(mReadFilter);
+        filter.addAction(mWriteFilter);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == mWriteFilter)
+                showMessage("Write successful callback");
+            else if (action == mReadFilter) {
+                String value = intent.getStringExtra(mExtraValue);
+                ((TextView) findViewById(R.id.read_text)).setText(value);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java
new file mode 100644
index 0000000..c7460b5
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleReliableWriteActivity.java
@@ -0,0 +1,117 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class BleReliableWriteActivity extends PassFailButtons.Activity {
+
+    EditText mEditText;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_reliable_write);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_reliable_write_name, R.string.ble_reliable_write_info, -1);
+        getPassButton().setEnabled(false);
+        ((Button) findViewById(R.id.ble_execute)).setEnabled(false);
+
+        mEditText = (EditText) findViewById(R.id.write_text);
+
+        ((Button) findViewById(R.id.ble_begin)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_BEGIN_WRITE);
+                startService(intent);
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_write)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String writeValue = mEditText.getText().toString();
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_WRITE_CHARACTERISTIC);
+                intent.putExtra(BleClientService.EXTRA_WRITE_VALUE, writeValue);
+                startService(intent);
+                mEditText.setText("");
+            }
+        });
+
+        ((Button) findViewById(R.id.ble_execute)).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(BleReliableWriteActivity.this, BleClientService.class);
+                intent.putExtra(BleClientService.EXTRA_COMMAND,
+                                BleClientService.COMMAND_EXECUTE_WRITE);
+                startService(intent);
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleClientService.BLE_CHARACTERISTIC_WRITE);
+        filter.addAction(BleClientService.BLE_RELIABLE_WRITE_COMPLETED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+        Intent intent = new Intent(this, BleClientService.class);
+        intent.putExtra(BleClientService.EXTRA_COMMAND, BleClientService.COMMAND_ABORT_RELIABLE);
+        startService(intent);
+    }
+
+    private void showMessage(String msg) {
+        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == BleClientService.BLE_CHARACTERISTIC_WRITE) {
+                showMessage("Write value verified.");
+                ((Button) findViewById(R.id.ble_execute)).setEnabled(true);
+            } else if (action == BleClientService.BLE_RELIABLE_WRITE_COMPLETED) {
+                showMessage("Reliable write completed.");
+                getPassButton().setEnabled(true);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java
new file mode 100644
index 0000000..a896d69
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerService.java
@@ -0,0 +1,328 @@
+/*
+ * 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.bluetooth;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattServer;
+import android.bluetooth.BluetoothGattServerCallback;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.Log;
+import android.widget.Toast;
+
+public class BleServerService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleServerService";
+
+    public static final int COMMAND_ADD_SERVICE = 0;
+    public static final int COMMAND_WRITE_CHARACTERISTIC = 1;
+    public static final int COMMAND_WRITE_DESCRIPTOR = 2;
+
+    public static final String BLE_SERVER_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVER_CONNECTED";
+    public static final String BLE_SERVER_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVER_DISCONNECTED";
+    public static final String BLE_SERVICE_ADDED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVICE_ADDED";
+    public static final String BLE_CHARACTERISTIC_READ_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_READ_REQUEST";
+    public static final String BLE_CHARACTERISTIC_WRITE_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_CHARACTERISTIC_WRITE_REQUEST";
+    public static final String BLE_DESCRIPTOR_READ_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_READ_REQUEST";
+    public static final String BLE_DESCRIPTOR_WRITE_REQUEST =
+            "com.android.cts.verifier.bluetooth.BLE_DESCRIPTOR_WRITE_REQUEST";
+    public static final String BLE_EXECUTE_WRITE =
+            "com.android.cts.verifier.bluetooth.BLE_EXECUTE_WRITE";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_UUID =
+            UUID.fromString("00009998-0000-1000-8000-00805f9b34fb");
+    private static final UUID UPDATE_CHARACTERISTIC_UUID =
+            UUID.fromString("00009997-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_UUID =
+            UUID.fromString("00009996-0000-1000-8000-00805f9b34fb");
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothGattServer mGattServer;
+    private BluetoothGattService mService;
+    private BluetoothDevice mDevice;
+    private Timer mNotificationTimer;
+    private Handler mHandler;
+    private String mReliableWriteValue;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mGattServer = mBluetoothManager.openGattServer(this, mCallbacks);
+        mService = createService();
+        mGattServer.addService(mService);
+        mDevice = null;
+        mReliableWriteValue = null;
+
+        mHandler = new Handler();
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        return START_NOT_STICKY;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mDevice != null) mGattServer.cancelConnection(mDevice);
+        mGattServer.close();
+    }
+
+    private void writeCharacteristic(String writeValue) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic != null) return;
+        characteristic.setValue(writeValue);
+    }
+
+    private void writeDescriptor(String writeValue) {
+        BluetoothGattDescriptor descriptor = getDescriptor();
+        if (descriptor == null) return;
+        descriptor.setValue(writeValue.getBytes());
+    }
+
+    private void notifyConnected() {
+        if (DEBUG) Log.d(TAG, "notifyConnected");
+        Intent intent = new Intent(BLE_SERVER_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDisconnected() {
+        if (DEBUG) Log.d(TAG, "notifyDisconnected");
+        Intent intent = new Intent(BLE_SERVER_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyServiceAdded() {
+        if (DEBUG) Log.d(TAG, "notifyServiceAdded");
+        Intent intent = new Intent(BLE_SERVICE_ADDED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicReadRequest() {
+        if (DEBUG) Log.d(TAG, "notifyCharacteristicReadRequest");
+        Intent intent = new Intent(BLE_CHARACTERISTIC_READ_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyCharacteristicWriteRequest() {
+        if (DEBUG) Log.d(TAG, "notifyCharacteristicWriteRequest");
+        Intent intent = new Intent(BLE_CHARACTERISTIC_WRITE_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorReadRequest() {
+        if (DEBUG) Log.d(TAG, "notifyDescriptorReadRequest");
+        Intent intent = new Intent(BLE_DESCRIPTOR_READ_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDescriptorWriteRequest() {
+        if (DEBUG) Log.d(TAG, "notifyDescriptorWriteRequest");
+        Intent intent = new Intent(BLE_DESCRIPTOR_WRITE_REQUEST);
+        sendBroadcast(intent);
+    }
+
+    private void notifyExecuteWrite() {
+        if (DEBUG) Log.d(TAG, "notifyExecuteWrite");
+        Intent intent = new Intent(BLE_EXECUTE_WRITE);
+        sendBroadcast(intent);
+    }
+
+    private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
+        BluetoothGattCharacteristic characteristic =
+                mService.getCharacteristic(uuid);
+        if (characteristic == null) {
+            showMessage("Characteristic not found");
+            return null;
+        }
+        return characteristic;
+    }
+
+    private BluetoothGattDescriptor getDescriptor() {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(CHARACTERISTIC_UUID);
+        if (characteristic == null) return null;
+
+        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(DESCRIPTOR_UUID);
+        if (descriptor == null) {
+            showMessage("Descriptor not found");
+            return null;
+        }
+        return descriptor;
+    }
+
+    private BluetoothGattService createService() {
+        BluetoothGattService service =
+                new BluetoothGattService(SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
+        BluetoothGattCharacteristic characteristic =
+                new BluetoothGattCharacteristic(CHARACTERISTIC_UUID, 0x0A, 0x11);
+        BluetoothGattDescriptor descriptor = new BluetoothGattDescriptor(DESCRIPTOR_UUID, 0x11);
+        characteristic.addDescriptor(descriptor);
+        service.addCharacteristic(characteristic);
+
+        BluetoothGattCharacteristic notiCharacteristic =
+                new BluetoothGattCharacteristic(UPDATE_CHARACTERISTIC_UUID, 0x10, 0x00);
+        service.addCharacteristic(notiCharacteristic);
+
+        return service;
+    }
+
+    private void beginNotification() {
+        TimerTask task = new TimerTask() {
+            @Override
+            public void run() {
+                BluetoothGattCharacteristic characteristic =
+                        mService.getCharacteristic(UPDATE_CHARACTERISTIC_UUID);
+                if (characteristic == null) return;
+
+                String date = (new Date()).toString();
+                characteristic.setValue(date);
+                mGattServer.notifyCharacteristicChanged(mDevice, characteristic, false);
+            }
+        };
+        mNotificationTimer = new Timer();
+        mNotificationTimer.schedule(task, 0, 1000);
+    }
+
+    private void stopNotification() {
+        if (mNotificationTimer == null) return;
+        mNotificationTimer.cancel();
+        mNotificationTimer = null;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleServerService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private final BluetoothGattServerCallback mCallbacks = new BluetoothGattServerCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothDevice device, int status, int newState) {
+            if (DEBUG) Log.d(TAG, "onConnectionStateChange: newState=" + newState);
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) {
+                    mDevice = device;
+                    notifyConnected();
+                    beginNotification();
+                } else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    stopNotification();
+                    notifyDisconnected();
+                    mDevice = null;
+                }
+            }
+        }
+
+        @Override
+        public void onServiceAdded(int status, BluetoothGattService service) {
+            if (DEBUG) Log.d(TAG, "onServiceAdded()");
+            if (status == BluetoothGatt.GATT_SUCCESS) notifyServiceAdded();
+        }
+
+        @Override
+        public void onCharacteristicReadRequest(BluetoothDevice device, int requestId,
+                            int offset, BluetoothGattCharacteristic characteristic) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicReadRequest()");
+
+            notifyCharacteristicReadRequest();
+            mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0,
+                                     characteristic.getValue());
+        }
+
+        @Override
+        public void onCharacteristicWriteRequest(BluetoothDevice device, int requestId,
+                                                 BluetoothGattCharacteristic characteristic,
+                                                 boolean preparedWrite, boolean responseNeeded,
+                                                 int offset, byte[] value) {
+            if (DEBUG) Log.d(TAG, "onCharacteristicWriteRequest: preparedWrite=" + preparedWrite);
+
+            notifyCharacteristicWriteRequest();
+            if (preparedWrite) mReliableWriteValue = new String(value);
+            else characteristic.setValue(value);
+
+            if (responseNeeded)
+                mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, null);
+        }
+
+        @Override
+        public void onDescriptorReadRequest(BluetoothDevice device, int requestId,
+                                            int offset, BluetoothGattDescriptor descriptor) {
+            if (DEBUG) Log.d(TAG, "onDescriptorReadRequest(): (descriptor == getDescriptor())="
+                                  + (descriptor == getDescriptor()));
+
+            notifyDescriptorReadRequest();
+            mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0,
+                                     descriptor.getValue());
+        }
+
+        @Override
+        public void onDescriptorWriteRequest(BluetoothDevice device, int requestId,
+                                             BluetoothGattDescriptor descriptor,
+                                             boolean preparedWrite, boolean responseNeeded,
+                                             int offset,  byte[] value) {
+            if (DEBUG) Log.d(TAG, "onDescriptorWriteRequest(): (descriptor == getDescriptor())="
+                                  + (descriptor == getDescriptor()));
+
+            notifyDescriptorWriteRequest();
+            descriptor.setValue(value);
+            if (responseNeeded)
+                mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, 0, null);
+        }
+
+        @Override
+        public void onExecuteWrite(BluetoothDevice device, int requestId, boolean execute) {
+            if (DEBUG) Log.d(TAG, "onExecuteWrite");
+            if (execute) {
+                notifyExecuteWrite();
+                getCharacteristic(CHARACTERISTIC_UUID).setValue(mReliableWriteValue);
+            }
+        }
+    };
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java
new file mode 100644
index 0000000..ec31fde
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleServerStartActivity.java
@@ -0,0 +1,196 @@
+/*
+ * 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.bluetooth;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+public class BleServerStartActivity extends PassFailButtons.Activity {
+
+    private List<Test> mTestList;
+    private TestAdapter mTestAdapter;
+    private int mAllPassed;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_server_start);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_server_start_name,
+                         R.string.ble_server_start_info, -1);
+        getPassButton().setEnabled(false);
+
+        mTestList = setupTestList();
+        mTestAdapter = new TestAdapter(this, mTestList);
+
+        ListView listView = (ListView) findViewById(R.id.ble_server_tests);
+        listView.setAdapter(mTestAdapter);
+
+        mAllPassed = 0;
+        startService(new Intent(this, BleServerService.class));
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BleServerService.BLE_SERVICE_ADDED);
+        filter.addAction(BleServerService.BLE_SERVER_CONNECTED);
+        filter.addAction(BleServerService.BLE_CHARACTERISTIC_READ_REQUEST);
+        filter.addAction(BleServerService.BLE_CHARACTERISTIC_WRITE_REQUEST);
+        filter.addAction(BleServerService.BLE_DESCRIPTOR_READ_REQUEST);
+        filter.addAction(BleServerService.BLE_DESCRIPTOR_WRITE_REQUEST);
+        filter.addAction(BleServerService.BLE_EXECUTE_WRITE);
+        filter.addAction(BleServerService.BLE_SERVER_DISCONNECTED);
+        registerReceiver(onBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(onBroadcast);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        stopService(new Intent(this, BleServerService.class));
+    }
+
+    private List<Test> setupTestList() {
+        ArrayList<Test> testList = new ArrayList<Test>();
+        testList.add(new Test(R.string.ble_server_add_service));
+        testList.add(new Test(R.string.ble_server_receiving_connect));
+        testList.add(new Test(R.string.ble_server_read_characteristic));
+        testList.add(new Test(R.string.ble_server_write_characteristic));
+        testList.add(new Test(R.string.ble_server_read_descriptor));
+        testList.add(new Test(R.string.ble_server_write_descriptor));
+        testList.add(new Test(R.string.ble_server_reliable_write));
+        testList.add(new Test(R.string.ble_server_receiving_disconnect));
+        return testList;
+    }
+
+    class Test {
+        private boolean passed;
+        private int instructions;
+
+        private Test(int instructions) {
+            passed = false;
+            this.instructions = instructions;
+        }
+    }
+
+    private BroadcastReceiver onBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action == BleServerService.BLE_SERVICE_ADDED) {
+                mTestList.get(0).passed = true;
+                mAllPassed |= 0x01;
+            } else if (action == BleServerService.BLE_SERVER_CONNECTED) {
+                mTestList.get(1).passed = true;
+                mAllPassed |= 0x02;
+            } else if (action == BleServerService.BLE_CHARACTERISTIC_READ_REQUEST) {
+                mTestList.get(2).passed = true;
+                mAllPassed |= 0x04;
+            } else if (action == BleServerService.BLE_CHARACTERISTIC_WRITE_REQUEST) {
+                mTestList.get(3).passed = true;
+                mAllPassed |= 0x08;
+            } else if (action == BleServerService.BLE_DESCRIPTOR_READ_REQUEST) {
+                mTestList.get(4).passed = true;
+                mAllPassed |= 0x10;
+            } else if (action == BleServerService.BLE_DESCRIPTOR_WRITE_REQUEST) {
+                mTestList.get(5).passed = true;
+                mAllPassed |= 0x20;
+            } else if (action == BleServerService.BLE_EXECUTE_WRITE) {
+                mTestList.get(6).passed = true;
+                mAllPassed |= 0x40;
+            } else if (action == BleServerService.BLE_SERVER_DISCONNECTED) {
+                mTestList.get(7).passed = true;
+                mAllPassed |= 0x80;
+            }
+            mTestAdapter.notifyDataSetChanged();
+            if (mAllPassed == 0xFF) getPassButton().setEnabled(true);
+        }
+    };
+
+    class TestAdapter extends BaseAdapter {
+        Context context;
+        List<Test> tests;
+        LayoutInflater inflater;
+
+        public TestAdapter(Context context, List<Test> tests) {
+            this.context = context;
+            inflater = LayoutInflater.from(context);
+            this.tests = tests;
+        }
+
+        @Override
+        public int getCount() {
+            return tests.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return tests.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewGroup vg;
+
+            if (convertView != null) {
+                vg = (ViewGroup) convertView;
+            } else {
+                vg = (ViewGroup) inflater.inflate(R.layout.ble_server_start_item, null);
+            }
+
+            Test test = tests.get(position);
+            if (test.passed) {
+                ((ImageView) vg.findViewById(R.id.status)).setImageResource(R.drawable.fs_good);
+            } else {
+                ((ImageView) vg.findViewById(R.id.status)).
+                                setImageResource(R.drawable.fs_indeterminate);
+            }
+            ((TextView) vg.findViewById(R.id.instructions)).setText(test.instructions);
+
+            return vg;
+        }
+    }
+}
\ No newline at end of file
diff --git a/suite/pts/PtsBenchmarkingList.mk b/suite/pts/PtsBenchmarkingList.mk
index 4a59c4f..7945f6d 100644
--- a/suite/pts/PtsBenchmarkingList.mk
+++ b/suite/pts/PtsBenchmarkingList.mk
@@ -30,12 +30,13 @@
     PtsDeviceTaskswitchingAppA \
     PtsDeviceTaskswitchingAppB \
     PtsDeviceTaskswitchingControl \
+    PtsDeviceUi \
     PtsDeviceOpenGl
 
 PTS_HOST_CASES := \
     PtsHostBootup \
     PtsHostUi \
-    PtsHostJankOpenGl
+    PtsHostJank
 
 pts_device_lib_tests := \
-    PtsDeviceJankOpenGl
\ No newline at end of file
+    PtsDeviceJank
\ No newline at end of file
diff --git a/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/primitive/GLPrimitiveBenchmark.java b/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/primitive/GLPrimitiveBenchmark.java
index 4477f3b..053e0cf 100644
--- a/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/primitive/GLPrimitiveBenchmark.java
+++ b/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/primitive/GLPrimitiveBenchmark.java
@@ -120,9 +120,8 @@
         intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_ITERATIONS, numIterations);
         intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, timeout);
 
-        GLPrimitiveActivity activity = null;
         setActivityIntent(intent);
-        activity = getActivity();
+        GLPrimitiveActivity activity = getActivity();
         if (activity != null) {
             activity.waitForCompletion();
             double[] fpsValues = activity.mFpsValues;
diff --git a/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/reference/GLReferenceBenchmark.java b/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/reference/GLReferenceBenchmark.java
index 0f01759..cc98bab 100644
--- a/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/reference/GLReferenceBenchmark.java
+++ b/suite/pts/deviceTests/opengl/src/com/android/pts/opengl/reference/GLReferenceBenchmark.java
@@ -49,9 +49,8 @@
         intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_NUM_FRAMES, NUM_FRAMES);
         intent.putExtra(GLActivityIntentKeys.INTENT_EXTRA_TIMEOUT, TIMEOUT);
 
-        GLReferenceActivity activity = null;
         setActivityIntent(intent);
-        activity = getActivity();
+        GLReferenceActivity activity = getActivity();
         if (activity != null) {
             activity.waitForCompletion();
             double totalTime = 0;
diff --git a/suite/pts/deviceTests/ui/Android.mk b/suite/pts/deviceTests/ui/Android.mk
index 3790342..d9b17aa 100644
--- a/suite/pts/deviceTests/ui/Android.mk
+++ b/suite/pts/deviceTests/ui/Android.mk
@@ -24,13 +24,7 @@
 
 LOCAL_STATIC_JAVA_LIBRARIES := ptsutil ctsutil ctstestrunner
 
-LOCAL_JNI_SHARED_LIBRARIES := libctsopenglperf_jni
-
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
-# re-use existing openglperf code for CTS. Do not include any test from that dir.
-LOCAL_SRC_FILES += $(filter-out %Test.java,$(call all-java-files-under, ../../../../tests/tests/openglperf/src))
-# do not use its own assets for this package.
-LOCAL_ASSET_DIR := $(LOCAL_PATH)/../../../../tests/tests/openglperf/assets
 
 LOCAL_PACKAGE_NAME := PtsDeviceUi
 
diff --git a/suite/pts/deviceTests/ui/AndroidManifest.xml b/suite/pts/deviceTests/ui/AndroidManifest.xml
index 839e8aa..2a74791 100644
--- a/suite/pts/deviceTests/ui/AndroidManifest.xml
+++ b/suite/pts/deviceTests/ui/AndroidManifest.xml
@@ -26,17 +26,13 @@
 
         <activity
             android:name=".ScrollingActivity"
-            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
-            android:screenOrientation="portrait" >
+            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity
-            android:name="android.openglperf.cts.GlPlanetsActivity"
-            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />
     </application>
 
     <instrumentation
diff --git a/suite/pts/deviceTests/ui/src/com/android/pts/ui/FpsTest.java b/suite/pts/deviceTests/ui/src/com/android/pts/ui/FpsTest.java
deleted file mode 100644
index 08a6ad8..0000000
--- a/suite/pts/deviceTests/ui/src/com/android/pts/ui/FpsTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.pts.ui;
-
-import android.content.Context;
-import android.content.Intent;
-import android.openglperf.cts.GlPlanetsActivity;
-import android.util.Log;
-import android.view.Display;
-import android.view.WindowManager;
-
-import com.android.pts.util.ResultType;
-import com.android.pts.util.ResultUnit;
-import com.android.pts.util.PtsActivityInstrumentationTestCase2;
-import com.android.pts.util.ReportLog;
-import com.android.pts.util.Stat;
-
-/**
- * measure time taken to render n frames with OpenGL.
- * This will measure the jankiness of the Gl rendering.
- * If some frames are delayed, total time will take longer than n x refresh_rate
- */
-public class FpsTest extends PtsActivityInstrumentationTestCase2<GlPlanetsActivity> {
-    private static final String TAG = "FpsTest";
-    private static final int NUM_FRAMES_TO_RENDER = 60 * 60;
-    private static final long RENDERING_TIMEOUT = NUM_FRAMES_TO_RENDER / 10;
-    private GlPlanetsActivity mActivity;
-
-    public FpsTest() {
-        super(GlPlanetsActivity.class);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        mActivity = null;
-        super.tearDown();
-    }
-
-    public void testFrameJankiness() throws Exception {
-        Intent intent = new Intent();
-        intent.putExtra(GlPlanetsActivity.INTENT_EXTRA_NUM_FRAMES,
-                NUM_FRAMES_TO_RENDER);
-        intent.putExtra(GlPlanetsActivity.INTENT_EXTRA_NUM_PLANETS, 0);
-        intent.putExtra(GlPlanetsActivity.INTENT_EXTRA_USE_VBO_VERTICES, true);
-        intent.putExtra(GlPlanetsActivity.INTENT_EXTRA_USE_VBO_INDICES, true);
-        intent.putExtra(GlPlanetsActivity.INTENT_EXTRA_NUM_INDEX_BUFFERS, 10);
-
-        setActivityIntent(intent);
-        mActivity = getActivity();
-        boolean waitResult = mActivity.waitForGlPlanetsCompletionWithTimeout(RENDERING_TIMEOUT);
-        assertTrue("timeout while waiting for rendering completion", waitResult);
-
-        int[] frameInterval = mActivity.getFrameInterval();
-        assertTrue(frameInterval.length == NUM_FRAMES_TO_RENDER);
-        double fpsMeasured = mActivity.getAverageFps();
-        WindowManager wm = (WindowManager)mActivity.getSystemService(Context.WINDOW_SERVICE);
-        Display dpy = wm.getDefaultDisplay();
-        double fpsNominal = dpy.getRefreshRate();
-        double frameIntervalNominalInMs = 1000.0 / fpsNominal;
-
-        // first one not valid, and should be thrown away
-        double[] intervals = new double[NUM_FRAMES_TO_RENDER - 1];
-        double[] jankiness = new double[NUM_FRAMES_TO_RENDER - 2];
-        for (int i = 0; i < NUM_FRAMES_TO_RENDER - 1; i++) {
-            intervals[i] = frameInterval[i + 1];
-        }
-        int jankNumber = 0;
-        double totalJanks = 0.0;
-        for (int i = 0; i < NUM_FRAMES_TO_RENDER - 2; i++) {
-            double delta = intervals[i + 1] - intervals[i];
-            double normalizedDelta = delta / frameIntervalNominalInMs;
-            // This makes delay over 1.5 * frameIntervalNomial a jank.
-            // Note that too big delay is not excluded here as there should be no pause.
-            jankiness[i] = (int)Math.round(Math.max(normalizedDelta, 0.0));
-            if (jankiness[i] > 0) {
-                jankNumber++;
-            }
-            totalJanks += jankiness[i];
-        }
-
-        Log.i(TAG, " fps nominal " + fpsNominal + " fps measured " + fpsMeasured);
-        getReportLog().printArray("intervals", intervals, ResultType.NEUTRAL,
-                ResultUnit.MS);
-        getReportLog().printArray("jankiness", jankiness, ResultType.LOWER_BETTER,
-                ResultUnit.COUNT);
-        getReportLog().printValue("number of jank", jankNumber, ResultType.LOWER_BETTER,
-                ResultUnit.COUNT);
-        getReportLog().printSummary("total janks", totalJanks, ResultType.LOWER_BETTER,
-                ResultUnit.COUNT);
-    }
-}
diff --git a/suite/pts/deviceTests/ui/src/com/android/pts/ui/ScrollingActivity.java b/suite/pts/deviceTests/ui/src/com/android/pts/ui/ScrollingActivity.java
index fbec65d..c69b4c5 100644
--- a/suite/pts/deviceTests/ui/src/com/android/pts/ui/ScrollingActivity.java
+++ b/suite/pts/deviceTests/ui/src/com/android/pts/ui/ScrollingActivity.java
@@ -31,16 +31,20 @@
  */
 public class ScrollingActivity extends ListActivity implements OnScrollListener {
     static final String TAG = "ScrollingActivity";
-    private static final int NUMBER_ELEMENTS = 10000;
+    private static final String NUM_ELEMENTS_EXTRA = "num_elements";
+    private static final int NUM_ELEMENTS_DEFAULT = 10000;
     private static final int SCROLL_TIME_IN_MS = 1;
     private static final int WAIT_TIMEOUT_IN_SECS = 5 * 60;
-    private String[] mItems = new String[NUMBER_ELEMENTS];
+    private String[] mItems;
     private CountDownLatch mLatchStop = null;
     private int mTargetLoc;
+    private int mNumElements;
 
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        for (int i = 0; i < NUMBER_ELEMENTS; i++) {
+        mNumElements = getIntent().getIntExtra(NUM_ELEMENTS_EXTRA, NUM_ELEMENTS_DEFAULT);
+        mItems = new String[mNumElements];
+        for (int i = 0; i < mNumElements; i++) {
             mItems[i] = Integer.toString(i);
         }
         setListAdapter(new ArrayAdapter<String>(this,
@@ -53,7 +57,7 @@
         return doScroll(0);
     }
     public boolean scrollToBottom() {
-        return doScroll(NUMBER_ELEMENTS - 1);
+        return doScroll(mNumElements - 1);
     }
 
     private boolean doScroll(final int loc) {
diff --git a/suite/pts/hostTests/jank/Android.mk b/suite/pts/hostTests/jank/Android.mk
index 1d5346c..c1fd2d6 100644
--- a/suite/pts/hostTests/jank/Android.mk
+++ b/suite/pts/hostTests/jank/Android.mk
@@ -20,20 +20,20 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_MODULE := PtsHostJankOpenGl
+LOCAL_MODULE := PtsHostJank
 
 LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed-prebuilt ddmlib-prebuilt ptscommonutilhost
 
-LOCAL_CTS_TEST_PACKAGE := com.android.pts.jank.opengl
+LOCAL_CTS_TEST_PACKAGE := com.android.pts.jank
 
-LOCAL_DEVICE_JAR_ := PtsDeviceJankOpenGl
+LOCAL_DEVICE_JAR_ := PtsDeviceJank
 cts_library_jar_ := $(CTS_TESTCASES_OUT)/$(LOCAL_DEVICE_JAR_).jar
 
 $(cts_library_jar_): $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_DEVICE_JAR_))/javalib.jar | $(ACP)
 	$(hide) mkdir -p $(CTS_TESTCASES_OUT)
 	$(hide) $(ACP) -fp $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_DEVICE_JAR_))/javalib.jar $@
 
-$(CTS_TESTCASES_OUT)/PtsHostJankOpenGl.xml: $(cts_library_jar_)
+$(CTS_TESTCASES_OUT)/PtsHostJank.xml: $(cts_library_jar_)
 
 include $(BUILD_CTS_HOST_JAVA_LIBRARY)
 
diff --git a/suite/pts/hostTests/jank/app/Android.mk b/suite/pts/hostTests/jank/app/Android.mk
index 81f5f73..62b950d 100644
--- a/suite/pts/hostTests/jank/app/Android.mk
+++ b/suite/pts/hostTests/jank/app/Android.mk
@@ -18,7 +18,7 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := PtsDeviceJankOpenGl
+LOCAL_MODULE := PtsDeviceJank
 LOCAL_DEX_PREOPT := false
 
 LOCAL_JAVA_LIBRARIES := uiautomator.core
diff --git a/suite/pts/hostTests/jank/app/src/com/android/pts/jank/PtsJankTestBase.java b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/PtsJankTestBase.java
new file mode 100644
index 0000000..cbb6969
--- /dev/null
+++ b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/PtsJankTestBase.java
@@ -0,0 +1,98 @@
+/*
+ * 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.pts.jank;
+
+import android.os.Bundle;
+import android.util.Log;
+
+import com.android.uiautomator.platform.JankTestBase;
+import com.android.uiautomator.platform.SurfaceFlingerHelper;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Scanner;
+
+public class PtsJankTestBase extends JankTestBase {
+    private final static String TAG = PtsJankTestBase.class.getName();
+    protected final static String START_CMD = "am start -W -a android.intent.action.MAIN -n %s";
+    protected final static String STOP_CMD = "am force-stop %s";
+    protected final static String INTENT_STRING_EXTRA = " --es %s %s";
+    protected final static String INTENT_BOOLEAN_EXTRA = " --ez %s %b";
+    protected final static String INTENT_INTEGER_EXTRA = " --ei %s %d";
+    protected static long SLEEP_TIME = 2000; // 2 seconds
+    protected static int NUM_ITERATIONS = 5;
+    protected static int TRACE_TIME = 5;
+
+    @Override
+    protected String getPropertyString(Bundle params, String key)
+            throws FileNotFoundException, IOException {
+        if (key.equals("iteration")) {
+            return NUM_ITERATIONS + "";
+        }
+        if (key.equals("tracetime")) {
+            return TRACE_TIME + "";
+        }
+        return super.getPropertyString(params, key);
+    }
+
+    protected void runShellCommand(String command) throws Exception {
+        Process p = null;
+        Scanner out = null;
+        Scanner err = null;
+        try {
+            p = Runtime.getRuntime().exec(command);
+
+            StringBuilder outStr = new StringBuilder();
+            StringBuilder errStr = new StringBuilder();
+            out = new Scanner(p.getInputStream());
+            err = new Scanner(p.getErrorStream());
+            boolean read = true;
+            while (read) {
+                if (out.hasNextLine()) {
+                    outStr.append(out.nextLine());
+                    outStr.append("\n");
+                } else if (err.hasNextLine()) {
+                    errStr.append(err.nextLine());
+                    errStr.append("\n");
+                } else {
+                    read = false;
+                }
+            }
+            Log.i(TAG, command);
+            if (outStr.length() > 0) {
+                Log.i(TAG, outStr.toString());
+            }
+            if (errStr.length() > 0) {
+                Log.e(TAG, errStr.toString());
+            }
+        } finally {
+            if (p != null) {
+                int status = p.waitFor();
+                if (status != 0) {
+                    throw new RuntimeException(
+                            String.format("Run shell command: %s, status: %s", command, status));
+                }
+                p.destroy();
+                p = null;
+            }
+            if (out != null) {
+                out.close();
+            }
+            if (err != null) {
+                err.close();
+            }
+        }
+    }
+}
diff --git a/suite/pts/hostTests/jank/app/src/com/android/pts/jank/opengl/PtsDeviceJankOpenGl.java b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/opengl/PtsDeviceJankOpenGl.java
index 259649c..715de4b 100644
--- a/suite/pts/hostTests/jank/app/src/com/android/pts/jank/opengl/PtsDeviceJankOpenGl.java
+++ b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/opengl/PtsDeviceJankOpenGl.java
@@ -14,43 +14,17 @@
 
 package com.android.pts.jank.opengl;
 
-import android.os.Bundle;
 import android.util.Log;
 
-import com.android.uiautomator.platform.JankTestBase;
+import com.android.pts.jank.PtsJankTestBase;
 import com.android.uiautomator.platform.SurfaceFlingerHelper;
 
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Scanner;
-import java.util.concurrent.Semaphore;
-
-public class PtsDeviceJankOpenGl extends JankTestBase {
-    private final static String TAG = "JankTest";
+public class PtsDeviceJankOpenGl extends PtsJankTestBase {
+    private final static String TAG = PtsDeviceJankOpenGl.class.getName();
     private final static String PACKAGE = "com.android.pts.opengl";
     private final static String COMPONENT =
             PACKAGE + "/" + PACKAGE + ".primitive.GLPrimitiveActivity";
-    private final static String START_CMD = "am start -W -a android.intent.action.MAIN -n %s";
-    private final static String STOP_CMD = "am force-stop %s";
-    private final static String INTENT_STRING_EXTRA = " --es %s %s";
-    private final static String INTENT_BOOLEAN_EXTRA = " --ez %s %b";
-    private final static String INTENT_INTEGER_EXTRA = " --ei %s %d";
     private static String APP_WINDOW_NAME = "SurfaceView";
-    private static long SLEEP_TIME = 2000; // 2 seconds
-    private static int NUM_ITERATIONS = 5;
-    private static int TRACE_TIME = 5;
-
-    @Override
-    protected String getPropertyString(Bundle params, String key)
-            throws FileNotFoundException, IOException {
-        if (key.equals("iteration")) {
-            return NUM_ITERATIONS + "";
-        }
-        if (key.equals("tracetime")) {
-            return TRACE_TIME + "";
-        }
-        return super.getPropertyString(params, key);
-    }
 
     /**
      * Runs the full OpenGL ES 2.0 pipeline test.
@@ -105,9 +79,11 @@
             // Start activity
             runShellCommand(startCommand);
 
+            // Wait for the activity to start
+            sleep(SLEEP_TIME / 2);
+
             // Start systrace
-            // TODO(jgennis): Systrace has been commented out because of read-tgid permission error
-            // startTrace(mTestCaseName, i);
+            startTrace(mTestCaseName, i);
 
             // Clear SurfaceFlinger buffer
             Log.i(TAG, "Clearing SurfaceFlinger buffer");
@@ -122,7 +98,7 @@
             assertTrue("SurfaceFlingerHelper could not get timestamps", result);
 
             // Stop systrace
-            // endTrace();
+            endTrace();
 
             // Record results
             recordResults(mTestCaseName, i);
@@ -132,54 +108,4 @@
         // Stop any remaining instances
         runShellCommand(stopCommand);
     }
-
-    private void runShellCommand(String command) throws Exception {
-        Process p = null;
-        Scanner out = null;
-        Scanner err = null;
-        try {
-            p = Runtime.getRuntime().exec(command);
-
-            StringBuilder outStr = new StringBuilder();
-            StringBuilder errStr = new StringBuilder();
-            out = new Scanner(p.getInputStream());
-            err = new Scanner(p.getErrorStream());
-            boolean read = true;
-            while (read) {
-                if (out.hasNextLine()) {
-                    outStr.append(out.nextLine());
-                    outStr.append("\n");
-                } else if (err.hasNextLine()) {
-                    errStr.append(err.nextLine());
-                    errStr.append("\n");
-                } else {
-                    read = false;
-                }
-            }
-            Log.i(TAG, command);
-            if (outStr.length() > 0) {
-                Log.i(TAG, outStr.toString());
-            }
-            if (errStr.length() > 0) {
-                Log.e(TAG, errStr.toString());
-            }
-        } finally {
-            if (p != null) {
-                int status = p.waitFor();
-                if (status != 0) {
-                    throw new RuntimeException(
-                            String.format("Run shell command: %s, status: %s", command, status));
-                }
-                p.destroy();
-                p = null;
-            }
-            if (out != null) {
-                out.close();
-            }
-            if (err != null) {
-                err.close();
-            }
-        }
-    }
-
 }
diff --git a/suite/pts/hostTests/jank/app/src/com/android/pts/jank/ui/PtsDeviceJankUi.java b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/ui/PtsDeviceJankUi.java
new file mode 100644
index 0000000..02d466e
--- /dev/null
+++ b/suite/pts/hostTests/jank/app/src/com/android/pts/jank/ui/PtsDeviceJankUi.java
@@ -0,0 +1,86 @@
+/*
+ * 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.pts.jank.ui;
+
+import android.util.Log;
+import android.widget.ListView;
+
+import com.android.pts.jank.PtsJankTestBase;
+import com.android.uiautomator.core.UiScrollable;
+import com.android.uiautomator.core.UiSelector;
+import com.android.uiautomator.platform.SurfaceFlingerHelper;
+
+public class PtsDeviceJankUi extends PtsJankTestBase {
+    private final static String TAG = PtsDeviceJankUi.class.getName();
+    private final static String PACKAGE = "com.android.pts.ui";
+    private final static String COMPONENT =
+            PACKAGE + "/" + PACKAGE + ".ScrollingActivity";
+    private final static int NUM_ELEMENTS = 1000;
+    private static String APP_WINDOW_NAME = COMPONENT;
+
+    // TODO(stuartscott): expand deviceTests/ui app to have a more complex UI
+    /**
+     * Runs the ScrollingActivity and measures jank during a scroll.
+     */
+    public void testScrolling() throws Exception {
+        // Start activity command
+        final StringBuilder sb = new StringBuilder();
+        sb.append(String.format(START_CMD, COMPONENT));
+        sb.append(String.format(INTENT_INTEGER_EXTRA, "num_elements", NUM_ELEMENTS));
+        final String startCommand = sb.toString();
+        final String stopCommand = String.format(STOP_CMD, PACKAGE);
+
+        Log.i(TAG, "Start command: " + startCommand);
+        Log.i(TAG, "Stop command: " + stopCommand);
+
+        setIteration(NUM_ITERATIONS);
+        for (int i = 0; i < NUM_ITERATIONS; i++) {
+            // Stop any existing instances
+            runShellCommand(stopCommand);
+            // Start activity
+            runShellCommand(startCommand);
+
+            // Wait for the activity to start
+            sleep(SLEEP_TIME / 2);
+
+            UiScrollable list = new UiScrollable(
+                    new UiSelector().className(ListView.class.getName()));
+
+            // Start systrace
+            startTrace(mTestCaseName, i);
+
+            // Clear SurfaceFlinger buffer
+            Log.i(TAG, "Clearing SurfaceFlinger buffer");
+            SurfaceFlingerHelper.clearBuffer(APP_WINDOW_NAME);
+
+            list.flingToEnd(2);
+
+            // Dump SurfaceFlinger buffer
+            Log.i(TAG, "Dumping SurfaceFlinger buffer");
+            boolean result = SurfaceFlingerHelper.dumpFrameLatency(APP_WINDOW_NAME, true);
+            assertTrue("SurfaceFlingerHelper could not get timestamps", result);
+
+            // Stop systrace
+            endTrace();
+
+            // Record results
+            recordResults(mTestCaseName, i);
+        }
+        // Save aggregated results
+        saveResults(mTestCaseName);
+        // Stop any remaining instances
+        runShellCommand(stopCommand);
+    }
+}
diff --git a/suite/pts/hostTests/jank/src/com/android/pts/jank/PtsHostJankTest.java b/suite/pts/hostTests/jank/src/com/android/pts/jank/PtsHostJankTest.java
index 1264786..9c2b481 100644
--- a/suite/pts/hostTests/jank/src/com/android/pts/jank/PtsHostJankTest.java
+++ b/suite/pts/hostTests/jank/src/com/android/pts/jank/PtsHostJankTest.java
@@ -14,7 +14,6 @@
 package com.android.pts.jank;
 
 import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
 import com.android.ddmlib.IShellOutputReceiver;
 import com.android.ddmlib.Log;
 import com.android.ddmlib.Log.LogLevel;
@@ -24,17 +23,10 @@
 import com.android.pts.util.ResultUnit;
 import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.result.CollectingTestListener;
-import com.android.tradefed.result.TestRunResult;
 import com.android.tradefed.testtype.DeviceTestCase;
 import com.android.tradefed.testtype.IBuildReceiver;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Scanner;
 
diff --git a/suite/pts/hostTests/jank/src/com/android/pts/jank/opengl/PtsHostJankOpenGl.java b/suite/pts/hostTests/jank/src/com/android/pts/jank/opengl/PtsHostJankOpenGl.java
index aea0b11..8d9c3e7 100644
--- a/suite/pts/hostTests/jank/src/com/android/pts/jank/opengl/PtsHostJankOpenGl.java
+++ b/suite/pts/hostTests/jank/src/com/android/pts/jank/opengl/PtsHostJankOpenGl.java
@@ -13,20 +13,18 @@
  */
 package com.android.pts.jank.opengl;
 
-import com.android.ddmlib.Log;
-import com.android.ddmlib.Log.LogLevel;
 import com.android.pts.jank.PtsHostJankTest;
 
 import java.io.File;
 
 public class PtsHostJankOpenGl extends PtsHostJankTest {
 
-    private static final String APK_PACKAGE = "com.android.pts.opengl";
+    private static final String APK_PACKAGE = "com.android.pts";
     private static final String APK = "PtsDeviceOpenGl.apk";
     private static final String PACKAGE = "com.android.pts.jank.opengl";
     private static final String HOST_CLASS = PtsHostJankOpenGl.class.getName();
     private static final String DEVICE_CLASS = PACKAGE + ".PtsDeviceJankOpenGl";
-    private static final String JAR_NAME = "PtsDeviceJankOpenGl.jar";
+    private static final String JAR_NAME = "PtsDeviceJank.jar";
 
     public PtsHostJankOpenGl() {
         super(JAR_NAME, DEVICE_CLASS, HOST_CLASS);
diff --git a/suite/pts/hostTests/jank/src/com/android/pts/jank/ui/PtsHostJankUi.java b/suite/pts/hostTests/jank/src/com/android/pts/jank/ui/PtsHostJankUi.java
new file mode 100644
index 0000000..245a892
--- /dev/null
+++ b/suite/pts/hostTests/jank/src/com/android/pts/jank/ui/PtsHostJankUi.java
@@ -0,0 +1,52 @@
+/*
+ * 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.pts.jank.ui;
+
+import com.android.pts.jank.PtsHostJankTest;
+
+import java.io.File;
+
+public class PtsHostJankUi extends PtsHostJankTest {
+
+    private static final String APK_PACKAGE = "com.android.pts";
+    private static final String APK = "PtsDeviceUi.apk";
+    private static final String PACKAGE = "com.android.pts.jank.ui";
+    private static final String HOST_CLASS = PtsHostJankUi.class.getName();
+    private static final String DEVICE_CLASS = PACKAGE + ".PtsDeviceJankUi";
+    private static final String JAR_NAME = "PtsDeviceJank.jar";
+
+    public PtsHostJankUi() {
+        super(JAR_NAME, DEVICE_CLASS, HOST_CLASS);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Install the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        File app = mBuild.getTestApp(APK);
+        mDevice.installPackage(app, false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Uninstall the app.
+        mDevice.uninstallPackage(APK_PACKAGE);
+        super.tearDown();
+    }
+
+    public void testScrolling() throws Exception {
+        runUiAutomatorTest("testScrolling");
+    }
+}
diff --git a/tests/core/libcore/com/Android.mk b/tests/core/libcore/com/Android.mk
index 02dc3de..db08dbd 100644
--- a/tests/core/libcore/com/Android.mk
+++ b/tests/core/libcore/com/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.com
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/core/libcore/dalvik/Android.mk b/tests/core/libcore/dalvik/Android.mk
index 7b77a75..42d14f3 100644
--- a/tests/core/libcore/dalvik/Android.mk
+++ b/tests/core/libcore/dalvik/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.dalvik
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/core/libcore/jsr166/Android.mk b/tests/core/libcore/jsr166/Android.mk
new file mode 100644
index 0000000..3f9871e
--- /dev/null
+++ b/tests/core/libcore/jsr166/Android.mk
@@ -0,0 +1,20 @@
+# 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.jsr166
+LOCAL_STATIC_JAVA_LIBRARIES := jsr166-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/jsr166/AndroidManifest.xml b/tests/core/libcore/jsr166/AndroidManifest.xml
new file mode 100644
index 0000000..3a0150e
--- /dev/null
+++ b/tests/core/libcore/jsr166/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.jsr166">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/libcore/Android.mk b/tests/core/libcore/libcore/Android.mk
index 382b386..a86d2c0 100644
--- a/tests/core/libcore/libcore/Android.mk
+++ b/tests/core/libcore/libcore/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.libcore
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/core/libcore/org/Android.mk b/tests/core/libcore/org/Android.mk
index d7a96b3..0f3f0ca 100644
--- a/tests/core/libcore/org/Android.mk
+++ b/tests/core/libcore/org/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.org
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/core/libcore/sun/Android.mk b/tests/core/libcore/sun/Android.mk
index 44d3d70..ed6d2c7 100644
--- a/tests/core/libcore/sun/Android.mk
+++ b/tests/core/libcore/sun/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.sun
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/core/libcore/tests/Android.mk b/tests/core/libcore/tests/Android.mk
index bfd235f..54ffd31 100644
--- a/tests/core/libcore/tests/Android.mk
+++ b/tests/core/libcore/tests/Android.mk
@@ -14,10 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
 include $(CLEAR_VARS)
 LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.tests
 LOCAL_STATIC_JAVA_LIBRARIES := core-tests
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index 6b0f214..d7ef39f 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -6,13 +6,5 @@
 {
   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 f550903..33c5472 100644
--- a/tests/plans/CTS-flaky.xml
+++ b/tests/plans/CTS-flaky.xml
@@ -2,11 +2,6 @@
 <TestPlan version="1.0">
   <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.UrlInterceptRegistryTest#testRegisterHandler;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.UrlInterceptRegistryTest#testGetSurrogate;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.UrlInterceptRegistryTest#testAndroidTestCaseSetupProperly;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 f4d754f..968f71d 100644
--- a/tests/plans/CTS-stable.xml
+++ b/tests/plans/CTS-stable.xml
@@ -36,8 +36,8 @@
   <Entry uri="android.jni"/>
   <Entry uri="android.keystore"/>
   <Entry uri="android.location"/>
-  <Entry uri="android.media" exclude="android.media.cts.StreamingMediaPlayerTest#testHLS" />
-  <Entry uri="android.mediastress" exclude="android.mediastress.cts.NativeMediaTest#test480pPlay" />
+  <Entry uri="android.media"/>
+  <Entry uri="android.mediastress"/>
   <Entry uri="android.nativemedia.sl"/>
   <Entry uri="android.nativemedia.xa"/>
   <Entry uri="android.nativeopengl"/>
@@ -50,12 +50,12 @@
   <Entry uri="android.permission2"/>
   <Entry uri="android.preference"/>
   <Entry uri="android.preference2"/>
-  <Entry uri="android.provider" exclude="android.provider.cts.CalendarTest#testRemindersAlarm" />
+  <Entry uri="android.provider"/>

   <Entry uri="android.renderscript"/>
   <Entry uri="android.rscpp"/>
   <Entry uri="android.rsg"/>
   <Entry uri="android.sax"/>
-  <Entry uri="android.security" exclude="android.security.cts.BannedFilesTest#testNoSu;android.security.cts.BannedFilesTest#testNoSuInPath;android.security.cts.PackageSignatureTest#testPackageSignatures" />
+  <Entry uri="android.security"/>
   <Entry uri="android.speech"/>
   <Entry uri="android.telephony"/>
   <Entry uri="android.tests.appsecurity"/>
@@ -68,7 +68,7 @@
   <Entry uri="android.util"/>
   <Entry uri="android.view"/>
   <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="android.widget"/>
   <Entry uri="com.android.pts.bootup"/>
   <Entry uri="com.android.pts.browserbench"/>
   <Entry uri="com.android.pts.dram"/>
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index f877d8b..979e27b 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -809,6 +809,21 @@
         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/media/src/android/media/cts/DecoderTest.java b/tests/tests/media/src/android/media/cts/DecoderTest.java
index 65f16b1..211cc15 100644
--- a/tests/tests/media/src/android/media/cts/DecoderTest.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTest.java
@@ -33,6 +33,7 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 import java.util.zip.CRC32;
 
 public class DecoderTest extends MediaPlayerTestBase {
@@ -105,7 +106,7 @@
     }
 
     private void monoTest(int res) throws Exception {
-        short [] mono = decodeToMemory(res, RESET_MODE_NONE);
+        short [] mono = decodeToMemory(res, RESET_MODE_NONE, -1, null);
         if (mono.length == 44100) {
             // expected
         } else if (mono.length == 88200) {
@@ -118,14 +119,11 @@
             fail("wrong number of samples: " + mono.length);
         }
 
-        // we should get the same data when reconfiguring the codec
-        short [] mono2 = decodeToMemory(res, RESET_MODE_RECONFIGURE);
+        short [] mono2 = decodeToMemory(res, RESET_MODE_RECONFIGURE, -1, null);
         assertTrue(Arrays.equals(mono, mono2));
 
-        // NOTE: coming soon
-        // and when flushing it
-//        short [] mono3 = decodeToMemory(res, RESET_MODE_FLUSH);
-//        assertTrue(Arrays.equals(mono, mono3));
+        short [] mono3 = decodeToMemory(res, RESET_MODE_FLUSH, -1, null);
+        assertTrue(Arrays.equals(mono, mono3));
     }
 
     /**
@@ -135,7 +133,7 @@
      */
     private void decode(int testinput, float maxerror) throws IOException {
 
-        short [] decoded = decodeToMemory(testinput, RESET_MODE_NONE);
+        short [] decoded = decodeToMemory(testinput, RESET_MODE_NONE, -1, null);
 
         assertEquals("wrong data size", mMasterBuffer.length, decoded.length);
 
@@ -152,21 +150,21 @@
         double rmse = Math.sqrt(avgErrorSquared);
         assertTrue("decoding error too big: " + rmse, rmse <= maxerror);
 
-        short [] decoded2 = decodeToMemory(testinput, RESET_MODE_RECONFIGURE);
+        short [] decoded2 = decodeToMemory(testinput, RESET_MODE_RECONFIGURE, -1, null);
         assertEquals("count different with reconfigure", decoded.length, decoded2.length);
         for (int i = 0; i < decoded.length; i++) {
             assertEquals("samples don't match", decoded[i], decoded2[i]);
         }
 
-        // NOTE: coming soon
-//        short [] decoded3 = decodeToMemory(testinput, RESET_MODE_FLUSH);
-//        assertEquals("count different with flush", decoded.length, decoded3.length);
-//        for (int i = 0; i < decoded.length; i++) {
-//            assertEquals("samples don't match", decoded[i], decoded3[i]);
-//        }
+        short [] decoded3 = decodeToMemory(testinput, RESET_MODE_FLUSH, -1, null);
+        assertEquals("count different with flush", decoded.length, decoded3.length);
+        for (int i = 0; i < decoded.length; i++) {
+            assertEquals("samples don't match", decoded[i], decoded3[i]);
+        }
     }
 
-    private short[] decodeToMemory(int testinput, int resetMode) throws IOException {
+    private short[] decodeToMemory(int testinput, int resetMode,
+            int eossample, List<Long> timestamps) throws IOException {
 
         short [] decoded = new short[0];
         int decodedIdx = 0;
@@ -212,6 +210,7 @@
         boolean sawInputEOS = false;
         boolean sawOutputEOS = false;
         int noOutputCounter = 0;
+        int samplecounter = 0;
         while (!sawOutputEOS && noOutputCounter < 50) {
             noOutputCounter++;
             if (!sawInputEOS) {
@@ -225,14 +224,20 @@
 
                     long presentationTimeUs = 0;
 
+                    if (sampleSize < 0 && eossample > 0) {
+                        fail("test is broken: never reached eos sample");
+                    }
                     if (sampleSize < 0) {
                         Log.d(TAG, "saw input EOS.");
                         sawInputEOS = true;
                         sampleSize = 0;
                     } else {
+                        if (samplecounter == eossample) {
+                            sawInputEOS = true;
+                        }
+                        samplecounter++;
                         presentationTimeUs = extractor.getSampleTime();
                     }
-
                     codec.queueInputBuffer(
                             inputBufIndex,
                             0 /* offset */,
@@ -253,6 +258,9 @@
 
                 if (info.size > 0) {
                     noOutputCounter = 0;
+                    if (timestamps != null) {
+                        timestamps.add(info.presentationTimeUs);
+                    }
                 }
                 if (info.size > 0 && resetMode != RESET_MODE_NONE) {
                     // once we've gotten some data out of the decoder, reset and start again
@@ -269,6 +277,10 @@
                     resetMode = RESET_MODE_NONE;
                     extractor.seekTo(0, MediaExtractor.SEEK_TO_NEXT_SYNC);
                     sawInputEOS = false;
+                    samplecounter = 0;
+                    if (timestamps != null) {
+                        timestamps.clear();
+                    }
                     continue;
                 }
 
@@ -301,12 +313,80 @@
                 Log.d(TAG, "dequeueOutputBuffer returned " + res);
             }
         }
+        if (noOutputCounter >= 50) {
+            fail("decoder stopped outputing data");
+        }
 
         codec.stop();
         codec.release();
         return decoded;
     }
 
+    public void testDecodeWithEOSOnLastBuffer() throws Exception {
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepm4a);
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepmp3lame);
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepmp3smpb);
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepwav);
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepflac);
+        testDecodeWithEOSOnLastBuffer(R.raw.sinesweepogg);
+    }
+
+    /* setting EOS on the last full input buffer should be equivalent to setting EOS on an empty
+     * input buffer after all the full ones. */
+    private void testDecodeWithEOSOnLastBuffer(int res) throws Exception {
+        int numsamples = countSamples(res);
+        assertTrue(numsamples != 0);
+
+        List<Long> timestamps1 = new ArrayList<Long>();
+        short[] decode1 = decodeToMemory(res, RESET_MODE_NONE, -1, timestamps1);
+
+        List<Long> timestamps2 = new ArrayList<Long>();
+        short[] decode2 = decodeToMemory(res, RESET_MODE_NONE, numsamples - 1, timestamps2);
+
+        // check that the data and the timestamps are the same for EOS-on-last and EOS-after-last
+        assertEquals(decode1.length, decode2.length);
+        assertTrue(Arrays.equals(decode1, decode2));
+        assertEquals(timestamps1.size(), timestamps2.size());
+        assertTrue(timestamps1.equals(timestamps2));
+
+        // ... and that this is also true when reconfiguring the codec
+        timestamps2.clear();
+        decode2 = decodeToMemory(res, RESET_MODE_RECONFIGURE, -1, timestamps2);
+        assertTrue(Arrays.equals(decode1, decode2));
+        assertTrue(timestamps1.equals(timestamps2));
+        timestamps2.clear();
+        decode2 = decodeToMemory(res, RESET_MODE_RECONFIGURE, numsamples - 1, timestamps2);
+        assertEquals(decode1.length, decode2.length);
+        assertTrue(Arrays.equals(decode1, decode2));
+        assertTrue(timestamps1.equals(timestamps2));
+
+        // ... and that this is also true when flushing the codec
+        timestamps2.clear();
+        decode2 = decodeToMemory(res, RESET_MODE_FLUSH, -1, timestamps2);
+        assertTrue(Arrays.equals(decode1, decode2));
+        assertTrue(timestamps1.equals(timestamps2));
+        timestamps2.clear();
+        decode2 = decodeToMemory(res, RESET_MODE_FLUSH, numsamples - 1, timestamps2);
+        assertEquals(decode1.length, decode2.length);
+        assertTrue(Arrays.equals(decode1, decode2));
+        assertTrue(timestamps1.equals(timestamps2));
+    }
+
+    private int countSamples(int res) throws IOException {
+        AssetFileDescriptor testFd = mResources.openRawResourceFd(res);
+
+        MediaExtractor extractor = new MediaExtractor();
+        extractor.setDataSource(testFd.getFileDescriptor(), testFd.getStartOffset(),
+                testFd.getLength());
+        testFd.close();
+        extractor.selectTrack(0);
+        int numsamples = 0;
+        while (extractor.advance()) {
+            numsamples++;
+        }
+        return numsamples;
+    }
+
     public void testCodecBasicH264() throws Exception {
         Surface s = getActivity().getSurfaceHolder().getSurface();
         int frames1 = countFrames(
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
index 0267497..03a5cfd 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
@@ -886,7 +886,7 @@
         mMediaPlayer.setOnTimedTextListener(new MediaPlayer.OnTimedTextListener() {
             @Override
             public void onTimedText(MediaPlayer mp, TimedText text) {
-                final int toleranceMs = 100;
+                final int toleranceMs = 150;
                 final int durationMs = 500;
                 int posMs = mMediaPlayer.getCurrentPosition();
                 if (text != null) {
diff --git a/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp b/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp
index 1227d42..db39798 100644
--- a/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp
+++ b/tests/tests/nativeopengl/standalone/jni/tests/EGLCleanup_test.cpp
@@ -328,9 +328,8 @@
     ASSERT_TRUE(result);
 }
 
-#if 0
-/* try it without un-currenting the surfaces and context */
-TEST_F(EGLCleanupTest, TestNoReleaseCurrent) {
+/* try it without un-currenting the surfaces and context
+TEST _F(EGLCleanupTest, TestNoReleaseCurrent) {
     ALOGI("Starting TEST_NO_RELEASE_CURRENT");
     ChainedThread cht(ChainedThread::TEST_NO_RELEASE_CURRENT);
 
@@ -342,6 +341,6 @@
     bool result = cht.getResult();
     ASSERT_TRUE(result);
 }
-#endif
+*/
 
 } // namespace android
diff --git a/tests/tests/os/src/android/os/cts/BuildVersionTest.java b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
index 00af150..dfa8301 100644
--- a/tests/tests/os/src/android/os/cts/BuildVersionTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
@@ -29,8 +29,8 @@
 
     private static final String LOG_TAG = "BuildVersionTest";
     private static final Set<String> EXPECTED_RELEASES =
-            new HashSet<String>(Arrays.asList("4.4"));
-    private static final int EXPECTED_SDK = 19;
+            new HashSet<String>(Arrays.asList("4.2", "4.2.1", "4.2.2"));
+    private static final int EXPECTED_SDK = 17;
 
     @SuppressWarnings("deprecation")
     public void testReleaseVersion() {
diff --git a/tests/tests/permission/Android.mk b/tests/tests/permission/Android.mk
index 07f20d8..a32cc04 100644
--- a/tests/tests/permission/Android.mk
+++ b/tests/tests/permission/Android.mk
@@ -21,7 +21,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner guava
 
 LOCAL_JNI_SHARED_LIBRARIES := libctspermission_jni
 
diff --git a/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp b/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
index 272bbdc..8f32027 100644
--- a/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
+++ b/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
@@ -25,6 +25,9 @@
 #include <grp.h>
 #include <pwd.h>
 #include <string.h>
+#include <ScopedLocalRef.h>
+#include <ScopedPrimitiveArray.h>
+#include <ScopedUtfChars.h>
 
 static jfieldID gFileStatusDevFieldID;
 static jfieldID gFileStatusInoFieldID;
@@ -46,14 +49,15 @@
  * Copied from hidden API: frameworks/base/core/jni/android_os_FileUtils.cpp
  */
 
-jboolean android_permission_cts_FileUtils_getFileStatus(JNIEnv* env, jobject thiz,
-        jstring path, jobject fileStatus, jboolean statLinks)
+jboolean android_permission_cts_FileUtils_getFileStatus(JNIEnv* env,
+        jobject /* thiz */, jstring path, jobject fileStatus, jboolean statLinks)
 {
-    const char* pathStr = env->GetStringUTFChars(path, NULL);
+    ScopedUtfChars cPath(env, path);
     jboolean ret = false;
     struct stat s;
 
-    int res = statLinks == true ? lstat(pathStr, &s) : stat(pathStr, &s);
+    int res = statLinks == true ? lstat(cPath.c_str(), &s)
+            : stat(cPath.c_str(), &s);
 
     if (res == 0) {
         ret = true;
@@ -73,20 +77,18 @@
         }
     }
 
-    env->ReleaseStringUTFChars(path, pathStr);
-
     return ret;
 }
 
-jstring android_permission_cts_FileUtils_getUserName(JNIEnv* env, jobject thiz,
-        jint uid)
+jstring android_permission_cts_FileUtils_getUserName(JNIEnv* env,
+        jobject /* thiz */, jint uid)
 {
     struct passwd *pwd = getpwuid(uid);
     return env->NewStringUTF(pwd->pw_name);
 }
 
-jstring android_permission_cts_FileUtils_getGroupName(JNIEnv* env, jobject thiz,
-        jint gid)
+jstring android_permission_cts_FileUtils_getGroupName(JNIEnv* env,
+        jobject /* thiz */, jint gid)
 {
     struct group *grp = getgrgid(gid);
     return env->NewStringUTF(grp->gr_name);
@@ -94,42 +96,106 @@
 
 static jboolean isPermittedCapBitSet(JNIEnv* env, jstring path, size_t capId)
 {
-    const char* pathStr = env->GetStringUTFChars(path, NULL);
-    jboolean ret = false;
-
     struct vfs_cap_data capData;
     memset(&capData, 0, sizeof(capData));
 
-    ssize_t result = getxattr(pathStr, XATTR_NAME_CAPS, &capData,
+    ScopedUtfChars cPath(env, path);
+    ssize_t result = getxattr(cPath.c_str(), XATTR_NAME_CAPS, &capData,
                               sizeof(capData));
-    if (result > 0) {
-      ret = (capData.data[CAP_TO_INDEX(capId)].permitted &
-             CAP_TO_MASK(capId)) != 0;
-      ALOGD("isPermittedCapBitSet(): getxattr(\"%s\") call succeeded, "
-            "cap bit %u %s",
-            pathStr, capId, ret ? "set" : "unset");
-    } else {
-      ALOGD("isPermittedCapBitSet(): getxattr(\"%s\") call failed: "
-            "return %d (error: %s (%d))\n",
-            pathStr, result, strerror(errno), errno);
+    if (result <= 0)
+    {
+          ALOGD("isPermittedCapBitSet(): getxattr(\"%s\") call failed: "
+                  "return %d (error: %s (%d))\n",
+                  cPath.c_str(), result, strerror(errno), errno);
+          return false;
     }
 
-    env->ReleaseStringUTFChars(path, pathStr);
-    return ret;
+    return (capData.data[CAP_TO_INDEX(capId)].permitted &
+            CAP_TO_MASK(capId)) != 0;
 }
 
 jboolean android_permission_cts_FileUtils_hasSetUidCapability(JNIEnv* env,
-        jobject clazz, jstring path)
+        jobject /* clazz */, jstring path)
 {
     return isPermittedCapBitSet(env, path, CAP_SETUID);
 }
 
 jboolean android_permission_cts_FileUtils_hasSetGidCapability(JNIEnv* env,
-        jobject clazz, jstring path)
+        jobject /* clazz */, jstring path)
 {
     return isPermittedCapBitSet(env, path, CAP_SETGID);
 }
 
+static bool throwNamedException(JNIEnv* env, const char* className,
+        const char* message)
+{
+    ScopedLocalRef<jclass> eClazz(env, env->FindClass(className));
+    if (eClazz.get() == NULL)
+    {
+        ALOGE("throwNamedException(): failed to find class %s, cannot throw",
+                className);
+        return false;
+    }
+
+    env->ThrowNew(eClazz.get(), message);
+    return true;
+}
+
+// fill vfs_cap_data's permitted caps given a Java int[] of cap ids
+static bool fillPermittedCaps(vfs_cap_data* capData, JNIEnv* env, jintArray capIds)
+{
+    ScopedIntArrayRO cCapIds(env, capIds);
+    const size_t capCount = cCapIds.size();
+
+    for (size_t i = 0; i < capCount; ++i)
+    {
+        const jint capId = cCapIds[i];
+        if (!cap_valid(capId))
+        {
+            char message[64];
+            snprintf(message, sizeof(message),
+                    "capability id %d out of valid range", capId);
+            throwNamedException(env, "java/lang/IllegalArgumentException",
+                    message);
+
+            return false;
+        }
+        capData->data[CAP_TO_INDEX(capId)].permitted |= CAP_TO_MASK(capId);
+    }
+    return true;
+}
+
+jboolean android_permission_cts_FileUtils_CapabilitySet_fileHasOnly(JNIEnv* env,
+        jobject /* clazz */, jstring path, jintArray capIds)
+{
+    struct vfs_cap_data expectedCapData;
+    memset(&expectedCapData, 0, sizeof(expectedCapData));
+
+    expectedCapData.magic_etc = VFS_CAP_REVISION | VFS_CAP_FLAGS_EFFECTIVE;
+    if (!fillPermittedCaps(&expectedCapData, env, capIds))
+    {
+        // exception thrown
+        return false;
+    }
+
+    struct vfs_cap_data actualCapData;
+    memset(&actualCapData, 0, sizeof(actualCapData));
+
+    ScopedUtfChars cPath(env, path);
+    ssize_t result = getxattr(cPath.c_str(), XATTR_NAME_CAPS, &actualCapData,
+            sizeof(actualCapData));
+    if (result <= 0)
+    {
+        ALOGD("fileHasOnly(): getxattr(\"%s\") call failed: "
+                "return %d (error: %s (%d))\n",
+                cPath.c_str(), result, strerror(errno), errno);
+        return false;
+    }
+
+    return (memcmp(&expectedCapData, &actualCapData,
+            sizeof(struct vfs_cap_data)) == 0);
+}
+
 static JNINativeMethod gMethods[] = {
     {  "getFileStatus", "(Ljava/lang/String;Landroid/permission/cts/FileUtils$FileStatus;Z)Z",
             (void *) android_permission_cts_FileUtils_getFileStatus  },
@@ -143,6 +209,11 @@
             (void *) android_permission_cts_FileUtils_hasSetGidCapability   },
 };
 
+static JNINativeMethod gCapabilitySetMethods[] = {
+    {  "fileHasOnly", "(Ljava/lang/String;[I)Z",
+            (void *) android_permission_cts_FileUtils_CapabilitySet_fileHasOnly  },
+};
+
 int register_android_permission_cts_FileUtils(JNIEnv* env)
 {
     jclass clazz = env->FindClass("android/permission/cts/FileUtils");
@@ -161,6 +232,16 @@
     gFileStatusMtimeFieldID = env->GetFieldID(fileStatusClass, "mtime", "J");
     gFileStatusCtimeFieldID = env->GetFieldID(fileStatusClass, "ctime", "J");
 
-    return env->RegisterNatives(clazz, gMethods, 
-            sizeof(gMethods) / sizeof(JNINativeMethod)); 
+    jint result = env->RegisterNatives(clazz, gMethods,
+            sizeof(gMethods) / sizeof(JNINativeMethod));
+    if (result)
+    {
+      return result;
+    }
+
+    // register FileUtils.CapabilitySet native methods
+    jclass capClazz = env->FindClass("android/permission/cts/FileUtils$CapabilitySet");
+
+    return env->RegisterNatives(capClazz, gCapabilitySetMethods,
+            sizeof(gCapabilitySetMethods) / sizeof(JNINativeMethod));
 }
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 8edf1d0..cec8e5f 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -44,6 +44,8 @@
 import java.util.List;
 import java.util.Set;
 
+import libcore.io.OsConstants;
+
 /**
  * Verify certain permissions on the filesystem
  *
@@ -739,7 +741,6 @@
                 new File("/dev/felica_uicc"),
                 new File("/dev/full"),
                 new File("/dev/genlock"),    // b/9035217
-                new File("/dev/hw_random"),  // b/9191279
                 new File("/dev/ion"),
                 new File("/dev/kgsl-3d0"),   // b/9035217
                 new File("/dev/log/events"), // b/9035217
@@ -796,6 +797,48 @@
                 (status.mode & 0666) == 0666);
     }
 
+    public void testDevHwRandomLockedDown() throws Exception {
+        File f = new File("/dev/hw_random");
+        if (!f.exists()) {
+            // HW RNG is not required to be exposed on all devices.
+            return;
+        }
+
+        FileUtils.FileStatus status = new FileUtils.FileStatus();
+        assertTrue(FileUtils.getFileStatus(f.getCanonicalPath(), status, false));
+        assertTrue(
+                f + " has wrong file mode: 0"
+                        + Integer.toOctalString(status.mode),
+                (status.mode & 0777) == 0440);
+
+        assertFileOwnedBy(f, "root");
+        assertFileOwnedByGroup(f, "system");
+    }
+
+    public void testFileHasOnlyCapsThrowsOnInvalidCaps() throws Exception {
+        try {
+            // Ensure negative cap id fails.
+            new FileUtils.CapabilitySet()
+                    .add(-1)
+                    .fileHasOnly("/system/bin/run-as");
+            fail();
+        }
+        catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            // Ensure too-large cap throws.
+            new FileUtils.CapabilitySet()
+                    .add(OsConstants.CAP_LAST_CAP + 1)
+                    .fileHasOnly("/system/bin/run-as");
+            fail();
+        }
+        catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
     /**
      * Test that the /system/bin/run-as command has setuid and setgid
      * attributes set on the file.  If these calls fail, debugger
@@ -818,6 +861,12 @@
         // ensure file has setuid/setgid enabled
         assertTrue(FileUtils.hasSetUidCapability(filename));
         assertTrue(FileUtils.hasSetGidCapability(filename));
+
+        // ensure file has *only* setuid/setgid attributes enabled
+        assertTrue(new FileUtils.CapabilitySet()
+                .add(OsConstants.CAP_SETUID)
+                .add(OsConstants.CAP_SETGID)
+                .fileHasOnly("/system/bin/run-as"));
     }
 
     private static Set<File>
diff --git a/tests/tests/permission/src/android/permission/cts/FileUtils.java b/tests/tests/permission/src/android/permission/cts/FileUtils.java
index 9cd4999..657c783 100644
--- a/tests/tests/permission/src/android/permission/cts/FileUtils.java
+++ b/tests/tests/permission/src/android/permission/cts/FileUtils.java
@@ -16,6 +16,13 @@
  * limitations under the License.
  */
 
+import com.google.common.primitives.Ints;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import libcore.io.OsConstants;
+
 /** Bits and pieces copied from hidden API of android.os.FileUtils. */
 public class FileUtils {
 
@@ -82,6 +89,27 @@
         }
     }
 
+    public static class CapabilitySet {
+
+        private final Set<Integer> mCapabilities = new HashSet<Integer>();
+
+        public CapabilitySet add(int capability) {
+            if ((capability < 0) || (capability > OsConstants.CAP_LAST_CAP)) {
+                throw new IllegalArgumentException(String.format(
+                        "capability id %d out of valid range", capability));
+            }
+            mCapabilities.add(capability);
+            return this;
+        }
+
+        private native static boolean fileHasOnly(String path,
+                int[] capabilities);
+
+        public boolean fileHasOnly(String path) {
+            return fileHasOnly(path, Ints.toArray(mCapabilities));
+        }
+    }
+
     /**
      * @param path of the file to stat
      * @param status object to set the fields on
diff --git a/tests/tests/security/AndroidManifest.xml b/tests/tests/security/AndroidManifest.xml
index 771a184..e47b045 100644
--- a/tests/tests/security/AndroidManifest.xml
+++ b/tests/tests/security/AndroidManifest.xml
@@ -20,6 +20,7 @@
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 
     <application>
         <uses-library android:name="android.test.runner" />
diff --git a/tests/tests/security/jni/Android.mk b/tests/tests/security/jni/Android.mk
index 58bab14..a26fca3 100644
--- a/tests/tests/security/jni/Android.mk
+++ b/tests/tests/security/jni/Android.mk
@@ -26,7 +26,7 @@
 		android_security_cts_CharDeviceTest.cpp \
 		android_security_cts_LinuxRngTest.cpp \
 		android_security_cts_LoadEffectLibraryTest.cpp \
-		android_security_cts_NativeCodeTest.cpp \
+		android_security_cts_NativeCodeTest.cpp
 
 LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
 
diff --git a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
index 7af4298..13e29ee 100644
--- a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
+++ b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
@@ -15,9 +15,16 @@
  */
 
 #include <jni.h>
+#include <linux/netlink.h>
+#include <linux/sock_diag.h>
+#include <stdio.h>
+#include <sys/socket.h>
 #include <sys/types.h>
-#include <unistd.h>
 #include <sys/syscall.h>
+#include <unistd.h>
+
+#define PASSED 0
+#define UNKNOWN_ERROR -1
 
 /*
  * Returns true iff this device is vulnerable to CVE-2013-2094.
@@ -38,9 +45,69 @@
     return result;
 }
 
+/*
+ * Will hang if vulnerable, return 0 if successful, -1 on unforseen
+ * error.
+ */
+static jint android_security_cts_NativeCodeTest_doSockDiagTest(JNIEnv* env, jobject thiz)
+{
+    int fd, nlmsg_size, err, len;
+    char buf[1024];
+    struct sockaddr_nl nladdr;
+    struct nlmsghdr *nlh;
+    struct msghdr msg;
+    struct iovec iov;
+    struct sock_diag_req* sock_diag_data;
+
+    fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
+    if (fd == -1) {
+        return UNKNOWN_ERROR;
+    }
+    /* prepare and send netlink packet */
+    memset(&nladdr, 0, sizeof(nladdr));
+    nladdr.nl_family = AF_NETLINK;
+    nlmsg_size = NLMSG_ALIGN(NLMSG_HDRLEN + sizeof(sock_diag_data));
+    nlh = (nlmsghdr *)malloc(nlmsg_size);
+    nlh->nlmsg_len = nlmsg_size;
+    nlh->nlmsg_pid = 0;      //send packet to kernel
+    nlh->nlmsg_type = SOCK_DIAG_BY_FAMILY;
+    nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
+    iov = { (void *) nlh, nlmsg_size };
+    msg = { (void *) &nladdr, sizeof(nladdr), &iov, 1, NULL, 0, 0 };
+    sock_diag_data = (sock_diag_req *) NLMSG_DATA(nlh);
+    sock_diag_data->sdiag_family = AF_MAX+1;
+    if ((err = sendmsg(fd, &msg, 0)) == -1) {
+        /* SELinux blocked it */
+        if (errno == 22) {
+            return PASSED;
+        } else {
+            return UNKNOWN_ERROR;
+        }
+    }
+    free(nlh);
+
+    memset(&nladdr, 0, sizeof(nladdr));
+    iov = { buf, sizeof(buf) };
+    msg = { (void *) &nladdr, sizeof(nladdr), &iov, 1, NULL, 0, 0 };
+    if ((len = recvmsg(fd, &msg, 0)) == -1) {
+        return UNKNOWN_ERROR;
+    }
+    for (nlh = (struct nlmsghdr *) buf; NLMSG_OK(nlh, len); nlh = NLMSG_NEXT (nlh, len)){
+        if (nlh->nlmsg_type == NLMSG_ERROR) {
+            /* -22 = -EINVAL from kernel */
+            if (*(int *)NLMSG_DATA(nlh) == -22) {
+                return PASSED;
+            }
+        }
+    }
+    return UNKNOWN_ERROR;
+}
+
 static JNINativeMethod gMethods[] = {
     {  "doPerfEventTest", "()Z",
             (void *) android_security_cts_NativeCodeTest_doPerfEventTest },
+    {  "doSockDiagTest", "()I",
+            (void *) android_security_cts_NativeCodeTest_doSockDiagTest },
 };
 
 int register_android_security_cts_NativeCodeTest(JNIEnv* env)
diff --git a/tests/tests/security/src/android/security/cts/HwRngTest.java b/tests/tests/security/src/android/security/cts/HwRngTest.java
new file mode 100644
index 0000000..3dc11af
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/HwRngTest.java
@@ -0,0 +1,159 @@
+/*
+ * 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.security.cts;
+
+import junit.framework.TestCase;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tests for hardware random number generator device {@code /dev/hw_random}.
+ */
+public class HwRngTest extends TestCase {
+
+    // The block of constants below is from hw_random framework documentation and source code:
+    // see https://www.kernel.org/doc/Documentation/hw_random.txt.
+    private static final File DEV_HW_RANDOM = new File("/dev/hw_random");
+    private static final File SYSFS_HW_RANDOM = new File("/sys/class/misc/hw_random");
+    private static final String HWRNG_DRIVER_NAME = "hwrng";
+    private static final int HWRNG_DRIVER_MAJOR = 10;
+    private static final int HWRNG_DRIVER_MINOR = 183;
+
+    /**
+     * Asserts that the {@code /dev/hw_random} device is configured in an acceptable way or is not
+     * present at all.
+     */
+    public void testConfigurationIfFilePresent() throws Exception {
+        if (!DEV_HW_RANDOM.exists()) {
+            // The device is not present
+            return;
+        }
+
+        // Sanity check based on https://www.kernel.org/doc/Documentation/hw_random.txt.
+
+        // In short, assert that:
+        // 1. hwrng kernel driver is using MAJOR 10 and MINOR 183,
+        // 2. a driver is selected in the hrwng framework, and
+        // 3. /dev/hw_random references a character device with the above MAJOR and MINOR.
+
+        // 1. Assert that the hwrng driver is using MAJOR 10 and MINOR 183.
+        //    We achieve this by inspecting /sys/class/misc/hw_random/dev and uevent.
+        assertTrue(SYSFS_HW_RANDOM + " not found", SYSFS_HW_RANDOM.isDirectory());
+        assertEquals(
+                "Driver major:minor",
+                HWRNG_DRIVER_MAJOR + ":" + HWRNG_DRIVER_MINOR,
+                readyFullyAsciiFile(new File(SYSFS_HW_RANDOM, "dev")).trim());
+
+        Map<String, String> ueventVars = parseUeventFile(new File(SYSFS_HW_RANDOM, "uevent"));
+        assertEquals("uevent MAJOR", String.valueOf(HWRNG_DRIVER_MAJOR), ueventVars.get("MAJOR"));
+        assertEquals("uevent MINOR", String.valueOf(HWRNG_DRIVER_MINOR), ueventVars.get("MINOR"));
+        assertEquals("uevent DEVNAME", HWRNG_DRIVER_NAME, ueventVars.get("DEVNAME"));
+
+        // 2. Assert that a driver is selected in the hrwng framework.
+        //    We achieve this by inspecting /sys/class/misc/hw_random/rng_current.
+        File rngCurrentFile = new File(SYSFS_HW_RANDOM, "rng_current");
+        String rngCurrent = readyFullyAsciiFile(rngCurrentFile);
+        assertFalse(
+                "No driver selected according to " + rngCurrentFile,
+                rngCurrent.trim().isEmpty());
+
+        // 3. Assert that /dev/hw_random references a character device with the above MAJOR+MINOR.
+        assertEquals(
+                DEV_HW_RANDOM + " major",
+                HWRNG_DRIVER_MAJOR,
+                LinuxRngTest.getCharDeviceMajor(DEV_HW_RANDOM.getCanonicalPath()));
+        assertEquals(
+                DEV_HW_RANDOM + " minor",
+                HWRNG_DRIVER_MINOR,
+                LinuxRngTest.getCharDeviceMinor(DEV_HW_RANDOM.getCanonicalPath()));
+    }
+
+    private static String readyFullyAsciiFile(File file) throws IOException {
+        InputStream in = null;
+        try {
+            in = new FileInputStream(file);
+            return new String(readyFully(in), "US-ASCII");
+        } finally {
+            closeSilently(in);
+        }
+    }
+
+    private static byte[] readyFully(InputStream in) throws IOException {
+        ByteArrayOutputStream result = new ByteArrayOutputStream();
+        byte[] buffer = new byte[16 * 1024];
+        int chunkSize;
+        while ((chunkSize = in.read(buffer)) != -1) {
+            result.write(buffer, 0, chunkSize);
+        }
+        return result.toByteArray();
+    }
+
+    private static Map<String, String> parseUeventFile(File file) throws IOException {
+        // The format of the file is line-oriented.
+        // Each variable takes up one line.
+        // The typical format of a variable is KEY=VALUE
+
+        Map<String, String> result = new HashMap<String, String>();
+        BufferedReader in = null;
+        try {
+            in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "US-ASCII"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                if (line.trim().length() == 0) {
+                    // Ignore empty lines
+                    continue;
+                }
+
+                String key;
+                String value;
+                int delimiterIndex = line.indexOf('=');
+                if (delimiterIndex != -1) {
+                    key = line.substring(0, delimiterIndex);
+                    value = line.substring(delimiterIndex + 1);
+                } else {
+                    key = line;
+                    value = "";
+                }
+
+                if (result.containsKey(key)) {
+                    throw new IllegalArgumentException("Multiple values for key: " + key);
+                }
+                result.put(key, value);
+            }
+            return result;
+        } finally {
+            closeSilently(in);
+        }
+    }
+
+    private static void closeSilently(Closeable in) {
+        if (in != null) {
+            try {
+                in.close();
+            } catch (IOException ignored) {}
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/security/src/android/security/cts/NativeCodeTest.java b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
index 2522ef5..68215dd 100644
--- a/tests/tests/security/src/android/security/cts/NativeCodeTest.java
+++ b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
@@ -31,10 +31,22 @@
                     doPerfEventTest());
     }
 
+    public void testSockDiag() throws Exception {
+        int result = doSockDiagTest();
+        assertFalse("Encountered unexpected error: " + result + ".", (result == -1));
+        assertEquals(0, result);
+    }
+
     /**
      * Returns true iff this device is vulnerable to CVE-2013-2094.
      * A patch for CVE-2013-2094 can be found at
      * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8176cced706b5e5d15887584150764894e94e02f
      */
     private static native boolean doPerfEventTest();
+
+    /**
+     * Hangs if device is vulnerable to CVE-2013-1763, returns -1 if
+     * unexpected error occurs, 0 otherwise.
+     */
+    private static native int doSockDiagTest();
 }
diff --git a/tests/tests/security/src/android/security/cts/NetdTest.java b/tests/tests/security/src/android/security/cts/NetdTest.java
new file mode 100644
index 0000000..1fd0782
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/NetdTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.security.cts;
+
+import android.os.Binder;
+import android.os.IBinder;
+
+import junit.framework.TestCase;
+
+import java.lang.Class;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class NetdTest extends TestCase {
+
+    /**
+     * Detect if netd has unsanitized system call in Throttle API.
+     * Based on jsharkey PoC in b/5758556
+     *    serv.setInterfaceThrottle("foo; reboot; echo ", -1, -1);
+     */
+    public void testThrottleSanitization() {
+        try {
+
+            /* get hidden classes */
+            Class mSMClass = Class.forName("android.os.ServiceManager");
+            Class mINMSClass = Class.forName("android.os.INetworkManagementService");
+            Class<?>[] mDeclaredClasses = mINMSClass.getDeclaredClasses();
+            if (!mDeclaredClasses[0].getName().equals("android.os.INetworkManagementService$Stub")) {
+
+                /* INetworkManagementService fundamentally changed from original vuln */
+                return;
+            }
+
+            /* get methods */
+            Method mSMMethod = mSMClass.getDeclaredMethod("getService", String.class);
+            Method mStubMethod = mDeclaredClasses[0].getDeclaredMethod("asInterface", IBinder.class);
+            Method mINMSMethod = mINMSClass.getDeclaredMethod("setInterfaceThrottle", String.class, int.class, int.class);
+
+            /* invoke methods */
+            IBinder iB = (IBinder) mSMMethod.invoke(null, "network_management");
+            Object INMSObj = mStubMethod.invoke(null, iB);
+            if (INMSObj == null) {
+
+                /* Unable to vulnerable service */
+                return;
+            }
+            mINMSMethod.invoke(mINMSClass.cast(INMSObj), "foo;reboot;", -1, -1);
+        } catch (IllegalAccessException e) {
+
+            /* Java language access prevents exploitation. */
+            return;
+        } catch (InvocationTargetException e) {
+
+            /* Underlying method has been changed. */
+            return;
+        } catch (ClassNotFoundException e) {
+
+            /* not vulnerable if hidden API no longer available */
+            return;
+        } catch (NoSuchMethodException e) {
+
+            /* not vulnerable if hidden API no longer available */
+            return;
+        } catch (SecurityException e) {
+
+            /* Security manager blocked operation. */
+            return;
+        }
+
+        /* should not reach here if vulnerable */
+    }
+}
diff --git a/tools/tradefed-host/etc/cts-tradefed b/tools/tradefed-host/etc/cts-tradefed
index 11f97e6..fb108b1 100755
--- a/tools/tradefed-host/etc/cts-tradefed
+++ b/tools/tradefed-host/etc/cts-tradefed
@@ -51,17 +51,21 @@
 
 
 # check if in Android build env
-if [ ! -z ${ANDROID_BUILD_TOP} ]; then
-    HOST=`uname`
-    if [ "$HOST" == "Linux" ]; then
-        OS="linux-x86"
-    elif [ "$HOST" == "Darwin" ]; then
-        OS="darwin-x86"
+if [ ! -z "${ANDROID_BUILD_TOP}" ]; then
+    if [ ! -z "${ANDROID_HOST_OUT}" ]; then
+      CTS_ROOT=${ANDROID_HOST_OUT}/cts
     else
-        echo "Unrecognized OS"
-        exit
-    fi;
-    CTS_ROOT=${ANDROID_BUILD_TOP}/out/host/${OS}/cts
+      HOST=`uname`
+      if [ "$HOST" == "Linux" ]; then
+          OS="linux-x86"
+      elif [ "$HOST" == "Darwin" ]; then
+          OS="darwin-x86"
+      else
+          echo "Unrecognized OS"
+          exit
+      fi
+      CTS_ROOT=${ANDROID_BUILD_TOP}/${OUT_DIR:-out}/host/${OS}/cts
+    fi
     if [ ! -d ${CTS_ROOT} ]; then
         echo "Could not find $CTS_ROOT in Android build environment. Try 'make cts'"
         exit
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
index 71c093b..426eb9e 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
@@ -26,7 +26,6 @@
 import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.config.Option;
 import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.result.ILogFileSaver;
 import com.android.tradefed.result.ITestInvocationListener;
 import com.android.tradefed.result.InputStreamSource;
 import com.android.tradefed.result.LogDataType;
@@ -212,11 +211,11 @@
     }
 
     /**
-     * Return the {@link ILogFileSaver} to use.
+     * Return the {@link LogFileSaver} to use.
      * <p/>
      * Exposed for unit testing.
      */
-    ILogFileSaver getLogFileSaver() {
+    LogFileSaver getLogFileSaver() {
         return new LogFileSaver(mLogDir);
     }
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
index 053b265..448f067 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestFilter.java
@@ -25,6 +25,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.regex.Pattern;
 
 /**
  * Filter for {@link TestIdentifier}s.
@@ -34,7 +35,7 @@
     private final Set<String> mExcludedClasses;
     private final Set<TestIdentifier> mExcludedTests;
     private String mIncludedClass = null;
-    private String mIncludedMethod = null;
+    private Pattern mIncludedMethod = null;
 
     /**
      * Creates a {@link TestFilter}
@@ -87,7 +88,9 @@
      */
     public void setTestInclusion(String className, String method) {
         mIncludedClass = className;
-        mIncludedMethod = method;
+        if (method != null) {
+            mIncludedMethod = Pattern.compile(method);
+        }
     }
 
     /**
@@ -103,7 +106,7 @@
                 // skip
                 continue;
             }
-            if (mIncludedMethod != null && !test.getTestName().equals(mIncludedMethod)) {
+            if (mIncludedMethod != null && !mIncludedMethod.matcher(test.getTestName()).matches()) {
                 // skip
                 continue;
             }