summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Tyler Dewey <deweytyl@google.com> 2025-03-05 12:17:25 +0000
committer Tyler Dewey <deweytyl@google.com> 2025-03-06 02:46:58 -0800
commit51ffbb374aa8f12f635b0c59579bd25f8d20f307 (patch)
treeee237f25c7ed8d853bdb020c4a8bd31b399ea9b4 /tests
parent47e5e0643a0235d3eea66a71220154364758ce14 (diff)
Swallow write errors for BannerMessagePref property in SC tests.
Fixes: 400512397 Test: atest SafetyCenterFunctionalTestCases and treehugger Flag: EXEMPT test only change Relnote: N/a LOW_COVERAGE_REASON=b/360423897 Change-Id: I1491376b01562927e183fd31f4eb83f40d9200be
Diffstat (limited to 'tests')
-rw-r--r--tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt47
1 files changed, 37 insertions, 10 deletions
diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt
index 66c5f46c4..4b4abf360 100644
--- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt
+++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt
@@ -35,6 +35,7 @@ import android.safetycenter.SafetyCenterManager.REFRESH_REASON_PERIODIC
import android.safetycenter.SafetyCenterManager.REFRESH_REASON_RESCAN_BUTTON_CLICK
import android.safetycenter.SafetyCenterManager.REFRESH_REASON_SAFETY_CENTER_ENABLED
import android.safetycenter.SafetySourceData
+import android.util.Log
import com.android.modules.utils.build.SdkLevel
import com.android.safetycenter.testing.Coroutines.TEST_TIMEOUT
import com.android.safetycenter.testing.Coroutines.TIMEOUT_LONG
@@ -167,6 +168,8 @@ object SafetyCenterFlags {
defaultValue = Duration.ofMillis(400),
DurationParser(),
namespace = NAMESPACE_SETTINGS_UI,
+ // This flag is only writeable on BP2A builds built after 3 March 2025
+ writeMustSucceed = false,
)
/**
@@ -344,6 +347,16 @@ object SafetyCenterFlags {
periodicBackgroundRefreshIntervalFlag,
)
+ /** All the Safety Center flags that should be written to during setup and reset. */
+ private val SETUP_FLAGS =
+ FLAGS.filter { it.name != isEnabledFlag.name }
+ .filter {
+ // This flag is only writeable on BP2A builds built after 3 March 2025
+ // Don't set it up on versions we know will trigger a write error.
+ it.name != bannerMessagePrefHideResolvedContentTransitionDelayFlag.name ||
+ SdkLevel.isAtLeastB()
+ }
+
/** A property that allows getting and setting the [isEnabledFlag]. */
var isEnabled: Boolean by isEnabledFlag
@@ -458,8 +471,7 @@ object SafetyCenterFlags {
*/
fun setup() {
snapshot = lazySnapshot
- FLAGS.filter { it.name != isEnabledFlag.name }
- .forEach { it.writeToDeviceConfig(it.defaultStringValue) }
+ SETUP_FLAGS.forEach { it.writeToDeviceConfig(it.defaultStringValue) }
}
/**
@@ -473,12 +485,11 @@ object SafetyCenterFlags {
// Write flags one by one instead of using `DeviceConfig#setProperties` as the latter does
// not work when DeviceConfig sync is disabled and does not take uninitialized values into
// account.
- FLAGS.filter { it.name != isEnabledFlag.name }
- .forEach {
- val key = it.name
- val value = snapshot[it.namespace]?.getString(key, /* defaultValue */ null)
- it.writeToDeviceConfig(value)
- }
+ SETUP_FLAGS.forEach {
+ val key = it.name
+ val value = snapshot[it.namespace]?.getString(key, /* defaultValue */ null)
+ it.writeToDeviceConfig(value)
+ }
}
/** Sets the [refreshTimeouts] for all refresh reasons to the given [refreshTimeout]. */
@@ -566,6 +577,7 @@ object SafetyCenterFlags {
val defaultValue: T,
private val parser: Parser<T>,
val namespace: String = NAMESPACE_PRIVACY,
+ val writeMustSucceed: Boolean = true,
) {
val defaultStringValue = parser.toString(defaultValue)
@@ -584,9 +596,24 @@ object SafetyCenterFlags {
fun writeToDeviceConfig(stringValue: String?) {
callWithShellPermissionIdentity(WRITE_DEVICE_CONFIG, WRITE_ALLOWLISTED_DEVICE_CONFIG) {
val valueWasSet =
- DeviceConfig.setProperty(namespace, name, stringValue, /* makeDefault */ false)
- require(valueWasSet) { "Could not set $name to: $stringValue" }
+ try {
+ DeviceConfig.setProperty(
+ namespace,
+ name,
+ stringValue,
+ /* makeDefault */ false,
+ )
+ } catch (e: Exception) {
+ Log.w(TAG, "Error while setting $name to: $stringValue", e)
+ false
+ }
+
+ if (writeMustSucceed) {
+ require(valueWasSet) { "Could not set $name to: $stringValue" }
+ }
}
}
}
+
+ private const val TAG = "SafetyCenterFlags"
}