Merge "hardware: Add Consumer IR tests" into klp-dev
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 354775d..d0758f3 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -412,7 +412,23 @@
</service>
<service android:name="nls.NotificationListenerVerifierActivity$DismissService"/>
-
+ <activity android:name=".security.CAInstallNotificationVerifierActivity"
+ android:label="@string/cacert_test">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.cts.intent.category.MANUAL_TEST" />
+ </intent-filter>
+ <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+ </activity>
+ <activity android:name=".security.CANotifyOnBootActivity"
+ android:label="@string/caboot_test">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.cts.intent.category.MANUAL_TEST" />
+ </intent-filter>
+ <meta-data android:name="test_category" android:value="@string/test_category_notifications" />
+ </activity>
+
<activity android:name=".p2p.GoNegRequesterTestListActivity"
android:label="@string/p2p_go_neg_requester"
android:configChanges="keyboardHidden|orientation|screenSize" />
diff --git a/apps/CtsVerifier/assets/myCA.cer b/apps/CtsVerifier/assets/myCA.cer
new file mode 100644
index 0000000..3b98d3e
--- /dev/null
+++ b/apps/CtsVerifier/assets/myCA.cer
Binary files differ
diff --git a/apps/CtsVerifier/res/layout/ca_boot_notify.xml b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
new file mode 100644
index 0000000..29fa549
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ca_boot_notify.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+
+ <TextView
+ android:id="@+id/check_cert_desc"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_check_cert_installed"/>
+
+ <Button android:id="@+id/check_creds"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_check_creds" />
+
+ <TextView
+ android:id="@+id/need_to_install_cert"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_if_not_installed"/>
+
+ <Button android:id="@+id/install"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_install_cert" />
+
+ <TextView
+ android:id="@+id/reboot"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_reboot_desc"/>
+
+ <TextView
+ android:id="@+id/after_reboot"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/caboot_after_boot"/>
+ </LinearLayout>
+
+ <include layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_item.xml b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
new file mode 100644
index 0000000..1359cb4
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_item.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2013 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <ImageView
+ android:id="@+id/ca_notify_status"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginTop="10dip"
+ android:contentDescription="@string/pass_button_text"
+ android:padding="10dip"
+ android:src="@drawable/fs_indeterminate" />
+
+ <TextView
+ android:id="@+id/ca_notify_instructions"
+ style="@style/InstructionsSmallFont"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/ca_notify_status" />
+
+ <Button
+ android:id="@+id/ca_notify_do_something"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@id/ca_notify_instructions"
+ android:layout_marginLeft="20dip"
+ android:layout_marginRight="20dip"
+ android:layout_toRightOf="@id/ca_notify_status"
+ android:text="@string/cacert_do_something" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/cainstallnotify_main.xml b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
new file mode 100644
index 0000000..16882bd
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/cainstallnotify_main.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2013 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:padding="10dip" >
+
+ <ScrollView
+ android:id="@+id/ca_notify_test_scroller"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:padding="10dip" >
+
+ <LinearLayout
+ android:id="@+id/ca_notify_test_items"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+ </LinearLayout>
+ </ScrollView>
+
+ <include
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 0f164ef..6df4b42 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -607,6 +607,24 @@
<string name="nls_service_stopped">Service should stop once disabled.</string>
<string name="nls_note_missed">Check that notification was not received.</string>
+ <string name="cacert_test">CA Cert Notification Test</string>
+ <string name="cacert_info">This test checks that when a CA Certificate is installed, the user is notified.</string>
+ <string name="cacert_do_something">Do it</string>
+ <string name="cacert_done">Done</string>
+ <string name="cacert_install_cert">Use the CertInstaller to install the certificate. When it opens, just tap "Okay". If this button does nothing, pass the test and move on.</string>
+ <string name="cacert_check_cert_in_settings">Visit the user-installed trusted credentials page and confirm that the "Internet Widgits Pty Ltd" cert appears in the list.</string>
+ <string name="cacert_check_notification">Please look at the new notification and confirm: It say the network may be monitored. Tapping it brings up a more detailed explanation and a button to check trusted credentials. Tapping that button brings up the Trusted Credentials page you just visited.</string>
+ <string name="cacert_dismiss_notification">Dismiss the notification. If it cannot be dismissed, fail the test.</string>
+
+ <string name="caboot_test">CA Cert Notification on Boot test</string>
+ <string name="caboot_info">This test is to confirm that when the user has installed a trusted credential, the system notifies the user when it boots.</string>
+ <string name="caboot_check_cert_installed">Please check here to see whether a certificate is already installed. (If this button does nothing, pass the test and move on.)</string>
+ <string name="caboot_check_creds">Check Credentials</string>
+ <string name="caboot_if_not_installed">Only if there is no credential currently installed, install one. (If this button does nothing, pass the test and move on.)</string>
+ <string name="caboot_install_cert">Install credential</string>
+ <string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
+ <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification that the network may be monitored. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
+
<!-- Strings for Widget -->
<string name="widget_framework_test">Widget Framework Test</string>
<string name="widget_framework_test_info">This test checks some basic features of the widget
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
index 8549214..0b74fa3 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nls/MockListener.java
@@ -49,12 +49,12 @@
static final int RESULT_TIMEOUT = Activity.RESULT_FIRST_USER;
static final int RESULT_NO_SERVER = Activity.RESULT_FIRST_USER + 1;
- static final String JSON_FLAGS = "flag";
- static final String JSON_ICON = "icon";
- static final String JSON_ID = "id";
- static final String JSON_PACKAGE = "pkg";
- static final String JSON_WHEN = "when";
- static final String JSON_TAG = "tag";
+ public static final String JSON_FLAGS = "flag";
+ public static final String JSON_ICON = "icon";
+ public static final String JSON_ID = "id";
+ public static final String JSON_PACKAGE = "pkg";
+ public static final String JSON_WHEN = "when";
+ public static final String JSON_TAG = "tag";
private ArrayList<String> mPosted = new ArrayList<String>();
private ArrayList<String> mPayloads = new ArrayList<String>();
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
new file mode 100644
index 0000000..3e8110e
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CAInstallNotificationVerifierActivity.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.security;
+
+import android.app.Service;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class CAInstallNotificationVerifierActivity extends PassFailButtons.Activity
+implements Runnable {
+ static final String TAG = CAInstallNotificationVerifierActivity.class.getSimpleName();
+ private static final String STATE = "state";
+ private static final int PASS = 1;
+ private static final int FAIL = 2;
+ private static final int WAIT_FOR_USER = 3;
+ private static LinkedBlockingQueue<String> sDeletedQueue = new LinkedBlockingQueue<String>();
+
+ private int mState;
+ private int[] mStatus;
+ private LayoutInflater mInflater;
+ private ViewGroup mItemList;
+ private Runnable mRunner;
+ private View mHandler;
+
+ private static final String CERT_ASSET_NAME = "myCA.cer";
+ private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+ protected boolean doneInstallingCert = false;
+ protected boolean doneCheckingInSettings = false;
+ protected boolean doneCheckingNotification = false;
+ protected boolean doneDismissingNotification = false;
+
+
+ public static class DismissService extends Service {
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+ @Override
+ public void onStart(Intent intent, int startId) {
+ sDeletedQueue.offer(intent.getAction());
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (savedInstanceState != null) {
+ mState = savedInstanceState.getInt(STATE, 0);
+ }
+ mRunner = this;
+ mInflater = getLayoutInflater();
+ View view = mInflater.inflate(R.layout.cainstallnotify_main, null);
+ mItemList = (ViewGroup) view.findViewById(R.id.ca_notify_test_items);
+ mHandler = mItemList;
+ createTestItems();
+ mStatus = new int[mItemList.getChildCount()];
+ setContentView(view);
+
+ setPassFailButtonClickListeners();
+ setInfoResources(R.string.cacert_test, R.string.cacert_info, -1);
+ }
+
+ @Override
+ protected void onSaveInstanceState (Bundle outState) {
+ outState.putInt(STATE, mState);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ next();
+ }
+
+ // Interface Utilities
+
+ private void createTestItems() {
+ createUserItem(R.string.cacert_install_cert, new InstallCert());
+ createUserItem(R.string.cacert_check_cert_in_settings, new OpenTrustedCredentials());
+ createUserItem(R.string.cacert_check_notification,
+ new DoneCheckingNotification(), R.string.cacert_done);
+ createUserItem(R.string.cacert_dismiss_notification,
+ new DoneCheckingDismissed(), R.string.cacert_done);
+ }
+
+ private void setItemState(int index, boolean passed) {
+ ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+ ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+ status.setImageResource(passed ? R.drawable.fs_good : R.drawable.fs_error);
+ View button = item.findViewById(R.id.ca_notify_do_something);
+ button.setClickable(false);
+ button.setEnabled(false);
+ status.invalidate();
+ }
+
+ private void markItemWaiting(int index) {
+ ViewGroup item = (ViewGroup) mItemList.getChildAt(index);
+ ImageView status = (ImageView) item.findViewById(R.id.ca_notify_status);
+ status.setImageResource(R.drawable.fs_warning);
+ status.invalidate();
+ }
+
+ private View createUserItem(int stringId, OnClickListener listener) {
+ return createUserItem(stringId, listener, 0);
+ }
+
+ private View createUserItem(int stringId, OnClickListener listener, int buttonLabel) {
+ View item = mInflater.inflate(R.layout.cainstallnotify_item, mItemList, false);
+ TextView instructions = (TextView) item.findViewById(R.id.ca_notify_instructions);
+ instructions.setText(stringId);
+ Button button = (Button) item.findViewById(R.id.ca_notify_do_something);
+ if (buttonLabel != 0) {
+ button.setText(buttonLabel);
+ }
+ button.setOnClickListener(listener);
+ mItemList.addView(item);
+ return item;
+ }
+
+ // Test management
+
+ public void run() {
+ while (mState < mStatus.length && mStatus[mState] != WAIT_FOR_USER) {
+ if (mStatus[mState] == PASS) {
+ setItemState(mState, true);
+ mState++;
+ } else if (mStatus[mState] == FAIL) {
+ setItemState(mState, false);
+ return;
+ } else {
+ break;
+ }
+ }
+
+ if (mState < mStatus.length && mStatus[mState] == WAIT_FOR_USER) {
+ markItemWaiting(mState);
+ }
+
+ switch (mState) {
+ case 0:
+ testInstalledCert(0);
+ break;
+ case 1:
+ testCheckedSettings(1);
+ break;
+ case 2:
+ testCheckedNotification(2);
+ break;
+ case 3:
+ testNotificationDismissed(3);
+ break;
+ }
+ }
+
+ /**
+ * Return to the state machine to progress through the tests.
+ */
+ private void next() {
+ mHandler.post(mRunner);
+ }
+
+ /**
+ * Wait for things to settle before returning to the state machine.
+ */
+ private void delay() {
+ mHandler.postDelayed(mRunner, 2000);
+ }
+
+ // Listeners
+
+ class InstallCert implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ InputStream is = null;
+ FileOutputStream os = null;
+ try {
+ try {
+ is = getAssets().open(CERT_ASSET_NAME);
+ os = new FileOutputStream(certStagingFile);
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = is.read(buffer)) > 0) {
+ os.write(buffer, 0, length);
+ }
+ } finally {
+ if (is != null) is.close();
+ if (os != null) os.close();
+ certStagingFile.setReadable(true, false);
+ }
+ } catch (IOException ioe) {
+ Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+ return;
+ }
+ try {
+ startActivity(new Intent("android.credentials.INSTALL"));
+ } catch (ActivityNotFoundException e) {
+ // do nothing
+ }
+ doneInstallingCert = true;
+ }
+ }
+
+ class OpenTrustedCredentials implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ try {
+ startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+ } catch (ActivityNotFoundException e) {
+ // do nothing
+ }
+ doneCheckingInSettings = true;
+ }
+ }
+
+ class DoneCheckingNotification implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ doneCheckingNotification = true;
+ }
+ }
+
+ class DoneCheckingDismissed implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ doneDismissingNotification = true;
+ }
+ }
+
+ // Tests
+
+ private void testInstalledCert(final int i) {
+ if (doneInstallingCert) {
+ mStatus[i] = PASS;
+ next();
+ } else {
+ delay();
+ }
+ }
+
+ private void testCheckedSettings(final int i) {
+ if (doneCheckingInSettings) {
+ mStatus[i] = PASS;
+ next();
+ } else {
+ delay();
+ }
+ }
+
+ private void testCheckedNotification(final int i) {
+ if (doneCheckingNotification) {
+ mStatus[i] = PASS;
+ next();
+ } else {
+ delay();
+ }
+ }
+
+ private void testNotificationDismissed(final int i) {
+ if (doneDismissingNotification) {
+ mStatus[i] = PASS;
+ next();
+ } else {
+ delay();
+ }
+ }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
new file mode 100644
index 0000000..5537b15
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/CANotifyOnBootActivity.java
@@ -0,0 +1,88 @@
+package com.android.cts.verifier.security;
+
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CANotifyOnBootActivity extends PassFailButtons.Activity {
+
+ private static final String TAG = CANotifyOnBootActivity.class.getSimpleName();
+ private static final String CERT_ASSET_NAME = "myCA.cer";
+ private File certStagingFile = new File("/sdcard/", CERT_ASSET_NAME);
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ View view = getLayoutInflater().inflate(R.layout.ca_boot_notify, null);
+ Button checkCredsButton = (Button) view.findViewById(R.id.check_creds);
+ Button installButton = (Button) view.findViewById(R.id.install);
+ checkCredsButton.setOnClickListener(new OpenTrustedCredentials());
+ installButton.setOnClickListener(new InstallCert());
+
+ setContentView(view);
+
+ setPassFailButtonClickListeners();
+ setInfoResources(R.string.caboot_test, R.string.caboot_info, -1);
+
+ getPassButton().setEnabled(true);
+ }
+
+ class OpenTrustedCredentials implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ try {
+ startActivity(new Intent("com.android.settings.TRUSTED_CREDENTIALS_USER"));
+ } catch (ActivityNotFoundException e) {
+ // do nothing
+ }
+ }
+ }
+
+ class InstallCert implements OnClickListener {
+ @Override
+ public void onClick(View v) {
+ InputStream is = null;
+ FileOutputStream os = null;
+ try {
+ try {
+ is = getAssets().open(CERT_ASSET_NAME);
+ os = new FileOutputStream(certStagingFile);
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = is.read(buffer)) > 0) {
+ os.write(buffer, 0, length);
+ }
+ } finally {
+ if (is != null) is.close();
+ if (os != null) os.close();
+ certStagingFile.setReadable(true, false);
+ }
+ } catch (IOException ioe) {
+ Log.w(TAG, "Problem moving cert file to /sdcard/", ioe);
+ return;
+ }
+
+ try {
+ startActivity(new Intent("android.credentials.INSTALL"));
+ } catch (ActivityNotFoundException e) {
+ // do nothing
+ }
+ }
+ }
+
+
+}
diff --git a/tests/plans/CTS-flaky.xml b/tests/plans/CTS-flaky.xml
index 1c2c30d..33c5472 100644
--- a/tests/plans/CTS-flaky.xml
+++ b/tests/plans/CTS-flaky.xml
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<TestPlan version="1.0">
- <Entry uri="android.app" exclude="android.app.backup.cts.BackupAgentHelperTest#testAndroidtestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testBackupAGentHelper;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.backup"/>
- <Entry uri="android.hardware"/>
- <Entry uri="android.media"/>
- <Entry uri="android.net"/>
- <Entry uri="android.provider"/>
+ <Entry uri="android.app" exclude="android.app.cts.SystemFeaturesTest#testTelephonyFeatures;android.app.cts.InstrumentationTest#testCallActivityOnResume;android.app.cts.ActivityManagerRecentTaskInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testMisc;android.app.cts.DialogTest#testSetContentView;android.app.cts.ServiceTest#testLocalBindAutoClassPermissionGranted;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamInt;android.app.cts.LocalActivityManagerTest#testConstructor;android.app.cts.ActivityManager_RunningServiceInfoTest#testDescribeContents;android.app.cts.DialogTest#testTakeKeyEvents;android.app.cts.LifecycleTest#testBasic;android.app.cts.NotificationTest#testConstructor;android.app.cts.ActivityManagerMemoryInfoTest#testWriteToParcel;android.app.cts.DialogTest#testConstructor_protectedCancellable;android.app.cts.ProgressDialogTest#testIncrementProgressBy;android.app.cts.ApplicationTest#testApplication;android.app.cts.InstrumentationTest#testSendKeySync;android.app.cts.LocalActivityManagerTest#testDispatchCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPI;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCursor;android.app.cts.InstrumentationTest#testCallActivityOnRestart;android.app.backup.cts.BackupAgentTest#testBackupAgent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItemsWithParamCharSequence;android.app.cts.ActivityManager_RunningServiceInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.ServiceTest#testLocalBindAutoAction;android.app.cts.DialogTest#testSetFeatureDrawableUri;android.app.cts.KeyguardManagerKeyguardLockTest#testDisableKeyguard;android.app.cts.LaunchTest#testClearTopWhilResumed;android.app.cts.WallpaperManagerTest#testSuggestDesiredDimensions;android.app.cts.SystemFeaturesTest#testLiveWallpaperFeature;android.app.cts.InstrumentationTest#testCallActivityOnUserLeaving;android.app.cts.AlertDialog_BuilderTest#testSetCancelable;android.app.cts.AlertDialogTest#testAlertDialogTheme;android.app.cts.PendingIntentTest#testGetBroadcast;android.app.cts.ActivityManager_RunningServiceInfoTest#testWriteToParcel;android.app.cts.InstrumentationTest#testGetComponentName;android.app.backup.cts.FileBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.SystemFeaturesTest#testTouchScreenFeatures;android.app.cts.AlarmManagerTest#testAlarmTriggersImmediatelyIfSetTimeIsNegative;android.app.cts.ActivityManagerMemoryInfoTest#testReadFromParcel;android.app.cts.NotificationTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetOnCancelListener;android.app.cts.ServiceTest#testLocalBindClass;android.app.cts.ServiceTest#testLocalStartClass;android.app.cts.LauncherActivity_ListItemTest#testConstructor;android.app.cts.InstrumentationTest#testCallActivityOnCreate;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntent;android.app.cts.InstrumentationTest#testSendPointerSync;android.app.cts.DialogTest#testRequestWindowFeature;android.app.cts.LocalActivityManagerTest#testDispatchPauseFalse;android.app.cts.Instrumentation_ActivityResultTest#testActivityResultOp;android.app.cts.ProgressDialogTest#testOnStartCreateStop;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamInt;android.app.cts.KeyguardManagerKeyguardLockTest#testReenableKeyguard;android.app.cts.DialogTest#testShow;android.app.cts.ActivityManagerMemoryInfoTest#testDescribeContents;android.app.cts.SystemFeaturesTest#testFeatureNamespaces;android.app.cts.PendingIntent_CanceledExceptionTest#testConstructor;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamInt;android.app.cts.PendingIntentTest#testSendWithParamInt;android.app.cts.PendingIntentTest#testGetActivity;android.app.cts.AlertDialog_BuilderTest#testSetCursor;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testWriteToParcel;android.app.cts.AlertDialog_BuilderTest#testConstructor;android.app.cts.LocalActivityManagerTest#testDispatchDestroy;android.app.cts.DownloadManagerTest#testDownloadManager;android.app.cts.ServiceTest#testLocalBindAction;android.app.cts.LocalActivityManagerTest#testSaveInstanceState;android.app.cts.LifecycleTest#testTabDialog;android.app.cts.LaunchTest#testLocalActivity;android.app.cts.AlertDialog_BuilderTest#testSetInverseBackgroundForced;android.app.cts.SystemFeaturesTest#testLocationFeatures;android.app.cts.DialogTest#testOnStartCreateStop;android.app.cts.ActivityManagerRecentTaskInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalStartClassPermissions;android.app.cts.ServiceTest#testLocalUnbindTwice;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testConstructor;android.app.cts.DialogTest#testSetFeatureDrawableResource;android.app.cts.ProgressDialogTest#testAccessProgress;android.app.cts.DialogTest#testTrackballEvent;android.app.cts.AlertDialog_BuilderTest#testSetSingleChoiceItems;android.app.cts.LaunchTest#testColdActivity;android.app.cts.ActivityManagerTest#testGetMemoryInfo;android.app.cts.PendingIntentTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testOnContentChanged;android.app.cts.SearchManagerTest#testSetOnDismissListener;android.app.cts.InstrumentationTest#testContext;android.app.cts.LauncherActivity_IconResizerTest#testIconResizer;android.app.cts.DialogTest#testCancel_listener;android.app.cts.ActivityManagerTest#testIsUserAMonkey;android.app.cts.NotificationManagerTest#testCancelAll;android.app.cts.ActivityGroupTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testCreate;android.app.cts.SystemFeaturesTest#testUsbAccessory;android.app.cts.ActivityManagerRecentTaskInfoTest#testDescribeContents;android.app.cts.ActivityManagerRunningTaskInfoTest#testDescribeContents;android.app.cts.AlertDialog_BuilderTest#testDisableCancelable;android.app.cts.InstrumentationTest#testSendKeyDownUpSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testConstructor;android.app.cts.TimePickerDialogTest#testUpdateTime;android.app.cts.ActivityManagerRunningTaskInfoTest#testReadFromParcel;android.app.cts.ProgressDialogTest#testSetProgressStyle;android.app.cts.InstrumentationTest#testMonitor;android.app.cts.AliasActivityTest#testAliasActivity;android.app.cts.InstrumentationTest#testSendTrackballEventSync;android.app.cts.LifecycleTest#testScreen;android.app.cts.AlarmManagerTest#testCancel;android.app.cts.ActivityGroupTest#testTabDialog;android.app.cts.PendingIntentTest#testDescribeContents;android.app.cts.DialogTest#testOnSearchRequested;android.app.cts.SearchManagerTest#testSetOnCancelListener;android.app.cts.ProgressDialogTest#testAccessMax;android.app.cts.PendingIntentTest#testGetTargetPackage;android.app.cts.SystemFeaturesTest#testWifiFeature;android.app.cts.ActivityManagerRecentTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.DialogTest#testSetFeatureDrawableAlpha;android.app.cts.DialogTest#testSetTitle;android.app.cts.FragmentTest#testInstantiateNonFragment;android.app.cts.DialogTest#testSetDismissMessage;android.app.cts.PendingIntentTest#testWriteToParcel;android.app.cts.ActivityManagerMemoryInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamCharSequence;android.app.cts.NotificationTest#testToString;android.app.cts.LaunchTest#testColdScreen;android.app.cts.AlertDialogTest#testAlertDialog;android.app.cts.SystemFeaturesTest#testSensorFeatures;android.app.cts.ProgressDialogTest#testShow1;android.app.cts.AlertDialog_BuilderTest#testSetNeutralButtonWithParamInt;android.app.cts.ActivityManagerRunningTaskInfoTest#testWriteToParcel;android.app.cts.ProgressDialogTest#testShow2;android.app.cts.ProgressDialogTest#testShow3;android.app.cts.ProgressDialogTest#testShow4;android.app.cts.InstrumentationTest#testCallActivityOnStart;android.app.cts.PendingIntentTest#testCancel;android.app.cts.InstrumentationTest#testConstructor;android.app.cts.ProgressDialogTest#testSetIndeterminate;android.app.cts.AlertDialog_BuilderTest#testShow;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamDrawable;android.app.cts.AlarmManagerTest#testSetTypes;android.app.cts.AlarmManagerTest#testSetInexactRepeating;android.app.cts.PendingIntentTest#testSendWithParamIntOnFinishedHandler;android.app.backup.cts.FileBackupHelperTest#testConstructor;android.app.cts.Instrumentation_ActivityResultTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testDownloadManagerDestinationExtension;android.app.cts.LaunchTest#testClearTopInCreate;android.app.cts.InstrumentationTest#testRunOnMainSync;android.app.cts.DialogTest#testOnKeyDownKeyUp;android.app.cts.ServiceTest#testLocalStartActionPermissions;android.app.cts.KeyguardManagerTest#testInKeyguardRestrictedInputMode;android.app.cts.DialogTest#testConstructor;android.app.cts.AlertDialogTest#testCallback;android.app.cts.ActivityManagerTest#testGetRunningTasks;android.app.cts.ProgressDialogTest#testIncrementSecondaryProgressBy;android.app.cts.DialogTest#testAccessOwnerActivity;android.app.cts.LifecycleTest#testTabScreen;android.app.cts.TimePickerDialogTest#testOnRestoreInstanceState;android.app.cts.ActivityGroupTest#testTabBasic;android.app.cts.ServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testSendWithParamContextIntIntentOnFinishedHandler;android.app.backup.cts.BackupManagerTest#testBackupManager;android.app.cts.ActivityManagerRecentTaskInfoTest#testConstructor;android.app.cts.DialogTest#testOnWindowFocusChanged;android.app.cts.DialogTest#testGetCurrentFocus;android.app.cts.TabActivityTest#testChildTitleCallback;android.app.cts.DialogTest#testSetOnDismissListener_listener;android.app.cts.ServiceTest#testLocalStartAction;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamInt;android.app.cts.DialogTest#testGetLayoutInflater;android.app.cts.InstrumentationTest#testInvokeContextMenuAction;android.app.cts.InstrumentationTest#testProfiling;android.app.cts.IntentServiceTest#testIntentServiceLifeCycle;android.app.cts.ProgressDialogTest#testAccessSecondaryProgress;android.app.cts.NotificationManagerTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentTest#testAndroidTestCaseSetupProperly;android.app.cts.ActivityManagerTest#testGetProcessInErrorState;android.app.cts.SearchManagerTest#testStopSearch;android.app.cts.NotificationTest#testSetLatestEventInfo;android.app.cts.DialogTest#testSetCancellable_false;android.app.cts.PendingIntentTest#testSend;android.app.cts.LocalActivityManagerTest#testDispatchResume;android.app.cts.AlertDialog_BuilderTest#testSetViewCustom;android.app.cts.InstrumentationTest#testInvokeMenuActionSync;android.app.cts.DialogTest#testOnSaveInstanceState;android.app.cts.DialogTest#testOnKeyMultiple;android.app.cts.ActivityGroupTest#testTabScreen;android.app.cts.InstrumentationTest#testCallActivityOnSaveInstanceState;android.app.cts.ActivityManagerTest#testGetDeviceConfigurationInfo;android.app.cts.NotificationTest#testWriteToParcel;android.app.cts.InstrumentationTest#testWaitForIdle;android.app.cts.InstrumentationTest#testCallActivityOnStop;android.app.cts.InstrumentationTest#testSendCharacterSync;android.app.cts.TimePickerDialogTest#testOnTimeChanged;android.app.cts.PendingIntentTest#testEquals;android.app.cts.AlertDialog_BuilderTest#testSetIconWithParamInt;android.app.cts.DialogTest#testContextMenu;android.app.cts.SystemFeaturesTest#testBluetoothFeature;android.app.cts.ExpandableListActivityTest#testView;android.app.cts.AlarmManagerTest#testSetRepeating;android.app.cts.ActivityManager_RunningServiceInfoTest#testReadFromParcel;android.app.cts.ServiceTest#testLocalBindActionPermissions;android.app.cts.LocalActivityManagerTest#testDispatchStop;android.app.cts.LauncherActivity_ListItemTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewApplication;android.app.cts.LaunchTest#testForwardResult;android.app.cts.ProgressDialogTest#testSetMessage;android.app.cts.ActivityManagerTest#testGetRunningServices;android.app.cts.AlertDialogTest#testCustomAlertDialogView;android.app.backup.cts.SharedPreferencesBackupHelperTest#testConstructor;android.app.cts.LifecycleTest#testTabBasic;android.app.cts.FragmentTest#testInstantiateFragment;android.app.cts.ActivityManager_RunningAppProcessInfoTest#testRunningAppProcessInfo;android.app.cts.AlertDialogTest#testAlertDialogNotCancelable;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamCharSequence;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testDescribeContents;android.app.cts.DialogTest#testConstructor_protectedNotCancellable;android.app.cts.ExpandableListActivityTest#testSelect;android.app.cts.SystemFeaturesTest#testScreenFeatures;android.app.cts.LauncherActivityTest#testLaunchActivity;android.app.cts.LaunchTest#testAndroidTestCaseSetupProperly;android.app.cts.LifecycleTest#testAndroidTestCaseSetupProperly;android.app.cts.NotificationTest#testDescribeContents;android.app.cts.DialogTest#testOnWindowAttributesChanged;android.app.cts.ServiceTest#testLocalBindAutoActionPermissionGranted;android.app.cts.InstrumentationTest#testCallActivityOnPostCreate;android.app.cts.AlertDialogTest#testAlertDialogDeprecatedAPIWithMessage;android.app.cts.AlertDialog_BuilderTest#testSetPositiveButtonWithParamCharSequence;android.app.cts.AlarmManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.AlertDialog_BuilderTest#testSetView;android.app.cts.ActivityManager_RunningServiceInfoTest#testConstructor;android.app.cts.InstrumentationTest#testPerformanceSnapshot;android.app.cts.InstrumentationTest#testCallApplicationOnCreate;android.app.cts.DialogTest#testSetFeatureDrawable;android.app.cts.AliasActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.PendingIntentTest#testGetService;android.app.cts.IntentServiceTest#testIntents;android.app.cts.AlertDialog_BuilderTest#testSetOnItemSelectedListener;android.app.cts.LifecycleTest#testDialog;android.app.cts.DownloadManagerTest#testDownloadManagerDestination;android.app.cts.WallpaperManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.ExpandableListActivityTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testNewActivity;android.app.cts.ProgressDialogTest#testSetProgressDrawable;android.app.backup.cts.BackupManagerTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testAllocCounting;android.app.cts.LocalActivityManagerTest#testRemoveAllActivities;android.app.cts.ServiceTest#testLocalBindAutoClass;android.app.backup.cts.BackupAgentHelperTest#testBackupAgentHelper;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testReadFromParcel;android.app.cts.PendingIntent_CanceledExceptionTest#testAndroidTestCaseSetupProperly;android.app.cts.TimePickerDialogTest#testOnClick;android.app.cts.AlertDialog_BuilderTest#testSetOnKeyListener;android.app.cts.DialogTest#testTouchEvent;android.app.cts.ProgressDialogTest#testProgressDialog1;android.app.cts.InstrumentationTest#testCallActivityOnRestoreInstanceState;android.app.cts.ProgressDialogTest#testProgressDialog2;android.app.cts.InstrumentationTest#testCallActivityOnPause;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCharSequence;android.app.cts.SystemFeaturesTest#testCameraFeatures;android.app.cts.ServiceTest#testLocalBindClassPermissions;android.app.cts.ActivityManagerTest#testGetRecentTasks;android.app.cts.SystemFeaturesTest#testNfcFeatures;android.app.cts.AlertDialogTest#testCustomAlertDialog;android.app.cts.SystemFeaturesTest#testSipFeatures;android.app.cts.InstrumentationTest#testSendStringSync;android.app.cts.ActivityManagerRunningTaskInfoTest#testAndroidTestCaseSetupProperly;android.app.cts.TabActivityTest#testTabActivity;android.app.cts.KeyguardManagerTest#testNewKeyguardLock;android.app.cts.NotificationManagerTest#testCancel;android.app.cts.AlertDialog_BuilderTest#testSetMultiChoiceItemsWithParamCursor;android.app.cts.ActivityManagerMemoryClassTest#testGetMemoryClass;android.app.cts.ActivityManagerTest#testGetRunningAppProcesses;android.app.cts.AlertDialog_BuilderTest#testSetAdapter;android.app.cts.AlertDialog_BuilderTest#testSetItemsWithParamInt;android.app.cts.DialogTest#testCancel_noListener;android.app.cts.DialogTest#testDispatchKeyEvent;android.app.cts.LaunchTest#testLocalScreen;android.app.cts.ActivityManagerTest#testRestartPackage;android.app.cts.FragmentTest#testAndroidTestCaseSetupProperly;android.app.cts.InstrumentationTest#testCallActivityOnNewIntent;android.app.cts.NotificationManagerTest#testNotify;android.app.cts.LocalActivityManagerTest#testDispatchPauseTrue;android.app.cts.ActivityManagerProcessErrorStateInfoTest#testAndroidTestCaseSetupProperly;android.app.backup.cts.BackupAgentHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.ProgressDialogTest#testSetIndeterminateDrawable;android.app.backup.cts.SharedPreferencesBackupHelperTest#testAndroidTestCaseSetupProperly;android.app.cts.DownloadManagerTest#testMinimumDownload;android.app.cts.PendingIntentTest#testReadAndWritePendingIntentOrNullToParcel;android.app.cts.DialogTest#testSetOnDismissListener_noListener;android.app.cts.KeyguardManagerTest#testExitKeyguardSecurely;android.app.cts.AlertDialog_BuilderTest#testSetNegativeButtonWithParamCharSequence;android.app.cts.DialogTest#testSetCancelable_true;android.app.cts.Instrumentation_ActivityMonitorTest#testActivityMonitor;android.app.cts.LocalActivityManagerTest#testStartActivity;android.app.cts.IntentServiceTest#testAndroidTestCaseSetupProperly;android.app.cts.ActionBarTest#testAddTab;android.app.cts.DialogTest#testSetCancelMessage;android.app.cts.TimePickerDialogTest#testSaveInstanceState" />
+ <Entry uri="android.hardware" exclude="android.hardware.consumerir.cts.ConsumerIrTest#test_hasIrEmitter;android.hardware.consumerir.cts.ConsumerIrTest#test_getCarrierFrequencies;android.hardware.consumerir.cts.ConsumerIrTest#test_transmit;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCaptureBurst;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingBurst;android.hardware.cts.CameraGLTest#testSetPreviewTextureTextureCallback;android.hardware.cts.CameraTest#test3ALockInteraction;android.hardware.cts.CameraTest#testAutoExposureLock;android.hardware.cts.CameraTest#testAutoWhiteBalanceLock;android.hardware.cts.CameraTest#testCancelAutofocus;android.hardware.cts.CameraTest#testDisplayOrientation;android.hardware.cts.CameraTest#testEnableShutterSound;android.hardware.cts.CameraTest#testFaceDetection;android.hardware.cts.CameraTest#testFocusAreas;android.hardware.cts.CameraTest#testFocusDistances;android.hardware.cts.CameraTest#testGetParameterDuringFocus;android.hardware.cts.CameraTest#testInvalidParameters;android.hardware.cts.CameraTest#testJpegCallbackStartPreview;android.hardware.cts.CameraTest#testJpegExif;android.hardware.cts.CameraTest#testJpegThumbnailSize;android.hardware.cts.CameraTest#testLockUnlock;android.hardware.cts.CameraTest#testMeteringAreas;android.hardware.cts.CameraTest#testMultiCameraRelease;android.hardware.cts.CameraTest#testMultipleCameras;android.hardware.cts.CameraTest#testParameters;android.hardware.cts.CameraTest#testPreviewCallbackWithBuffer;android.hardware.cts.CameraTest#testPreviewCallbackWithPicture;android.hardware.cts.CameraTest#testPreviewFormats;android.hardware.cts.CameraTest#testPreviewFpsRange;android.hardware.cts.CameraTest#testPreviewPictureSizesCombination;android.hardware.cts.CameraTest#testRecordingHint;android.hardware.cts.CameraTest#testSceneMode;android.hardware.cts.CameraTest#testSetOneShotPreviewCallback;android.hardware.cts.CameraTest#testSetPreviewDisplay;android.hardware.cts.CameraTest#testTakePicture;android.hardware.camera2.cts.ImageReaderTest#testImageReaderInvalidAccessTest;android.hardware.cts.SensorAccelerometerTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegSizes;android.hardware.cts.SensorAccelerometerTest#testCanReceiveBatchEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorOrientation;android.hardware.camera2.cts.CameraCharacteristicsTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testUpdateRate;android.hardware.cts.SensorAccelerometerTest#testNotTriggerSensor;android.hardware.cts.SensorAccelerometerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testCanReceiveEvents;android.hardware.cts.SensorMagneticFieldTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoHyperfocalDistance;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCamerasSerially;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCreateCaptureBuilder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedMinDurations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidFlashInfoAvailable;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoShadingMapSize;android.hardware.cts.LowRamDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorTest#testSensorOperations;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAwbAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorBaseGainFactor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoPhysicalSize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidInfoSupportedHardwareLevel;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidJpegAvailableThumbnailSizes;android.hardware.cts.SensorGyroscopeTest#testNotTriggerSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensFacing;android.hardware.cts.Camera_ParametersTest#testAccessMethods;android.hardware.cts.SensorMagneticFieldTest#testCanRegisterListener;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableFormats;android.hardware.cts.SensorTest#testBatchAndFlush;android.hardware.cts.SensorGyroscopeTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveEvents;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableEffects;android.hardware.camera2.cts.CameraManagerTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorGyroscopeTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableAntibandingModes;android.hardware.cts.GeomagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAfAvailableModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorMaxAnalogSensitivity;android.hardware.cts.SensorTest#testRequestTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoMinimumFocusDistance;android.hardware.cts.SensorTest#testValuesForAllSensors;android.hardware.cts.SensorMagneticFieldTest#testCanReceiveBatchEvents;android.hardware.cts.SensorAccelerometerTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testStartStopRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlMaxRegions;android.hardware.cts.SensorMagneticFieldTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidRequestMaxNumOutputStreams;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoSensitivityRange;android.hardware.cts.SensorMagneticFieldTest#testNotTriggerSensor;android.hardware.cts.SensorGyroscopeTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerInvalidDevice;android.hardware.cts.LowRamDeviceTest#testLowRamProductProperty;android.hardware.cts.SensorTest#testCancelTriggerWithNonTriggerSensor;android.hardware.cts.SensorMagneticFieldTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testMaxFrequency;android.hardware.cts.SensorAccelerometerTest#testSeveralClientsBatching;android.hardware.cts.SensorMagneticFieldTest#testEventJittering;android.hardware.cts.SensorGyroscopeTest#testEventValidity;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraRaw;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeCompensationStep;android.hardware.cts.SensorMagneticFieldTest#testSeveralClientsBatching;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetCameraCharacteristics;android.hardware.cts.SensorAccelerometerTest#testCanRegisterListener;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraFlexibleYuv;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableVideoStabilizationModes;android.hardware.cts.SensorGyroscopeTest#testStartStopRepeatedly;android.hardware.cts.SensorAccelerometerTest#testEventsArriveInOrder;android.hardware.cts.SensorMagneticFieldTest#testRegisterForBatchingZeroReport;android.hardware.cts.SensorGyroscopeTest#testCanRegisterListener;android.hardware.cts.SensorGyroscopeTest#testMaxFrequency;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableProcessedSizes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAeAvailableTargetFpsRanges;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidTonemapMaxCurvePoints;android.hardware.cts.SensorGyroscopeTest#testCanReceiveEvents;android.hardware.cts.SensorTest#testRegisterTwiceWithSameSensor;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableOpticalStabilization;android.hardware.camera2.cts.ImageReaderTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorMagneticFieldTest#testSeveralClients;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenCameraTwice;android.hardware.cts.SensorMagneticFieldTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableMaxDigitalZoom;android.hardware.cts.SensorAccelerometerTest#testBatchEventsArriveInOrder;android.hardware.camera2.cts.CameraDeviceTest#testAndroidTestCaseSetupProperly;android.hardware.cts.SensorAccelerometerTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoMaxFaceCount;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidControlAvailableSceneModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoActiveArraySize;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoMaxFrameDuration;android.hardware.cts.SensorAccelerometerTest#testStartStopBatchingRepeatedly;android.hardware.cts.SensorGyroscopeTest#testEventJittering;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceCapture;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidSensorInfoExposureTimeRange;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFocalLengths;android.hardware.cts.SensorGyroscopeTest#testCanReceiveBatchEvents;android.hardware.cts.SensorTest#testLegacySensorOperations;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerListener;android.hardware.cts.GeomagneticFieldTest#testGeomagneticField;android.hardware.cts.SensorGyroscopeTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testStartStopBatchingRepeatedly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableFilterDensities;android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceSetErrorListener;android.hardware.cts.SensorGyroscopeTest#testRegisterForBatchingZeroReport;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerGetDeviceIdList;android.hardware.cts.SensorAccelerometerTest#testMaxFrequency;android.hardware.camera2.cts.CameraManagerTest#testCameraManagerOpenAllCameras;android.hardware.cts.SensorAccelerometerTest#testSeveralClients;android.hardware.cts.SensorGyroscopeTest#testVarianceWhileStatic;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidScalerAvailableJpegMinDurations;android.hardware.cts.SensorTest#testAndroidTestCaseSetupProperly;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidStatisticsInfoAvailableFaceDetectModes;android.hardware.camera2.cts.CameraCharacteristicsTest#testCameraCharacteristicsAndroidLensInfoAvailableApertures;android.hardware.cts.SensorAccelerometerTest#testEventValidity;android.hardware.cts.SensorAccelerometerTest#testUpdateBatchRate;android.hardware.cts.SensorAccelerometerTest#testVarianceWhileStatic;android.hardware.cts.SensorGyroscopeTest#testUpdateBatchRate;android.hardware.cts.SensorGyroscopeTest#testUpdateRate;android.hardware.cts.SensorMagneticFieldTest#testEventValidity;android.hardware.cts.SensorMagneticFieldTest#testUpdateBatchRate;android.hardware.cts.SensorTest#testRegisterWithTriggerSensor;android.hardware.cts.Camera_SizeTest#testConstructor" />
+ <Entry uri="android.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.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" />
</TestPlan>
diff --git a/tests/plans/CTS-stable.xml b/tests/plans/CTS-stable.xml
index 984d709..968f71d 100644
--- a/tests/plans/CTS-stable.xml
+++ b/tests/plans/CTS-stable.xml
@@ -7,11 +7,13 @@
<Entry uri="android.accounts"/>
<Entry uri="android.admin"/>
<Entry uri="android.animation"/>
- <Entry uri="android.app" exclude="android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.AlertDialogTest#testCallback"/>
+ <Entry uri="android.app" exclude="android.app.cts.ActivityManagerTest#testIsRunningInTestHarness;android.app.cts.AlertDialogTest#testAlertDialogCancelable;android.app.cts.ExpandableListActivityTest#testCallback" />
+ <Entry uri="android.bionic"/>
<Entry uri="android.bluetooth"/>
<Entry uri="android.calendarcommon"/>
<Entry uri="android.content"/>
<Entry uri="android.core.tests.libcore.package.com"/>
+ <Entry uri="android.core.tests.libcore.package.conscrypt"/>
<Entry uri="android.core.tests.libcore.package.dalvik"/>
<Entry uri="android.core.tests.libcore.package.libcore"/>
<Entry uri="android.core.tests.libcore.package.org"/>
@@ -29,18 +31,18 @@
<Entry uri="android.gesture"/>
<Entry uri="android.graphics"/>
<Entry uri="android.graphics2"/>
- <Entry uri="android.hardware" exclude="android.hardware.cts.CameraTest#testCancelAutofocus"/>
+ <Entry uri="android.hardware" exclude="android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRepeatingRequest;android.hardware.camera2.cts.ImageReaderTest#testImageReaderFromCameraJpeg;android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata;android.hardware.cts.CameraTest#testImmediateZoom;android.hardware.cts.CameraTest#testPreviewCallback;android.hardware.cts.CameraTest#testSmoothZoom;android.hardware.cts.CameraTest#testVideoSnapshot;android.hardware.cts.CameraGLTest#testSetPreviewTextureBothCallbacks;android.hardware.cts.CameraGLTest#testSetPreviewTexturePreviewCallback" />
<Entry uri="android.holo"/>
<Entry uri="android.jni"/>
<Entry uri="android.keystore"/>
<Entry uri="android.location"/>
- <Entry uri="android.media" exclude="android.media.cts.DecodeEditEncodeTest#testVideoEditQCIF"/>
+ <Entry uri="android.media"/>
<Entry uri="android.mediastress"/>
<Entry uri="android.nativemedia.sl"/>
<Entry uri="android.nativemedia.xa"/>
<Entry uri="android.nativeopengl"/>
<Entry uri="android.ndef"/>
- <Entry uri="android.net" exclude="android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.trafficStatsTest#testTrafficStatsForLocalhost;android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp"/>
+ <Entry uri="android.net" exclude="android.net.wifi.cts.ScanResultTest#testScanResultTimeStamp;android.net.cts.DnsTest#testDnsWorks;android.net.cts.TrafficStatsTest#testTrafficStatsForLocalhost;android.net.cts.SSLCertificateSocketFactoryTest#testCreateSocket;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_bind;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_simple;android.net.cts.SSLCertificateSocketFactoryTest#test_createSocket_wrapping" />
<Entry uri="android.opengl"/>
<Entry uri="android.openglperf"/>
<Entry uri="android.os"/>
@@ -48,8 +50,10 @@
<Entry uri="android.permission2"/>
<Entry uri="android.preference"/>
<Entry uri="android.preference2"/>
- <Entry uri="android.provider" exclude="android.provider.cts.MediaStore_Images_MediaTest#testInsertImageWithBitmap;android.provider.cts.MediaStore_Images_MediaTes#testInsertImageWithImagePath;android.provider.cts.MediaStore_Images_ThumbnailsTest#testQueryExternalMiniThumbnails"/>
+ <Entry uri="android.provider"/>
<Entry uri="android.renderscript"/>
+ <Entry uri="android.rscpp"/>
+ <Entry uri="android.rsg"/>
<Entry uri="android.sax"/>
<Entry uri="android.security"/>
<Entry uri="android.speech"/>
@@ -60,9 +64,20 @@
<Entry uri="android.textureview"/>
<Entry uri="android.theme"/>
<Entry uri="android.uiautomator"/>
+ <Entry uri="android.usb"/>
<Entry uri="android.util"/>
<Entry uri="android.view"/>
- <Entry uri="android.webkit"/>
+ <Entry uri="android.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"/>
+ <Entry uri="com.android.pts.bootup"/>
+ <Entry uri="com.android.pts.browserbench"/>
+ <Entry uri="com.android.pts.dram"/>
+ <Entry uri="com.android.pts.filesystemperf"/>
+ <Entry uri="com.android.pts.jank.opengl"/>
+ <Entry uri="com.android.pts.opengl"/>
+ <Entry uri="com.android.pts.simplecpu"/>
+ <Entry uri="com.android.pts.ui"/>
+ <Entry uri="com.android.pts.uihost"/>
+ <Entry uri="com.android.pts.videoperf"/>
<Entry uri="zzz.android.monkey"/>
</TestPlan>
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
index 1a07a39..1b892ba 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraCharacteristicsTest.java
@@ -63,14 +63,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.aeAvailableAntibandingModes",
- props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.aeAvailableAntibandingModes",
- allKeys.contains(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+ {
+
+ assertNotNull("Invalid property: android.control.aeAvailableAntibandingModes",
+ props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.aeAvailableAntibandingModes", allKeys.contains(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES));
+
+ }
+
}
}
@@ -80,14 +86,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.aeAvailableTargetFpsRanges",
- props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.aeAvailableTargetFpsRanges",
- allKeys.contains(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+ {
+
+ assertNotNull("Invalid property: android.control.aeAvailableTargetFpsRanges",
+ props.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.aeAvailableTargetFpsRanges", allKeys.contains(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES));
+
+ }
+
}
}
@@ -97,14 +109,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.aeCompensationRange",
- props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.aeCompensationRange",
- allKeys.contains(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+ {
+
+ assertNotNull("Invalid property: android.control.aeCompensationRange",
+ props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.aeCompensationRange", allKeys.contains(
+ CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE));
+
+ }
+
}
}
@@ -114,14 +132,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.aeCompensationStep",
- props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.aeCompensationStep",
- allKeys.contains(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+ {
+
+ assertNotNull("Invalid property: android.control.aeCompensationStep",
+ props.get(CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.aeCompensationStep", allKeys.contains(
+ CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP));
+
+ }
+
}
}
@@ -131,14 +155,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.afAvailableModes",
- props.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.afAvailableModes",
- allKeys.contains(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+ {
+
+ assertNotNull("Invalid property: android.control.afAvailableModes",
+ props.get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.afAvailableModes", allKeys.contains(
+ CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES));
+
+ }
+
}
}
@@ -148,14 +178,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.availableEffects",
- props.get(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.availableEffects",
- allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+ {
+
+ assertNotNull("Invalid property: android.control.availableEffects",
+ props.get(CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.availableEffects", allKeys.contains(
+ CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS));
+
+ }
+
}
}
@@ -165,14 +201,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.availableSceneModes",
- props.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.availableSceneModes",
- allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+ {
+
+ assertNotNull("Invalid property: android.control.availableSceneModes",
+ props.get(CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.availableSceneModes", allKeys.contains(
+ CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES));
+
+ }
+
}
}
@@ -182,14 +224,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.availableVideoStabilizationModes",
- props.get(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.availableVideoStabilizationModes",
- allKeys.contains(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+ {
+
+ assertNotNull("Invalid property: android.control.availableVideoStabilizationModes",
+ props.get(CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.availableVideoStabilizationModes", allKeys.contains(
+ CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES));
+
+ }
+
}
}
@@ -199,14 +247,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.awbAvailableModes",
- props.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.awbAvailableModes",
- allKeys.contains(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+ {
+
+ assertNotNull("Invalid property: android.control.awbAvailableModes",
+ props.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.awbAvailableModes", allKeys.contains(
+ CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES));
+
+ }
+
}
}
@@ -216,14 +270,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.control.maxRegions",
- props.get(CameraCharacteristics.CONTROL_MAX_REGIONS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.control.maxRegions",
- allKeys.contains(CameraCharacteristics.CONTROL_MAX_REGIONS));
+ {
+
+ assertNotNull("Invalid property: android.control.maxRegions",
+ props.get(CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.control.maxRegions", allKeys.contains(
+ CameraCharacteristics.CONTROL_MAX_REGIONS));
+
+ }
+
}
}
@@ -233,14 +293,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.flash.info.available",
- props.get(CameraCharacteristics.FLASH_INFO_AVAILABLE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.flash.info.available",
- allKeys.contains(CameraCharacteristics.FLASH_INFO_AVAILABLE));
+ {
+
+ assertNotNull("Invalid property: android.flash.info.available",
+ props.get(CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.flash.info.available", allKeys.contains(
+ CameraCharacteristics.FLASH_INFO_AVAILABLE));
+
+ }
+
}
}
@@ -250,14 +316,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.jpeg.availableThumbnailSizes",
- props.get(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.jpeg.availableThumbnailSizes",
- allKeys.contains(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+ {
+
+ assertNotNull("Invalid property: android.jpeg.availableThumbnailSizes",
+ props.get(CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.jpeg.availableThumbnailSizes", allKeys.contains(
+ CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES));
+
+ }
+
}
}
@@ -267,14 +339,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.facing",
- props.get(CameraCharacteristics.LENS_FACING));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.facing",
- allKeys.contains(CameraCharacteristics.LENS_FACING));
+ {
+
+ assertNotNull("Invalid property: android.lens.facing",
+ props.get(CameraCharacteristics.LENS_FACING));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.facing", allKeys.contains(
+ CameraCharacteristics.LENS_FACING));
+
+ }
+
}
}
@@ -284,14 +362,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.availableApertures",
- props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.availableApertures",
- allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.availableApertures",
+ props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.availableApertures", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES));
+
+ }
+
}
}
@@ -301,14 +385,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.availableFilterDensities",
- props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.availableFilterDensities",
- allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.availableFilterDensities",
+ props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.availableFilterDensities", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES));
+
+ }
+
}
}
@@ -318,14 +408,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.availableFocalLengths",
- props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.availableFocalLengths",
- allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.availableFocalLengths",
+ props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.availableFocalLengths", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS));
+
+ }
+
}
}
@@ -335,14 +431,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.availableOpticalStabilization",
- props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.availableOpticalStabilization",
- allKeys.contains(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.availableOpticalStabilization",
+ props.get(CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.availableOpticalStabilization", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION));
+
+ }
+
}
}
@@ -352,14 +454,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.hyperfocalDistance",
- props.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.hyperfocalDistance",
- allKeys.contains(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.hyperfocalDistance",
+ props.get(CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.hyperfocalDistance", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE));
+
+ }
+
}
}
@@ -369,14 +477,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.minimumFocusDistance",
- props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.minimumFocusDistance",
- allKeys.contains(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.minimumFocusDistance",
+ props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.minimumFocusDistance", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE));
+
+ }
+
}
}
@@ -386,14 +500,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.lens.info.shadingMapSize",
- props.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.lens.info.shadingMapSize",
- allKeys.contains(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+ {
+
+ assertNotNull("Invalid property: android.lens.info.shadingMapSize",
+ props.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.lens.info.shadingMapSize", allKeys.contains(
+ CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
+
+ }
+
}
}
@@ -403,14 +523,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.request.maxNumOutputStreams",
- props.get(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.request.maxNumOutputStreams",
- allKeys.contains(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+ {
+
+ assertNotNull("Invalid property: android.request.maxNumOutputStreams",
+ props.get(CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.request.maxNumOutputStreams", allKeys.contains(
+ CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_STREAMS));
+
+ }
+
}
}
@@ -420,14 +546,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableFormats",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableFormats",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableFormats",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableFormats", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
+
+ }
+
}
}
@@ -437,14 +569,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableJpegMinDurations",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableJpegMinDurations",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableJpegMinDurations",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableJpegMinDurations", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_JPEG_MIN_DURATIONS));
+
+ }
+
}
}
@@ -454,14 +592,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableJpegSizes",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableJpegSizes",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableJpegSizes",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableJpegSizes", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_JPEG_SIZES));
+
+ }
+
}
}
@@ -471,14 +615,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableMaxDigitalZoom",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableMaxDigitalZoom",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableMaxDigitalZoom",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableMaxDigitalZoom", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM));
+
+ }
+
}
}
@@ -488,14 +638,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableProcessedMinDurations",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableProcessedMinDurations",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableProcessedMinDurations",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableProcessedMinDurations", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS));
+
+ }
+
}
}
@@ -505,14 +661,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.scaler.availableProcessedSizes",
- props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.scaler.availableProcessedSizes",
- allKeys.contains(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+ {
+
+ assertNotNull("Invalid property: android.scaler.availableProcessedSizes",
+ props.get(CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.scaler.availableProcessedSizes", allKeys.contains(
+ CameraCharacteristics.SCALER_AVAILABLE_PROCESSED_SIZES));
+
+ }
+
}
}
@@ -522,14 +684,24 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.baseGainFactor",
- props.get(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.baseGainFactor",
- allKeys.contains(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+ Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+ assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+ hwLevel);
+ if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+ {
+
+ assertNotNull("Invalid property: android.sensor.baseGainFactor",
+ props.get(CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.baseGainFactor", allKeys.contains(
+ CameraCharacteristics.SENSOR_BASE_GAIN_FACTOR));
+
+ }
+
}
}
@@ -539,14 +711,24 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.maxAnalogSensitivity",
- props.get(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.maxAnalogSensitivity",
- allKeys.contains(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+ Integer hwLevel = props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+ assertNotNull("No hardware level reported! android.info.supportedHardwareLevel",
+ hwLevel);
+ if (hwLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL)
+ {
+
+ assertNotNull("Invalid property: android.sensor.maxAnalogSensitivity",
+ props.get(CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.maxAnalogSensitivity", allKeys.contains(
+ CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY));
+
+ }
+
}
}
@@ -556,14 +738,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.orientation",
- props.get(CameraCharacteristics.SENSOR_ORIENTATION));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.orientation",
- allKeys.contains(CameraCharacteristics.SENSOR_ORIENTATION));
+ {
+
+ assertNotNull("Invalid property: android.sensor.orientation",
+ props.get(CameraCharacteristics.SENSOR_ORIENTATION));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.orientation", allKeys.contains(
+ CameraCharacteristics.SENSOR_ORIENTATION));
+
+ }
+
}
}
@@ -573,14 +761,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.info.activeArraySize",
- props.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.info.activeArraySize",
- allKeys.contains(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+ {
+
+ assertNotNull("Invalid property: android.sensor.info.activeArraySize",
+ props.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.info.activeArraySize", allKeys.contains(
+ CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE));
+
+ }
+
}
}
@@ -590,14 +784,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.info.sensitivityRange",
- props.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.info.sensitivityRange",
- allKeys.contains(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+ {
+
+ assertNotNull("Invalid property: android.sensor.info.sensitivityRange",
+ props.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.info.sensitivityRange", allKeys.contains(
+ CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE));
+
+ }
+
}
}
@@ -607,14 +807,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.info.exposureTimeRange",
- props.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.info.exposureTimeRange",
- allKeys.contains(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+ {
+
+ assertNotNull("Invalid property: android.sensor.info.exposureTimeRange",
+ props.get(CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.info.exposureTimeRange", allKeys.contains(
+ CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE));
+
+ }
+
}
}
@@ -624,14 +830,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.info.maxFrameDuration",
- props.get(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.info.maxFrameDuration",
- allKeys.contains(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+ {
+
+ assertNotNull("Invalid property: android.sensor.info.maxFrameDuration",
+ props.get(CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.info.maxFrameDuration", allKeys.contains(
+ CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION));
+
+ }
+
}
}
@@ -641,14 +853,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.sensor.info.physicalSize",
- props.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.sensor.info.physicalSize",
- allKeys.contains(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+ {
+
+ assertNotNull("Invalid property: android.sensor.info.physicalSize",
+ props.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.sensor.info.physicalSize", allKeys.contains(
+ CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE));
+
+ }
+
}
}
@@ -658,14 +876,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.statistics.info.availableFaceDetectModes",
- props.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.statistics.info.availableFaceDetectModes",
- allKeys.contains(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+ {
+
+ assertNotNull("Invalid property: android.statistics.info.availableFaceDetectModes",
+ props.get(CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.statistics.info.availableFaceDetectModes", allKeys.contains(
+ CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES));
+
+ }
+
}
}
@@ -675,14 +899,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.statistics.info.maxFaceCount",
- props.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.statistics.info.maxFaceCount",
- allKeys.contains(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+ {
+
+ assertNotNull("Invalid property: android.statistics.info.maxFaceCount",
+ props.get(CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.statistics.info.maxFaceCount", allKeys.contains(
+ CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT));
+
+ }
+
}
}
@@ -692,14 +922,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.tonemap.maxCurvePoints",
- props.get(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.tonemap.maxCurvePoints",
- allKeys.contains(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+ {
+
+ assertNotNull("Invalid property: android.tonemap.maxCurvePoints",
+ props.get(CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.tonemap.maxCurvePoints", allKeys.contains(
+ CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS));
+
+ }
+
}
}
@@ -709,14 +945,20 @@
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
assertNotNull(String.format("Can't get camera characteristics from: ID %s", ids[i]),
props);
- assertNotNull("Invalid property: android.info.supportedHardwareLevel",
- props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
- List<Key<?>> allKeys = props.getKeys();
- assertNotNull(String.format("Can't get camera characteristics keys from: ID %s", ids[i],
- props));
- assertTrue("Key not in keys list: android.info.supportedHardwareLevel",
- allKeys.contains(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+ {
+
+ assertNotNull("Invalid property: android.info.supportedHardwareLevel",
+ props.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+ List<Key<?>> allKeys = props.getKeys();
+ assertNotNull(String.format("Can't get camera characteristics keys from: ID %s",
+ ids[i], props));
+ assertTrue("Key not in keys list: android.info.supportedHardwareLevel", allKeys.contains(
+ CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
+
+ }
+
}
}
}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
index 851ebf1..f68b10a 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
@@ -16,6 +16,10 @@
package android.hardware.camera2.cts;
+import static android.hardware.camera2.cts.CameraTestUtils.*;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
+import static org.mockito.Mockito.*;
+
import android.content.Context;
import android.graphics.ImageFormat;
import android.hardware.camera2.CameraCharacteristics;
@@ -33,8 +37,8 @@
import android.util.Log;
import android.view.Surface;
+import com.android.ex.camera2.blocking.BlockingStateListener;
import org.mockito.ArgumentMatcher;
-import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.List;
@@ -47,9 +51,10 @@
private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
private CameraManager mCameraManager;
- private CameraDevice.StateListener mMockDeviceListener;
+ private BlockingStateListener mCameraListener;
private CameraTestThread mLooperThread;
private Handler mCallbackHandler;
+ private int mLatestState = STATE_UNINITIALIZED;
/**
* The error triggered flag starts out as false, and it will flip to true if any errors
@@ -62,7 +67,8 @@
private CameraTestThread mDummyThread;
private Surface mSurface;
- private static final int CAPTURE_WAIT_TIMEOUT_MS = 1000;
+ private static final int CAMERA_CONFIGURE_TIMEOUT_MS = 2000;
+ private static final int CAPTURE_WAIT_TIMEOUT_MS = 2000;
private static final int ERROR_LISTENER_WAIT_TIMEOUT_MS = 1000;
private static final int REPEATING_CAPTURE_EXPECTED_RESULT_COUNT = 5;
// VGA size capture is required by CDD.
@@ -92,7 +98,7 @@
* Use spy object here since we want to use the SimpleDeviceListener callback
* implementation (spy doesn't stub the functions unless we ask it to do so).
*/
- mMockDeviceListener = spy(new SimpleDeviceListener());
+ mCameraListener = spy(new BlockingStateListener());
}
@Override
@@ -104,7 +110,14 @@
* fail the rest of the tests. This is especially needed when error
* callback is fired too late.
*/
- assertFalse("Camera Device runs into error state", mErrorTriggered);
+ verify(mCameraListener, never())
+ .onError(
+ any(CameraDevice.class),
+ anyInt());
+ verify(mCameraListener, never())
+ .onDisconnected(
+ any(CameraDevice.class));
+
mCameraManager = (CameraManager)mContext.getSystemService(Context.CAMERA_SERVICE);
assertNotNull("Can't connect to camera manager", mCameraManager);
createDefaultSurface();
@@ -119,75 +132,6 @@
super.tearDown();
}
- /**
- * This class need to be public because spy need access it.
- *
- * <p><b>Warning</b>: {@link #onOpened} does nothing, so only use this with the
- * {@link CameraTestUtils#openCamera}
- * If using this with {@link CameraManager#openDevice} directly,
- * remember to implement openCamera!</p>
- */
- public class SimpleDeviceListener extends CameraDevice.StateListener {
- private final Object mIdleLock = new Object();
- private boolean mIdle = false;
-
- public SimpleDeviceListener() {
- }
-
- // Wait for idle to occur, with a timeout in milliseconds.
- // A timeout of 0 means indefinite wait
- public void waitForIdle(long timeout) {
- synchronized(mIdleLock) {
- if (!mIdle) {
- try {
- if (timeout > 0) {
- mIdleLock.wait(timeout);
- } else {
- mIdleLock.wait();
- }
- } catch (InterruptedException e) {
- // Probably fail the idle assert, but needs no other
- // action
- }
- assertTrue("Timeout waiting for camera device idle", mIdle);
- }
- mIdle = false;
- }
- }
-
- // Clear idle flag
- public void clearIdleFlag() {
- synchronized(mIdleLock) {
- mIdle = false;
- }
- }
-
- @Override
- public void onIdle(CameraDevice camera) {
- synchronized(mIdleLock) {
- mIdle = true;
- mIdleLock.notifyAll();
- }
- }
-
- @Override
- public void onDisconnected(CameraDevice camera) {
- // Not expecting disconnections
- mErrorTriggered = true;
- }
-
- @Override
- public void onError(CameraDevice camera, int error) {
- mErrorTriggered = true;
- }
-
- @Override
- public void onOpened(CameraDevice camera) {
- // Do nothing. Handled by CameraTestUtils#openCamera
- // TODO: If using this listener with CameraManager#openCamera, IMPLEMENT THIS.
- }
- }
-
public void testCameraDeviceCreateCaptureBuilder() throws Exception {
String[] ids = mCameraManager.getCameraIdList();
for (int i = 0; i < ids.length; i++) {
@@ -226,7 +170,7 @@
CameraDevice camera = null;
try {
camera = CameraTestUtils.openCamera(mCameraManager, ids[i],
- mMockDeviceListener, mCallbackHandler);
+ mCameraListener, mCallbackHandler);
assertNotNull(
String.format("Failed to open camera device %s", ids[i]), camera);
@@ -235,7 +179,7 @@
* Also, wait some time to check if device doesn't run into error.
*/
SystemClock.sleep(ERROR_LISTENER_WAIT_TIMEOUT_MS);
- verify(mMockDeviceListener, never())
+ verify(mCameraListener, never())
.onError(
any(CameraDevice.class),
anyInt());
@@ -287,9 +231,10 @@
CameraDevice camera = null;
try {
camera = CameraTestUtils.openCamera(mCameraManager, ids[i],
- mMockDeviceListener, mCallbackHandler);
+ mCameraListener, mCallbackHandler);
assertNotNull(
String.format("Failed to open camera device %s", ids[i]), camera);
+ waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
prepareCapture(camera);
@@ -320,7 +265,7 @@
// Test: burst of 5 shots of different template types
captureBurstShot(camera, ids[i], mTemplates, mTemplates.length, repeating);
}
- verify(mMockDeviceListener, never())
+ verify(mCameraListener, never())
.onError(
any(CameraDevice.class),
anyInt());
@@ -339,6 +284,9 @@
int template,
boolean repeating) throws Exception {
+ assertEquals("Bad initial state for preparing to capture",
+ mLatestState, STATE_IDLE);
+
CaptureRequest.Builder requestBuilder = camera.createCaptureRequest(template);
assertNotNull("Failed to create capture request", requestBuilder);
requestBuilder.addTarget(mSurface);
@@ -356,14 +304,15 @@
camera.setRepeatingRequest(requestBuilder.build(), mockCaptureListener,
mCallbackHandler);
}
+ waitForState(STATE_ACTIVE, CAMERA_CONFIGURE_TIMEOUT_MS);
int expectedCaptureResultCount = repeating ? REPEATING_CAPTURE_EXPECTED_RESULT_COUNT : 1;
verifyCaptureResults(camera, mockCaptureListener, expectedCaptureResultCount);
if (repeating) {
camera.stopRepeating();
- camera.waitUntilIdle();
}
+ waitForState(STATE_IDLE, CAMERA_CONFIGURE_TIMEOUT_MS);
}
private void captureBurstShot(
@@ -373,6 +322,9 @@
int len,
boolean repeating) throws Exception {
+ assertEquals("Bad initial state for preparing to capture",
+ mLatestState, STATE_IDLE);
+
assertTrue("Invalid args to capture function", len <= templates.length);
List<CaptureRequest> requests = new ArrayList<CaptureRequest>();
for (int i = 0; i < len; i++) {
@@ -394,6 +346,8 @@
else {
camera.setRepeatingBurst(requests, mockCaptureListener, mCallbackHandler);
}
+ waitForState(STATE_ACTIVE, CAMERA_CONFIGURE_TIMEOUT_MS);
+
int expectedResultCount = len;
if (repeating) {
expectedResultCount *= REPEATING_CAPTURE_EXPECTED_RESULT_COUNT;
@@ -403,14 +357,20 @@
if (repeating) {
camera.stopRepeating();
- camera.waitUntilIdle();
}
+ waitForState(STATE_IDLE, CAMERA_CONFIGURE_TIMEOUT_MS);
}
+ // Precondition: Device must be in known IDLE/UNCONFIGURED state (has been waited for)
private void prepareCapture(CameraDevice camera) throws Exception {
+ assertTrue("Bad initial state for preparing to capture",
+ mLatestState == STATE_IDLE || mLatestState == STATE_UNCONFIGURED);
+
List<Surface> outputSurfaces = new ArrayList<Surface>(1);
outputSurfaces.add(mSurface);
camera.configureOutputs(outputSurfaces);
+ waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+ waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
}
/**
@@ -445,6 +405,11 @@
mReader.setOnImageAvailableListener(listener, mDummyThread.start());
}
+ private void waitForState(int state, long timeout) {
+ mCameraListener.waitForState(state, timeout);
+ mLatestState = state;
+ }
+
private void verifyCaptureResults(
CameraDevice camera,
CameraDevice.CaptureListener mockListener,
@@ -462,5 +427,14 @@
eq(camera),
argThat(new IsCameraMetadataNotEmpty<CaptureRequest>()),
isA(CaptureFailure.class));
+ // Should receive expected number of capture shutter calls
+ verify(mockListener,
+ atLeast(expectResultCount))
+ .onCaptureStarted(
+ eq(camera),
+ isA(CaptureRequest.class),
+ anyLong());
+
}
+
}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
index f3a4fa7..a2d965c 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -46,28 +46,11 @@
private static final String TAG = "CameraTestUtils";
private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
- /**
- * Provide a default implementation of CameraDevice.StateListener that does nothing.
- */
- public abstract static class DeviceStateListener extends CameraDevice.StateListener {
- public DeviceStateListener() {
- }
-
- @Override
- public void onOpened(CameraDevice camera) {
- // Do nothing. It should be handled by #openCamera
- }
-
- @Override
- public void onDisconnected(CameraDevice camera) {
- // Do nothing
- }
-
- @Override
- public void onError(CameraDevice camera, int error) {
- // Do nothing
- }
- }
+ // Default timeouts for reaching various states
+ public static final int CAMERA_OPEN_TIMEOUT_MS = 500;
+ public static final int CAMERA_IDLE_TIMEOUT_MS = 2000;
+ public static final int CAMERA_ACTIVE_TIMEOUT_MS = 500;
+ public static final int CAMERA_BUSY_TIMEOUT_MS = 500;
/**
* Block until the camera is opened.
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
index 1dccb7b..28cb13e 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
@@ -17,6 +17,7 @@
package android.hardware.camera2.cts;
import static android.hardware.camera2.cts.CameraTestUtils.*;
+import static com.android.ex.camera2.blocking.BlockingStateListener.*;
import android.content.Context;
import android.graphics.BitmapFactory;
@@ -36,6 +37,7 @@
import android.view.Surface;
import com.android.ex.camera2.blocking.BlockingCameraManager.BlockingOpenException;
+import com.android.ex.camera2.blocking.BlockingStateListener;
import java.util.ArrayList;
import java.util.Arrays;
@@ -65,6 +67,7 @@
private CameraManager mCameraManager;
private CameraDevice mCamera;
+ private BlockingStateListener mCameraListener;
private String[] mCameraIds;
private ImageReader mReader = null;
private Handler mHandler = null;
@@ -84,6 +87,7 @@
mCameraIds = mCameraManager.getCameraIdList();
mLooperThread = new CameraTestThread();
mHandler = mLooperThread.start();
+ mCameraListener = new BlockingStateListener();
}
@Override
@@ -139,8 +143,6 @@
* to int[]. It'll also be nice to put this into a helper function and
* move to util class.
*/
- // Comment out below check to work around b/10406212.
- /*
int[] availableFormats = properties.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS);
assertArrayNotEmpty(availableFormats,
"availableFormats should not be empty");
@@ -148,7 +150,6 @@
assertTrue("Can't find the format " + format + " in supported formats " +
Arrays.toString(availableFormats),
Arrays.binarySearch(availableFormats, format) >= 0);
- */
Size[] availableSizes = getSupportedSizeForFormat(format, mCamera.getId(), mCameraManager);
assertArrayNotEmpty(availableSizes, "availableSizes should not be empty");
@@ -221,6 +222,8 @@
assertNotNull("Fail to get surface from ImageReader", surface);
outputSurfaces.add(surface);
mCamera.configureOutputs(outputSurfaces);
+ mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+ mCameraListener.waitForState(STATE_IDLE, CAMERA_IDLE_TIMEOUT_MS);
CaptureRequest.Builder captureBuilder =
mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
@@ -235,6 +238,7 @@
// TODO: Add more format here, and wrap each one as a function.
Image img;
int captureCount = NUM_FRAME_VERIFIED;
+
// Only verify single image for still capture
if (format == ImageFormat.JPEG) {
captureCount = 1;
@@ -263,8 +267,12 @@
}
private void stopCapture() throws CameraAccessException {
- mCamera.stopRepeating();
- mCamera.waitUntilIdle();
+ if (VERBOSE) Log.v(TAG, "Stopping capture and waiting for idle");
+ // Stop repeat, wait for captures to complete, and disconnect from surfaces
+ mCamera.configureOutputs(/*outputs*/ null);
+ mCameraListener.waitForState(STATE_BUSY, CAMERA_BUSY_TIMEOUT_MS);
+ mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_IDLE_TIMEOUT_MS);
+ // Camera has disconnected, clear out the reader
mReader.close();
mReader = null;
mListener = null;
@@ -275,7 +283,8 @@
throw new IllegalStateException("Already have open camera device");
}
try {
- mCamera = openCamera(mCameraManager, cameraId, mHandler);
+ mCamera = CameraTestUtils.openCamera(
+ mCameraManager, cameraId, mCameraListener, mHandler);
} catch (CameraAccessException e) {
mCamera = null;
fail("Fail to open camera, " + Log.getStackTraceString(e));
@@ -283,6 +292,7 @@
mCamera = null;
fail("Fail to open camera, " + Log.getStackTraceString(e));
}
+ mCameraListener.waitForState(STATE_UNCONFIGURED, CAMERA_OPEN_TIMEOUT_MS);
}
private void closeDevice(String cameraId) {
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
index de3755c..fbe65b1 100644
--- a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
@@ -16,6 +16,8 @@
package android.telephony.cts;
+import android.content.Context;
+import android.content.pm.PackageManager;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
@@ -26,6 +28,8 @@
*/
public class SmsUsageMonitorShortCodeTest extends AndroidTestCase {
+ private PackageManager mPackageManager;
+
/** Return value from {@link SmsUsageMonitor#checkDestination} for regular phone numbers. */
static final int CATEGORY_NOT_SHORT_CODE = 0;
@@ -475,8 +479,19 @@
new ShortCodeTest(null, "112", CATEGORY_NOT_SHORT_CODE),
};
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mPackageManager = getContext().getPackageManager();
+ }
+
@SmallTest
public void testSmsUsageMonitor() {
+ if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ // do not test if device does not support telephony (voice or sms)
+ return;
+ }
+
SmsUsageMonitor monitor = new SmsUsageMonitor(getContext());
for (ShortCodeTest test : sShortCodeTests) {
assertEquals("country: " + test.countryIso + " number: " + test.address,
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index 0b8af7a..21fee65 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -1080,7 +1080,8 @@
new PollingCheck() {
@Override
protected boolean check() {
- return mOnUiThread.getScale() != 0 && mOnUiThread.getContentHeight() != 0;
+ return mOnUiThread.getScale() != 0 && mOnUiThread.getContentHeight() != 0
+ && mOnUiThread.getHeight() != 0;
}
}.run();
assertEquals(mOnUiThread.getHeight(),