summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/device-side/util-axt/src/com/android/compatibility/common/util/BaseDefaultPermissionGrantPolicyTest.java13
-rw-r--r--hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java21
-rw-r--r--hostsidetests/statsdatom/src/android/cts/statsdatom/appops/AppOpsTests.java13
-rw-r--r--tests/camera/src/android/hardware/camera2/cts/CameraManagerTest.java31
-rw-r--r--tests/media/src/android/mediav2/cts/CodecTestBase.java11
-rw-r--r--tests/tests/media/misc/Android.bp1
-rw-r--r--tests/tests/media/misc/AndroidTest.xml2
-rw-r--r--tests/tests/media/misc/DynamicConfig.xml2
-rwxr-xr-xtests/tests/media/misc/copy_media.sh2
-rw-r--r--tests/tests/media/misc/src/android/media/misc/cts/MediaSessionTest.java52
-rw-r--r--tests/tests/media/misc/src/android/media/misc/cts/WorkDir.java2
-rw-r--r--tests/tests/permission/src/android/permission/cts/BaseNotificationListenerCheckTest.java2
-rw-r--r--tests/tests/permission/src/android/permission/cts/NotificationListenerCheckTest.java19
-rw-r--r--tests/tests/permission4/src/android/permission4/cts/CameraMicIndicatorsPermissionTest.kt29
-rw-r--r--tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java13
15 files changed, 171 insertions, 42 deletions
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BaseDefaultPermissionGrantPolicyTest.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BaseDefaultPermissionGrantPolicyTest.java
index 41a38d4f18d..d7a056b9058 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BaseDefaultPermissionGrantPolicyTest.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/BaseDefaultPermissionGrantPolicyTest.java
@@ -553,6 +553,13 @@ public abstract class BaseDefaultPermissionGrantPolicyTest extends BusinessLogic
public static void appendPackagePregrantedPerms(PackageInfo packageInfo, String reason,
boolean fixed, Set<String> pregrantedPerms, SparseArray<UidState> outUidStates) {
+ appendPackagePregrantedPerms(packageInfo, reason, fixed, false, pregrantedPerms,
+ outUidStates);
+ }
+
+ public static void appendPackagePregrantedPerms(PackageInfo packageInfo, String reason,
+ boolean fixed, boolean fromRole, Set<String> pregrantedPerms,
+ SparseArray<UidState> outUidStates) {
final int uid = packageInfo.applicationInfo.uid;
UidState uidState = outUidStates.get(uid);
if (uidState == null) {
@@ -561,6 +568,12 @@ public abstract class BaseDefaultPermissionGrantPolicyTest extends BusinessLogic
}
for (String requestedPermission : packageInfo.requestedPermissions) {
if (pregrantedPerms.contains(requestedPermission)) {
+ // Role permissions are not fixed. If we're already getting a fixed pregrant, don't
+ // override with a non-fixed role pregrant
+ if (fromRole && uidState.grantedPermissions.getOrDefault(requestedPermission,
+ false)) {
+ continue;
+ }
uidState.addGrantedPermission(packageInfo.packageName, reason, requestedPermission,
fixed);
}
diff --git a/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java b/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
index fd0b4450868..eb7528c1729 100644
--- a/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
+++ b/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
@@ -230,8 +230,15 @@ public class StrictJavaPackagesTest extends BaseHostJUnit4Test {
"Landroid/os/BlockUntrustedTouchesMode;",
"Landroid/os/IInputConstants;",
"Landroid/os/InputEventInjectionResult;",
- "Landroid/os/InputEventInjectionSync;"
-
+ "Landroid/os/InputEventInjectionSync;",
+ // TODO(b/242741880): Remove duplication between sdksandbox-service and
+ // sdk-sandbox-framework
+ "Landroid/app/sdksandbox/ILoadSdkCallback;",
+ "Landroid/app/sdksandbox/IRequestSurfacePackageCallback;",
+ "Landroid/app/sdksandbox/ISdkSandboxManager;",
+ "Landroid/app/sdksandbox/ISdkSandboxLifecycleCallback;",
+ "Landroid/app/sdksandbox/ISendDataCallback;",
+ "Landroid/app/sdksandbox/ISharedPreferencesSyncCallback;"
);
private static final String FEATURE_WEARABLE = "android.hardware.type.watch";
@@ -725,9 +732,12 @@ public class StrictJavaPackagesTest extends BaseHostJUnit4Test {
private static final ImmutableSet<String> ADSERVICES_SANDBOX_APK_IN_APEX_BURNDOWN_LIST =
ImmutableSet.of(
// /apex/com.android.adservices/javalib/service-sdksandbox.jar
+ "Landroid/app/sdksandbox/ISharedPreferencesSyncCallback;",
+ "Lcom/android/sdksandbox/IDataReceivedCallback;",
+ "Lcom/android/sdksandbox/ILoadSdkInSandboxCallback;",
+ "Lcom/android/sdksandbox/IRequestSurfacePackageFromSdkCallback;",
"Lcom/android/sdksandbox/ISdkSandboxManagerToSdkSandboxCallback;",
- "Lcom/android/sdksandbox/ISdkSandboxService;",
- "Lcom/android/sdksandbox/ISdkSandboxToSdkSandboxManagerCallback;"
+ "Lcom/android/sdksandbox/ISdkSandboxService;"
);
private static final ImmutableMap<String, ImmutableSet<String>> FULL_APK_IN_APEX_BURNDOWN =
@@ -1102,7 +1112,8 @@ public class StrictJavaPackagesTest extends BaseHostJUnit4Test {
* included in BOOTCLASSPATH, SYSTEMSERVERCLASSPATH and shared library jars
*/
@Test
- public void testNoProtobufClassesWithoutJarjar() {
+ public void testNoProtobufClassesWithoutJarjar() throws Exception {
+ assumeTrue(mDeviceSdkLevel.isDeviceAtLeastU());
assertWithMessage("Classes from protobuf libraries must not be included in bootclasspath "
+ "and systemserverclasspath without being jarjared.")
.that(Stream.of(sBootclasspathJars.stream(),
diff --git a/hostsidetests/statsdatom/src/android/cts/statsdatom/appops/AppOpsTests.java b/hostsidetests/statsdatom/src/android/cts/statsdatom/appops/AppOpsTests.java
index c7feda651c3..f07f9d34e64 100644
--- a/hostsidetests/statsdatom/src/android/cts/statsdatom/appops/AppOpsTests.java
+++ b/hostsidetests/statsdatom/src/android/cts/statsdatom/appops/AppOpsTests.java
@@ -61,12 +61,13 @@ public class AppOpsTests extends DeviceTestCase implements IBuildReceiver {
protected void setUp() throws Exception {
super.setUp();
- mTransformedFromOp.clear();
- // The hotword op is allowed to all UIDs on TV and Auto devices.
- if (!(DeviceUtils.hasFeature(getDevice(), FEATURE_AUTOMOTIVE)
- || DeviceUtils.hasFeature(getDevice(), FEATURE_LEANBACK_ONLY))) {
- mTransformedFromOp.put(APP_OP_RECORD_AUDIO, APP_OP_RECORD_AUDIO_HOTWORD);
- }
+ // Temporarily commented out until the Trusted Hotword requirement is enforced again.
+ // mTransformedFromOp.clear();
+ // // The hotword op is allowed to all UIDs on TV and Auto devices.
+ // if (!(DeviceUtils.hasFeature(getDevice(), FEATURE_AUTOMOTIVE)
+ // || DeviceUtils.hasFeature(getDevice(), FEATURE_LEANBACK_ONLY))) {
+ // mTransformedFromOp.put(APP_OP_RECORD_AUDIO, APP_OP_RECORD_AUDIO_HOTWORD);
+ // }
assertThat(mCtsBuild).isNotNull();
ConfigUtils.removeConfig(getDevice());
diff --git a/tests/camera/src/android/hardware/camera2/cts/CameraManagerTest.java b/tests/camera/src/android/hardware/camera2/cts/CameraManagerTest.java
index f6b7830cf69..21bdc839bf1 100644
--- a/tests/camera/src/android/hardware/camera2/cts/CameraManagerTest.java
+++ b/tests/camera/src/android/hardware/camera2/cts/CameraManagerTest.java
@@ -27,7 +27,6 @@ import android.content.pm.PackageManager;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
-import android.hardware.camera2.CameraDevice.StateCallback;
import android.hardware.camera2.CameraManager;
import android.hardware.camera2.cts.Camera2ParameterizedTestCase;
import android.hardware.camera2.cts.CameraTestUtils.HandlerExecutor;
@@ -163,6 +162,15 @@ public class CameraManagerTest extends Camera2ParameterizedTestCase {
ids.length == 0 ||
mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY));
+ if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
+ // Camera placement on automotive device is different than usual front/back
+ // on mobile phones and use automotive.lens.facing instead. lens.facing is only used for
+ // external camera.testCameraManagerAutomotiveCameras ensures that lens.facing is only
+ // used for EXTERNAL camera. Hence, skipping this test for automotive implementations
+ Log.i(TAG, "Skip rest of the test on automotive device implementations");
+ return;
+ }
+
/**
* Test: that if the device has front or rear facing cameras, then there
* must be matched system features.
@@ -989,15 +997,23 @@ public class CameraManagerTest extends Camera2ParameterizedTestCase {
* android.automotive.lens.facing values
*/
Map<Pair<Integer, Integer>, ArrayList<String>> cameraGroup = new HashMap<>();
+ boolean externalCameraConnected = false;
for (String cameraId : cameraIds) {
CameraCharacteristics props = mCameraManager.getCameraCharacteristics(cameraId);
assertNotNull(
String.format("Can't get camera characteristics from: ID %s", cameraId), props);
Integer lensFacing = props.get(CameraCharacteristics.LENS_FACING);
- if (lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_EXTERNAL) {
- // Automotive device implementations may have external cameras but they are exempted
- // from this test case.
+
+ if (lensFacing != null) {
+ // Automotive device implementations can use android.lens.facing
+ // only for external cameras
+ assertTrue("android.lens.facing should only be used for external cameras",
+ lensFacing == CameraCharacteristics.LENS_FACING_EXTERNAL);
+ // Test that there is matching feature flag
+ assertTrue("System doesn't have external camera feature",
+ mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL));
+ externalCameraConnected = true;
continue;
}
@@ -1028,6 +1044,13 @@ public class CameraManagerTest extends Camera2ParameterizedTestCase {
}
}
+ // Test an external camera is connected if FEATURE_CAMERA_EXTERNAL is advertised
+ if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL)) {
+ assertTrue("External camera is not connected on device with FEATURE_CAMERA_EXTERNAL",
+ externalCameraConnected);
+ }
+
+
for (Map.Entry<Pair<Integer, Integer>, ArrayList<String>> entry : cameraGroup.entrySet()) {
ArrayList<String> cameraIdsToVerify = entry.getValue();
if (cameraIdsToVerify.size() > 1) {
diff --git a/tests/media/src/android/mediav2/cts/CodecTestBase.java b/tests/media/src/android/mediav2/cts/CodecTestBase.java
index 6065c5c8be7..d58f9bf3e85 100644
--- a/tests/media/src/android/mediav2/cts/CodecTestBase.java
+++ b/tests/media/src/android/mediav2/cts/CodecTestBase.java
@@ -590,17 +590,12 @@ class OutputManager {
abstract class CodecTestBase {
public static final boolean IS_Q = ApiLevelUtil.getApiLevel() == Build.VERSION_CODES.Q;
public static final boolean IS_AT_LEAST_R = ApiLevelUtil.isAtLeast(Build.VERSION_CODES.R);
- // Checking for CODENAME helps in cases when build version on the development branch isn't
- // updated yet but CODENAME is updated.
public static final boolean IS_AT_LEAST_T =
- ApiLevelUtil.isAtLeast(Build.VERSION_CODES.TIRAMISU) ||
- ApiLevelUtil.codenameEquals("Tiramisu");
- // TODO (b/223868241) Update the following to check for Build.VERSION_CODES.TIRAMISU once
- // TIRAMISU is set correctly
+ ApiLevelUtil.isAtLeast(Build.VERSION_CODES.TIRAMISU);
public static final boolean FIRST_SDK_IS_AT_LEAST_T =
- ApiLevelUtil.isFirstApiAfter(Build.VERSION_CODES.S_V2);
+ ApiLevelUtil.isFirstApiAtLeast(Build.VERSION_CODES.TIRAMISU);
public static final boolean VNDK_IS_AT_LEAST_T =
- SystemProperties.getInt("ro.vndk.version", 0) > Build.VERSION_CODES.S_V2;
+ SystemProperties.getInt("ro.vndk.version", 0) >= Build.VERSION_CODES.TIRAMISU;
public static final boolean IS_HDR_EDITING_SUPPORTED = isHDREditingSupported();
private static final String LOG_TAG = CodecTestBase.class.getSimpleName();
enum SupportClass {
diff --git a/tests/tests/media/misc/Android.bp b/tests/tests/media/misc/Android.bp
index feaabe47a4c..74237920845 100644
--- a/tests/tests/media/misc/Android.bp
+++ b/tests/tests/media/misc/Android.bp
@@ -106,6 +106,7 @@ android_test {
"cts",
"general-tests",
"mts-media",
+ "sts",
],
host_required: ["cts-dynamic-config"],
min_sdk_version: "29",
diff --git a/tests/tests/media/misc/AndroidTest.xml b/tests/tests/media/misc/AndroidTest.xml
index 4a2ffaf9d33..1facb8d3933 100644
--- a/tests/tests/media/misc/AndroidTest.xml
+++ b/tests/tests/media/misc/AndroidTest.xml
@@ -40,7 +40,7 @@
</target_preparer>
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer">
<option name="push-all" value="true" />
- <option name="media-folder-name" value="CtsMediaMiscTestCases-1.0" />
+ <option name="media-folder-name" value="CtsMediaMiscTestCases-2.0" />
<option name="dynamic-config-module" value="CtsMediaMiscTestCases" />
</target_preparer>
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
diff --git a/tests/tests/media/misc/DynamicConfig.xml b/tests/tests/media/misc/DynamicConfig.xml
index 09e5fbaf95f..51e05bbba75 100644
--- a/tests/tests/media/misc/DynamicConfig.xml
+++ b/tests/tests/media/misc/DynamicConfig.xml
@@ -15,6 +15,6 @@
<dynamicConfig>
<entry key="media_files_url">
- <value>https://storage.googleapis.com/android_media/cts/tests/tests/media/misc/CtsMediaMiscTestCases-1.0.zip</value>
+ <value>https://storage.googleapis.com/android_media/cts/tests/tests/media/misc/CtsMediaMiscTestCases-2.0.zip</value>
</entry>
</dynamicConfig>
diff --git a/tests/tests/media/misc/copy_media.sh b/tests/tests/media/misc/copy_media.sh
index 96f5a499d3b..27ba1e73422 100755
--- a/tests/tests/media/misc/copy_media.sh
+++ b/tests/tests/media/misc/copy_media.sh
@@ -17,4 +17,4 @@
[ -z "$MEDIA_ROOT_DIR" ] && MEDIA_ROOT_DIR=$(dirname $0)/..
source $MEDIA_ROOT_DIR/common/copy_media_utils.sh
get_adb_options "$@"
-copy_media "misc" "CtsMediaMiscTestCases-1.0"
+copy_media "misc" "CtsMediaMiscTestCases-2.0"
diff --git a/tests/tests/media/misc/src/android/media/misc/cts/MediaSessionTest.java b/tests/tests/media/misc/src/android/media/misc/cts/MediaSessionTest.java
index 6edadaaa332..cf4f6d09a68 100644
--- a/tests/tests/media/misc/src/android/media/misc/cts/MediaSessionTest.java
+++ b/tests/tests/media/misc/src/android/media/misc/cts/MediaSessionTest.java
@@ -16,6 +16,7 @@
package android.media.misc.cts;
import static android.media.AudioAttributes.USAGE_GAME;
+import static android.media.cts.Utils.compareRemoteUserInfo;
import static android.media.misc.cts.MediaSessionTestService.KEY_EXPECTED_QUEUE_SIZE;
import static android.media.misc.cts.MediaSessionTestService.KEY_EXPECTED_TOTAL_NUMBER_OF_ITEMS;
import static android.media.misc.cts.MediaSessionTestService.KEY_SESSION_TOKEN;
@@ -24,11 +25,11 @@ import static android.media.misc.cts.MediaSessionTestService.STEP_CLEAN_UP;
import static android.media.misc.cts.MediaSessionTestService.STEP_SET_UP;
import static android.media.misc.cts.MediaSessionTestService.TEST_SERIES_OF_SET_QUEUE;
import static android.media.misc.cts.MediaSessionTestService.TEST_SET_QUEUE;
-import static android.media.cts.Utils.compareRemoteUserInfo;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
+import android.content.ContextWrapper;
import android.content.Intent;
import android.media.AudioAttributes;
import android.media.AudioManager;
@@ -51,10 +52,13 @@ import android.os.Looper;
import android.os.Parcel;
import android.os.Process;
import android.platform.test.annotations.AppModeFull;
+import android.platform.test.annotations.AsbSecurityTest;
import android.test.AndroidTestCase;
import android.text.TextUtils;
import android.view.KeyEvent;
+import com.android.compatibility.common.util.ApiTest;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -80,6 +84,11 @@ public class MediaSessionTest extends AndroidTestCase {
private static final long TEST_ACTION = 55L;
private static final int TEST_TOO_MANY_SESSION_COUNT = 1000;
+ private static final String TEST_SESSION_TAG_FOREIGN_PACKAGE =
+ "test-session-tag-foreign-package";
+ private static final String TEST_FOREIGN_PACKAGE_NAME = "fakepackage";
+ private static final String TEST_FOREIGN_PACKAGE_CLASS = "com.fakepackage.media.FakeReceiver";
+
private AudioManager mAudioManager;
private Handler mHandler = new Handler(Looper.getMainLooper());
private Object mWaitLock = new Object();
@@ -307,6 +316,47 @@ public class MediaSessionTest extends AndroidTestCase {
}
}
+ @ApiTest(apis = {"android.media.session.MediaSession#setMediaButtonBroadcastReceiver"})
+ @AsbSecurityTest(cveBugId = 238177121)
+ public void testSetMediaButtonBroadcastReceiver_withForeignPackageName_fails()
+ throws Exception {
+ Utils.assertMediaPlaybackStarted(getContext());
+
+ // Create Media Session
+ MyContextWrapper contextWrapper = new MyContextWrapper(getContext());
+ MediaSession mediaSession =
+ new MediaSession(contextWrapper, TEST_SESSION_TAG_FOREIGN_PACKAGE);
+
+ // Bypass client-side check
+ contextWrapper.mOverridePackageName = TEST_FOREIGN_PACKAGE_NAME;
+
+ try {
+ mediaSession.setMediaButtonBroadcastReceiver(
+ new ComponentName(TEST_FOREIGN_PACKAGE_NAME, TEST_FOREIGN_PACKAGE_CLASS));
+ fail("Component name with different package name was registered.");
+ } catch (IllegalArgumentException ex) {
+ // Expected.
+ } finally {
+ mediaSession.release();
+ }
+ }
+
+ static class MyContextWrapper extends ContextWrapper {
+ String mOverridePackageName;
+
+ MyContextWrapper(Context base) {
+ super(base);
+ }
+
+ @Override
+ public String getPackageName() {
+ if (mOverridePackageName != null) {
+ return mOverridePackageName;
+ }
+ return super.getPackageName();
+ }
+ }
+
/**
* Test whether media button receiver can be a explicit broadcast receiver via
* MediaSession.setMediaButtonReceiver(PendingIntent).
diff --git a/tests/tests/media/misc/src/android/media/misc/cts/WorkDir.java b/tests/tests/media/misc/src/android/media/misc/cts/WorkDir.java
index 0c392295e04..dbb60353267 100644
--- a/tests/tests/media/misc/src/android/media/misc/cts/WorkDir.java
+++ b/tests/tests/media/misc/src/android/media/misc/cts/WorkDir.java
@@ -20,6 +20,6 @@ import android.media.cts.WorkDirBase;
class WorkDir extends WorkDirBase {
public static final String getMediaDirString() {
- return getMediaDirString("CtsMediaMiscTestCases-1.0");
+ return getMediaDirString("CtsMediaMiscTestCases-2.0");
}
}
diff --git a/tests/tests/permission/src/android/permission/cts/BaseNotificationListenerCheckTest.java b/tests/tests/permission/src/android/permission/cts/BaseNotificationListenerCheckTest.java
index 9daeff2af4a..f88b7ecbbaa 100644
--- a/tests/tests/permission/src/android/permission/cts/BaseNotificationListenerCheckTest.java
+++ b/tests/tests/permission/src/android/permission/cts/BaseNotificationListenerCheckTest.java
@@ -104,7 +104,7 @@ public class BaseNotificationListenerCheckTest {
private static final String PROPERTY_NOTIFICATION_LISTENER_CHECK_INTERVAL_MILLIS =
"notification_listener_check_interval_millis";
- private static final Long OVERRIDE_NOTIFICATION_LISTENER_CHECK_INTERVAL_MILLIS =
+ protected static final Long OVERRIDE_NOTIFICATION_LISTENER_CHECK_INTERVAL_MILLIS =
SECONDS.toMillis(1);
private static final String PROPERTY_JOB_SCHEDULER_MAX_JOB_PER_RATE_LIMIT_WINDOW =
diff --git a/tests/tests/permission/src/android/permission/cts/NotificationListenerCheckTest.java b/tests/tests/permission/src/android/permission/cts/NotificationListenerCheckTest.java
index 3ee161f67e0..88006b999a7 100644
--- a/tests/tests/permission/src/android/permission/cts/NotificationListenerCheckTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NotificationListenerCheckTest.java
@@ -151,6 +151,25 @@ public class NotificationListenerCheckTest extends BaseNotificationListenerCheck
}
@Test
+ public void notificationIsShownAgainAfterDisableAndReenableAppNotificationListener()
+ throws Throwable {
+ runNotificationListenerCheck();
+
+ eventually(() -> assertNotNull(getNotification(true)), UNEXPECTED_TIMEOUT_MILLIS);
+
+ // Disallow NLS, and run NLS check job. This should clear NLS off notified list
+ disallowTestAppNotificationListenerService();
+ runNotificationListenerCheck();
+
+ // Re-allow NLS, and run NLS check job. This work now that it's cleared NLS off notified
+ // list
+ allowTestAppNotificationListenerService();
+ runNotificationListenerCheck();
+
+ eventually(() -> assertNotNull(getNotification(true)), UNEXPECTED_TIMEOUT_MILLIS);
+ }
+
+ @Test
public void removeNotificationOnUninstall() throws Throwable {
runNotificationListenerCheck();
diff --git a/tests/tests/permission4/src/android/permission4/cts/CameraMicIndicatorsPermissionTest.kt b/tests/tests/permission4/src/android/permission4/cts/CameraMicIndicatorsPermissionTest.kt
index 872a243ce2e..d5bd49bdf37 100644
--- a/tests/tests/permission4/src/android/permission4/cts/CameraMicIndicatorsPermissionTest.kt
+++ b/tests/tests/permission4/src/android/permission4/cts/CameraMicIndicatorsPermissionTest.kt
@@ -297,7 +297,7 @@ class CameraMicIndicatorsPermissionTest {
// indicator
uiDevice.openQuickSettings()
assertPrivacyChipAndIndicatorsPresent(
- useMic || useHotword,
+ useMic,
useCamera,
chainUsage,
safetyCenterEnabled
@@ -392,11 +392,13 @@ class CameraMicIndicatorsPermissionTest {
chainUsage: Boolean,
safetyCenterEnabled: Boolean = false
) {
- // Ensure the privacy chip is present
- eventually {
- val privacyChip = uiDevice.findObject(UiSelector().resourceId(PRIVACY_CHIP_ID))
- assertTrue("view with id $PRIVACY_CHIP_ID not found", privacyChip.exists())
- privacyChip.click()
+ // Ensure the privacy chip is present (or not)
+ val chipFound = isChipPresent()
+ if (useMic || useCamera) {
+ assertTrue("Did not find chip", chipFound)
+ } else { // hotword
+ assertFalse("Found chip, but did not expect to", chipFound)
+ return
}
eventually {
@@ -470,6 +472,21 @@ class CameraMicIndicatorsPermissionTest {
}
}
+ private fun isChipPresent(): Boolean {
+ var chipFound = false
+ try {
+ eventually {
+ val privacyChip = uiDevice.findObject(By.res(PRIVACY_CHIP_ID))
+ assertNotNull("view with id $PRIVACY_CHIP_ID not found", privacyChip)
+ privacyChip.click()
+ chipFound = true
+ }
+ } catch (e: Exception) {
+ // Handle more gracefully after
+ }
+ return chipFound
+ }
+
private fun pressBack() {
uiDevice.pressBack()
waitForIdle()
diff --git a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
index 464a24b6b41..55eb2556d32 100644
--- a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
@@ -2912,13 +2912,6 @@ public class WifiManagerTest extends WifiJUnit3TestBase {
verifySetGetSoftApConfig(softApConfigBuilder.build());
}
- // Test 11 AX control config.
- if (callback.getCurrentSoftApCapability()
- .areFeaturesSupported(SoftApCapability.SOFTAP_FEATURE_IEEE80211_AX)) {
- softApConfigBuilder.setIeee80211axEnabled(true);
- verifySetGetSoftApConfig(softApConfigBuilder.build());
- }
-
// Test 11 BE control config
if (ApiLevelUtil.isAtLeast(Build.VERSION_CODES.TIRAMISU)) {
if (callback.getCurrentSoftApCapability()
@@ -2929,6 +2922,12 @@ public class WifiManagerTest extends WifiJUnit3TestBase {
}
if (ApiLevelUtil.isAtLeast(Build.VERSION_CODES.S)) {
+ // Test 11 AX control config.
+ if (callback.getCurrentSoftApCapability()
+ .areFeaturesSupported(SoftApCapability.SOFTAP_FEATURE_IEEE80211_AX)) {
+ softApConfigBuilder.setIeee80211axEnabled(true);
+ verifySetGetSoftApConfig(softApConfigBuilder.build());
+ }
softApConfigBuilder.setBridgedModeOpportunisticShutdownEnabled(false);
verifySetGetSoftApConfig(softApConfigBuilder.build());
}