summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterService.java13
-rw-r--r--tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt41
-rw-r--r--tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt37
3 files changed, 70 insertions, 21 deletions
diff --git a/service/java/com/android/safetycenter/SafetyCenterService.java b/service/java/com/android/safetycenter/SafetyCenterService.java
index c9a5e1c03..250be5f25 100644
--- a/service/java/com/android/safetycenter/SafetyCenterService.java
+++ b/service/java/com/android/safetycenter/SafetyCenterService.java
@@ -244,6 +244,9 @@ public final class SafetyCenterService extends SystemService {
@GuardedBy("mApiLock")
private void registerSafetyCenterEnabledListenerLocked() {
+ if (Flags.safetyCenterEnabledNoDeviceConfig() && SdkLevel.isAtLeastU()) {
+ return;
+ }
SafetyCenterEnabledListener safetyCenterEnabledListener = new SafetyCenterEnabledListener();
DeviceConfig.addOnPropertiesChangedListener(
DeviceConfig.NAMESPACE_PRIVACY,
@@ -1151,9 +1154,7 @@ public final class SafetyCenterService extends SystemService {
if (!UserProfileGroup.isSupported(userId, context)) {
Log.i(
TAG,
- "Received broadcast for user id: "
- + userId
- + ", which is an unsupported user");
+ "Received broadcast for user id: " + userId + ", which is an unsupported user");
return false;
}
if (Intent.ACTION_USER_SWITCHED.equals(action)
@@ -1166,11 +1167,7 @@ public final class SafetyCenterService extends SystemService {
return false;
}
if (isProfileAddedOrAvailable(action) && !UserUtils.isUserExistent(userId, context)) {
- Log.w(
- TAG,
- "Received broadcast for user id: "
- + userId
- + ", which does not exist");
+ Log.w(TAG, "Received broadcast for user id: " + userId + ", which does not exist");
return false;
}
return true;
diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt
index 298d7643c..8fd45efb8 100644
--- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt
+++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt
@@ -95,6 +95,7 @@ import com.google.common.util.concurrent.MoreExecutors.directExecutor
import kotlin.test.assertFails
import kotlin.test.assertFailsWith
import kotlinx.coroutines.TimeoutCancellationException
+import org.junit.Assume.assumeFalse
import org.junit.Assume.assumeTrue
import org.junit.Rule
import org.junit.Test
@@ -788,6 +789,10 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_whenImplicitReceiverHasPermission_receiverCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
// Implicit broadcast is only sent to system user.
assumeTrue(context.getSystemService(UserManager::class.java)!!.isSystemUser)
val enabledChangedReceiver = SafetyCenterEnabledChangedReceiver(context)
@@ -806,6 +811,10 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_whenImplicitReceiverDoesntHavePermission_receiverNotCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
// Implicit broadcast is only sent to system user.
assumeTrue(context.getSystemService(UserManager::class.java)!!.isSystemUser)
val enabledChangedReceiver = SafetyCenterEnabledChangedReceiver(context)
@@ -818,6 +827,10 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_whenSourceReceiverHasPermission_receiverCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig)
val receiverValue =
@@ -833,6 +846,10 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_valueDoesntChange_receiverNotCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig)
assertFailsWith(TimeoutCancellationException::class) {
@@ -845,6 +862,10 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_whenSourceReceiverDoesntHavePermission_receiverNotCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig)
assertFailsWith(TimeoutCancellationException::class) {
@@ -854,6 +875,26 @@ class SafetyCenterManagerTest {
@Test
fun safetyCenterEnabledChanged_whenSourceReceiverNotInConfig_receiverNotCalled() {
+ assumeTrue(
+ "Cannot toggle SafetyCenter using DeviceConfig",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
+ assertFailsWith(TimeoutCancellationException::class) {
+ SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait(
+ false,
+ TIMEOUT_SHORT
+ )
+ }
+ }
+
+ @Test
+ fun safetyCenterEnabledChanged_whenNoDeviceConfigFlag_receiverNotCalled() {
+ assumeFalse(
+ "SafetyCenter DeviceConfig flag is in use",
+ SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig()
+ )
+ safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig)
+
assertFailsWith(TimeoutCancellationException::class) {
SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait(
false,
diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt
index 559a4b7e9..a138675d3 100644
--- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt
+++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt
@@ -32,6 +32,7 @@ import android.safetycenter.config.SafetySource.SAFETY_SOURCE_TYPE_STATIC
import android.util.Log
import androidx.annotation.RequiresApi
import com.android.modules.utils.build.SdkLevel
+import com.android.permission.flags.Flags
import com.android.safetycenter.testing.SafetyCenterApisWithShellPermissions.addOnSafetyCenterDataChangedListenerWithPermission
import com.android.safetycenter.testing.SafetyCenterApisWithShellPermissions.clearAllSafetySourceDataForTestsWithPermission
import com.android.safetycenter.testing.SafetyCenterApisWithShellPermissions.clearSafetyCenterConfigForTestsWithPermission
@@ -54,7 +55,6 @@ class SafetyCenterTestHelper(val context: Context) {
private val safetyCenterManager = context.getSystemService(SafetyCenterManager::class.java)!!
private val userManager = context.getSystemService(UserManager::class.java)!!
private val listeners = mutableListOf<SafetyCenterTestListener>()
- private val deviceFlagsValueProvider = DeviceFlagsValueProvider()
/**
* Sets up the state of Safety Center by enabling it on the device and setting default flag
@@ -66,13 +66,17 @@ class SafetyCenterTestHelper(val context: Context) {
SafetySourceReceiver.setup()
TestActivity.enableHighPriorityAlias()
SafetyCenterFlags.setup()
- setEnabled(true)
+ if (safetyCenterCanBeToggledUsingDeviceConfig()) {
+ setEnabled(true)
+ }
}
/** Resets the state of Safety Center. To be called after each test. */
fun reset() {
Log.d(TAG, "reset")
- setEnabled(true)
+ if (safetyCenterCanBeToggledUsingDeviceConfig()) {
+ setEnabled(true)
+ }
listeners.forEach {
safetyCenterManager.removeOnSafetyCenterDataChangedListenerWithPermission(it)
it.cancel()
@@ -109,13 +113,6 @@ class SafetyCenterTestHelper(val context: Context) {
setEnabledWaitingForSafetyCenterBroadcastIdle(value, safetyCenterConfig)
}
- private fun safetyCenterCanBeToggledUsingDeviceConfig() =
- !callWithShellPermissionIdentity(READ_DEVICE_CONFIG) {
- deviceFlagsValueProvider.getBoolean(
- "com.android.permission.flags.safety_center_enabled_no_device_config"
- )
- } || !SdkLevel.isAtLeastU()
-
/** Sets the given [SafetyCenterConfig]. */
fun setConfig(config: SafetyCenterConfig) {
Log.d(TAG, "setConfig")
@@ -168,7 +165,9 @@ class SafetyCenterTestHelper(val context: Context) {
}
private fun resetFlags() {
- setEnabled(SafetyCenterFlags.snapshot.isSafetyCenterEnabled())
+ if (safetyCenterCanBeToggledUsingDeviceConfig()) {
+ setEnabled(SafetyCenterFlags.snapshot.isSafetyCenterEnabled())
+ }
SafetyCenterFlags.reset()
}
@@ -218,7 +217,19 @@ class SafetyCenterTestHelper(val context: Context) {
private fun isEnabled() = safetyCenterManager.isSafetyCenterEnabledWithPermission()
- private companion object {
- const val TAG: String = "SafetyCenterTestHelper"
+ companion object {
+ private const val TAG: String = "SafetyCenterTestHelper"
+
+ /** Returns whether Safety Center can be enabled / disabled using a DeviceConfig flag. */
+ fun safetyCenterCanBeToggledUsingDeviceConfig(): Boolean {
+ val deviceFlagsValueProvider = DeviceFlagsValueProvider()
+ val safetyCenterEnabledNoDeviceConfig =
+ callWithShellPermissionIdentity(READ_DEVICE_CONFIG) {
+ deviceFlagsValueProvider.getBoolean(
+ Flags.FLAG_SAFETY_CENTER_ENABLED_NO_DEVICE_CONFIG
+ )
+ }
+ return !safetyCenterEnabledNoDeviceConfig || !SdkLevel.isAtLeastU()
+ }
}
}