diff options
author | 2025-02-27 15:14:49 -0800 | |
---|---|---|
committer | 2025-02-27 15:14:49 -0800 | |
commit | e6e2d30aded6756e3ccf8afdb2487df5cfe033f5 (patch) | |
tree | 925a6577c860d4d7b14a0e6ab56bd70e0710f7cc /tests | |
parent | 2ffea6409fd15aaf82ee74363aa5cc6c704c336e (diff) | |
parent | d5c21e677affbda131b74f5085143f0db4405ddc (diff) |
Merge "Merge 25Q1 (ab/12770256) to aosp-main-future" into aosp-main-future
Diffstat (limited to 'tests')
83 files changed, 3510 insertions, 1305 deletions
diff --git a/tests/apex/Android.bp b/tests/apex/Android.bp index 18f1bea75..9dfbdf589 100644 --- a/tests/apex/Android.bp +++ b/tests/apex/Android.bp @@ -31,6 +31,8 @@ android_test { "androidx.test.rules", "androidx.test.ext.junit", "androidx.test.ext.truth", + "com.android.permission.flags-aconfig-java", + "flag-junit", "mockito-target-extended-minus-junit4", ], jni_libs: [ diff --git a/tests/apex/java/com/android/role/persistence/RolesPersistenceTest.kt b/tests/apex/java/com/android/role/persistence/RolesPersistenceTest.kt index 6500b3926..e9c93a33a 100644 --- a/tests/apex/java/com/android/role/persistence/RolesPersistenceTest.kt +++ b/tests/apex/java/com/android/role/persistence/RolesPersistenceTest.kt @@ -20,12 +20,18 @@ import android.content.ApexEnvironment import android.content.Context import android.os.Process import android.os.UserHandle +import android.platform.test.annotations.RequiresFlagsDisabled +import android.platform.test.annotations.RequiresFlagsEnabled +import android.platform.test.flag.junit.DeviceFlagsValueProvider import androidx.test.platform.app.InstrumentationRegistry import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession +import com.android.permission.flags.Flags import com.google.common.truth.Truth.assertThat import java.io.File import org.junit.After +import org.junit.Assume.assumeFalse import org.junit.Before +import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized @@ -49,11 +55,22 @@ class RolesPersistenceTest { private val persistence = RolesPersistenceImpl {} private val defaultRoles = mapOf(ROLE_NAME to setOf(HOLDER_1, HOLDER_2)) + private val activeUserIds = mapOf(ROLE_NAME to USER_ID) private val stateVersionUndefined = RolesState(VERSION_UNDEFINED, PACKAGE_HASH, defaultRoles) private val stateVersionFallbackMigrated = RolesState(VERSION_FALLBACK_MIGRATED, PACKAGE_HASH, defaultRoles, setOf(ROLE_NAME)) + private val stateVersionActiveUserIds = + RolesState( + VERSION_ACTIVE_USER_IDS, + PACKAGE_HASH, + defaultRoles, + setOf(ROLE_NAME), + activeUserIds, + ) private val user = Process.myUserHandle() + @get:Rule val flagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + @Before fun setUp() { createMockDataDirectory() @@ -84,16 +101,41 @@ class RolesPersistenceTest { mockitoSession.finishMocking() } + @RequiresFlagsDisabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) @Test fun testWriteRead() { + assumeFalse(stateVersion == StateVersion.VERSION_ACTIVE_USER_IDS) persistence.writeForUser(state, user) val persistedState = persistence.readForUser(user) assertThat(persistedState).isEqualTo(state) } + @RequiresFlagsEnabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @Test + fun testWriteRead_supportsActiveUser() { + persistence.writeForUser(state, user) + val persistedState = persistence.readForUser(user) + + assertThat(persistedState).isEqualTo(state) + } + + @RequiresFlagsDisabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) @Test fun testWriteCorruptReadFromReserveCopy() { + assumeFalse(stateVersion == StateVersion.VERSION_ACTIVE_USER_IDS) + persistence.writeForUser(state, user) + // Corrupt the primary file. + RolesPersistenceImpl.getFile(user) + .writeText("<roles version=\"-1\"><role name=\"com.foo.bar\"><holder") + val persistedState = persistence.readForUser(user) + + assertThat(persistedState).isEqualTo(state) + } + + @RequiresFlagsEnabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @Test + fun testWriteCorruptReadFromReserveCopy_supportsActiveUser() { persistence.writeForUser(state, user) // Corrupt the primary file. RolesPersistenceImpl.getFile(user) @@ -116,11 +158,13 @@ class RolesPersistenceTest { when (stateVersion) { StateVersion.VERSION_UNDEFINED -> stateVersionUndefined StateVersion.VERSION_FALLBACK_MIGRATED -> stateVersionFallbackMigrated + StateVersion.VERSION_ACTIVE_USER_IDS -> stateVersionActiveUserIds } enum class StateVersion { VERSION_UNDEFINED, - VERSION_FALLBACK_MIGRATED + VERSION_FALLBACK_MIGRATED, + VERSION_ACTIVE_USER_IDS, } companion object { @@ -130,10 +174,12 @@ class RolesPersistenceTest { private const val VERSION_UNDEFINED = -1 private const val VERSION_FALLBACK_MIGRATED = 1 + private const val VERSION_ACTIVE_USER_IDS = 2 private const val APEX_MODULE_NAME = "com.android.permission" private const val PACKAGE_HASH = "packagesHash" private const val ROLE_NAME = "roleName" private const val HOLDER_1 = "holder1" private const val HOLDER_2 = "holder2" + private const val USER_ID = 10 } } diff --git a/tests/cts/permission/src/android/permission/cts/BackgroundPermissionsTest.java b/tests/cts/permission/src/android/permission/cts/BackgroundPermissionsTest.java index f3f47631c..f4bed4ada 100644 --- a/tests/cts/permission/src/android/permission/cts/BackgroundPermissionsTest.java +++ b/tests/cts/permission/src/android/permission/cts/BackgroundPermissionsTest.java @@ -24,6 +24,7 @@ import static android.app.AppOpsManager.MODE_FOREGROUND; import static android.app.AppOpsManager.MODE_IGNORED; import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS; import static android.content.pm.PermissionInfo.PROTECTION_INTERNAL; +import static android.health.connect.HealthPermissions.HEALTH_PERMISSION_GROUP; import static android.permission.cts.PermissionUtils.getAppOp; import static android.permission.cts.PermissionUtils.grantPermission; import static android.permission.cts.PermissionUtils.install; @@ -31,6 +32,7 @@ import static android.permission.cts.PermissionUtils.uninstallApp; import static com.android.compatibility.common.util.SystemUtil.eventually; +import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertNotEquals; @@ -43,14 +45,21 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PermissionInfo; +import android.os.Build; +import android.permission.flags.Flags; import android.platform.test.annotations.AppModeFull; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.util.ArrayMap; import android.util.Log; +import androidx.test.filters.SdkSuppress; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; import org.junit.After; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -72,6 +81,9 @@ public class BackgroundPermissionsTest { private static final UiAutomation sUiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation(); + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + @After public void uninstallTestApp() { uninstallApp(APP_PKG); @@ -79,9 +91,24 @@ public class BackgroundPermissionsTest { @Test @AppModeFull(reason = "Instant apps cannot read properties of other packages") - public void verifybackgroundPermissionsProperties() throws Exception { + public void verifyBackgroundPropertiesForPlatformPermissions() throws Exception { + verifyBackgroundPermissionsProperties("android"); + } + + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @RequiresFlagsEnabled({Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED}) + @Test + @AppModeFull(reason = "Instant apps cannot read properties of other packages") + public void verifyBackgroundPropertiesForHealthPermissions() throws Exception { + String healthPackageName = sContext.getPackageManager().getPermissionGroupInfo( + HEALTH_PERMISSION_GROUP, /* flags= */ 0).packageName; + verifyBackgroundPermissionsProperties(healthPackageName); + } + + private void verifyBackgroundPermissionsProperties(String packageName) + throws Exception { PackageInfo pkg = sContext.getPackageManager().getPackageInfo( - "android", PackageManager.GET_PERMISSIONS); + packageName, PackageManager.GET_PERMISSIONS); ArrayMap<String, String> potentialBackgroundPermissionsToGroup = new ArrayMap<>(); int numPermissions = pkg.permissions.length; @@ -97,11 +124,13 @@ public class BackgroundPermissionsTest { } } + int backgroundPermissionCount = 0; for (int i = 0; i < numPermissions; i++) { PermissionInfo permission = pkg.permissions[i]; String backgroundPermissionName = permission.backgroundPermission; if (backgroundPermissionName != null) { + backgroundPermissionCount += 1; Log.i(LOG_TAG, permission.name + "->" + backgroundPermissionName); // foreground permissions must be dangerous @@ -115,6 +144,8 @@ public class BackgroundPermissionsTest { .containsKey(backgroundPermissionName)); } } + // Tested packages must have at least one permission linked with a background permission. + assertThat(backgroundPermissionCount).isGreaterThan(0); } /** diff --git a/tests/cts/permission/src/android/permission/cts/NoWifiStatePermissionTest.java b/tests/cts/permission/src/android/permission/cts/NoWifiStatePermissionTest.java index a0637827c..9fff22747 100644 --- a/tests/cts/permission/src/android/permission/cts/NoWifiStatePermissionTest.java +++ b/tests/cts/permission/src/android/permission/cts/NoWifiStatePermissionTest.java @@ -30,9 +30,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; -import com.android.compatibility.common.util.UserHelper; - -import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -217,11 +214,6 @@ public class NoWifiStatePermissionTest { */ @Test(expected = SecurityException.class) public void testSetWifiEnabled() { - // Skip the test for passenger on Multi-user-multi-display devices for Automotive - UserHelper userHelper = new UserHelper(sContext); - Assume.assumeFalse( - "Skipped for visible background User as wifi is disabled for visible background " - + "user.", userHelper.isVisibleBackgroundUser()); mWifiManager.setWifiEnabled(true); } } diff --git a/tests/cts/permission/src/android/permission/cts/OneTimePermissionTest.java b/tests/cts/permission/src/android/permission/cts/OneTimePermissionTest.java index 2692c6e7c..291633aab 100644 --- a/tests/cts/permission/src/android/permission/cts/OneTimePermissionTest.java +++ b/tests/cts/permission/src/android/permission/cts/OneTimePermissionTest.java @@ -290,34 +290,18 @@ public class OneTimePermissionTest { } private void exitApp() { - boolean[] hasExited = {false}; - try { - new Thread(() -> { - while (!hasExited[0]) { - DreamManager mDreamManager = mContext.getSystemService(DreamManager.class); - mUiDevice.pressBack(); - runWithShellPermissionIdentity(() -> { - if (mDreamManager.isDreaming()) { - mDreamManager.stopDream(); - } - }); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } + eventually(() -> { + mUiDevice.pressBack(); + runWithShellPermissionIdentity(() -> { + DreamManager mDreamManager = mContext.getSystemService(DreamManager.class); + if (mDreamManager.isDreaming()) { + mDreamManager.stopDream(); } - }).start(); - eventually(() -> { - runWithShellPermissionIdentity(() -> { - if (mActivityManager.getPackageImportance(APP_PKG_NAME) - <= IMPORTANCE_FOREGROUND) { - throw new AssertionError("Unable to exit application"); - } - }); + Assert.assertFalse("Unable to exit application", + mActivityManager.getPackageImportance(APP_PKG_NAME) + <= IMPORTANCE_FOREGROUND); }); - } finally { - hasExited[0] = true; - } + }); } private void clickOneTimeButton() throws Throwable { diff --git a/tests/cts/permission/src/android/permission/cts/SplitPermissionsSystemTest.java b/tests/cts/permission/src/android/permission/cts/SplitPermissionsSystemTest.java index 776a1065e..f2d59cbe7 100755 --- a/tests/cts/permission/src/android/permission/cts/SplitPermissionsSystemTest.java +++ b/tests/cts/permission/src/android/permission/cts/SplitPermissionsSystemTest.java @@ -45,9 +45,15 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeTrue; import android.content.Context; +import android.health.connect.HealthPermissions; import android.os.Build; import android.permission.PermissionManager; import android.permission.PermissionManager.SplitPermissionInfo; +import android.permission.flags.Flags; +import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SdkSuppress; @@ -56,6 +62,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.compatibility.common.util.ApiLevelUtil; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -71,6 +78,9 @@ public class SplitPermissionsSystemTest { private List<SplitPermissionInfo> mSplitPermissions; + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + @Before public void before() { Context context = InstrumentationRegistry.getContext(); @@ -87,9 +97,14 @@ public class SplitPermissionsSystemTest { for (SplitPermissionInfo split : mSplitPermissions) { String splitPermission = split.getSplitPermission(); - boolean isAndroid = splitPermission.startsWith("android"); - if (!isAndroid) { + // Due to limitation with accessing flag values in tests, BODY_SENSORS relevant splits + // are handled in its dedicated tests. + boolean shouldSkip = + !splitPermission.startsWith("android") + || splitPermission.equals(BODY_SENSORS) + || splitPermission.equals(BODY_SENSORS_BACKGROUND); + if (shouldSkip) { continue; } @@ -149,9 +164,6 @@ public class SplitPermissionsSystemTest { case BLUETOOTH_SCAN: assertSplit(split, Build.VERSION_CODES.S, BLUETOOTH, BLUETOOTH_ADMIN); break; - case BODY_SENSORS: - assertSplit(split, Build.VERSION_CODES.TIRAMISU, BODY_SENSORS_BACKGROUND); - break; case ACCESS_MEDIA_LOCATION: case READ_MEDIA_IMAGES: case READ_MEDIA_VIDEO: @@ -160,7 +172,56 @@ public class SplitPermissionsSystemTest { } } - assertEquals(24, seenSplits.size()); + assertEquals(23, seenSplits.size()); + } + + @RequiresFlagsDisabled({Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED}) + @Test + public void + validateBodySensors_beforeGranularHealthPermissions_isSplitToBodySensorsBackground() { + assumeTrue(ApiLevelUtil.isAtLeast(Build.VERSION_CODES.Q)); + + mSplitPermissions.stream() + .filter(split -> split.getSplitPermission().equals(BODY_SENSORS)) + .findFirst() + .ifPresent( + split -> + assertSplit( + split, + Build.VERSION_CODES.TIRAMISU, + BODY_SENSORS_BACKGROUND)); + } + + @RequiresFlagsEnabled({Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED}) + @Test + public void validateBodySensors_afterGranularHealthPermissions_isSplitToReadHeartRate() { + // TODO: Change this to Baklava when available. + assumeTrue(ApiLevelUtil.isAtLeast(36)); + + SplitPermissionInfo legacyBodySensorPermissionInfo = null; + SplitPermissionInfo readHeartRatePermissionInfo = null; + SplitPermissionInfo bodySensorBackgroundPermissionInfo = null; + for (SplitPermissionInfo split : mSplitPermissions) { + if (split.getSplitPermission().equals(BODY_SENSORS) + && split.getNewPermissions().contains(BODY_SENSORS_BACKGROUND)) { + legacyBodySensorPermissionInfo = split; + } else if (split.getSplitPermission().equals(BODY_SENSORS) + && split.getNewPermissions().contains(HealthPermissions.READ_HEART_RATE)) { + readHeartRatePermissionInfo = split; + } else if (split.getSplitPermission().equals(BODY_SENSORS_BACKGROUND)) { + bodySensorBackgroundPermissionInfo = split; + } + } + // Assert BODY_SENSORS is split to BODY_SENSORS_BACKGROUND and READ_HEART_RATE. + assertSplit( + legacyBodySensorPermissionInfo, + Build.VERSION_CODES.TIRAMISU, + BODY_SENSORS_BACKGROUND); + assertSplit(readHeartRatePermissionInfo, HealthPermissions.READ_HEART_RATE); + // Assert BODY_SENSORS_BACKGROUND is split to READ_HEALTH_DATA_IN_BACKGROUND. + assertSplit( + bodySensorBackgroundPermissionInfo, + HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND); } private void assertSplit(SplitPermissionInfo split, int targetSdk, String... permission) { diff --git a/tests/cts/permissionmultidevice/src/android/permissionmultidevice/cts/DeviceAwarePermissionGrantTest.kt b/tests/cts/permissionmultidevice/src/android/permissionmultidevice/cts/DeviceAwarePermissionGrantTest.kt index f0a0e3fc1..687234582 100644 --- a/tests/cts/permissionmultidevice/src/android/permissionmultidevice/cts/DeviceAwarePermissionGrantTest.kt +++ b/tests/cts/permissionmultidevice/src/android/permissionmultidevice/cts/DeviceAwarePermissionGrantTest.kt @@ -21,6 +21,7 @@ import android.app.Instrumentation import android.companion.virtual.VirtualDeviceManager import android.companion.virtual.VirtualDeviceParams import android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM +import android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAULT import android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_CAMERA import android.content.ComponentName import android.content.Intent @@ -39,7 +40,9 @@ import android.permissionmultidevice.cts.UiAutomatorUtils.click import android.permissionmultidevice.cts.UiAutomatorUtils.findTextForView import android.permissionmultidevice.cts.UiAutomatorUtils.waitFindObject import android.platform.test.annotations.AppModeFull +import android.platform.test.annotations.RequiresFlagsDisabled import android.platform.test.annotations.RequiresFlagsEnabled +import android.provider.Settings import android.view.Display import android.virtualdevice.cts.common.VirtualDeviceRule import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -47,7 +50,6 @@ import androidx.test.filters.SdkSuppress import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.By import com.android.compatibility.common.util.SystemUtil -import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat import java.util.concurrent.CompletableFuture import java.util.concurrent.TimeUnit @@ -146,6 +148,7 @@ class DeviceAwarePermissionGrantTest { Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED, Flags.FLAG_DEVICE_AWARE_PERMISSIONS_ENABLED ) + @RequiresFlagsDisabled(Flags.FLAG_ALLOW_HOST_PERMISSION_DIALOGS_ON_VIRTUAL_DEVICES) @Test fun onRemoteDevice_requestPermissionForHostDevice_shouldShowWarningDialog() { requestPermissionOnDevice(virtualDisplay.display.displayId, DEVICE_ID_DEFAULT) @@ -156,6 +159,32 @@ class DeviceAwarePermissionGrantTest { @RequiresFlagsEnabled( Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED, + Flags.FLAG_DEVICE_AWARE_PERMISSIONS_ENABLED, + Flags.FLAG_ALLOW_HOST_PERMISSION_DIALOGS_ON_VIRTUAL_DEVICES + ) + @Test + fun onRemoteDevice_requestPermissionForHostDevice_shouldGrantPermission() { + // Create a virtual device with default policy, so that camera permission request will + // correspond to default device camera access. + virtualDevice = + virtualDeviceRule.createManagedVirtualDevice( + VirtualDeviceParams.Builder() + .setDevicePolicy(POLICY_TYPE_CAMERA, DEVICE_POLICY_DEFAULT) + .build() + ) + testGrantPermissionForDevice( + virtualDisplay.display.displayId, + virtualDevice.deviceId, + true, + Settings.Global.getString(defaultDeviceContext.contentResolver, + Settings.Global.DEVICE_NAME), + expectPermissionGrantedOnDefaultDevice = true, + expectPermissionGrantedOnRemoteDevice = false + ) + } + + @RequiresFlagsEnabled( + Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED, Flags.FLAG_DEVICE_AWARE_PERMISSIONS_ENABLED ) @Test @@ -199,7 +228,7 @@ class DeviceAwarePermissionGrantTest { TestConstants.PERMISSION_RESULT_KEY_PERMISSIONS ) ) - .isEqualTo(arrayOf(DEVICE_AWARE_PERMISSION)) + .isEqualTo(arrayOf(PERMISSION)) assertThat( grantPermissionResult.getIntArray(TestConstants.PERMISSION_RESULT_KEY_GRANT_RESULTS) ) @@ -237,7 +266,7 @@ class DeviceAwarePermissionGrantTest { private fun assertPermissionMessageContainsDeviceName(displayId: Int, deviceName: String) { waitFindObject(By.displayId(displayId).res(PERMISSION_MESSAGE_ID)) val text = findTextForView(By.displayId(displayId).res(PERMISSION_MESSAGE_ID)) - Truth.assertThat(text).contains(deviceName) + assertThat(text).contains(deviceName) } private fun assertAppHasPermissionForDevice(deviceId: Int, expectPermissionGranted: Boolean) { @@ -245,7 +274,7 @@ class DeviceAwarePermissionGrantTest { defaultDeviceContext .createDeviceContext(deviceId) .packageManager - .checkPermission(DEVICE_AWARE_PERMISSION, APP_PACKAGE_NAME) + .checkPermission(PERMISSION, APP_PACKAGE_NAME) if (expectPermissionGranted) { Assert.assertEquals(PackageManager.PERMISSION_GRANTED, checkPermissionResult) @@ -269,7 +298,7 @@ class DeviceAwarePermissionGrantTest { "com.android.permissioncontroller:id/permission_allow_foreground_only_button" const val DEVICE_ID_DEFAULT = 0 const val PERSISTENT_DEVICE_ID_DEFAULT = VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT - const val DEVICE_AWARE_PERMISSION = Manifest.permission.CAMERA + const val PERMISSION = Manifest.permission.CAMERA const val TIMEOUT = 5000L private const val DISPLAY_HEIGHT = 1920 private const val DISPLAY_WIDTH = 1080 diff --git a/tests/cts/permissionmultiuser/Android.bp b/tests/cts/permissionmultiuser/Android.bp index b86b02205..23aafb7e0 100644 --- a/tests/cts/permissionmultiuser/Android.bp +++ b/tests/cts/permissionmultiuser/Android.bp @@ -33,6 +33,7 @@ android_test { "compatibility-device-util-axt", "ctstestrunner-axt", "Harrier", + "bedstead-multiuser", "modules-utils-build_system", "Nene", ], diff --git a/tests/cts/permissionmultiuser/AndroidTest.xml b/tests/cts/permissionmultiuser/AndroidTest.xml index 10fd4e7a5..f6834036b 100644 --- a/tests/cts/permissionmultiuser/AndroidTest.xml +++ b/tests/cts/permissionmultiuser/AndroidTest.xml @@ -63,8 +63,8 @@ <test class="com.android.tradefed.testtype.AndroidJUnitTest" > <option name="package" value="android.permissionmultiuser.cts" /> - <option name="exclude-annotation" value="com.android.bedstead.harrier.annotations.RequireRunOnWorkProfile" /> - <option name="exclude-annotation" value="com.android.bedstead.harrier.annotations.RequireRunOnSecondaryUser" /> + <option name="exclude-annotation" value="com.android.bedstead.enterprise.annotations.RequireRunOnWorkProfile" /> + <option name="exclude-annotation" value="com.android.bedstead.multiuser.annotations.RequireRunOnSecondaryUser" /> <option name="runtime-hint" value="5m" /> </test> diff --git a/tests/cts/permissionmultiuser/src/android/permissionmultiuser/cts/AppDataSharingUpdatesTest.kt b/tests/cts/permissionmultiuser/src/android/permissionmultiuser/cts/AppDataSharingUpdatesTest.kt index 2169f0f72..f3309bd3c 100644 --- a/tests/cts/permissionmultiuser/src/android/permissionmultiuser/cts/AppDataSharingUpdatesTest.kt +++ b/tests/cts/permissionmultiuser/src/android/permissionmultiuser/cts/AppDataSharingUpdatesTest.kt @@ -50,15 +50,16 @@ import android.support.test.uiautomator.UiObject2 import android.util.Log import androidx.test.filters.SdkSuppress import androidx.test.platform.app.InstrumentationRegistry +import com.android.bedstead.enterprise.annotations.RequireRunOnWorkProfile import com.android.bedstead.harrier.BedsteadJUnit4 import com.android.bedstead.harrier.DeviceState import com.android.bedstead.permissions.annotations.EnsureHasPermission import com.android.bedstead.harrier.annotations.EnsureSecureSettingSet import com.android.bedstead.harrier.annotations.RequireDoesNotHaveFeature import com.android.bedstead.harrier.annotations.RequireNotWatch -import com.android.bedstead.harrier.annotations.RequireRunOnAdditionalUser -import com.android.bedstead.harrier.annotations.RequireRunOnWorkProfile import com.android.bedstead.harrier.annotations.RequireSdkVersion +import com.android.bedstead.multiuser.additionalUser +import com.android.bedstead.multiuser.annotations.RequireRunOnAdditionalUser import com.android.bedstead.permissions.CommonPermissions.INTERACT_ACROSS_USERS import com.android.compatibility.common.util.ApiTest import com.android.compatibility.common.util.DeviceConfigStateChangerRule diff --git a/tests/cts/permissionpolicy/Android.bp b/tests/cts/permissionpolicy/Android.bp index 4249f3c9d..07fde8bff 100644 --- a/tests/cts/permissionpolicy/Android.bp +++ b/tests/cts/permissionpolicy/Android.bp @@ -37,6 +37,7 @@ android_test { "permission-test-util-lib", "androidx.test.rules", "flag-junit", + "android.app.flags-aconfig", "android.permission.flags-aconfig-java-export", ], srcs: [ diff --git a/tests/cts/permissionpolicy/res/raw/android_manifest.xml b/tests/cts/permissionpolicy/res/raw/android_manifest.xml index d820ce10a..bdcb11865 100644 --- a/tests/cts/permissionpolicy/res/raw/android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/android_manifest.xml @@ -898,13 +898,26 @@ android:featureFlag="android.provider.user_keys" /> <!-- Allows an application to set default account for new contacts. - <p> This permission is only granted to system applications fulfilling the Contacts app role. + <p>This permission is only granted to system applications fulfilling the Contacts app role. <p>Protection level: internal|role @SystemApi @hide --> <permission android:name="android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS" - android:protectionLevel="internal|role" /> + android:protectionLevel="internal|role" + android:featureFlag="!android.provider.new_default_account_api_enabled"/> + + <!-- Allows an application to set default account for new contacts. + <p>This permission is only granted to system applications fulfilling the Contacts app role + and the application with known signers. + <p>Protection level: internal|role|knownSigner + @SystemApi + @hide + --> + <permission android:name="android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS" + android:protectionLevel="internal|role|knownSigner" + android:knownCerts="@array/config_setContactsDefaultAccountKnownSigners" + android:featureFlag="android.provider.new_default_account_api_enabled"/> <!-- ====================================================================== --> <!-- Permissions for accessing user's calendar --> @@ -2070,6 +2083,21 @@ <permission android:name="android.permission.CONTROL_AUTOMOTIVE_GNSS" android:protectionLevel="signature|privileged" /> + <!-- @SystemApi @hide Allows an application to bind to a + android.service.PopulationDensityProviderService for the purpose of + querying population density. This prevents arbitrary clients connecting + to the service. The system server checks that the provider's intent + service explicitly sets this permission via the android:permission + attribute of the service. + This is only expected to be possessed by the system server outside of + tests. + @FlaggedApi(android.location.flags.Flags.FLAG_POPULATION_DENSITY_PROVIDER) + <p>Protection level: signature + --> + <permission android:name="android.permission.BIND_POPULATION_DENSITY_PROVIDER_SERVICE" + android:featureFlag="android.location.flags.population_density_provider" + android:protectionLevel="signature" /> + <!-- ======================================= --> <!-- Permissions for accessing networks --> <!-- ======================================= --> @@ -2574,6 +2602,22 @@ android:label="@string/permlab_getAccounts" /> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> + <!-- @SystemApi Allows access to remove an account. + @FlaggedApi("android.app.admin.flags.split_create_managed_profile_enabled") + <p>Not for use by third-party applications. + @hide --> + <permission android:name="android.permission.REMOVE_ACCOUNTS" + android:protectionLevel="signature|role" + android:featureFlag="android.app.admin.flags.split_create_managed_profile_enabled" /> + + <!-- @SystemApi Allows access to copy an account to another user. + @FlaggedApi("android.app.admin.flags.split_create_managed_profile_enabled") + <p>Not for use by third-party applications. + @hide --> + <permission android:name="android.permission.COPY_ACCOUNTS" + android:protectionLevel="signature|role" + android:featureFlag="android.app.admin.flags.split_create_managed_profile_enabled" /> + <!-- Allows applications to call into AccountAuthenticators. <p>Not for use by third-party applications. --> <permission android:name="android.permission.ACCOUNT_MANAGER" @@ -2616,12 +2660,22 @@ <!-- @SystemApi Allows access to perform vendor effects in the vibrator. <p>Protection level: signature + @FlaggedApi("android.os.vibrator.vendor_vibration_effects") @hide --> <permission android:name="android.permission.VIBRATE_VENDOR_EFFECTS" android:protectionLevel="signature|privileged" android:featureFlag="android.os.vibrator.vendor_vibration_effects" /> + <!-- @SystemApi Allows access to start a vendor vibration session. + <p>Protection level: signature + @FlaggedApi("android.os.vibrator.vendor_vibration_effects") + @hide + --> + <permission android:name="android.permission.START_VIBRATION_SESSIONS" + android:protectionLevel="signature|privileged" + android:featureFlag="android.os.vibrator.vendor_vibration_effects" /> + <!-- @SystemApi Allows access to the vibrator state. <p>Protection level: signature @hide @@ -3867,6 +3921,14 @@ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION" android:protectionLevel="internal|role" /> + <!-- Allows an application to manage policy related to executing app functions. + <p>Protection level: internal|role + @FlaggedApi(android.app.appfunctions.flags.Flags.FLAG_ENABLE_APP_FUNCTION_MANAGER) + --> + <permission android:name="android.permission.MANAGE_DEVICE_POLICY_APP_FUNCTIONS" + android:protectionLevel="internal|role" + android:featureFlag="android.app.appfunctions.flags.enable_app_function_manager" /> + <!-- Allows an application to set policy related to subscriptions downloaded by an admin. <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call APIs protected by this permission on users different to the calling user. @@ -3925,6 +3987,51 @@ android:protectionLevel="signature|installer" /> <uses-permission android:name="android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES" /> + <!-- Allows an application to toggle the device's advanced protection mode status. + @FlaggedApi("android.security.aapm_api") + @SystemApi + @hide --> + <permission android:name="android.permission.MANAGE_ADVANCED_PROTECTION_MODE" + android:protectionLevel="signature|privileged" + android:featureFlag="android.security.aapm_api"/> + + <!-- Allows an application to query the device's advanced protection mode status. + @FlaggedApi("android.security.aapm_api") --> + <permission android:name="android.permission.QUERY_ADVANCED_PROTECTION_MODE" + android:protectionLevel="normal" + android:featureFlag="android.security.aapm_api"/> + + <!-- Allows an application to read the state of the IntrusionDetectionService + @FlaggedApi(android.security.Flags.FLAG_AFL_API) + @SystemApi + @hide --> + <permission android:name="android.permission.READ_INTRUSION_DETECTION_STATE" + android:featureFlag="android.security.afl_api" + android:protectionLevel="signature|privileged" /> + <uses-permission android:name="android.permission.READ_INTRUSION_DETECTION_STATE" + android:featureFlag="android.security.afl_api"/> + + <!-- Allows an application to change the state of the IntrusionDetectionService + @FlaggedApi(android.security.Flags.FLAG_AFL_API) + @SystemApi + @hide --> + <permission android:name="android.permission.MANAGE_INTRUSION_DETECTION_STATE" + android:featureFlag="android.security.afl_api" + android:protectionLevel="signature|privileged" /> + <uses-permission android:name="android.permission.MANAGE_INTRUSION_DETECTION_STATE" + android:featureFlag="android.security.afl_api"/> + + <!-- Must be required by any IntrusionDetectionEventTransportService to ensure that + only the system can bind to it. + @FlaggedApi(android.security.Flags.FLAG_AFL_API) + @SystemApi + @hide --> + <permission android:name="android.permission.BIND_INTRUSION_DETECTION_EVENT_TRANSPORT_SERVICE" + android:featureFlag="android.security.afl_api" + android:protectionLevel="signature" /> + <uses-permission android:name="android.permission.BIND_INTRUSION_DETECTION_EVENT_TRANSPORT_SERVICE" + android:featureFlag="android.security.afl_api"/> + <!-- @SystemApi @hide Allows an application to set a device owner on retail demo devices.--> <permission android:name="android.permission.PROVISION_DEMO_DEVICE" android:protectionLevel="signature|setup|knownSigner" @@ -4068,6 +4175,62 @@ android:protectionLevel="signature" /> <!-- ================================== --> + <!-- Permissions associated with picture profiles and processing --> + <!-- ================================== --> + <eat-comment /> + + <!-- @FlaggedApi(android.media.tv.flags.Flags.apply_picture_profiles) + Allows an app to apply a {@link MediaQualityManager.PictureProfile} to a layer via + {@link MediaCodec.PARAMETER_KEY_PICTURE_PROFILE} and, additionally, system apps via + {@link SurfaceControl.Transaction#setPictureProfileHandle}. + --> + <permission android:name="android.permission.APPLY_PICTURE_PROFILE" + android:protectionLevel="normal" + android:featureFlag="android.media.tv.flags.apply_picture_profiles"/> + + <!-- @hide + Allows MediaQualityManager to observe any {@link MediaQualityManager.PictureProfile} + applied to any layer in the system by apps via + {@link MediaCodec.PARAMETER_KEY_PICTURE_PROFILE} and by system apps via + {@link SurfaceControl.Transaction#setPictureProfileHandle}. + --> + <permission android:name="android.permission.OBSERVE_PICTURE_PROFILES" + android:protectionLevel="signature|privileged" + android:featureFlag="android.media.tv.flags.apply_picture_profiles"/> + + <!-- + @SystemApi + @FlaggedApi("android.media.tv.flags.media_quality_fw") + Allows an application to access its picture profile from the media quality database. + <p> Protection level: signature|privileged|vendor privileged + @hide + --> + <permission android:name="android.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE" + android:protectionLevel="signature|privileged|vendorPrivileged" + android:featureFlag="android.media.tv.flags.media_quality_fw"/> + + <!-- + @SystemApi + @FlaggedApi("android.media.tv.flags.media_quality_fw") + Allows an application to access its sound profile from the media quality database. + <p> Protection level: signature|privileged|vendor privileged + @hide + --> + <permission android:name="android.permission.MANAGE_GLOBAL_SOUND_QUALITY_SERVICE" + android:protectionLevel="signature|privileged|vendorPrivileged" + android:featureFlag="android.media.tv.flags.media_quality_fw"/> + + <!-- + @FlaggedApi(android.media.tv.flags.Flags.FLAG_MEDIA_QUALITY_FW) + Allows an application to read the aggregated color zones on the screen for use cases like + TV ambient backlight usages. + <p> Protection level: normal + --> + <permission android:name="android.permission.READ_COLOR_ZONES" + android:protectionLevel="normal" + android:featureFlag="android.media.tv.flags.media_quality_fw"/> + + <!-- ================================== --> <!-- Permissions affecting the display of other applications --> <!-- ================================== --> <eat-comment /> @@ -4244,6 +4407,18 @@ android:description="@string/permdesc_hideOverlayWindows" android:protectionLevel="normal" /> + <!-- Allows an app to enter Picture-in-Picture mode when the user is not explicitly requesting + it. This includes using {@link PictureInPictureParams.Builder#setAutoEnterEnabled} as well + as lifecycle methods such as {@link Activity#onUserLeaveHint} and {@link Activity#onPause} + to enter PiP when the user leaves the app. + This permission should only be used for certain PiP + <a href="{@docRoot}training/tv/get-started/multitasking#usage-types">usage types</a>. + @FlaggedApi("android.app.enable_tv_implicit_enter_pip_restriction") + --> + <permission android:name="android.permission.TV_IMPLICIT_ENTER_PIP" + android:protectionLevel="normal" + android:featureFlag="android.app.enable_tv_implicit_enter_pip_restriction" /> + <!-- ================================== --> <!-- Permissions affecting the system wallpaper --> <!-- ================================== --> @@ -4750,6 +4925,27 @@ <permission android:name="android.permission.PROVIDE_REMOTE_CREDENTIALS" android:protectionLevel="signature|privileged|role" /> + <!-- @FlaggedApi(com.android.settingslib.flags.Flags.FLAG_SETTINGS_CATALYST) + Allows an application to access the Settings Preference services to read settings exposed + by the system Settings app and system apps that contribute settings surfaced by the + Settings app. + <p>This allows the calling application to read settings values through the host + application, agnostic of underlying storage. --> + <permission android:name="android.permission.READ_SYSTEM_PREFERENCES" + android:protectionLevel="signature|privileged|role" + android:featureFlag="com.android.settingslib.flags.settings_catalyst" /> + + <!-- @FlaggedApi(com.android.settingslib.flags.Flags.FLAG_WRITE_SYSTEM_PREFERENCE_PERMISSION_ENABLED) + Allows an application to access the Settings Preference services to write settings + values exposed by the system Settings app and system apps that contribute settings surfaced + in the Settings app. + <p>This allows the calling application to write settings values + through the host application, agnostic of underlying storage. + <p>Protection Level: signature|privileged|appop --> + <permission android:name="android.permission.WRITE_SYSTEM_PREFERENCES" + android:protectionLevel="signature|privileged|appop" + android:featureFlag="com.android.settingslib.flags.write_system_preference_permission_enabled" /> + <!-- ========================================= --> <!-- Permissions for special development tools --> <!-- ========================================= --> @@ -5538,6 +5734,17 @@ <permission android:name="android.permission.LOCK_DEVICE" android:protectionLevel="signature|privileged" /> + <!-- @SystemApi + @FlaggedApi(android.security.Flags.FLAG_SECURE_LOCKDOWN) + Allows an application to lock down the device into an enhanced security state. + <p>Not for use by third-party applications. + <p>Protection level: signature|privileged + @hide + --> + <permission android:name="android.permission.MANAGE_SECURE_LOCK_DEVICE" + android:protectionLevel="signature|privileged" + android:featureFlag="android.security.secure_lockdown" /> + <!-- @SystemApi Allows low-level access to setting the orientation (actually rotation) of the screen. <p>Not for use by third-party applications. @@ -6148,6 +6355,15 @@ <permission android:name="android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT" android:protectionLevel="signature|privileged|role" /> + <!-- @SystemApi Allows an application to bypass concurrency restrictions while + recording audio. For example, apps with this permission can continue to record + while a voice call is active.</p> + @FlaggedApi(android.media.audio.Flags.FLAG_CONCURRENT_AUDIO_RECORD_BYPASS_PERMISSION) + @hide --> + <permission android:name="android.permission.BYPASS_CONCURRENT_RECORD_AUDIO_RESTRICTION" + android:featureFlag="android.media.audio.concurrent_audio_record_bypass_permission" + android:protectionLevel="signature|privileged" /> + <!-- @SystemApi Allows an application to capture audio for hotword detection. <p>Not for use by third-party applications.</p> @hide --> @@ -6450,6 +6666,13 @@ <permission android:name="android.permission.BATTERY_STATS" android:protectionLevel="signature|privileged|development" /> + <!-- @SystemApi @hide Allows an application to collect high-precision PowerMonitor readings + <p>Protection level: signature|privileged|development + @FlaggedApi(android.permission.flags.Flags.FLAG_FINE_POWER_MONITOR_PERMISSION) --> + <permission android:name="android.permission.ACCESS_FINE_POWER_MONITORS" + android:protectionLevel="signature|privileged|development" + android:featureFlag="android.permission.flags.fine_power_monitor_permission" /> + <!--Allows an application to manage statscompanion. <p>Not for use by third-party applications. @hide --> @@ -7598,7 +7821,31 @@ <!-- @SystemApi Allows an application to access shared libraries. @hide --> <permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" - android:protectionLevel="signature|installer" /> + android:protectionLevel="signature|installer" + android:featureFlag="!android.content.pm.sdk_dependency_installer" /> + + <!-- @SystemApi Allows an application to access shared libraries. + @hide --> + <permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" + android:protectionLevel="signature|installer|role" + android:featureFlag="android.content.pm.sdk_dependency_installer" /> + + <!-- @SystemApi Permission held by the system to allow binding to the dependency installer role + holder. + @FlaggedApi(android.content.pm.Flags.FLAG_SDK_DEPENDENCY_INSTALLER) + @hide --> + <permission android:name="android.permission.BIND_DEPENDENCY_INSTALLER" + android:protectionLevel="signature" + android:featureFlag="android.content.pm.sdk_dependency_installer" /> + + <!-- @SystemApi Allows an application to install shared libraries of types + {@link android.content.pm.SharedLibraryInfo#TYPE_STATIC} or + {@link android.content.pm.SharedLibraryInfo#TYPE_SDK_PACKAGE}. + @FlaggedApi(android.content.pm.Flags.FLAG_SDK_DEPENDENCY_INSTALLER) + @hide --> + <permission android:name="android.permission.INSTALL_DEPENDENCY_SHARED_LIBRARIES" + android:protectionLevel="signature|role" + android:featureFlag="android.content.pm.sdk_dependency_installer" /> <!-- Allows an app to log compat change usage. @hide <p>Not for use by third-party applications.</p> --> @@ -7673,6 +7920,15 @@ <permission android:name="android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY" android:protectionLevel="signature|role"/> + <!-- Allows an application to create displays that mirror other displays' content. + <p>Not for use by third-party applications. + <p>Protection level: internal|role + @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_ENABLE_LIMITED_VDM_ROLE) + @hide @SystemApi --> + <permission android:name="android.permission.ADD_MIRROR_DISPLAY" + android:protectionLevel="internal|role" + android:featureFlag="android.companion.virtualdevice.flags.enable_limited_vdm_role" /> + <!-- @hide @SystemApi Allows an application to access locusId events in the usage stats. --> <permission android:name="android.permission.ACCESS_LOCUS_ID_USAGE_STATS" android:protectionLevel="signature|role" /> @@ -8089,6 +8345,26 @@ android:protectionLevel="signature|knownSigner" android:knownCerts="@array/config_healthConnectMigrationKnownSigners" /> + <!-- @hide @SystemApi Allows permitted apps to back up Health Connect data and settings. + <p>Protection level: signature|knownSigner + @FlaggedApi("android.permission.flags.health_connect_backup_restore_permission_enabled") + --> + <permission + android:name="android.permission.BACKUP_HEALTH_CONNECT_DATA_AND_SETTINGS" + android:protectionLevel="signature|knownSigner" + android:knownCerts="@array/config_backupHealthConnectDataAndSettingsKnownSigners" + android:featureFlag="android.permission.flags.health_connect_backup_restore_permission_enabled" /> + + <!-- @hide @SystemApi Allows permitted apps to restore Health Connect data and settings. + <p>Protection level: signature|knownSigner + @FlaggedApi("android.permission.flags.health_connect_backup_restore_permission_enabled") + --> + <permission + android:name="android.permission.RESTORE_HEALTH_CONNECT_DATA_AND_SETTINGS" + android:protectionLevel="signature|knownSigner" + android:knownCerts="@array/config_restoreHealthConnectDataAndSettingsKnownSigners" + android:featureFlag="android.permission.flags.health_connect_backup_restore_permission_enabled" /> + <!-- @SystemApi Allows an app to query apps in clone profile. The permission is bidirectional in nature, i.e. cloned apps would be able to query apps in root user. The permission is not meant for 3P apps as of now. @@ -8281,6 +8557,63 @@ <permission android:name="android.permission.RESERVED_FOR_TESTING_SIGNATURE" android:protectionLevel="signature"/> + <!-- Allows app to enter trade-in-mode. + <p>Protection level: signature|privileged + @hide + --> + <permission android:name="android.permission.ENTER_TRADE_IN_MODE" + android:protectionLevel="signature|privileged" + android:featureFlag="com.android.tradeinmode.flags.enable_trade_in_mode" /> + + <!-- @SystemApi + @FlaggedApi(com.android.art.flags.Flags.FLAG_EXECUTABLE_METHOD_FILE_OFFSETS) + Ability to read program metadata and attach dynamic instrumentation. + <p>Protection level: signature + @hide + --> + <permission android:name="android.permission.DYNAMIC_INSTRUMENTATION" + android:protectionLevel="signature" + android:featureFlag="com.android.art.flags.executable_method_file_offsets" /> + + <!-- @SystemApi + @FlaggedApi("android.media.tv.flags.kids_mode_tvdb_sharing") + This permission is required when accessing information related to + singleUser-ed TIS session. + <p>This should only be used by OEM. + <p>Protection level: signature|privileged|vendorPrivileged + @hide + --> + <permission android:name="android.permission.SINGLE_USER_TIS_ACCESS" + android:protectionLevel="signature|privileged|vendorPrivileged" + android:featureFlag="android.media.tv.flags.kids_mode_tvdb_sharing"/> + + <!-- @SystemApi + @FlaggedApi("android.permission.flags.text_classifier_choice_api_enabled") + This permission is required to access the specific text classifier you need from the + TextClassificationManager. + <p>Protection level: signature|role + @hide + --> + <permission android:name="android.permission.ACCESS_TEXT_CLASSIFIER_BY_TYPE" + android:protectionLevel="signature|role" + android:featureFlag="android.permission.flags.text_classifier_choice_api_enabled"/> + + <!-- + This permission allows the system to receive PACKAGE_CHANGED broadcasts when the component + state of a non-exported component has been changed. + <p>Not for use by third-party applications. </p> + <p>Protection level: internal + @hide + --> + <permission + android:name="android.permission.INTERNAL_RECEIVE_PACKAGE_CHANGED_BROADCAST_ON_COMPONENT_STATE_CHANGED" + android:protectionLevel="internal" + android:featureFlag="android.content.pm.reduce_broadcasts_for_component_state_changes"/> + + <uses-permission + android:name="android.permission.INTERNAL_RECEIVE_PACKAGE_CHANGED_BROADCAST_ON_COMPONENT_STATE_CHANGED" + android:featureFlag="android.content.pm.reduce_broadcasts_for_component_state_changes"/> + <!-- Attribution for Geofencing service. --> <attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/> <!-- Attribution for Country Detector. --> @@ -8871,6 +9204,17 @@ android:permission="android.permission.BIND_JOB_SERVICE" > </service> + <service android:name="android.app.ecm.EnhancedConfirmationCallTrackerService" + android:permission="android.permission.BIND_INCALL_SERVICE" + android:featureFlag="android.permission.flags.enhanced_confirmation_in_call_apis_enabled" + android:exported="true"> + <meta-data android:name="android.telecom.INCLUDE_SELF_MANAGED_CALLS" + android:value="true" /> + <intent-filter> + <action android:name="android.telecom.InCallService"/> + </intent-filter> + </service> + <service android:name="com.android.server.companion.datatransfer.contextsync.CallMetadataSyncInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="true"> diff --git a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml index 783cd7f6b..9114a1ecd 100644 --- a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml @@ -88,6 +88,35 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_mileage" android:description="@string/car_permission_desc_mileage"/> + <permission android:name="android.car.permission.CAR_MILEAGE_3P" + android:permissionGroup="android.permission-group.LOCATION" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_mileage_3p" + android:description="@string/car_permission_desc_mileage_3p" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> + <permission android:name="android.car.permission.READ_CAR_HORN" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_horn" + android:description="@string/car_permission_desc_read_car_horn" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> + <permission android:name="android.car.permission.CONTROL_CAR_HORN" + android:protectionLevel="signature|privileged" + android:label="@string/car_permission_label_control_car_horn" + android:description="@string/car_permission_desc_control_car_horn" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> + <permission android:name="android.car.permission.READ_CAR_PEDALS" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_pedals" + android:description="@string/car_permission_desc_read_car_pedals" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> + <permission android:name="android.car.permission.READ_BRAKE_INFO" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_brake_info" + android:description="@string/car_permission_desc_read_brake_info" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> <permission android:name="android.car.permission.CAR_TIRES" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_tires" @@ -186,6 +215,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_car_exterior_lights" android:description="@string/car_permission_desc_control_car_exterior_lights"/> + <permission android:name="android.car.permission.READ_CAR_EXTERIOR_LIGHTS" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_exterior_lights" + android:description="@string/car_permission_desc_car_read_exterior_lights" + android:featureFlag="android.car.feature.android_b_vehicle_properties" /> <permission android:name="android.car.permission.READ_CAR_INTERIOR_LIGHTS" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_interior_lights" @@ -620,4 +655,16 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_bind_app_card_provider" android:description="@string/car_permission_desc_bind_app_card_provider" /> + <permission + android:name="android.car.permission.RECORD_VEHICLE_PROPERTIES" + android:protectionLevel="signature" + android:label="@string/car_permission_label_record_vehicle_properties" + android:description="@string/car_permission_desc_record_vehicle_properties" + android:featureFlag="android.car.feature.car_property_simulation" /> + <permission + android:name="android.car.permission.INJECT_VEHICLE_PROPERTIES" + android:protectionLevel="signature" + android:label="@string/car_permission_label_inject_vehicle_properties" + android:description="@string/car_permission_desc_inject_vehicle_properties" + android:featureFlag="android.car.feature.car_property_simulation" /> </manifest> diff --git a/tests/cts/permissionpolicy/src/android/permissionpolicy/cts/RuntimePermissionProperties.kt b/tests/cts/permissionpolicy/src/android/permissionpolicy/cts/RuntimePermissionProperties.kt index 70832b6ba..2ce48af44 100644 --- a/tests/cts/permissionpolicy/src/android/permissionpolicy/cts/RuntimePermissionProperties.kt +++ b/tests/cts/permissionpolicy/src/android/permissionpolicy/cts/RuntimePermissionProperties.kt @@ -59,6 +59,7 @@ import android.app.AppOpsManager.permissionToOp import android.content.pm.PackageManager.GET_PERMISSIONS import android.content.pm.PermissionInfo.PROTECTION_DANGEROUS import android.content.pm.PermissionInfo.PROTECTION_FLAG_APPOP +import android.health.connect.HealthPermissions import android.os.Build import android.permission.flags.Flags import android.permission.PermissionManager @@ -195,6 +196,18 @@ class RuntimePermissionProperties { expectedPerms.add(RANGING) } - assertThat(expectedPerms).containsExactlyElementsIn(platformRuntimePerms.map { it.name }) + // Separately check health permissions. + if (Flags.replaceBodySensorPermissionEnabled()) { + assertThat(expectedPerms).contains(HealthPermissions.READ_HEART_RATE); + assertThat(expectedPerms).contains(HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND); + + // Remove these from the expected list once we've confirmed their + // present. These are not permissions owned by "android" so won't be + // in the list of platform runtime permissions. + expectedPerms.remove(HealthPermissions.READ_HEART_RATE); + expectedPerms.remove(HealthPermissions.READ_HEALTH_DATA_IN_BACKGROUND); + } + + assertThat(platformRuntimePerms.map { it.name }).containsExactlyElementsIn(expectedPerms) } } diff --git a/tests/cts/permissionui/AndroidManifest.xml b/tests/cts/permissionui/AndroidManifest.xml index 3b80b8d8b..b5c9e2ad0 100644 --- a/tests/cts/permissionui/AndroidManifest.xml +++ b/tests/cts/permissionui/AndroidManifest.xml @@ -25,6 +25,7 @@ <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> + <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" /> <application> @@ -78,6 +79,23 @@ <meta-data android:name="android.accessibilityservice" android:resource="@xml/test_accessibilityservice"/> </service> + <service android:name=".VoipHelperTestConnectionService" + android:exported="true" + android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"> + <intent-filter> + <action android:name="android.telecom.ConnectionService" /> + </intent-filter> + </service> + + <service android:name=".EcmInCallTestInCallService" + android:permission="android.permission.BIND_INCALL_SERVICE" + android:exported="true"> + <meta-data android:name="android.telecom.INCLUDE_SELF_MANAGED_CALLS" + android:value="true" /> + <intent-filter> + <action android:name="android.telecom.InCallService"/> + </intent-filter> + </service> </application> diff --git a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt index 68bd91546..92599b617 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt @@ -1011,7 +1011,8 @@ abstract class BaseUsePermissionTest : BasePermissionTest() { protected fun clickPermissionRationaleContentInAppPermission() { clickAndWaitForWindowTransition( By.text(getPermissionControllerString(APP_PERMISSION_RATIONALE_SUBTITLE_TEXT)) - .displayId(displayId)) + .displayId(displayId) + ) } protected fun clickPermissionRationaleViewInGrantDialog() { diff --git a/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt index b9d1cb305..7abea1f23 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt @@ -28,6 +28,7 @@ import android.os.Build import android.os.Process import android.os.SystemClock import android.os.SystemProperties +import android.os.UserManager import android.permission.PermissionManager import android.permission.cts.MtsIgnore import android.platform.test.annotations.AsbSecurityTest @@ -782,4 +783,10 @@ class CameraMicIndicatorsPermissionTest : StsExtraBusinessLogicTestCase { private fun byOneOfText(vararg textValues: String) = By.text(Pattern.compile(textValues.joinToString(separator = "|") { Pattern.quote(it) })) + + fun isAutomotiveWithVisibleBackgroundUser(): Boolean { + val userManager = context.getSystemService(UserManager::class.java) + return packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) && + userManager.isVisibleBackgroundUsersSupported() + } } diff --git a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt new file mode 100644 index 000000000..c410f9c9c --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.app.AppOpsManager +import android.app.Instrumentation +import android.app.ecm.EnhancedConfirmationManager +import android.content.ContentProviderOperation +import android.content.Context +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Build +import android.permission.flags.Flags +import android.platform.test.annotations.AppModeFull +import android.platform.test.annotations.RequiresFlagsEnabled +import android.platform.test.flag.junit.CheckFlagsRule +import android.platform.test.flag.junit.DeviceFlagsValueProvider +import android.provider.ContactsContract +import android.provider.ContactsContract.CommonDataKinds +import android.provider.ContactsContract.Data +import android.provider.ContactsContract.RawContacts +import androidx.test.filters.SdkSuppress +import androidx.test.platform.app.InstrumentationRegistry +import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity +import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity +import org.junit.After +import org.junit.AfterClass +import org.junit.Assert +import org.junit.Assume +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Rule +import org.junit.Test + +/** + * This test verifies the behavior of the Enhanced Confirmation Manager APIs that deal with unknown + * callers + */ +@AppModeFull(reason = "Instant apps cannot install packages") +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") +@RequiresFlagsEnabled(Flags.FLAG_ENHANCED_CONFIRMATION_IN_CALL_APIS_ENABLED) +// @CddTest(requirement = "TBD") +class EnhancedConfirmationInCallTest { + private val ecm = context.getSystemService(EnhancedConfirmationManager::class.java)!! + private val packageManager = context.packageManager + private val addedContacts = mutableMapOf<String, List<Uri>>() + + @JvmField + @Rule + val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + + @Before + fun assumeNotAutoOrTv() { + Assume.assumeFalse(packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)) + Assume.assumeFalse(packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) + } + + companion object { + private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() + private val context: Context = instrumentation.targetContext + private lateinit var voipService: VoipCallHelper + + @JvmStatic + @BeforeClass + fun setupVoipService() { + voipService = VoipCallHelper(context) + voipService.registerPhoneAccount() + } + + @JvmStatic + @AfterClass + fun tearDownVoipService() { + voipService.removePhoneAccount() + } + + const val CONTACT_DISPLAY_NAME = "Alice Bobson" + const val NON_CONTACT_DISPLAY_NAME = "Eve McEve" + const val CONTACT_PHONE_NUMBER = "8888888888" + const val NON_CONTACT_PHONE_NUMBER = "1111111111" + } + + private fun addContact(displayName: String, phoneNumber: String) { + runWithShellPermissionIdentity { + val ops: ArrayList<ContentProviderOperation> = ArrayList() + ops.add( + ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) + .withValue(RawContacts.ACCOUNT_TYPE, "test type") + .withValue(RawContacts.ACCOUNT_NAME, "test account") + .build() + ) + ops.add( + ContentProviderOperation.newInsert(Data.CONTENT_URI) + .withValueBackReference(Data.RAW_CONTACT_ID, 0) + .withValue(Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE) + .withValue(CommonDataKinds.StructuredName.DISPLAY_NAME, displayName) + .build() + ) + ops.add( + ContentProviderOperation.newInsert(Data.CONTENT_URI) + .withValueBackReference(Data.RAW_CONTACT_ID, 0) + .withValue(Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE) + .withValue(CommonDataKinds.Phone.NUMBER, phoneNumber) + .build() + ) + val results = context.contentResolver.applyBatch(ContactsContract.AUTHORITY, ops) + val resultsForDisplayName = mutableListOf<Uri>() + results.forEach { resultsForDisplayName.add(it.uri!!) } + addedContacts[displayName] = resultsForDisplayName + } + } + + private fun removeContact(displayName: String) { + runWithShellPermissionIdentity { + var totalRowsRemoved = 0 + for (data in addedContacts[displayName] ?: emptyList()) { + totalRowsRemoved += context.contentResolver.delete(data, null) + } + // There are multiple contacts tables, and removing from the raw_contacts table + // can cause row removals from the data table, so we may get some uris that don't + // report a delete, but we should get at least one, and not more than the number of uris + Assert.assertNotEquals( + "Expected at least one contact row to be removed", + 0, + totalRowsRemoved, + ) + Assert.assertTrue( + "Unexpectedly large number of contact rows removed", + totalRowsRemoved <= (addedContacts[displayName]?.size ?: 0), + ) + addedContacts.remove(displayName) + } + } + + @After + fun tearDown() { + voipService.endCallAndWaitForInactive() + addedContacts.keys.forEach { removeContact(it) } + } + + private fun isSettingRestricted(): Boolean { + return callWithShellPermissionIdentity { + ecm.isRestricted(context.packageName, AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES) + } + } + + @Test + fun testIncomingCall_NonContact() { + voipService.createCallAndWaitForActive(NON_CONTACT_DISPLAY_NAME, NON_CONTACT_PHONE_NUMBER) + Assert.assertTrue(isSettingRestricted()) + voipService.endCallAndWaitForInactive() + Assert.assertFalse(isSettingRestricted()) + } + + @Test + fun testIncomingCall_Contact_DisplayNameMatches_PhoneNotGiven() { + addContact(CONTACT_DISPLAY_NAME, CONTACT_PHONE_NUMBER) + // If no phone number is given, the display name will be checked + voipService.createCallAndWaitForActive(CONTACT_DISPLAY_NAME, CONTACT_PHONE_NUMBER) + Assert.assertFalse(isSettingRestricted()) + voipService.endCallAndWaitForInactive() + Assert.assertFalse(isSettingRestricted()) + } + + @Test + fun testIncomingCall_Contact_PhoneNumberMatches() { + addContact(CONTACT_DISPLAY_NAME, CONTACT_PHONE_NUMBER) + // If the phone number matches, the display name is not checked + voipService.createCallAndWaitForActive(NON_CONTACT_DISPLAY_NAME, CONTACT_PHONE_NUMBER) + Assert.assertFalse(isSettingRestricted()) + voipService.endCallAndWaitForInactive() + Assert.assertFalse(isSettingRestricted()) + } + + @Test + fun testCall_DoesntBecomeTrustedIfCallerAddedDuringCall() { + val tempContactDisplay = "TEMP CONTACT" + val tempContactPhone = "999-999-9999" + voipService.createCallAndWaitForActive(tempContactDisplay, tempContactPhone) + addContact(tempContactDisplay, tempContactPhone) + // State should not be recomputed just because the contact is newly added + Assert.assertTrue(isSettingRestricted()) + voipService.endCallAndWaitForInactive() + voipService.createCallAndWaitForActive(tempContactDisplay, tempContactPhone) + // A new call should recognize our contact, and mark the call as trusted + Assert.assertFalse(isSettingRestricted()) + } +} diff --git a/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt index c8298b19a..75a8914bf 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/NotificationPermissionTest.kt @@ -141,7 +141,7 @@ class NotificationPermissionTest : BaseUsePermissionTest() { launchApp() killTestApp() launchApp() - waitFindObject(By.textContains(ALLOW)) + waitFindObject(By.textContains(ALLOW).displayId(displayId)) clickPermissionRequestAllowButton() } @@ -201,9 +201,10 @@ class NotificationPermissionTest : BaseUsePermissionTest() { installPackage(APP_APK_PATH_CREATE_NOTIFICATION_CHANNELS_31, expectSuccess = true) launchApp(startSecondActivity = true) if (isAutomotive || isWatch) { - waitFindObject(By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT))) + waitFindObject( + By.text(getPermissionControllerString(ALLOW_BUTTON_TEXT)).displayId(displayId)) } else { - waitFindObject(By.res(ALLOW_BUTTON)) + waitFindObject(By.res(ALLOW_BUTTON).displayId(displayId)) } pressBack() clickPermissionRequestAllowButton() @@ -239,7 +240,7 @@ class NotificationPermissionTest : BaseUsePermissionTest() { try { // Watch does not have app bar if (!isWatch) { - waitFindObject(By.textContains(SECOND_ACTIVITY_LABEL)) + waitFindObject(By.textContains(SECOND_ACTIVITY_LABEL).displayId(displayId)) } assertDialogNotShowing() } finally { @@ -400,7 +401,7 @@ class NotificationPermissionTest : BaseUsePermissionTest() { // Watch does not have app bar if (!isWatch) { - waitFindObject(By.textContains(ACTIVITY_LABEL)) + waitFindObject(By.textContains(ACTIVITY_LABEL).displayId(displayId)) } } diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt index d509add3a..da70fc186 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionSplitTest.kt @@ -17,15 +17,22 @@ package android.permissionui.cts import android.os.Build +import android.permission.flags.Flags +import android.platform.test.annotations.RequiresFlagsDisabled +import android.platform.test.flag.junit.DeviceFlagsValueProvider import androidx.test.filters.FlakyTest import androidx.test.filters.SdkSuppress import org.junit.Assume.assumeFalse import org.junit.Before +import org.junit.Rule import org.junit.Test /** Runtime permission behavior tests for permission splits. */ @FlakyTest class PermissionSplitTest : BaseUsePermissionTest() { + + @Rule @JvmField val mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + @Before fun assumeNotTv() { assumeFalse(isTv) @@ -56,6 +63,7 @@ class PermissionSplitTest : BaseUsePermissionTest() { } @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) @Test fun testBodySensorSplit() { installPackage(APP_APK_PATH_31) @@ -63,6 +71,7 @@ class PermissionSplitTest : BaseUsePermissionTest() { } @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) @Test fun testBodySensorSplit32() { installPackage(APP_APK_PATH_32) @@ -70,6 +79,7 @@ class PermissionSplitTest : BaseUsePermissionTest() { } @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU, codeName = "Tiramisu") + @RequiresFlagsDisabled(Flags.FLAG_REPLACE_BODY_SENSOR_PERMISSION_ENABLED) @Test fun testBodySensorNonSplit() { installPackage(APP_APK_PATH_LATEST) diff --git a/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt index e434e9c70..55f028e17 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/ReviewAccessibilityServicesTest.kt @@ -190,7 +190,7 @@ class ReviewAccessibilityServicesTest { !uiDevice.performActionAndWait( { block() }, Until.newWindow(), - NEW_WINDOW_TIMEOUT_MILLIS + NEW_WINDOW_TIMEOUT_MILLIS, ) if (timeoutOccurred) { @@ -212,17 +212,11 @@ class ReviewAccessibilityServicesTest { private fun waitForSettingsButtonToDisappear() { SystemUtil.eventually { - findPCObjectByClassAndText(false, - "android.widget.Button", - "Settings" - ) + findPCObjectByClassAndText(false, "android.widget.Button", "Settings") } } - private fun findObjectByTextWithoutRetry( - shouldBePresent: Boolean, - text: String, - ): UiObject2? { + private fun findObjectByTextWithoutRetry(shouldBePresent: Boolean, text: String): UiObject2? { val containsWithoutCaseSelector = By.text(Pattern.compile(".*$text.*", Pattern.CASE_INSENSITIVE)) val view = @@ -235,7 +229,7 @@ class ReviewAccessibilityServicesTest { assertEquals( "Expected to find view with text $text: $shouldBePresent", shouldBePresent, - view != null + view != null, ) return view } @@ -251,15 +245,16 @@ class ReviewAccessibilityServicesTest { private fun findPCObjectByClassAndText( shouldBePresent: Boolean, className: String, - text: String + text: String, ): UiObject2? { - val selector = By.pkg(packageName) - .clazz(className) - .text(text) + val selector = By.pkg(packageName).clazz(className).text(text) val view = waitFindObjectOrNull(selector) assertEquals( "Expected to find view with packageName '$packageName' className '$className' " + - "text '$text' : $shouldBePresent", shouldBePresent, view != null) + "text '$text' : $shouldBePresent", + shouldBePresent, + view != null, + ) return view } } diff --git a/tests/cts/permissionui/src/android/permissionui/cts/VoipCallHelper.kt b/tests/cts/permissionui/src/android/permissionui/cts/VoipCallHelper.kt new file mode 100644 index 000000000..480d7bff3 --- /dev/null +++ b/tests/cts/permissionui/src/android/permissionui/cts/VoipCallHelper.kt @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.permissionui.cts + +import android.content.ComponentName +import android.content.Context +import android.net.Uri +import android.os.Bundle +import android.os.Process +import android.permissionui.cts.VoipCallHelper.Companion.EXTRA_DISPLAY_NAME +import android.permissionui.cts.VoipCallHelper.Companion.awaitingCallStateLatch +import android.permissionui.cts.VoipCallHelper.Companion.currentActiveConnection +import android.telecom.Connection +import android.telecom.ConnectionRequest +import android.telecom.ConnectionService +import android.telecom.DisconnectCause +import android.telecom.PhoneAccount +import android.telecom.PhoneAccountHandle +import android.telecom.TelecomManager +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import org.junit.Assert + +/** A helper class which can register a phone account, and make/end VOIP phone calls */ +class VoipCallHelper(val context: Context) { + private val telecomManager by lazy { context.getSystemService(TelecomManager::class.java) } + private lateinit var phoneAccount: PhoneAccount + private val accountHandle = + PhoneAccountHandle( + ComponentName(context, VoipHelperTestConnectionService::class.java), + "cts-voip-helper-test", + Process.myUserHandle(), + ) + + init { + registerPhoneAccount() + } + + companion object { + var currentActiveConnection: VoIPConnection? = null + var awaitingCallStateLatch: CallPlacedLatch? = null + + const val EXTRA_DISPLAY_NAME = "display_name" + const val CUSTOM_ADDRESS_SCHEMA = "custom_schema" + const val CALL_STATE_WAIT_MS = 1000L + const val CALL_TIMEOUT_MS = 10000L + } + + fun registerPhoneAccount() { + val phoneAccountBuilder = PhoneAccount.builder(accountHandle, "CTS VOIP HELPER") + phoneAccountBuilder.setCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED) + // see b/343674176. Some OEMs expect the PhoneAccount.getExtras() to be non-null + val defaultBundle = Bundle() + phoneAccountBuilder.setExtras(defaultBundle) + + // build and register the PhoneAccount via the Platform API + phoneAccount = phoneAccountBuilder.build() + telecomManager.registerPhoneAccount(phoneAccount) + } + + fun removePhoneAccount() { + telecomManager.unregisterPhoneAccount(phoneAccount.accountHandle) + } + + fun createCallAndWaitForActive(displayName: String?, phoneNumber: String?) { + val extras = Bundle() + + val phoneUri = + if (phoneNumber != null) { + Uri.fromParts(PhoneAccount.SCHEME_TEL, phoneNumber, null) + } else { + // If we don't have a phone number, provide a custom address URI, like many VOIP + // apps that aren't tied to a phone number do + Uri.fromParts(CUSTOM_ADDRESS_SCHEMA, "custom_address", null) + } + if (displayName != null) { + extras.putString(EXTRA_DISPLAY_NAME, displayName) + } + extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, phoneUri) + awaitingCallStateLatch = CallPlacedLatch(phoneUri, displayName) + telecomManager.addNewIncomingCall(phoneAccount.accountHandle, extras) + Assert.assertTrue( + "Timed out waiting for call to start", + awaitingCallStateLatch!!.await(CALL_TIMEOUT_MS, TimeUnit.MILLISECONDS), + ) + // TODO b/379941144: Replace wait with waiting until a test InCallService gets a callback + Thread.sleep(CALL_STATE_WAIT_MS) + } + + fun endCallAndWaitForInactive() { + currentActiveConnection?.let { connection -> + connection.setDisconnected(DisconnectCause(DisconnectCause.LOCAL)) + connection.destroy() + // TODO b/379941144: Replace wait with waiting until a test InCallService gets a + // callback + Thread.sleep(CALL_STATE_WAIT_MS) + } + currentActiveConnection = null + } +} + +class CallPlacedLatch(val address: Uri?, val displayName: String?) : CountDownLatch(1) { + fun nameAndNumberMatch(connection: Connection): Boolean { + return connection.address == address && connection.callerDisplayName == displayName + } +} + +class VoIPConnection : Connection() { + init { + setConnectionProperties(PROPERTY_SELF_MANAGED) + setAudioModeIsVoip(true) + setActive() + } + + override fun onShowIncomingCallUi() { + super.onShowIncomingCallUi() + setActive() + currentActiveConnection = this + if (awaitingCallStateLatch?.nameAndNumberMatch(this) == true) { + awaitingCallStateLatch?.countDown() + } + } +} + +class VoipHelperTestConnectionService : ConnectionService() { + override fun onCreateOutgoingConnection( + connectionManagerPhoneAccount: PhoneAccountHandle, + request: ConnectionRequest, + ): Connection { + return createConnection(request) + } + + override fun onCreateIncomingConnection( + connectionManagerPhoneAccount: PhoneAccountHandle?, + request: ConnectionRequest?, + ): Connection { + return createConnection(request) + } + + private fun createConnection(request: ConnectionRequest?): Connection { + val connection = VoIPConnection() + if (request?.extras?.containsKey(EXTRA_DISPLAY_NAME) == true) { + connection.setCallerDisplayName( + request.extras.getString(EXTRA_DISPLAY_NAME), + TelecomManager.PRESENTATION_ALLOWED, + ) + connection.setAddress( + request.extras.getParcelable( + TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, + Uri::class.java, + ), + TelecomManager.PRESENTATION_ALLOWED, + ) + } + return connection + } +} diff --git a/tests/cts/role/Android.bp b/tests/cts/role/Android.bp index f0095b7dd..9f1e6cff6 100644 --- a/tests/cts/role/Android.bp +++ b/tests/cts/role/Android.bp @@ -30,9 +30,12 @@ android_test { static_libs: [ "android.permission.flags-aconfig-java-export", "androidx.test.rules", + "com.android.permission.flags-aconfig-java-export", "compatibility-device-util-axt", "ctstestrunner-axt", "Harrier", + "bedstead-multiuser", + "flag-junit", "platform-test-annotations", "truth", ], diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java index e31659dbc..00245a086 100644 --- a/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java +++ b/tests/cts/role/src/android/app/role/cts/RoleManagerTest.java @@ -16,6 +16,7 @@ package android.app.role.cts; +import static com.android.bedstead.multiuser.MultiUserDeviceStateExtensionsKt.privateProfile; import static com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity; import static com.android.compatibility.common.util.SystemUtil.runShellCommand; import static com.android.compatibility.common.util.SystemUtil.runShellCommandOrThrow; @@ -44,6 +45,7 @@ import android.os.Build; import android.os.Process; import android.os.UserHandle; import android.permission.flags.Flags; +import android.platform.test.annotations.RequiresFlagsDisabled; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; @@ -66,7 +68,7 @@ import androidx.test.uiautomator.Until; import com.android.bedstead.harrier.BedsteadJUnit4; import com.android.bedstead.harrier.DeviceState; -import com.android.bedstead.harrier.annotations.EnsureHasPrivateProfile; +import com.android.bedstead.multiuser.annotations.EnsureHasPrivateProfile; import com.android.bedstead.nene.types.OptionalBoolean; import com.android.compatibility.common.util.DisableAnimationRule; import com.android.compatibility.common.util.FreezeRotationRule; @@ -103,6 +105,8 @@ public class RoleManagerTest { private static final String ROLE_NAME = RoleManager.ROLE_BROWSER; private static final String ROLE_PHONE_NAME = RoleManager.ROLE_DIALER; private static final String ROLE_SMS_NAME = RoleManager.ROLE_SMS; + private static final String PROFILE_GROUP_EXCLUSIVE_ROLE_NAME = + RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY; private static final String ROLE_SHORT_LABEL = "Browser app"; private static final String APP_APK_PATH = "/data/local/tmp/cts-role/CtsRoleTestApp.apk"; @@ -184,6 +188,7 @@ public class RoleManagerTest { @Before public void setUp() throws Exception { + assumeTrue(RoleManagerUtil.INSTANCE.isCddCompliantScreenSize()); saveRoleHolder(); installApp(); wakeUpScreen(); @@ -864,7 +869,7 @@ public class RoleManagerTest { return; } - UserHandle privateProfile = sDeviceState.privateProfile().userHandle(); + UserHandle privateProfile = privateProfile(sDeviceState).userHandle(); assertThat(privateProfile).isNotNull(); installPackage(APP_APK_PATH, privateProfile); installPackage(APP_CLONE_APK_PATH, privateProfile); @@ -1347,6 +1352,287 @@ public class RoleManagerTest { }); } + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetActiveUserForRoleWithoutPermission() throws Exception { + assertThrows(SecurityException.class, () -> + sRoleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetActiveUserForNonProfileGroupExclusiveRole() throws Exception { + runWithShellPermissionIdentity(() -> + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.getActiveUserForRole( + RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER))); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetActiveUserForRoleWithoutPermission() throws Exception { + assertThrows(SecurityException.class, () -> + sRoleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + Process.myUserHandle(), 0)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetActiveUserForNonProfileGroupExclusiveRole() throws Exception { + runWithShellPermissionIdentity(() -> + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.setActiveUserForRole( + RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER, Process.myUserHandle(), + 0))); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetActiveUserForRole() throws Exception { + runWithShellPermissionIdentity(() -> { + sRoleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + Process.myUserHandle(), 0); + assertThat(sRoleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)) + .isEqualTo(Process.myUserHandle()); + }); + } + + @RequiresFlagsDisabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetDefaultHoldersForTestFlagDisabled() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalStateException.class, () -> + sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetDefaultHoldersForTestNoPermissions() throws Exception { + assertThrows(SecurityException.class, () -> + sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetDefaultHoldersForTestEmptyRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.getDefaultHoldersForTest("")); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetDefaultHoldersForTestNonTestRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.getDefaultHoldersForTest( + RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER)); + }); + } + + @RequiresFlagsDisabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetDefaultHoldersForTestFlagDisabled() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalStateException.class, () -> + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + testRoleHolders)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetDefaultHoldersForTestNoPermissions() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); + assertThrows(SecurityException.class, () -> + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + testRoleHolders)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetDefaultHoldersForTestEmptyRoleName() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.setDefaultHoldersForTest("", testRoleHolders)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetDefaultHoldersForTestNonTestRoleName() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.setDefaultHoldersForTest( + RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER, testRoleHolders)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetDefaultHolders() throws Exception { + List<String> testRoleHolders = List.of("a", "b", "c"); + runWithShellPermissionIdentity(() -> { + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + testRoleHolders); + List<String> roleHolders = + sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); + assertThat(roleHolders).isEqualTo(testRoleHolders); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetDefaultHoldersNoRoleHolders() throws Exception { + List<String> initialRoleHolders = List.of("a", "b", "c"); + List<String> testRoleHolders = Collections.emptyList(); + runWithShellPermissionIdentity(() -> { + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + initialRoleHolders); + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + testRoleHolders); + List<String> roleHolders = + sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); + assertThat(roleHolders).isEqualTo(testRoleHolders); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetDefaultHoldersNullRoleHolders() throws Exception { + List<String> initialRoleHolders = List.of("a", "b", "c"); + runWithShellPermissionIdentity(() -> { + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, + initialRoleHolders); + sRoleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, null); + List<String> roleHolders = + sRoleManager.getDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); + assertThat(roleHolders).isEqualTo(Collections.emptyList()); + }); + } + + @RequiresFlagsDisabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetIsRoleVisibleForTestFlagDisabled() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalStateException.class, () -> + sRoleManager.isRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetIsRoleVisibleForTestNoPermissions() throws Exception { + assertThrows(SecurityException.class, () -> + sRoleManager.isRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetIsRoleVisibleForTestEmptyRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.isRoleVisibleForTest("")); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotGetIsRoleVisibleForTestNonTestRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.isRoleVisibleForTest(RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER)); + }); + } + + @RequiresFlagsDisabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetRoleVisibleForTestFlagDisabled() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalStateException.class, () -> + sRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, false)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetRoleVisibleForTestNoPermissions() throws Exception { + assertThrows(SecurityException.class, () -> + sRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, false)); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetRoleVisibleForTestEmptyRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.setRoleVisibleForTest("", false)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void cannotSetRoleVisibleForTestNonTestRoleName() throws Exception { + runWithShellPermissionIdentity(() -> { + assertThrows(IllegalArgumentException.class, () -> + sRoleManager.setRoleVisibleForTest(RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER, + false)); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetIsRoleVisibleForTestSetTrue() throws Exception { + runWithShellPermissionIdentity(() -> { + sRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, true); + boolean isRoleVisibleForTest = + sRoleManager.isRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); + assertThat(isRoleVisibleForTest).isEqualTo(true); + }); + } + + @RequiresFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + public void setAndGetIsRoleVisibleForTestSetFalse() throws Exception { + runWithShellPermissionIdentity(() -> { + sRoleManager.setRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME, false); + boolean isRoleVisibleForTest = + sRoleManager.isRoleVisibleForTest(PROFILE_GROUP_EXCLUSIVE_ROLE_NAME); + assertThat(isRoleVisibleForTest).isEqualTo(false); + }); + } + @NonNull private List<String> getRoleHolders(@NonNull String roleName) throws Exception { return callWithShellPermissionIdentity(() -> sRoleManager.getRoleHolders(roleName)); diff --git a/tests/cts/role/src/android/app/role/cts/RoleManagerUtil.kt b/tests/cts/role/src/android/app/role/cts/RoleManagerUtil.kt new file mode 100644 index 000000000..10a3834a2 --- /dev/null +++ b/tests/cts/role/src/android/app/role/cts/RoleManagerUtil.kt @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.app.role.cts + +import android.content.res.Configuration +import android.content.res.Resources +import android.util.Log + +object RoleManagerUtil { + private val TAG = RoleManagerUtil::class.java.getSimpleName() + + /** + * This method checks for the minimum screen size described in CDD {@see + * https://source.android.com/docs/compatibility/14/android-14-cdd#7111_screen_size_and_shape} + */ + fun isCddCompliantScreenSize(): Boolean { + if ( + Resources.getSystem().configuration.uiMode and Configuration.UI_MODE_TYPE_MASK == + Configuration.UI_MODE_TYPE_WATCH + ) { + Log.d(TAG, "UI mode is UI_MODE_TYPE_WATCH, skipping the min dp check") + return true + } + + val screenSize = + Resources.getSystem().configuration.screenLayout and + Configuration.SCREENLAYOUT_SIZE_MASK + return when (screenSize) { + Configuration.SCREENLAYOUT_SIZE_SMALL -> hasMinScreenSize(426, 320) + Configuration.SCREENLAYOUT_SIZE_NORMAL -> hasMinScreenSize(480, 320) + Configuration.SCREENLAYOUT_SIZE_LARGE -> hasMinScreenSize(640, 480) + Configuration.SCREENLAYOUT_SIZE_XLARGE -> hasMinScreenSize(960, 720) + else -> { + Log.e(TAG, "Unknown screen size: $screenSize") + true + } + } + } + + private fun hasMinScreenSize(minWidthDp: Int, minHeightDp: Int): Boolean { + val dpi = Resources.getSystem().displayMetrics.densityDpi + val widthDp = (160f / dpi) * Resources.getSystem().displayMetrics.widthPixels + val heightDp = (160f / dpi) * Resources.getSystem().displayMetrics.heightPixels + + // CDD does seem to follow width & height convention correctly, hence checking both ways + return (widthDp >= minWidthDp && heightDp >= minHeightDp) || + (widthDp >= minHeightDp && heightDp >= minWidthDp) + } +} diff --git a/tests/cts/role/src/android/app/role/cts/RoleShellCommandTest.kt b/tests/cts/role/src/android/app/role/cts/RoleShellCommandTest.kt index 83d4f78ad..c9dc97b8f 100644 --- a/tests/cts/role/src/android/app/role/cts/RoleShellCommandTest.kt +++ b/tests/cts/role/src/android/app/role/cts/RoleShellCommandTest.kt @@ -19,15 +19,19 @@ package android.app.role.cts import android.app.role.RoleManager import android.os.Build import android.os.UserHandle +import android.platform.test.annotations.RequiresFlagsEnabled +import android.platform.test.flag.junit.DeviceFlagsValueProvider import androidx.test.InstrumentationRegistry import androidx.test.filters.SdkSuppress import androidx.test.runner.AndroidJUnit4 import com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity import com.android.compatibility.common.util.SystemUtil.runShellCommandOrThrow +import com.android.permission.flags.Flags import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Assert.assertThrows import org.junit.Before +import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @@ -43,6 +47,8 @@ class RoleShellCommandTest { private var roleHolder: String? = null private var wasBypassingRoleQualification: Boolean = false + @get:Rule val flagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + @Before public fun setUp() { saveRoleHolder() @@ -156,6 +162,31 @@ class RoleShellCommandTest { assertThat(isBypassingRoleQualification()).isFalse() } + @RequiresFlagsEnabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + fun setActiveUserForProfileGroupExclusiveRoleAsUser() { + val activeUser = userId + setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, activeUser) + + val currentActiveUserId = getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + assertThat(currentActiveUserId).isEqualTo(activeUser) + } + + @RequiresFlagsEnabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + fun setActiveUserForNonProfileGroupExclusiveRoleThenFails() { + assertThrows(AssertionError::class.java) { setActiveUserForRole(ROLE_NAME, userId) } + } + + @RequiresFlagsEnabled(Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") + @Test + fun getActiveUserForNonProfileGroupExclusiveRoleThenFails() { + assertThrows(AssertionError::class.java) { getActiveUserForRole(ROLE_NAME) } + } + private fun addRoleHolder(packageName: String = APP_PACKAGE_NAME) { runShellCommandOrThrow("cmd role add-role-holder --user $userId $ROLE_NAME $packageName") } @@ -204,8 +235,22 @@ class RoleShellCommandTest { callWithShellPermissionIdentity { roleManager.setBypassingRoleQualification(value) } } + private fun getActiveUserForRole(roleName: String): Int? { + return runShellCommandOrThrow("cmd role get-active-user-for-role --user $userId $roleName") + .trim() + .toIntOrNull() + } + + private fun setActiveUserForRole(roleName: String, activeUserId: Int) { + runShellCommandOrThrow( + "cmd role set-active-user-for-role --user $userId $roleName $activeUserId" + ) + } + companion object { private const val ROLE_NAME = RoleManager.ROLE_BROWSER + private const val PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME = + RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY private const val APP_APK_PATH = "/data/local/tmp/cts-role/CtsRoleTestApp.apk" private const val APP_PACKAGE_NAME = "android.app.role.cts.app" private const val APP_CLONE_APK_PATH = "/data/local/tmp/cts-role/CtsRoleTestAppClone.apk" diff --git a/tests/cts/rolemultiuser/Android.bp b/tests/cts/rolemultiuser/Android.bp new file mode 100644 index 000000000..7de55fc1b --- /dev/null +++ b/tests/cts/rolemultiuser/Android.bp @@ -0,0 +1,50 @@ +// Copyright (C) 2024 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test { + name: "CtsRoleMultiUserTestCases", + defaults: ["mts-target-sdk-version-current"], + sdk_version: "test_current", + min_sdk_version: "30", + + srcs: [ + "src/**/*.kt", + ], + + static_libs: [ + "bedstead-flags", + "bedstead-multiuser", + "com.android.permission.flags-aconfig-java-export", + "ctstestrunner-axt", + "Harrier", + "flag-junit", + "Nene", + "truth", + ], + + test_suites: [ + "cts", + "general-tests", + "mts-permission", + "mcts-permission", + ], + + data: [ + ":CtsRoleMultiUserTestApp", + ], +} diff --git a/tests/cts/rolemultiuser/AndroidManifest.xml b/tests/cts/rolemultiuser/AndroidManifest.xml new file mode 100644 index 000000000..1524c5703 --- /dev/null +++ b/tests/cts/rolemultiuser/AndroidManifest.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + --> + +<manifest + xmlns:android="http://schemas.android.com/apk/res/android" + package="android.app.rolemultiuser.cts"> + + <application> + <uses-library android:name="android.test.runner" /> + </application> + + <instrumentation + android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="android.app.rolemultiuser.cts" + android:label="CTS multi-user tests of android.app.role"> + </instrumentation> +</manifest> diff --git a/tests/cts/rolemultiuser/AndroidTest.xml b/tests/cts/rolemultiuser/AndroidTest.xml new file mode 100644 index 000000000..15c34f54a --- /dev/null +++ b/tests/cts/rolemultiuser/AndroidTest.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- + ~ Copyright (C) 2024 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. + --> + +<configuration description="Config for CTS role multi-user test cases"> + + <option name="test-suite-tag" value="cts" /> + <option name="config-descriptor:metadata" key="component" value="permissions" /> + <option name="config-descriptor:metadata" key="parameter" value="all_foldable_states" /> + <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" /> + <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" /> + <option name="config-descriptor:metadata" key="parameter" value="multiuser" /> + <option name="config-descriptor:metadata" key="parameter" value="secondary_user" /> + <option name="config-descriptor:metadata" key="parameter" value="run_on_sdk_sandbox" /> + <option name="config-descriptor:metadata" key="mainline-param" value="com.google.android.permission.apex" /> + <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk30ModuleController" /> + + <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> + <option name="cleanup-apks" value="true" /> + <option name="test-file-name" value="CtsRoleMultiUserTestCases.apk" /> + </target_preparer> + + <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> + <option name="run-command" value="mkdir -p /data/local/tmp/cts-role" /> + <option name="teardown-command" value="rm -rf /data/local/tmp/cts-role"/> + </target_preparer> + + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="CtsRoleMultiUserTestApp.apk->/data/local/tmp/cts-role/CtsRoleMultiUserTestApp.apk" /> + </target_preparer> + + <test class="com.android.tradefed.testtype.AndroidJUnitTest" > + <option name="package" value="android.app.rolemultiuser.cts" /> + <option name="exclude-annotation" value="com.android.bedstead.enterprise.annotations.RequireRunOnWorkProfile" /> + <option name="exclude-annotation" value="com.android.bedstead.multiuser.annotations.RequireRunOnSecondaryUser" /> + <option name="runtime-hint" value="5m" /> + </test> +</configuration> diff --git a/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/Android.bp b/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/Android.bp new file mode 100644 index 000000000..71ccd0e59 --- /dev/null +++ b/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/Android.bp @@ -0,0 +1,23 @@ +// Copyright (C) 2024 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "CtsRoleMultiUserTestApp", + defaults: ["mts-target-sdk-version-current"], + min_sdk_version: "30", +} diff --git a/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/AndroidManifest.xml b/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/AndroidManifest.xml new file mode 100644 index 000000000..eea3be741 --- /dev/null +++ b/tests/cts/rolemultiuser/CtsRoleMultiUserTestApp/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- + ~ Copyright (C) 2024 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<manifest + xmlns:android="http://schemas.android.com/apk/res/android" + package="android.app.rolemultiuser.cts.app"> + + <application android:label="CtsRoleMultiUserTestApp" /> +</manifest> diff --git a/tests/cts/rolemultiuser/TEST_MAPPING b/tests/cts/rolemultiuser/TEST_MAPPING new file mode 100644 index 000000000..323e3094c --- /dev/null +++ b/tests/cts/rolemultiuser/TEST_MAPPING @@ -0,0 +1,12 @@ +{ + "postsubmit": [ + { + "name": "CtsRoleMultiUserTestCases" + } + ], + "mainline-postsubmit": [ + { + "name": "CtsRoleMultiUserTestCases[com.google.android.permission.apex]" + } + ] +} diff --git a/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt new file mode 100644 index 000000000..134f45131 --- /dev/null +++ b/tests/cts/rolemultiuser/src/android/app/rolemultiuser/cts/RoleManagerMultiUserTest.kt @@ -0,0 +1,660 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.app.rolemultiuser.cts + +import android.app.role.RoleManager +import android.content.Context +import android.os.Build +import android.os.Process +import android.os.UserHandle +import androidx.test.filters.SdkSuppress +import com.android.bedstead.enterprise.annotations.EnsureHasWorkProfile +import com.android.bedstead.enterprise.annotations.RequireRunOnWorkProfile +import com.android.bedstead.enterprise.workProfile +import com.android.bedstead.flags.annotations.RequireFlagsEnabled +import com.android.bedstead.harrier.BedsteadJUnit4 +import com.android.bedstead.harrier.DeviceState +import com.android.bedstead.multiuser.annotations.EnsureHasAdditionalUser +import com.android.bedstead.multiuser.annotations.EnsureHasPrivateProfile +import com.android.bedstead.multiuser.annotations.EnsureHasSecondaryUser +import com.android.bedstead.multiuser.annotations.RequireRunNotOnSecondaryUser +import com.android.bedstead.multiuser.annotations.RequireRunOnPrimaryUser +import com.android.bedstead.multiuser.privateProfile +import com.android.bedstead.multiuser.secondaryUser +import com.android.bedstead.nene.TestApis.context +import com.android.bedstead.nene.TestApis.permissions +import com.android.bedstead.nene.TestApis.users +import com.android.bedstead.nene.types.OptionalBoolean +import com.android.bedstead.permissions.CommonPermissions.INTERACT_ACROSS_USERS_FULL +import com.android.bedstead.permissions.CommonPermissions.MANAGE_DEFAULT_APPLICATIONS +import com.android.bedstead.permissions.CommonPermissions.MANAGE_ROLE_HOLDERS +import com.android.bedstead.permissions.annotations.EnsureDoesNotHavePermission +import com.android.bedstead.permissions.annotations.EnsureHasPermission +import com.android.compatibility.common.util.SystemUtil +import com.android.compatibility.common.util.SystemUtil.eventually +import com.google.common.truth.Truth.assertThat +import com.google.common.truth.Truth.assertWithMessage +import java.util.Objects +import java.util.concurrent.CompletableFuture +import java.util.concurrent.TimeUnit +import java.util.function.Consumer +import org.junit.After +import org.junit.Assert.assertThrows +import org.junit.Assume.assumeFalse +import org.junit.Before +import org.junit.ClassRule +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") +@RunWith(BedsteadJUnit4::class) +class RoleManagerMultiUserTest { + @Before + @Throws(java.lang.Exception::class) + fun setUp() { + installAppForAllUsers() + } + + @After + @Throws(java.lang.Exception::class) + fun tearDown() { + uninstallAppForAllUsers() + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @EnsureHasPrivateProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @RequireRunOnPrimaryUser + @Test + @Throws(Exception::class) + fun isAvailableAsUserForProfileGroupExclusiveRole() { + val workProfileRoleManager = getRoleManagerForUser(deviceState.workProfile().userHandle()) + val privateProfileRoleManager = + getRoleManagerForUser(deviceState.privateProfile().userHandle()) + + assertThat(roleManager.isRoleAvailable(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)).isTrue() + assertThat(workProfileRoleManager.isRoleAvailable(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isTrue() + assertThat(privateProfileRoleManager.isRoleAvailable(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isFalse() + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @Test + @Throws(Exception::class) + fun cannotGetActiveUserForNonCrossUserRole() { + assertThrows(IllegalArgumentException::class.java) { + roleManager.getActiveUserForRole(RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(MANAGE_ROLE_HOLDERS) + @EnsureDoesNotHavePermission(INTERACT_ACROSS_USERS_FULL) + @Test + @Throws(Exception::class) + fun cannotGetActiveUserForRoleWithoutInteractAcrossUserPermission() { + assertThrows(SecurityException::class.java) { + roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL) + @EnsureDoesNotHavePermission(MANAGE_ROLE_HOLDERS, MANAGE_DEFAULT_APPLICATIONS) + @Test + @Throws(Exception::class) + fun cannotGetActiveUserForRoleWithoutManageRoleAndManageDefaultApplicationsPermission() { + assertThrows(SecurityException::class.java) { + roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForNonCrossUserRole() { + assertThrows(IllegalArgumentException::class.java) { + roleManager.setActiveUserForRole( + RoleManager.ROLE_SYSTEM_ACTIVITY_RECOGNIZER, + Process.myUserHandle(), + 0, + ) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(MANAGE_ROLE_HOLDERS) + @EnsureDoesNotHavePermission(INTERACT_ACROSS_USERS_FULL) + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForRoleWithoutInteractAcrossUserPermission() { + assertThrows(SecurityException::class.java) { + roleManager.setActiveUserForRole( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + Process.myUserHandle(), + 0, + ) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL) + @EnsureDoesNotHavePermission(MANAGE_ROLE_HOLDERS, MANAGE_DEFAULT_APPLICATIONS) + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForRoleWithoutManageRoleAndManageDefaultApplicationsPermission() { + assertThrows(SecurityException::class.java) { + roleManager.setActiveUserForRole( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + Process.myUserHandle(), + 0, + ) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForRoleToNonExistentUser() { + val targetActiveUser = users().nonExisting().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, targetActiveUser, 0) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isNotEqualTo(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasPrivateProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForRoleToPrivateProfileUser() { + val targetActiveUser = deviceState.privateProfile().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, targetActiveUser, 0) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isNotEqualTo(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasAdditionalUser(installInstrumentedApp = OptionalBoolean.TRUE) + @EnsureHasSecondaryUser + @RequireRunNotOnSecondaryUser + @Test + @Throws(Exception::class) + fun cannotSetActiveUserForRoleToUserNotInProfileGroup() { + val targetActiveUser = deviceState.secondaryUser().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, targetActiveUser, 0) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isNotEqualTo(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @EnsureHasAdditionalUser(installInstrumentedApp = OptionalBoolean.TRUE) + @EnsureHasSecondaryUser + @RequireRunNotOnSecondaryUser + @Test + @Throws(java.lang.Exception::class) + fun ensureRoleHasActiveUser() { + val primaryUser = deviceState.initialUser().userHandle() + val primaryUserRoleManager = getRoleManagerForUser(primaryUser) + val secondaryUser = deviceState.secondaryUser().userHandle() + val secondaryUserRoleManager = getRoleManagerForUser(secondaryUser) + + assertWithMessage( + "Expected active user in profile group for user ${primaryUser.identifier}" + ) + .that(primaryUserRoleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isNotNull() + assertWithMessage( + "Expected active user in profile group for user ${secondaryUser.identifier}" + ) + .that( + secondaryUserRoleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isNotNull() + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @Test + @Throws(java.lang.Exception::class) + fun ensureOnlyActiveUserIsRoleHolder() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + roleManager.setDefaultHoldersForTest( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + listOf(APP_PACKAGE_NAME), + ) + + val activeUser = roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)!! + // Test app install might take a moment + eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(activeUser) } + } finally { + // Clear test default role holder + roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureDoesNotHavePermission(MANAGE_DEFAULT_APPLICATIONS) + @EnsureHasWorkProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @Test + @Throws(Exception::class) + fun setAndGetActiveUserForRoleSetCurrentUserWithManageRoleHoldersPermission() { + assumeFalse( + "setActiveUser not supported for private profile", + users().current().type().name() == PRIVATE_PROFILE_TYPE_NAME, + ) + + val targetActiveUser = users().current().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, targetActiveUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_DEFAULT_APPLICATIONS) + @EnsureDoesNotHavePermission(MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @Test + @Throws(Exception::class) + fun setAndGetActiveUserForRoleSetCurrentUserWithManageDefaultApplicationPermission() { + assumeFalse( + "setActiveUser not supported for private profile", + users().current().type().name() == PRIVATE_PROFILE_TYPE_NAME, + ) + + val targetActiveUser = users().current().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, targetActiveUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @Test + @Throws(Exception::class) + fun setAndGetActiveUserForRoleSetCurrentUserEnsureRoleNotHeldByInactiveUser() { + assumeFalse( + "setActiveUser not supported for private profile", + users().current().type().name() == PRIVATE_PROFILE_TYPE_NAME, + ) + // initialUser needs to be not the targetUser + val targetActiveUser = users().current().userHandle() + val initialUser = + if (Objects.equals(targetActiveUser, deviceState.initialUser())) { + deviceState.workProfile().userHandle() + } else { + deviceState.initialUser().userHandle() + } + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + + try { + // Set test default role holder. Ensures fallbacks to a default holder + roleManager.setDefaultHoldersForTest( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + listOf(APP_PACKAGE_NAME), + ) + + roleManager.setActiveUserForRole( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + targetActiveUser, + 0, + ) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + // We can assume targetActiveUser is role holder since fallback is enabled + eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) } + } finally { + // Clear test default role holder + roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile(installInstrumentedApp = OptionalBoolean.TRUE) + @Test + @Throws(Exception::class) + fun setAndGetActiveUserForRoleSetWorkProfile() { + try { + // Set test default role holder. Ensures fallbacks to a default holder + roleManager.setDefaultHoldersForTest( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + listOf(APP_PACKAGE_NAME), + ) + + val targetActiveUser = deviceState.workProfile().userHandle() + roleManager.setActiveUserForRole( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + targetActiveUser, + 0, + ) + + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + // We can assume targetActiveUser is role holder since fallback is enabled + eventually { assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) } + } finally { + // Clear test default role holder + roleManager.setDefaultHoldersForTest(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, null) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(MANAGE_ROLE_HOLDERS) + @EnsureDoesNotHavePermission(INTERACT_ACROSS_USERS_FULL) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(Exception::class) + fun cannotAddRoleHolderAsUserForProfileExclusiveRoleWithoutInteractAcrossUserPermission() { + // Set other user as active + val initialUser = deviceState.workProfile().userHandle() + // setActiveUserForRole and getActiveUserForRole is used to ensure initial active users + // state and requires INTERACT_ACROSS_USERS_FULL + permissions().withPermission(INTERACT_ACROSS_USERS_FULL).use { _ -> + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + } + + val targetActiveUser = users().current().userHandle() + val future = CallbackFuture() + assertThrows(SecurityException::class.java) { + roleManager.addRoleHolderAsUser( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + targetActiveUser, + context.mainExecutor, + future, + ) + } + assertThat( + roleManager.getRoleHoldersAsUser( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + targetActiveUser, + ) + ) + .isEmpty() + + // getActiveUserForRole is used to ensure addRoleHolderAsUser didn't set active user, and + // requires INTERACT_ACROSS_USERS_FULL + permissions().withPermission(INTERACT_ACROSS_USERS_FULL).use { _ -> + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @Test + @Throws(java.lang.Exception::class) + fun addRoleHolderAsUserSetsCurrentUserAsActive() { + // Set other user as active + val initialUser = deviceState.workProfile().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val targetActiveUser = users().current().userHandle() + val future = CallbackFuture() + roleManager.addRoleHolderAsUser( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + targetActiveUser, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_ROLE_HOLDERS) + @EnsureHasWorkProfile + @RequireRunOnWorkProfile + @Test + @Throws(java.lang.Exception::class) + fun addRoleHolderAsUserSetsWorkProfileAsActive() { + // Set other user as active + val initialUser = users().main()!!.userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val targetActiveUser = deviceState.workProfile().userHandle() + + assertThat(targetActiveUser).isNotEqualTo(initialUser) + val future = CallbackFuture() + roleManager.addRoleHolderAsUser( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + targetActiveUser, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(MANAGE_DEFAULT_APPLICATIONS) + @EnsureDoesNotHavePermission(INTERACT_ACROSS_USERS_FULL) + @EnsureHasWorkProfile + @RequireRunOnPrimaryUser + @Test + @Throws(Exception::class) + fun cannotSetDefaultApplicationForProfileExclusiveRoleWithoutInteractAcrossUserPermission() { + // Set other user as active + val initialUser = deviceState.workProfile().userHandle() + // setActiveUserForRole and getActiveUserForRole is used to ensure initial active users + // state and requires INTERACT_ACROSS_USERS_FULL + permissions().withPermission(INTERACT_ACROSS_USERS_FULL).use { _ -> + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + } + + val future = CallbackFuture() + assertThrows(SecurityException::class.java) { + roleManager.setDefaultApplication( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + context.mainExecutor, + future, + ) + } + assertThat(roleManager.getDefaultApplication(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)).isNull() + + // getActiveUserForRole is used to ensure setDefaultApplication didn't set active user, + // and requires INTERACT_ACROSS_USERS_FULL + permissions().withPermission(INTERACT_ACROSS_USERS_FULL).use { _ -> + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + } + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_DEFAULT_APPLICATIONS) + @EnsureHasWorkProfile + @Test + @Throws(java.lang.Exception::class) + fun setDefaultApplicationSetsCurrentUserAsActive() { + // Set other user as active + val initialUser = deviceState.workProfile().userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val targetActiveUser = users().current().userHandle() + val future = CallbackFuture() + roleManager.setDefaultApplication( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetDefaultApplication(targetActiveUser) + } + + @RequireFlagsEnabled(com.android.permission.flags.Flags.FLAG_CROSS_USER_ROLE_ENABLED) + @EnsureHasPermission(INTERACT_ACROSS_USERS_FULL, MANAGE_DEFAULT_APPLICATIONS) + @EnsureHasWorkProfile + @RequireRunOnWorkProfile + @Test + @Throws(java.lang.Exception::class) + fun setDefaultApplicationSetsWorkProfileAsActive() { + // Set other user as active + val initialUser = users().main()!!.userHandle() + roleManager.setActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, initialUser, 0) + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(initialUser) + + val targetActiveUser = deviceState.workProfile().userHandle() + assertThat(targetActiveUser).isNotEqualTo(initialUser) + val future = CallbackFuture() + roleManager.setDefaultApplication( + PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, + APP_PACKAGE_NAME, + 0, + context.mainExecutor, + future, + ) + assertThat(future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue() + assertThat(roleManager.getActiveUserForRole(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME)) + .isEqualTo(targetActiveUser) + assertExpectedProfileHasRoleUsingGetDefaultApplication(targetActiveUser) + } + + @Throws(java.lang.Exception::class) + private fun installAppForAllUsers() { + SystemUtil.runShellCommandOrThrow("pm install -r --user all $APP_APK_PATH") + } + + private fun uninstallAppForAllUsers() { + SystemUtil.runShellCommand("pm uninstall $APP_PACKAGE_NAME") + } + + private fun assertExpectedProfileHasRoleUsingGetRoleHoldersAsUser( + expectedActiveUser: UserHandle + ) { + for (userReference in users().profileGroup()) { + val user = userReference.userHandle() + if (Objects.equals(user, expectedActiveUser)) { + val roleHolders = + roleManager.getRoleHoldersAsUser(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, user) + assertWithMessage( + "Expected user ${user.identifier} to have a role holder for " + + " $PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME" + ) + .that(roleHolders) + .isNotEmpty() + assertWithMessage( + "Expected user ${user.identifier} to have $APP_PACKAGE_NAME as role " + + "holder for $PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME" + ) + .that(roleHolders.first()) + .isEqualTo(APP_PACKAGE_NAME) + } else { + // Verify the non-active user does not hold the role + assertWithMessage( + "Expected user ${user.identifier} to not have a role holder for" + + " $PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME" + ) + .that( + roleManager.getRoleHoldersAsUser(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME, user) + ) + .isEmpty() + } + } + } + + private fun assertExpectedProfileHasRoleUsingGetDefaultApplication( + expectedActiveUser: UserHandle + ) { + for (userReference in users().profileGroup()) { + val user = userReference.userHandle() + val userRoleManager = getRoleManagerForUser(user) + if (Objects.equals(user, expectedActiveUser)) { + assertWithMessage("Expected default application for user ${user.identifier}") + .that( + userRoleManager.getDefaultApplication(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isEqualTo(APP_PACKAGE_NAME) + } else { + // Verify the non-active user does not hold the role + assertWithMessage("Expected no default application for user ${user.identifier}") + .that( + userRoleManager.getDefaultApplication(PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME) + ) + .isNull() + } + } + } + + private fun getRoleManagerForUser(user: UserHandle): RoleManager { + val userContext = context.createContextAsUser(user, 0) + return userContext.getSystemService(RoleManager::class.java) + } + + class CallbackFuture : CompletableFuture<Boolean?>(), Consumer<Boolean?> { + override fun accept(successful: Boolean?) { + complete(successful) + } + } + + companion object { + private const val TIMEOUT_MILLIS: Long = (15 * 1000).toLong() + private const val PROFILE_GROUP_EXCLUSIVITY_ROLE_NAME = + RoleManager.ROLE_RESERVED_FOR_TESTING_PROFILE_GROUP_EXCLUSIVITY + private const val PRIVATE_PROFILE_TYPE_NAME = "android.os.usertype.profile.PRIVATE" + private const val APP_APK_PATH: String = + "/data/local/tmp/cts-role/CtsRoleMultiUserTestApp.apk" + private const val APP_PACKAGE_NAME: String = "android.app.rolemultiuser.cts.app" + private val context: Context = context().instrumentedContext() + private val roleManager: RoleManager = context.getSystemService(RoleManager::class.java) + + @JvmField @ClassRule @Rule val deviceState = DeviceState() + } +} diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterDataTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterDataTest.kt index c344d7ebd..1320c2ff9 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterDataTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterDataTest.kt @@ -492,8 +492,8 @@ class SafetyCenterDataTest { status1, listOf(issue1), listOf(entryOrGroup1), - listOf(staticEntryGroup1) - ) + listOf(staticEntryGroup1), + ), ) .addEqualityGroup( data2, @@ -501,19 +501,19 @@ class SafetyCenterDataTest { status2, listOf(issue2), listOf(entryOrGroup2), - listOf(staticEntryGroup2) - ) + listOf(staticEntryGroup2), + ), ) .addEqualityGroup( SafetyCenterData(status1, listOf(), listOf(), listOf()), - SafetyCenterData(status1, listOf(), listOf(), listOf()) + SafetyCenterData(status1, listOf(), listOf(), listOf()), ) .addEqualityGroup( SafetyCenterData( status2, listOf(issue1), listOf(entryOrGroup1), - listOf(staticEntryGroup1) + listOf(staticEntryGroup1), ) ) .addEqualityGroup( @@ -521,7 +521,7 @@ class SafetyCenterDataTest { status1, listOf(issue2), listOf(entryOrGroup1), - listOf(staticEntryGroup1) + listOf(staticEntryGroup1), ) ) .addEqualityGroup( @@ -529,7 +529,7 @@ class SafetyCenterDataTest { status1, listOf(issue1), listOf(entryOrGroup2), - listOf(staticEntryGroup1) + listOf(staticEntryGroup1), ) ) .addEqualityGroup( @@ -537,7 +537,7 @@ class SafetyCenterDataTest { status1, listOf(issue1), listOf(entryOrGroup1), - listOf(staticEntryGroup2) + listOf(staticEntryGroup2), ) ) @@ -550,7 +550,7 @@ class SafetyCenterDataTest { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterData.CREATOR, ignoreToString = true, - createCopy = { SafetyCenterData.Builder(it).build() } + createCopy = { SafetyCenterData.Builder(it).build() }, ) .addEqualityGroup( data1, @@ -558,7 +558,7 @@ class SafetyCenterDataTest { status1, listOf(issue1), listOf(entryOrGroup1), - listOf(staticEntryGroup1) + listOf(staticEntryGroup1), ), SafetyCenterData.Builder(status1) .addIssue(issue1) @@ -570,7 +570,7 @@ class SafetyCenterDataTest { .addEntryOrGroup(entryOrGroup1) .addStaticEntryGroup(staticEntryGroup1) .setExtras(unknownExtras) - .build() + .build(), ) .addEqualityGroup( SafetyCenterData.Builder(status1) @@ -640,7 +640,7 @@ class SafetyCenterDataTest { .addStaticEntryGroup(staticEntryGroup1) .addIssue(issue1) .setExtras(filledExtrasIssuesToGroups1) - .build() + .build(), ) .addEqualityGroup( SafetyCenterData.Builder(status1) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryGroupTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryGroupTest.kt index 7ae5fb347..38ed449f7 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryGroupTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryGroupTest.kt @@ -175,7 +175,7 @@ class SafetyCenterEntryGroupTest { fun equalsHashCodeToString_usingEqualsHashCodeToStringTester() { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterEntryGroup.CREATOR, - createCopy = { SafetyCenterEntryGroup.Builder(it).build() } + createCopy = { SafetyCenterEntryGroup.Builder(it).build() }, ) .addEqualityGroup( entryGroup1, @@ -183,7 +183,7 @@ class SafetyCenterEntryGroupTest { .setSummary("A group summary") .setSeverityLevel(SafetyCenterEntry.ENTRY_SEVERITY_LEVEL_OK) .setEntries(listOf(entry1)) - .build() + .build(), ) .addEqualityGroup(entryGroup2) .addEqualityGroup( diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryTest.kt index 116164288..2811b87f2 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterEntryTest.kt @@ -41,18 +41,18 @@ class SafetyCenterEntryTest { context, 0, Intent("Fake Different Data"), - PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_IMMUTABLE, ) private val iconAction1 = SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent1 + pendingIntent1, ) private val iconAction2 = SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent2 + pendingIntent2, ) private val entry1 = @@ -213,7 +213,7 @@ class SafetyCenterEntryTest { fun equalsHashCodeToString_usingEqualsHashCodeToStringTester() { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterEntry.CREATOR, - createCopy = { SafetyCenterEntry.Builder(it).build() } + createCopy = { SafetyCenterEntry.Builder(it).build() }, ) .addEqualityGroup(entry1) .addEqualityGroup( @@ -226,7 +226,7 @@ class SafetyCenterEntryTest { .setPendingIntent(pendingIntent1) .setIconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent2 + pendingIntent2, ) .build(), SafetyCenterEntry.Builder("id", "a title") @@ -238,9 +238,9 @@ class SafetyCenterEntryTest { .setPendingIntent(pendingIntent1) .setIconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent2 + pendingIntent2, ) - .build() + .build(), ) .addEqualityGroup(SafetyCenterEntry.Builder(entry1).setId("a different id").build()) .addEqualityGroup( @@ -274,7 +274,7 @@ class SafetyCenterEntryTest { assertThat( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent1 + pendingIntent1, ) .type ) @@ -282,7 +282,7 @@ class SafetyCenterEntryTest { assertThat( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent1 + pendingIntent1, ) .type ) @@ -294,7 +294,7 @@ class SafetyCenterEntryTest { assertThat( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent1 + pendingIntent1, ) .pendingIntent ) @@ -302,7 +302,7 @@ class SafetyCenterEntryTest { assertThat( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent2 + pendingIntent2, ) .pendingIntent ) @@ -340,26 +340,26 @@ class SafetyCenterEntryTest { iconAction1, SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent1 - ) + pendingIntent1, + ), ) .addEqualityGroup( iconAction2, SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent2 - ) + pendingIntent2, + ), ) .addEqualityGroup( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_INFO, - pendingIntent1 + pendingIntent1, ) ) .addEqualityGroup( SafetyCenterEntry.IconAction( SafetyCenterEntry.IconAction.ICON_ACTION_TYPE_GEAR, - pendingIntent2 + pendingIntent2, ) ) .test() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterErrorDetailsTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterErrorDetailsTest.kt index 0d97026bd..e7565bf61 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterErrorDetailsTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterErrorDetailsTest.kt @@ -58,7 +58,7 @@ class SafetyCenterErrorDetailsTest { .addEqualityGroup(errorDetails2, SafetyCenterErrorDetails("another error message")) .addEqualityGroup( SafetyCenterErrorDetails("a different error message"), - SafetyCenterErrorDetails("a different error message") + SafetyCenterErrorDetails("a different error message"), ) .test() } diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterIssueTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterIssueTest.kt index be7ca343c..fd359f600 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterIssueTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterIssueTest.kt @@ -47,7 +47,7 @@ class SafetyCenterIssueTest { context, 0, Intent("Fake Different Data"), - PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_IMMUTABLE, ) private val action1 = @@ -451,7 +451,7 @@ class SafetyCenterIssueTest { .setIsInFlight(true) .setSuccessMessage("a success message") .setConfirmationDialogDetails(confirmationDialogDetails) - .build() + .build(), ) .addEqualityGroup( SafetyCenterIssue.Action.Builder("an_id", "a label", pendingIntent1) @@ -534,7 +534,7 @@ class SafetyCenterIssueTest { .build(), SafetyCenterIssue.Builder(issueWithTiramisuFields) .setAttributionTitle("Attribution title") - .build() + .build(), ) .addEqualityGroup( SafetyCenterIssue.Builder(issueWithTiramisuFields) @@ -549,7 +549,7 @@ class SafetyCenterIssueTest { ) .addEqualityGroup( SafetyCenterIssue.Builder(issueWithTiramisuFields).setGroupId("group_id").build(), - SafetyCenterIssue.Builder(issueWithTiramisuFields).setGroupId("group_id").build() + SafetyCenterIssue.Builder(issueWithTiramisuFields).setGroupId("group_id").build(), ) .addEqualityGroup( SafetyCenterIssue.Builder(issueWithTiramisuFields) @@ -625,7 +625,7 @@ class SafetyCenterIssueTest { ) .addEqualityGroup( ConfirmationDialogDetails("Title", "Text", "Accept", "Deny"), - ConfirmationDialogDetails("Title", "Text", "Accept", "Deny") + ConfirmationDialogDetails("Title", "Text", "Accept", "Deny"), ) .addEqualityGroup(ConfirmationDialogDetails("Other title", "Text", "Accept", "Deny")) .addEqualityGroup(ConfirmationDialogDetails("Title", "Other text", "Accept", "Deny")) @@ -643,7 +643,7 @@ class SafetyCenterIssueTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterIssue.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup(issue1, SafetyCenterIssue.Builder(issue1).build()) .addEqualityGroup(issueWithRequiredFieldsOnly) @@ -657,7 +657,7 @@ class SafetyCenterIssueTest { .setSubtitle("In the neighborhood") .setSeverityLevel(SafetyCenterIssue.ISSUE_SEVERITY_LEVEL_OK) .setActions(listOf(action1)) - .build() + .build(), ) .addEqualityGroup(SafetyCenterIssue.Builder(issue1).setId("a different id").build()) .addEqualityGroup( @@ -685,7 +685,7 @@ class SafetyCenterIssueTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterIssue.Action.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup(action1) .addEqualityGroup(action2) @@ -699,7 +699,7 @@ class SafetyCenterIssueTest { .setWillResolve(true) .setIsInFlight(true) .setSuccessMessage("a success message") - .build() + .build(), ) .addEqualityGroup( SafetyCenterIssue.Action.Builder("an_id", "a label", pendingIntent1) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt index 8fd45efb8..b1c731f08 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterManagerTest.kt @@ -216,7 +216,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( DYNAMIC_OTHER_PACKAGE_ID, - safetySourceTestData.unspecified + safetySourceTestData.unspecified, ) } @@ -281,7 +281,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( DYNAMIC_IN_STATELESS_ID, - safetySourceTestData.information + safetySourceTestData.information, ) } @@ -342,7 +342,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( ISSUE_ONLY_BAREBONE_ID, - safetySourceTestData.unspecified + safetySourceTestData.unspecified, ) } @@ -359,7 +359,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( DYNAMIC_BAREBONE_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) } @@ -400,7 +400,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithIssue + safetySourceTestData.informationWithIssue, ) } @@ -421,7 +421,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) } @@ -454,7 +454,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( DYNAMIC_ALL_OPTIONAL_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) } @@ -490,7 +490,7 @@ class SafetyCenterManagerTest { ISSUE_ONLY_ALL_OPTIONAL_ID, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalResolvingGeneralIssue - ) + ), ) } @@ -521,7 +521,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.issueCategoryAllowlists = mapOf( ISSUE_CATEGORY_DEVICE to setOf(SAMPLE_SOURCE_ID), - ISSUE_CATEGORY_GENERAL to setOf(SAMPLE_SOURCE_ID) + ISSUE_CATEGORY_GENERAL to setOf(SAMPLE_SOURCE_ID), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) @@ -539,7 +539,7 @@ class SafetyCenterManagerTest { mapOf( ISSUE_CATEGORY_ACCOUNT to setOf(SINGLE_SOURCE_ID, SAMPLE_SOURCE_ID), ISSUE_CATEGORY_DEVICE to setOf(SAMPLE_SOURCE_ID), - ISSUE_CATEGORY_GENERAL to setOf(SAMPLE_SOURCE_ID) + ISSUE_CATEGORY_GENERAL to setOf(SAMPLE_SOURCE_ID), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) @@ -560,7 +560,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) } @@ -577,7 +577,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.issueCategoryAllowlists = mapOf( ISSUE_CATEGORY_ACCOUNT to setOf(SAMPLE_SOURCE_ID), - ISSUE_CATEGORY_DEVICE to setOf(SINGLE_SOURCE_ID) + ISSUE_CATEGORY_DEVICE to setOf(SINGLE_SOURCE_ID), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) @@ -585,7 +585,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) } @@ -605,7 +605,7 @@ class SafetyCenterManagerTest { safetyCenterManager.setSafetySourceDataWithPermission( SINGLE_SOURCE_ID, safetySourceTestData.unspecified, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) safetyCenterTestHelper.setEnabled(true) @@ -620,7 +620,7 @@ class SafetyCenterManagerTest { safetyCenterManager.setSafetySourceData( SINGLE_SOURCE_ID, safetySourceTestData.unspecified, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) } } @@ -702,7 +702,7 @@ class SafetyCenterManagerTest { safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) listener.receiveSafetyCenterData() @@ -717,7 +717,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) } @@ -732,7 +732,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterManager.reportSafetySourceErrorWithPermission( STATIC_BAREBONE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) } @@ -749,7 +749,7 @@ class SafetyCenterManagerTest { assertFailsWith(IllegalArgumentException::class) { safetyCenterManager.reportSafetySourceErrorWithPermission( DYNAMIC_OTHER_PACKAGE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) } @@ -769,7 +769,7 @@ class SafetyCenterManagerTest { safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) assertFailsWith(TimeoutCancellationException::class) { @@ -782,7 +782,7 @@ class SafetyCenterManagerTest { assertFailsWith(SecurityException::class) { safetyCenterManager.reportSafetySourceError( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) } } @@ -791,7 +791,7 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenImplicitReceiverHasPermission_receiverCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) // Implicit broadcast is only sent to system user. assumeTrue(context.getSystemService(UserManager::class.java)!!.isSystemUser) @@ -813,7 +813,7 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenImplicitReceiverDoesntHavePermission_receiverNotCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) // Implicit broadcast is only sent to system user. assumeTrue(context.getSystemService(UserManager::class.java)!!.isSystemUser) @@ -829,7 +829,7 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenSourceReceiverHasPermission_receiverCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) @@ -848,14 +848,14 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_valueDoesntChange_receiverNotCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) assertFailsWith(TimeoutCancellationException::class) { SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait( true, - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } } @@ -864,7 +864,7 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenSourceReceiverDoesntHavePermission_receiverNotCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) @@ -877,12 +877,12 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenSourceReceiverNotInConfig_receiverNotCalled() { assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) assertFailsWith(TimeoutCancellationException::class) { SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait( false, - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } } @@ -891,14 +891,14 @@ class SafetyCenterManagerTest { fun safetyCenterEnabledChanged_whenNoDeviceConfigFlag_receiverNotCalled() { assumeFalse( "SafetyCenter DeviceConfig flag is in use", - SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig() + SafetyCenterTestHelper.safetyCenterCanBeToggledUsingDeviceConfig(), ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) assertFailsWith(TimeoutCancellationException::class) { SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait( false, - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } } @@ -908,7 +908,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_RESCAN_BUTTON_CLICK @@ -925,7 +925,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -943,7 +943,7 @@ class SafetyCenterManagerTest { SafetySourceReceiver.runInForegroundService = true SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -961,13 +961,13 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } @@ -982,7 +982,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1015,11 +1015,11 @@ class SafetyCenterManagerTest { SafetySourceReceiver.apply { setResponse( Request.Rescan(SOURCE_ID_1), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) setResponse( Request.Rescan(SOURCE_ID_3), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) } @@ -1047,11 +1047,11 @@ class SafetyCenterManagerTest { SafetySourceReceiver.apply { setResponse( Request.Refresh(SOURCE_ID_1), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) setResponse( Request.Refresh(SOURCE_ID_3), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) } @@ -1077,7 +1077,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) assertFailsWith(TimeoutCancellationException::class) { @@ -1094,13 +1094,13 @@ class SafetyCenterManagerTest { fun refreshSafetySources_whenSourceNotInConfig_sourceDoesntSendData() { SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } } @@ -1122,7 +1122,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val broadcastId1 = @@ -1143,7 +1143,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information, overrideBroadcastId = "invalid") + Response.SetData(safetySourceTestData.information, overrideBroadcastId = "invalid"), ) val listener = safetyCenterTestHelper.addListener() @@ -1157,7 +1157,7 @@ class SafetyCenterManagerTest { SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN @@ -1172,14 +1172,14 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN ) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1201,7 +1201,7 @@ class SafetyCenterManagerTest { ) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1230,7 +1230,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.setAllRefreshTimeoutsTo(TIMEOUT_LONG) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1249,7 +1249,7 @@ class SafetyCenterManagerTest { ) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1269,7 +1269,7 @@ class SafetyCenterManagerTest { for (sourceId in listOf(SOURCE_ID_2, SOURCE_ID_3)) { SafetySourceReceiver.setResponse( Request.Rescan(sourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) } val listener = safetyCenterTestHelper.addListener() @@ -1289,7 +1289,7 @@ class SafetyCenterManagerTest { for (sourceId in listOf(SOURCE_ID_2, SOURCE_ID_3)) { SafetySourceReceiver.setResponse( Request.Rescan(sourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) } val listener = safetyCenterTestHelper.addListener() @@ -1308,7 +1308,7 @@ class SafetyCenterManagerTest { // SOURCE_ID_1 and SOURCE_ID_2 will timeout SafetySourceReceiver.setResponse( Request.Rescan(SOURCE_ID_3), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val listener = safetyCenterTestHelper.addListener() @@ -1355,7 +1355,7 @@ class SafetyCenterManagerTest { assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } } @@ -1377,15 +1377,15 @@ class SafetyCenterManagerTest { SafetySourceReceiver.apply { setResponse( Request.Refresh(SOURCE_ID_1), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) setResponse( Request.Refresh(SOURCE_ID_2), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) setResponse( Request.Refresh(SOURCE_ID_3), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) } // But sources 1 and 3 should not be refreshed in background @@ -1409,7 +1409,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) SafetyCenterFlags.backgroundRefreshDeniedSources = setOf(SINGLE_SOURCE_ID) @@ -1426,7 +1426,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) SafetyCenterFlags.backgroundRefreshDeniedSources = setOf(SINGLE_SOURCE_ID) @@ -1444,14 +1444,14 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) SafetyCenterFlags.backgroundRefreshDeniedSources = setOf(SINGLE_SOURCE_ID) assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PERIODIC, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } @@ -1466,7 +1466,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1484,21 +1484,21 @@ class SafetyCenterManagerTest { SafetySourceReceiver.apply { setResponse( Request.Refresh(SOURCE_ID_1), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) setResponse( Request.Refresh(SOURCE_ID_2), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) setResponse( Request.Refresh(SOURCE_ID_3), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) } safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - safetySourceIds = listOf(SOURCE_ID_1, SOURCE_ID_2) + safetySourceIds = listOf(SOURCE_ID_1, SOURCE_ID_2), ) val apiSafetySourceData1 = @@ -1518,7 +1518,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) assertFailsWith(TimeoutCancellationException::class) { @@ -1541,7 +1541,7 @@ class SafetyCenterManagerTest { assertFails { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - safetySourceIds = listOf(SOURCE_ID_1, SOURCE_ID_3) + safetySourceIds = listOf(SOURCE_ID_1, SOURCE_ID_3), ) } } @@ -1647,7 +1647,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val safetyCenterDataFromListener = listener.receiveSafetyCenterData() @@ -1708,7 +1708,7 @@ class SafetyCenterManagerTest { } safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - oneShotListener + oneShotListener, ) // Check that we don't deadlock when using a one-shot listener. This is because adding the @@ -1725,7 +1725,7 @@ class SafetyCenterManagerTest { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) assertFailsWith(TimeoutCancellationException::class) { @@ -1764,7 +1764,7 @@ class SafetyCenterManagerTest { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( fakeExecutor, - listener + listener, ) fakeExecutor.getNextTask().run() listener.receiveSafetyCenterData() @@ -1812,7 +1812,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationDismissPendingIntentIssue + safetySourceTestData.recommendationDismissPendingIntentIssue, ) val apiSafetySourceDataBeforeDismissal = safetyCenterManager.getSafetySourceDataWithPermission(SINGLE_SOURCE_ID) @@ -1822,7 +1822,7 @@ class SafetyCenterManagerTest { ) SafetySourceReceiver.setResponse( Request.DismissIssue(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.dismissSafetyCenterIssueWithPermissionAndWait( @@ -1839,7 +1839,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() @@ -1857,7 +1857,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID) @@ -1878,7 +1878,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID) @@ -1889,7 +1889,7 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - issueTypeId = "some_other_issue_type_id" + issueTypeId = "some_other_issue_type_id", ) ) @@ -1903,7 +1903,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() safetyCenterTestHelper.setEnabled(false) @@ -1931,7 +1931,7 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - userId = USER_NULL + userId = USER_NULL, ) ) } @@ -1949,7 +1949,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val apiSafetySourceDataBeforeExecution = safetyCenterManager.getSafetySourceDataWithPermission(SINGLE_SOURCE_ID) @@ -1959,7 +1959,7 @@ class SafetyCenterManagerTest { ) SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -1967,8 +1967,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val apiSafetySourceDataAfterExecution = @@ -1989,8 +1989,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val error = listener.receiveSafetyCenterErrorDetails() @@ -2015,8 +2015,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val error = listener.receiveSafetyCenterErrorDetails() @@ -2043,7 +2043,7 @@ class SafetyCenterManagerTest { } safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( fakeExecutor, - listener + listener, ) fakeExecutor.getNextTask().run() @@ -2052,8 +2052,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) fakeExecutor.getNextTask().run() @@ -2072,9 +2072,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } assertFailsWith(TimeoutCancellationException::class) { @@ -2087,7 +2087,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -2095,8 +2095,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) listener.receiveSafetyCenterData() @@ -2106,9 +2106,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } assertFailsWith(TimeoutCancellationException::class) { @@ -2121,7 +2121,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() safetyCenterTestHelper.setEnabled(false) @@ -2132,9 +2132,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } assertFailsWith(TimeoutCancellationException::class) { @@ -2154,12 +2154,12 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) assertFailsWith(IllegalArgumentException::class) { @@ -2168,9 +2168,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID + "invalid", - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } @@ -2184,12 +2184,12 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) assertFailsWith(TimeoutCancellationException::class) { @@ -2198,9 +2198,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID + "invalid" + CRITICAL_ISSUE_ACTION_ID + "invalid", ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } @@ -2217,8 +2217,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SOURCE_ID_1, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) } } @@ -2230,14 +2230,14 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - userId = USER_NULL + userId = USER_NULL, ), SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, CRITICAL_ISSUE_ACTION_ID, - userId = USER_NULL - ) + userId = USER_NULL, + ), ) } } @@ -2255,7 +2255,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SOURCE_ID_1, safetySourceTestData.unspecified) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterManager.clearAllSafetySourceDataForTestsWithPermission() @@ -2271,7 +2271,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setEnabled(false) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryGroupTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryGroupTest.kt index 71be3d5eb..0709bfc83 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryGroupTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryGroupTest.kt @@ -104,11 +104,11 @@ class SafetyCenterStaticEntryGroupTest { ) .addEqualityGroup( staticEntryGroup, - SafetyCenterStaticEntryGroup("a title", listOf(staticEntry1, staticEntry2)) + SafetyCenterStaticEntryGroup("a title", listOf(staticEntry1, staticEntry2)), ) .addEqualityGroup( SafetyCenterStaticEntryGroup("a title", listOf(staticEntry1)), - SafetyCenterStaticEntryGroup("a title", listOf(staticEntry1)) + SafetyCenterStaticEntryGroup("a title", listOf(staticEntry1)), ) .addEqualityGroup( SafetyCenterStaticEntryGroup("a different title", listOf(staticEntry1)) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryTest.kt index 045a50f75..7a5e6a737 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStaticEntryTest.kt @@ -40,7 +40,7 @@ class SafetyCenterStaticEntryTest { context, 0, Intent("Fake Different Data"), - PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_IMMUTABLE, ) private val title1 = "a title" @@ -101,14 +101,14 @@ class SafetyCenterStaticEntryTest { fun equalsHashCodeToString_usingEqualsHashCodeToStringTester() { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterStaticEntry.CREATOR, - createCopy = { SafetyCenterStaticEntry.Builder(it).build() } + createCopy = { SafetyCenterStaticEntry.Builder(it).build() }, ) .addEqualityGroup( staticEntry1, SafetyCenterStaticEntry.Builder("a title") .setSummary("a summary") .setPendingIntent(pendingIntent1) - .build() + .build(), ) .addEqualityGroup(staticEntry2) .addEqualityGroup(staticEntryMinimal, SafetyCenterStaticEntry.Builder("").build()) @@ -120,7 +120,7 @@ class SafetyCenterStaticEntryTest { SafetyCenterStaticEntry.Builder("titlee") .setSummary("sumaree") .setPendingIntent(pendingIntent1) - .build() + .build(), ) .addEqualityGroup( SafetyCenterStaticEntry.Builder(staticEntry1).setTitle("a different title").build() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStatusTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStatusTest.kt index 4df4e5d35..561e34d3b 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStatusTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterStatusTest.kt @@ -156,7 +156,7 @@ class SafetyCenterStatusTest { fun equalsHashCodeToString_usingEqualsHashCodeToStringTester() { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterStatus.CREATOR, - createCopy = { SafetyCenterStatus.Builder(it).build() } + createCopy = { SafetyCenterStatus.Builder(it).build() }, ) .addEqualityGroup( baseStatus, @@ -164,7 +164,7 @@ class SafetyCenterStatusTest { .setSeverityLevel(SafetyCenterStatus.OVERALL_SEVERITY_LEVEL_RECOMMENDATION) .setRefreshStatus(SafetyCenterStatus.REFRESH_STATUS_DATA_FETCH_IN_PROGRESS) .build(), - SafetyCenterStatus.Builder(baseStatus).build() + SafetyCenterStatus.Builder(baseStatus).build(), ) .addEqualityGroup( SafetyCenterStatus.Builder("same title", "same summary") @@ -172,7 +172,7 @@ class SafetyCenterStatusTest { .build(), SafetyCenterStatus.Builder("same title", "same summary") .setSeverityLevel(SafetyCenterStatus.OVERALL_SEVERITY_LEVEL_OK) - .build() + .build(), ) .addEqualityGroup( SafetyCenterStatus.Builder(baseStatus).setTitle("that's not it").build() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterUnsupportedTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterUnsupportedTest.kt index d882fc3cb..3beced151 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterUnsupportedTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyCenterUnsupportedTest.kt @@ -119,7 +119,7 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.setSafetySourceDataWithPermission( SINGLE_SOURCE_ID, safetySourceTestData.criticalWithResolvingGeneralIssue, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) val apiSafetySourceData = @@ -134,7 +134,7 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.setSafetySourceData( SINGLE_SOURCE_ID, safetySourceTestData.unspecified, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) } } @@ -154,12 +154,12 @@ class SafetyCenterUnsupportedTest { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) assertFailsWith(TimeoutCancellationException::class) { @@ -172,7 +172,7 @@ class SafetyCenterUnsupportedTest { assertFailsWith(SecurityException::class) { safetyCenterManager.reportSafetySourceError( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) } } @@ -186,7 +186,7 @@ class SafetyCenterUnsupportedTest { assertFailsWith(TimeoutCancellationException::class) { enabledChangedReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait( false, - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } enabledChangedReceiver.unregister() @@ -201,7 +201,7 @@ class SafetyCenterUnsupportedTest { assertFailsWith(TimeoutCancellationException::class) { SafetySourceReceiver.setSafetyCenterEnabledWithReceiverPermissionAndWait( false, - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } } @@ -215,7 +215,7 @@ class SafetyCenterUnsupportedTest { assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } } @@ -260,7 +260,7 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) assertFailsWith(TimeoutCancellationException::class) { @@ -285,7 +285,7 @@ class SafetyCenterUnsupportedTest { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) safetyCenterManager.removeOnSafetyCenterDataChangedListenerWithPermission(listener) @@ -300,7 +300,7 @@ class SafetyCenterUnsupportedTest { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) assertFailsWith(SecurityException::class) { @@ -316,12 +316,12 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.setSafetySourceDataWithPermission( SINGLE_SOURCE_ID, safetySourceTestData.criticalWithResolvingGeneralIssue, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( @@ -348,12 +348,12 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.setSafetySourceDataWithPermission( SINGLE_SOURCE_ID, safetySourceTestData.criticalWithResolvingGeneralIssue, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) assertFailsWith(TimeoutCancellationException::class) { @@ -362,9 +362,9 @@ class SafetyCenterUnsupportedTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } assertFailsWith(TimeoutCancellationException::class) { @@ -387,7 +387,7 @@ class SafetyCenterUnsupportedTest { safetyCenterManager.setSafetySourceDataWithPermission( SINGLE_SOURCE_ID, safetySourceTestData.criticalWithResolvingGeneralIssue, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) val apiSafetySourceDataBeforeClearing = safetyCenterManager.getSafetySourceDataWithPermission(SINGLE_SOURCE_ID) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyEventTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyEventTest.kt index 4d1cb6a8b..cba29852f 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyEventTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetyEventTest.kt @@ -203,7 +203,7 @@ class SafetyEventTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyEvent.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup(SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()) .addEqualityGroup( @@ -212,7 +212,7 @@ class SafetyEventTest { .build(), SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED) .setRefreshBroadcastId(REFRESH_BROADCAST_ID) - .build() + .build(), ) .addEqualityGroup( SafetyEvent.Builder(SAFETY_EVENT_TYPE_RESOLVING_ACTION_SUCCEEDED) @@ -222,7 +222,7 @@ class SafetyEventTest { SafetyEvent.Builder(SAFETY_EVENT_TYPE_RESOLVING_ACTION_SUCCEEDED) .setSafetySourceIssueId(SAFETY_SOURCE_ISSUE_ID) .setSafetySourceIssueActionId(SAFETY_SOURCE_ISSUE_ACTION_ID) - .build() + .build(), ) .addEqualityGroup( SafetyEvent.Builder(SAFETY_EVENT_TYPE_RESOLVING_ACTION_FAILED) @@ -232,7 +232,7 @@ class SafetyEventTest { SafetyEvent.Builder(SAFETY_EVENT_TYPE_RESOLVING_ACTION_FAILED) .setSafetySourceIssueId(SAFETY_SOURCE_ISSUE_ID) .setSafetySourceIssueActionId(SAFETY_SOURCE_ISSUE_ACTION_ID) - .build() + .build(), ) .addEqualityGroup(SafetyEvent.Builder(SAFETY_EVENT_TYPE_DEVICE_REBOOTED).build()) .addEqualityGroup(SafetyEvent.Builder(SAFETY_EVENT_TYPE_DEVICE_LOCALE_CHANGED).build()) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceDataTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceDataTest.kt index ba2ab3d76..287aa15a3 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceDataTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceDataTest.kt @@ -350,11 +350,11 @@ class SafetySourceDataTest { EqualsHashCodeToStringTester.ofParcelable(parcelableCreator = SafetySourceData.CREATOR) .addEqualityGroup( SafetySourceData.Builder().setStatus(firstStatus).build(), - SafetySourceData.Builder().setStatus(firstStatus).build() + SafetySourceData.Builder().setStatus(firstStatus).build(), ) .addEqualityGroup( SafetySourceData.Builder().addIssue(firstIssue).addIssue(secondIssue).build(), - SafetySourceData.Builder().addIssue(firstIssue).addIssue(secondIssue).build() + SafetySourceData.Builder().addIssue(firstIssue).addIssue(secondIssue).build(), ) .addEqualityGroup( SafetySourceData.Builder() @@ -366,7 +366,7 @@ class SafetySourceDataTest { .setStatus(firstStatus) .addIssue(firstIssue) .addIssue(secondIssue) - .build() + .build(), ) .addEqualityGroup(SafetySourceData.Builder().setStatus(secondStatus).build()) .addEqualityGroup( @@ -394,11 +394,11 @@ class SafetySourceDataTest { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetySourceData.CREATOR, ignoreToString = true, - createCopy = { SafetySourceData.Builder(it).build() } + createCopy = { SafetySourceData.Builder(it).build() }, ) .addEqualityGroup( SafetySourceData.Builder().setStatus(firstStatus).build(), - SafetySourceData.Builder().setStatus(firstStatus).setExtras(filledExtras).build() + SafetySourceData.Builder().setStatus(firstStatus).setExtras(filledExtras).build(), ) .addEqualityGroup( SafetySourceData.Builder().addIssue(firstIssue).addIssue(secondIssue).build(), @@ -406,7 +406,7 @@ class SafetySourceDataTest { .addIssue(firstIssue) .addIssue(secondIssue) .setExtras(filledExtras) - .build() + .build(), ) .addEqualityGroup( SafetySourceData.Builder() @@ -419,11 +419,11 @@ class SafetySourceDataTest { .addIssue(firstIssue) .addIssue(secondIssue) .setExtras(filledExtras) - .build() + .build(), ) .addEqualityGroup( SafetySourceData.Builder().setStatus(secondStatus).build(), - SafetySourceData.Builder().setStatus(secondStatus).setExtras(filledExtras).build() + SafetySourceData.Builder().setStatus(secondStatus).setExtras(filledExtras).build(), ) .addEqualityGroup( SafetySourceData.Builder().addIssue(secondIssue).addIssue(firstIssue).build(), @@ -431,11 +431,11 @@ class SafetySourceDataTest { .addIssue(secondIssue) .addIssue(firstIssue) .setExtras(filledExtras) - .build() + .build(), ) .addEqualityGroup( SafetySourceData.Builder().addIssue(firstIssue).build(), - SafetySourceData.Builder().addIssue(firstIssue).setExtras(filledExtras).build() + SafetySourceData.Builder().addIssue(firstIssue).setExtras(filledExtras).build(), ) .addEqualityGroup( SafetySourceData.Builder() @@ -448,7 +448,7 @@ class SafetySourceDataTest { .addIssue(firstIssue) .addIssue(secondIssue) .setExtras(filledExtras) - .build() + .build(), ) .test() } @@ -485,7 +485,7 @@ class SafetySourceDataTest { context, /* requestCode = */ 0, Intent("Status PendingIntent $id"), - FLAG_IMMUTABLE + FLAG_IMMUTABLE, ) ) .build() @@ -496,7 +496,7 @@ class SafetySourceDataTest { "Issue summary $id", "Issue summary $id", severityLevel, - "Issue type id $id" + "Issue type id $id", ) .addAction( SafetySourceIssue.Action.Builder( @@ -506,8 +506,8 @@ class SafetySourceDataTest { context, /* requestCode = */ 0, Intent("Issue PendingIntent $id"), - FLAG_IMMUTABLE - ) + FLAG_IMMUTABLE, + ), ) .build() ) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceErrorDetailsTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceErrorDetailsTest.kt index 336462491..4133f6f17 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceErrorDetailsTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceErrorDetailsTest.kt @@ -51,7 +51,7 @@ class SafetySourceErrorDetailsTest { SafetySourceErrorDetails(SAFETY_EVENT), SafetySourceErrorDetails( SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build() - ) + ), ) .addEqualityGroup( SafetySourceErrorDetails( diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceIssueTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceIssueTest.kt index 2d19a3175..a7149e4d7 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceIssueTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceIssueTest.kt @@ -238,7 +238,7 @@ class SafetySourceIssueTest { Action.Builder("action_id", "Action label", pendingIntent1) .setConfirmationDialogDetails(confirmationDialogDetails) .setWillResolve(false) - .build() + .build(), ) .addEqualityGroup( Action.Builder("action_id", "Action label", pendingIntent1) @@ -270,8 +270,8 @@ class SafetySourceIssueTest { context, 0, Intent("Other action PendingIntent"), - FLAG_IMMUTABLE - ) + FLAG_IMMUTABLE, + ), ) .setConfirmationDialogDetails(confirmationDialogDetails) .build() @@ -465,7 +465,7 @@ class SafetySourceIssueTest { fun notification_equalsHashCodeToString_usingEqualsHashCodeToStringTester() { EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = Notification.CREATOR, - createCopy = { Notification.Builder(it).build() } + createCopy = { Notification.Builder(it).build() }, ) .addEqualityGroup( Notification.Builder("Title", "Text").build(), @@ -477,7 +477,7 @@ class SafetySourceIssueTest { .addEqualityGroup(Notification.Builder("Title", "Text").addAction(action2).build()) .addEqualityGroup( Notification.Builder("Title", "Text").addAction(action1).addAction(action2).build(), - Notification.Builder("Title", "Text").addActions(listOf(action1, action2)).build() + Notification.Builder("Title", "Text").addActions(listOf(action1, action2)).build(), ) .test() } @@ -538,7 +538,7 @@ class SafetySourceIssueTest { ) .addEqualityGroup( ConfirmationDialogDetails("Title", "Text", "Accept", "Deny"), - ConfirmationDialogDetails("Title", "Text", "Accept", "Deny") + ConfirmationDialogDetails("Title", "Text", "Accept", "Deny"), ) .addEqualityGroup(ConfirmationDialogDetails("Other title", "Text", "Accept", "Deny")) .addEqualityGroup(ConfirmationDialogDetails("Title", "Other text", "Accept", "Deny")) @@ -555,7 +555,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -571,7 +571,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -587,7 +587,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -603,7 +603,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .addAction(action1) @@ -620,7 +620,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -637,7 +637,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -654,7 +654,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setAttributionTitle("attribution title") @@ -672,7 +672,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -689,7 +689,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) assertFails { safetySourceIssueBuilder.setAttributionTitle("title") } @@ -703,7 +703,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -719,7 +719,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -735,7 +735,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setIssueCategory(ISSUE_CATEGORY_DEVICE) @@ -753,7 +753,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PASSWORDS) @@ -771,7 +771,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .addAction(action2) @@ -788,7 +788,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .addAction(action2) @@ -806,7 +806,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) val actions = safetySourceIssueBuilder.build().actions @@ -824,7 +824,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .addAction(action2) @@ -843,7 +843,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -859,7 +859,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setOnDismissPendingIntent(pendingIntentService) @@ -877,7 +877,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -894,7 +894,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setDeduplicationId("deduplication_id") @@ -912,7 +912,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -929,7 +929,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) assertFails { safetySourceIssueBuilder.setDeduplicationId("id") } @@ -943,7 +943,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -960,7 +960,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -977,7 +977,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setCustomNotification( @@ -1004,7 +1004,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1021,7 +1021,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) assertFails { safetySourceIssueBuilder.setCustomNotification(null) } @@ -1036,7 +1036,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1054,7 +1054,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setNotificationBehavior(SafetySourceIssue.NOTIFICATION_BEHAVIOR_NEVER) @@ -1073,7 +1073,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1090,7 +1090,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = @@ -1110,7 +1110,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) assertFails { safetySourceIssueBuilder.setNotificationBehavior(0) } @@ -1125,7 +1125,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1143,7 +1143,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) @@ -1162,7 +1162,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1179,7 +1179,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = @@ -1199,7 +1199,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) assertFails { safetySourceIssueBuilder.setIssueActionability(0) } @@ -1213,7 +1213,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) } } @@ -1226,7 +1226,7 @@ class SafetySourceIssueTest { Generic.asNull(), "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) } } @@ -1239,7 +1239,7 @@ class SafetySourceIssueTest { "Issue title", Generic.asNull(), SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) } } @@ -1253,7 +1253,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_UNSPECIFIED, - "issue_type_id" + "issue_type_id", ) } assertThat(exception) @@ -1270,7 +1270,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", -1, - "issue_type_id" + "issue_type_id", ) } assertThat(exception) @@ -1286,7 +1286,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - Generic.asNull() + Generic.asNull(), ) } } @@ -1299,7 +1299,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = @@ -1319,7 +1319,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) @@ -1339,7 +1339,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = assertFailsWith(IllegalArgumentException::class) { @@ -1348,7 +1348,7 @@ class SafetySourceIssueTest { context, /* requestCode = */ 0, Intent("PendingIntent activity"), - FLAG_IMMUTABLE + FLAG_IMMUTABLE, ) ) } @@ -1365,7 +1365,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .addAction(action1) @@ -1385,7 +1385,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = @@ -1410,7 +1410,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .addAction(action2) @@ -1432,7 +1432,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) val exception = @@ -1452,7 +1452,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_TIP) .build() @@ -1469,7 +1469,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) .build() @@ -1485,7 +1485,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1505,7 +1505,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1526,7 +1526,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1553,7 +1553,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_DATA) @@ -1601,7 +1601,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1622,7 +1622,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1641,7 +1641,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1655,7 +1655,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1663,7 +1663,7 @@ class SafetySourceIssueTest { .addAction(action2) .setOnDismissPendingIntent(pendingIntentService) .setAttributionTitle("attribution title") - .build() + .build(), ) .addEqualityGroup( SafetySourceIssue.Builder( @@ -1671,7 +1671,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_CRITICAL_WARNING, - "issue_type_id" + "issue_type_id", ) .setAttributionTitle("Other issue attribution title") .addAction(action1) @@ -1683,7 +1683,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1698,7 +1698,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1707,7 +1707,7 @@ class SafetySourceIssueTest { .setOnDismissPendingIntent(pendingIntentService) .setAttributionTitle("attribution title") .setDeduplicationId("deduplication_id") - .build() + .build(), ) .addEqualityGroup( SafetySourceIssue.Builder( @@ -1715,7 +1715,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1732,7 +1732,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_DATA) @@ -1745,7 +1745,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PASSWORDS) @@ -1758,7 +1758,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PERSONAL_SAFETY) @@ -1771,7 +1771,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_MANUAL) .addAction(action1) @@ -1786,7 +1786,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_TIP) .addAction(action1) @@ -1796,11 +1796,11 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_TIP) .addAction(action1) - .build() + .build(), ) .addEqualityGroup( SafetySourceIssue.Builder( @@ -1808,7 +1808,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) .addAction(action1) @@ -1820,7 +1820,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) .build() @@ -1831,7 +1831,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setNotificationBehavior(SafetySourceIssue.NOTIFICATION_BEHAVIOR_DELAYED) .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) @@ -1843,7 +1843,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1864,7 +1864,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1889,7 +1889,7 @@ class SafetySourceIssueTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetySourceIssue.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup( SafetySourceIssue.Builder( @@ -1897,7 +1897,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -1910,14 +1910,14 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) .addAction(action1) .addAction(action2) .setOnDismissPendingIntent(pendingIntentService) - .build() + .build(), ) .addEqualityGroup( SafetySourceIssue.Builder( @@ -1925,7 +1925,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1936,7 +1936,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1947,7 +1947,7 @@ class SafetySourceIssueTest { "Other issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1958,7 +1958,7 @@ class SafetySourceIssueTest { "Issue title", "Different issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1969,7 +1969,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_CRITICAL_WARNING, - "issue_type_id" + "issue_type_id", ) .addAction(action1) .build() @@ -1980,7 +1980,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "other_issue_type_id" + "other_issue_type_id", ) .addAction(action1) .build() @@ -1991,7 +1991,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .addAction(action2) .build() @@ -2002,7 +2002,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(ISSUE_CATEGORY_ACCOUNT) @@ -2017,7 +2017,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(ISSUE_CATEGORY_DEVICE) @@ -2032,7 +2032,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(ISSUE_CATEGORY_DEVICE) @@ -2047,7 +2047,7 @@ class SafetySourceIssueTest { "Issue title", "Issue summary", SEVERITY_LEVEL_INFORMATION, - "issue_type_id" + "issue_type_id", ) .setSubtitle("Other issue subtitle") .setIssueCategory(ISSUE_CATEGORY_DEVICE) @@ -2058,7 +2058,7 @@ class SafetySourceIssueTest { context, 0, Intent("Other PendingIntent service"), - FLAG_IMMUTABLE + FLAG_IMMUTABLE, ) ) .build() @@ -2069,14 +2069,14 @@ class SafetySourceIssueTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = Action.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup( Action.Builder("action_id", "Action label", pendingIntent1).build(), Action.Builder("action_id", "Action label", pendingIntent1).build(), Action.Builder("action_id", "Action label", pendingIntent1) .setWillResolve(false) - .build() + .build(), ) .addEqualityGroup( Action.Builder("action_id", "Action label", pendingIntent1) @@ -2102,8 +2102,8 @@ class SafetySourceIssueTest { context, 0, Intent("Other action PendingIntent"), - FLAG_IMMUTABLE - ) + FLAG_IMMUTABLE, + ), ) .build() ) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceStatusTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceStatusTest.kt index 2a20cd45d..04a91b268 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceStatusTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/SafetySourceStatusTest.kt @@ -98,7 +98,7 @@ class SafetySourceStatusTest { EqualsHashCodeToStringTester.ofParcelable(parcelableCreator = IconAction.CREATOR) .addEqualityGroup( IconAction(ICON_TYPE_GEAR, pendingIntent1), - IconAction(ICON_TYPE_GEAR, pendingIntent1) + IconAction(ICON_TYPE_GEAR, pendingIntent1), ) .addEqualityGroup(IconAction(ICON_TYPE_INFO, pendingIntent1)) .addEqualityGroup(IconAction(ICON_TYPE_GEAR, pendingIntent2)) @@ -195,7 +195,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( Generic.asNull(), "Status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) } } @@ -229,7 +229,7 @@ class SafetySourceStatusTest { context, /* requestCode = */ 0, Intent("PendingIntent service"), - FLAG_IMMUTABLE + FLAG_IMMUTABLE, ) ) } @@ -298,13 +298,13 @@ class SafetySourceStatusTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetySourceStatus.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup( SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .setPendingIntent(pendingIntent1) .setIconAction(iconAction1) @@ -313,18 +313,18 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .setPendingIntent(pendingIntent1) .setIconAction(iconAction1) .setEnabled(true) - .build() + .build(), ) .addEqualityGroup( SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .build() ) @@ -332,7 +332,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Other status title", "Status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .build() ) @@ -340,7 +340,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Other status summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .build() ) @@ -348,7 +348,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .build() ) @@ -356,7 +356,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setPendingIntent(pendingIntent2) .build() @@ -365,7 +365,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setIconAction(iconAction2) .build() @@ -374,7 +374,7 @@ class SafetySourceStatusTest { SafetySourceStatus.Builder( "Status title", "Status summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setEnabled(false) .build() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetyCenterConfigTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetyCenterConfigTest.kt index 68dcd4a11..c3b6ef1b3 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetyCenterConfigTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetyCenterConfigTest.kt @@ -36,7 +36,7 @@ class SafetyCenterConfigTest { assertThat(BASE.safetySourcesGroups) .containsExactly( SafetySourcesGroupTest.STATELESS_INFERRED, - SafetySourcesGroupTest.HIDDEN_INFERRED + SafetySourcesGroupTest.HIDDEN_INFERRED, ) .inOrder() } @@ -65,7 +65,7 @@ class SafetyCenterConfigTest { assertThat(sourceGroups) .containsExactly( SafetySourcesGroupTest.STATELESS_INFERRED, - SafetySourcesGroupTest.HIDDEN_INFERRED + SafetySourcesGroupTest.HIDDEN_INFERRED, ) .inOrder() } @@ -99,14 +99,14 @@ class SafetyCenterConfigTest { ) = EqualsHashCodeToStringTester.ofParcelable( parcelableCreator = SafetyCenterConfig.CREATOR, - createCopy = createCopyFromBuilder + createCopy = createCopyFromBuilder, ) .addEqualityGroup( BASE, SafetyCenterConfig.Builder() .addSafetySourcesGroup(SafetySourcesGroupTest.STATELESS_INFERRED) .addSafetySourcesGroup(SafetySourcesGroupTest.HIDDEN_INFERRED) - .build() + .build(), ) .addEqualityGroup( SafetyCenterConfig.Builder() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourceTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourceTest.kt index 4b6f0f6f9..210a5b5e7 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourceTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourceTest.kt @@ -368,7 +368,7 @@ class SafetySourceTest { { SafetySource.Builder(it).build() } } else { null - } + }, ) .addEqualityGroup(DYNAMIC_BAREBONE) .addEqualityGroup( @@ -396,7 +396,7 @@ class SafetySourceTest { setTitleForPrivateProfileResId(REFERENCE_RES_ID) } } - .build() + .build(), ) .addEqualityGroup(DYNAMIC_HIDDEN) .addEqualityGroup(DYNAMIC_HIDDEN_WITH_SEARCH) diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourcesGroupTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourcesGroupTest.kt index f741369eb..06aad5d40 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourcesGroupTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/config/SafetySourcesGroupTest.kt @@ -155,7 +155,7 @@ class SafetySourcesGroupTest { .containsExactly( SafetySourceTest.DYNAMIC_BAREBONE, SafetySourceTest.STATIC_BAREBONE, - SafetySourceTest.ISSUE_ONLY_BAREBONE + SafetySourceTest.ISSUE_ONLY_BAREBONE, ) .inOrder() assertThat(STATELESS_INFERRED.safetySources) @@ -169,7 +169,7 @@ class SafetySourcesGroupTest { .containsExactly( SafetySourceTest.DYNAMIC_BAREBONE, SafetySourceTest.STATIC_BAREBONE, - SafetySourceTest.ISSUE_ONLY_BAREBONE + SafetySourceTest.ISSUE_ONLY_BAREBONE, ) assertThat(STATELESS_BAREBONE.safetySources) .containsExactly(SafetySourceTest.STATIC_BAREBONE) @@ -177,7 +177,7 @@ class SafetySourcesGroupTest { .containsExactly( SafetySourceTest.DYNAMIC_BAREBONE, SafetySourceTest.STATIC_BAREBONE, - SafetySourceTest.ISSUE_ONLY_BAREBONE + SafetySourceTest.ISSUE_ONLY_BAREBONE, ) assertThat(HIDDEN_BAREBONE.safetySources) .containsExactly(SafetySourceTest.ISSUE_ONLY_BAREBONE) @@ -325,7 +325,7 @@ class SafetySourcesGroupTest { { SafetySourcesGroup.Builder(it).build() } } else { null - } + }, ) .addEqualityGroup(STATEFUL_INFERRED_WITH_SUMMARY) .addEqualityGroup(STATEFUL_INFERRED_WITH_ICON) @@ -340,7 +340,7 @@ class SafetySourcesGroupTest { .addSafetySource(SafetySourceTest.DYNAMIC_BAREBONE) .addSafetySource(SafetySourceTest.STATIC_BAREBONE) .addSafetySource(SafetySourceTest.ISSUE_ONLY_BAREBONE) - .build() + .build(), ) .apply { if (SdkLevel.isAtLeastU()) add(STATEFUL_ALL_OPTIONAL) } .toTypedArray() diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/config/XmlConfigTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/config/XmlConfigTest.kt index 7c9e2cffc..34f5c1f69 100644 --- a/tests/cts/safetycenter/src/android/safetycenter/cts/config/XmlConfigTest.kt +++ b/tests/cts/safetycenter/src/android/safetycenter/cts/config/XmlConfigTest.kt @@ -88,7 +88,7 @@ class XmlConfigTest { private fun parseXmlConfig() = SafetyCenterConfigParser.parseXmlResource( safetyCenterResourcesApk.safetyCenterConfig!!, - safetyCenterResourcesApk.resources + safetyCenterResourcesApk.resources, ) companion object { diff --git a/tests/functional/safetycenter/multiusers/Android.bp b/tests/functional/safetycenter/multiusers/Android.bp index 30024221b..745e763f0 100644 --- a/tests/functional/safetycenter/multiusers/Android.bp +++ b/tests/functional/safetycenter/multiusers/Android.bp @@ -36,6 +36,7 @@ android_test { "Harrier", "Nene", "TestApp", + "bedstead-enterprise", "com.android.permission.flags-aconfig-java-export", ], test_suites: [ diff --git a/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt b/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt index ff5dcc1f6..9dba6f9c2 100644 --- a/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt +++ b/tests/functional/safetycenter/multiusers/src/android/safetycenter/functional/multiusers/SafetyCenterMultiUsersTest.kt @@ -41,16 +41,20 @@ import android.safetycenter.SafetyEvent import android.safetycenter.SafetySourceData import androidx.test.core.app.ApplicationProvider import androidx.test.filters.LargeTest -import com.android.bedstead.harrier.BedsteadJUnit4 -import com.android.bedstead.harrier.DeviceState -import com.android.bedstead.harrier.annotations.EnsureHasAdditionalUser -import com.android.bedstead.harrier.annotations.EnsureHasCloneProfile -import com.android.bedstead.enterprise.annotations.EnsureHasNoWorkProfile -import com.android.bedstead.harrier.annotations.EnsureHasPrivateProfile -import com.android.bedstead.harrier.annotations.EnsureHasNoPrivateProfile -import com.android.bedstead.enterprise.annotations.EnsureHasWorkProfile import com.android.bedstead.enterprise.annotations.EnsureHasDeviceOwner import com.android.bedstead.enterprise.annotations.EnsureHasNoDeviceOwner +import com.android.bedstead.enterprise.annotations.EnsureHasNoWorkProfile +import com.android.bedstead.enterprise.annotations.EnsureHasWorkProfile +import com.android.bedstead.enterprise.workProfile +import com.android.bedstead.harrier.BedsteadJUnit4 +import com.android.bedstead.harrier.DeviceState +import com.android.bedstead.multiuser.additionalUser +import com.android.bedstead.multiuser.annotations.EnsureHasAdditionalUser +import com.android.bedstead.multiuser.annotations.EnsureHasCloneProfile +import com.android.bedstead.multiuser.annotations.EnsureHasNoPrivateProfile +import com.android.bedstead.multiuser.annotations.EnsureHasPrivateProfile +import com.android.bedstead.multiuser.cloneProfile +import com.android.bedstead.multiuser.privateProfile import com.android.bedstead.nene.TestApis import com.android.bedstead.nene.types.OptionalBoolean.TRUE import com.android.compatibility.common.util.DisableAnimationRule @@ -132,30 +136,30 @@ class SafetyCenterMultiUsersTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( DYNAMIC_BAREBONE_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueCritical( ISSUE_ONLY_BAREBONE_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( DYNAMIC_DISABLED_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID - ) + groupId = MIXED_STATELESS_GROUP_ID, + ), ) private val dynamicBareboneDefault: SafetyCenterEntry @@ -181,7 +185,7 @@ class SafetyCenterMultiUsersTest { .safetyCenterEntryDefaultBuilder( DYNAMIC_DISABLED_ID, userId = deviceState.workProfile().id(), - title = "Paste" + title = "Paste", ) .setPendingIntent(null) .setEnabled(false) @@ -196,11 +200,9 @@ class SafetyCenterMultiUsersTest { DYNAMIC_DISABLED_ID, deviceState.workProfile().id(), title = "Ok title for Work", - pendingIntent = null - ) - .setSummary( - safetyCenterResourcesApk.getStringByName("work_profile_paused"), + pendingIntent = null, ) + .setSummary(safetyCenterResourcesApk.getStringByName("work_profile_paused")) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) .setEnabled(false) .build() @@ -212,7 +214,7 @@ class SafetyCenterMultiUsersTest { get() = safetyCenterTestData.safetyCenterEntryUnspecified( DYNAMIC_HIDDEN_ID, - pendingIntent = null + pendingIntent = null, ) private val dynamicHiddenForWorkUpdated: SafetyCenterEntry @@ -225,11 +227,9 @@ class SafetyCenterMultiUsersTest { DYNAMIC_HIDDEN_ID, deviceState.workProfile().id(), title = "Ok title for Work", - pendingIntent = null - ) - .setSummary( - safetyCenterResourcesApk.getStringByName("work_profile_paused"), + pendingIntent = null, ) + .setSummary(safetyCenterResourcesApk.getStringByName("work_profile_paused")) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) .setEnabled(false) .build() @@ -262,12 +262,12 @@ class SafetyCenterMultiUsersTest { .safetyCenterEntryDefaultStaticBuilder( STATIC_ALL_OPTIONAL_ID, userId = deviceState.workProfile().id(), - title = "Paste" + title = "Paste", ) .setPendingIntent( createTestActivityRedirectPendingIntentForUser( deviceState.workProfile().userHandle(), - explicit = false + explicit = false, ) ) @@ -287,12 +287,12 @@ class SafetyCenterMultiUsersTest { .safetyCenterEntryDefaultStaticBuilder( STATIC_ALL_OPTIONAL_ID, userId = deviceState.privateProfile().id(), - title = "Unknown" + title = "Unknown", ) .setPendingIntent( createTestActivityRedirectPendingIntentForUser( deviceState.privateProfile().userHandle(), - explicit = false + explicit = false, ) ) @@ -320,20 +320,20 @@ class SafetyCenterMultiUsersTest { .setPendingIntent( createTestActivityRedirectPendingIntentForUser( deviceState.workProfile().userHandle(), - explicit + explicit, ) ) private fun staticEntryForPrivateBuilder( title: CharSequence = "Unknown", - explicit: Boolean = true + explicit: Boolean = true, ) = SafetyCenterStaticEntry.Builder(title) .setSummary("OK") .setPendingIntent( createTestActivityRedirectPendingIntentForUser( deviceState.privateProfile().userHandle(), - explicit + explicit, ) ) @@ -381,11 +381,11 @@ class SafetyCenterMultiUsersTest { pendingIntent = createTestActivityRedirectPendingIntentForUser( deviceState.additionalUser().userHandle() - ) + ), ) ) ), - emptyList() + emptyList(), ) @get:Rule(order = 1) val supportsSafetyCenterRule = SupportsSafetyCenterRule(context) @@ -449,7 +449,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.workProfile().userHandle()) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) setQuietMode(true) @@ -470,7 +470,7 @@ class SafetyCenterMultiUsersTest { val dataForAdditionalUser = safetySourceTestData.information additionalUserSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForAdditionalUser + dataForAdditionalUser, ) checkState( additionalUserSafetyCenterManager.getSafetySourceDataWithInteractAcrossUsersPermission( @@ -510,7 +510,7 @@ class SafetyCenterMultiUsersTest { val dataForWork = safetySourceTestData.informationWithIssueForWork managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) TestApis.packages().find(context.packageName).uninstall(deviceState.workProfile()) @@ -531,7 +531,7 @@ class SafetyCenterMultiUsersTest { val dataForWork = safetySourceTestData.informationWithIssueForWork managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) deviceState.workProfile().remove() @@ -552,7 +552,7 @@ class SafetyCenterMultiUsersTest { val dataForWork = safetySourceTestData.informationWithIssueForWork managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) setQuietMode(true) @@ -593,14 +593,14 @@ class SafetyCenterMultiUsersTest { staticGroupBuilder .setEntries(listOf(staticBarebone, staticAllOptional)) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( "OK", - listOf(createStaticEntry(), createStaticEntry(explicit = false)) + listOf(createStaticEntry(), createStaticEntry(explicit = false)), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -628,7 +628,7 @@ class SafetyCenterMultiUsersTest { listOf( dynamicBareboneDefault, dynamicDisabledDefault, - dynamicDisabledForWorkDefault + dynamicDisabledForWorkDefault, ) ) .setSeverityUnspecifiedIconType( @@ -642,7 +642,7 @@ class SafetyCenterMultiUsersTest { listOf(staticBarebone, staticAllOptional, staticAllOptionalForWork) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -651,10 +651,10 @@ class SafetyCenterMultiUsersTest { createStaticEntry(), createStaticEntryForWork(), createStaticEntry(explicit = false), - createStaticEntryForWork(explicit = false) - ) + createStaticEntryForWork(explicit = false), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -682,7 +682,7 @@ class SafetyCenterMultiUsersTest { dynamicBareboneUpdated, dynamicDisabledUpdated, dynamicDisabledForWorkDefault, - dynamicHiddenUpdated + dynamicHiddenUpdated, ) ) .setSeverityUnspecifiedIconType( @@ -696,7 +696,7 @@ class SafetyCenterMultiUsersTest { listOf(staticBarebone, staticAllOptional, staticAllOptionalForWork) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -705,10 +705,10 @@ class SafetyCenterMultiUsersTest { staticEntryUpdated, createStaticEntryForWork(), createStaticEntry(explicit = false), - createStaticEntryForWork(explicit = false) - ) + createStaticEntryForWork(explicit = false), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -730,56 +730,56 @@ class SafetyCenterMultiUsersTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( DYNAMIC_BAREBONE_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueCritical( ISSUE_ONLY_BAREBONE_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( DYNAMIC_DISABLED_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_DISABLED_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_HIDDEN_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_ALL_OPTIONAL_ID, managedUserId, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID - ) + groupId = MIXED_STATELESS_GROUP_ID, + ), ), listOf( SafetyCenterEntryOrGroup( @@ -792,7 +792,7 @@ class SafetyCenterMultiUsersTest { dynamicDisabledUpdated, dynamicDisabledForWorkUpdated, dynamicHiddenUpdated, - dynamicHiddenForWorkUpdated + dynamicHiddenForWorkUpdated, ) ) .setSeverityUnspecifiedIconType( @@ -806,7 +806,7 @@ class SafetyCenterMultiUsersTest { listOf(staticBarebone, staticAllOptional, staticAllOptionalForWork) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -815,10 +815,10 @@ class SafetyCenterMultiUsersTest { staticEntryUpdated, staticEntryForWorkUpdated, createStaticEntry(explicit = false), - createStaticEntryForWork(explicit = false) - ) + createStaticEntryForWork(explicit = false), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -842,56 +842,56 @@ class SafetyCenterMultiUsersTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( DYNAMIC_BAREBONE_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueCritical( ISSUE_ONLY_BAREBONE_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( DYNAMIC_DISABLED_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_DISABLED_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_HIDDEN_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_ALL_OPTIONAL_ID, managedUserId, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID - ) + groupId = MIXED_STATELESS_GROUP_ID, + ), ), listOf( SafetyCenterEntryOrGroup( @@ -904,7 +904,7 @@ class SafetyCenterMultiUsersTest { dynamicDisabledUpdated, dynamicDisabledForWorkUpdated, dynamicHiddenUpdated, - dynamicHiddenForWorkUpdated + dynamicHiddenForWorkUpdated, ) ) .setSeverityUnspecifiedIconType( @@ -918,7 +918,7 @@ class SafetyCenterMultiUsersTest { listOf(staticBarebone, staticAllOptional, staticAllOptionalForWork) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -927,10 +927,10 @@ class SafetyCenterMultiUsersTest { staticEntryUpdated, staticEntryForWorkUpdated, createStaticEntry(explicit = false), - createStaticEntryForWork(explicit = false) - ) + createStaticEntryForWork(explicit = false), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -956,82 +956,82 @@ class SafetyCenterMultiUsersTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( DYNAMIC_BAREBONE_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueCritical( ISSUE_ONLY_BAREBONE_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( DYNAMIC_DISABLED_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_DISABLED_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_HIDDEN_ID, managedUserId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_ALL_OPTIONAL_ID, managedUserId, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, managedUserId, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_DISABLED_ID, privateProfileId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_HIDDEN_ID, privateProfileId, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_ALL_OPTIONAL_ID, privateProfileId, attributionTitle = null, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, privateProfileId, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, privateProfileId, - groupId = MIXED_STATELESS_GROUP_ID - ) + groupId = MIXED_STATELESS_GROUP_ID, + ), ), listOf( SafetyCenterEntryOrGroup( @@ -1046,7 +1046,7 @@ class SafetyCenterMultiUsersTest { dynamicDisabledForPrivateUpdated, dynamicHiddenUpdated, dynamicHiddenForWorkUpdated, - dynamicHiddenForPrivateUpdated + dynamicHiddenForPrivateUpdated, ) ) .setSeverityUnspecifiedIconType( @@ -1061,11 +1061,11 @@ class SafetyCenterMultiUsersTest { staticBarebone, staticAllOptional, staticAllOptionalForWork, - staticAllOptionalForPrivate + staticAllOptionalForPrivate, ) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -1076,10 +1076,10 @@ class SafetyCenterMultiUsersTest { staticEntryForPrivateUpdated, createStaticEntry(explicit = false), createStaticEntryForWork(explicit = false), - createStaticEntryForPrivate(explicit = false) - ) + createStaticEntryForPrivate(explicit = false), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -1124,11 +1124,11 @@ class SafetyCenterMultiUsersTest { listOf( staticBarebone, staticAllOptional, - staticAllOptionalForWorkPaused + staticAllOptionalForWorkPaused, ) ) .build() - ) + ), ), listOf( SafetyCenterStaticEntryGroup( @@ -1137,10 +1137,10 @@ class SafetyCenterMultiUsersTest { staticEntryUpdated, staticEntryForWorkPausedUpdated, createStaticEntry(explicit = false), - createStaticEntryForWorkPaused() - ) + createStaticEntryForWorkPaused(), + ), ) - ) + ), ) assertThat(apiSafetyCenterData.withoutExtras()).isEqualTo(safetyCenterDataFromComplexConfig) } @@ -1157,7 +1157,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.workProfile().userHandle()) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForPrimaryUserWorkProfile + dataForPrimaryUserWorkProfile, ) val additionalUserSafetyCenterManager = @@ -1199,8 +1199,8 @@ class SafetyCenterMultiUsersTest { pendingIntent = createTestActivityRedirectPendingIntentForUser( deviceState.workProfile().userHandle() - ) - ) + ), + ), ) ) .setSeverityUnspecifiedIconType( @@ -1209,7 +1209,7 @@ class SafetyCenterMultiUsersTest { .build() ) ), - emptyList() + emptyList(), ) checkState( safetyCenterManager.getSafetyCenterDataWithPermission() == @@ -1231,7 +1231,7 @@ class SafetyCenterMultiUsersTest { safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID) ) ), - emptyList() + emptyList(), ) assertThat(safetyCenterManager.getSafetyCenterDataWithPermission()) .isEqualTo(safetyCenterDataForPrimaryUser) @@ -1271,8 +1271,8 @@ class SafetyCenterMultiUsersTest { pendingIntent = createTestActivityRedirectPendingIntentForUser( deviceState.privateProfile().userHandle() - ) - ) + ), + ), ) ) .setSeverityUnspecifiedIconType( @@ -1281,7 +1281,7 @@ class SafetyCenterMultiUsersTest { .build() ) ), - emptyList() + emptyList(), ) assertThat(safetyCenterManager.getSafetyCenterDataWithPermission()) @@ -1302,7 +1302,7 @@ class SafetyCenterMultiUsersTest { safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ALL_PROFILE_ID) ) ), - emptyList() + emptyList(), ) assertThat(safetyCenterManager.getSafetyCenterDataWithPermission()) .isEqualTo(safetyCenterDataForPrimaryUser) @@ -1345,7 +1345,7 @@ class SafetyCenterMultiUsersTest { assertFailsWith(IllegalArgumentException::class) { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_ALL_OPTIONAL_ID, - dataForWork + dataForWork, ) } } @@ -1362,7 +1362,7 @@ class SafetyCenterMultiUsersTest { managedSafetyCenterManager.setSafetySourceData( SINGLE_SOURCE_ALL_PROFILE_ID, dataForWork, - EVENT_SOURCE_STATE_CHANGED + EVENT_SOURCE_STATE_CHANGED, ) } } @@ -1378,7 +1378,7 @@ class SafetyCenterMultiUsersTest { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) val safetySourceData = @@ -1399,7 +1399,7 @@ class SafetyCenterMultiUsersTest { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) val safetySourceData = @@ -1419,7 +1419,7 @@ class SafetyCenterMultiUsersTest { clonedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForClone + dataForClone, ) val safetySourceData = @@ -1440,7 +1440,7 @@ class SafetyCenterMultiUsersTest { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) val safetySourceData = @@ -1464,7 +1464,7 @@ class SafetyCenterMultiUsersTest { SafetySourceTestData.issuesOnly(safetySourceTestData.criticalResolvingGeneralIssue) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_ALL_PROFILE_SOURCE_ID, - dataForWorkProfile + dataForWorkProfile, ) val apiSafetySourceData = @@ -1488,7 +1488,7 @@ class SafetyCenterMultiUsersTest { assertFailsWith(IllegalArgumentException::class) { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ID, - dataForWork + dataForWork, ) } } @@ -1505,7 +1505,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.workProfile().userHandle()) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) val apiSafetySourceData = @@ -1532,14 +1532,14 @@ class SafetyCenterMultiUsersTest { managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ALL_PROFILE_ID, - dataForWork + dataForWork, ) TestNotificationListener.waitForNotificationsMatching( NotificationCharacteristics( title = "Information issue title", text = "Information issue summary", - actions = listOf("Review") + actions = listOf("Review"), ) ) } @@ -1555,7 +1555,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.additionalUser().userHandle()) additionalUserSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ID, - dataForPrimaryUser + dataForPrimaryUser, ) val apiSafetySourceData = @@ -1577,7 +1577,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.additionalUser().userHandle()) additionalUserSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ID, - dataForAdditionalUser + dataForAdditionalUser, ) val apiSafetySourceDataForPrimaryUser = @@ -1600,7 +1600,7 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.additionalUser().userHandle()) additionalUserSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( SINGLE_SOURCE_ID, - dataForAdditionalUser + dataForAdditionalUser, ) val apiSafetySourceDataForPrimaryUser = @@ -1627,12 +1627,12 @@ class SafetyCenterMultiUsersTest { private fun createTestActivityRedirectPendingIntentForUser( user: UserHandle, - explicit: Boolean = true + explicit: Boolean = true, ): PendingIntent { return callWithShellPermissionIdentity(INTERACT_ACROSS_USERS) { SafetySourceTestData.createRedirectPendingIntent( getContextForUser(user), - SafetySourceTestData.createTestActivityIntent(getContextForUser(user), explicit) + SafetySourceTestData.createTestActivityIntent(getContextForUser(user), explicit), ) } } @@ -1647,7 +1647,7 @@ class SafetyCenterMultiUsersTest { private fun SafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( id: String, dataToSet: SafetySourceData, - safetyEvent: SafetyEvent = EVENT_SOURCE_STATE_CHANGED + safetyEvent: SafetyEvent = EVENT_SOURCE_STATE_CHANGED, ) = callWithShellPermissionIdentity(INTERACT_ACROSS_USERS_FULL) { setSafetySourceDataWithPermission(id, dataToSet, safetyEvent) @@ -1691,28 +1691,28 @@ class SafetyCenterMultiUsersTest { private fun updatePrimaryProfileSources() { safetyCenterTestHelper.setData( DYNAMIC_BAREBONE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( DYNAMIC_DISABLED_ID, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(DYNAMIC_HIDDEN_ID, safetySourceTestData.unspecified) safetyCenterTestHelper.setData( ISSUE_ONLY_BAREBONE_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.criticalResolvingGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.criticalResolvingGeneralIssue), ) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) safetyCenterTestHelper.setData( DYNAMIC_IN_STATELESS_ID, - safetySourceTestData.unspecifiedWithIssue + safetySourceTestData.unspecifiedWithIssue, ) safetyCenterTestHelper.setData( ISSUE_ONLY_IN_STATELESS_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) } @@ -1721,23 +1721,23 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.workProfile().userHandle()) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_DISABLED_ID, - safetySourceTestData.informationWithIssueForWork + safetySourceTestData.informationWithIssueForWork, ) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_HIDDEN_ID, - safetySourceTestData.informationWithIssueForWork + safetySourceTestData.informationWithIssueForWork, ) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_IN_STATELESS_ID, - safetySourceTestData.unspecifiedWithIssueForWork + safetySourceTestData.unspecifiedWithIssueForWork, ) managedSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_IN_STATELESS_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) } @@ -1746,23 +1746,23 @@ class SafetyCenterMultiUsersTest { getSafetyCenterManagerForUser(deviceState.privateProfile().userHandle()) privateSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_DISABLED_ID, - safetySourceTestData.informationWithIssueForPrivate + safetySourceTestData.informationWithIssueForPrivate, ) privateSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_HIDDEN_ID, - safetySourceTestData.informationWithIssueForPrivate + safetySourceTestData.informationWithIssueForPrivate, ) privateSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) privateSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( DYNAMIC_IN_STATELESS_ID, - safetySourceTestData.unspecifiedWithIssueForPrivate + safetySourceTestData.unspecifiedWithIssueForPrivate, ) privateSafetyCenterManager.setSafetySourceDataWithInteractAcrossUsersPermission( ISSUE_ONLY_IN_STATELESS_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) } } diff --git a/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt b/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt index 73f435615..7e8205bd6 100644 --- a/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt +++ b/tests/functional/safetycenter/safetycenteractivity/src/android/safetycenter/functional/ui/SafetyCenterActivityTest.kt @@ -120,7 +120,7 @@ class SafetyCenterActivityTest { context.getString(safetyCenterTestConfigs.staticSource1.summaryResId), context.getString(safetyCenterTestConfigs.staticSourceGroup2.titleResId), context.getString(safetyCenterTestConfigs.staticSource2.titleResId), - context.getString(safetyCenterTestConfigs.staticSource2.summaryResId) + context.getString(safetyCenterTestConfigs.staticSource2.summaryResId), ) } } @@ -144,8 +144,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, entrySummary = SAFETY_SOURCE_1_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_2, @@ -153,8 +153,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_2_TITLE, entrySummary = SAFETY_SOURCE_2_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_3, @@ -162,8 +162,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, entrySummary = SAFETY_SOURCE_3_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_4, @@ -171,8 +171,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_4_TITLE, entrySummary = SAFETY_SOURCE_4_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_5, @@ -180,8 +180,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_5_TITLE, entrySummary = SAFETY_SOURCE_5_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) } @@ -190,7 +190,7 @@ class SafetyCenterActivityTest { context.getString(safetyCenterTestConfigs.dynamicSourceGroup1.titleResId), context.getString(safetyCenterTestConfigs.dynamicSourceGroup1.summaryResId), context.getString(safetyCenterTestConfigs.dynamicSourceGroup3.titleResId), - context.getString(safetyCenterTestConfigs.dynamicSourceGroup3.summaryResId) + context.getString(safetyCenterTestConfigs.dynamicSourceGroup3.summaryResId), ) waitAllTextNotDisplayed( SAFETY_SOURCE_1_TITLE, @@ -200,7 +200,7 @@ class SafetyCenterActivityTest { SAFETY_SOURCE_4_TITLE, SAFETY_SOURCE_4_SUMMARY, SAFETY_SOURCE_5_TITLE, - SAFETY_SOURCE_5_SUMMARY + SAFETY_SOURCE_5_SUMMARY, ) } } @@ -215,8 +215,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, entrySummary = SAFETY_SOURCE_1_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_2, @@ -224,8 +224,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_RECOMMENDATION, entryTitle = SAFETY_SOURCE_2_TITLE, entrySummary = SAFETY_SOURCE_2_SUMMARY, - withIssue = true - ) + withIssue = true, + ), ) setData( SOURCE_ID_3, @@ -233,8 +233,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, entrySummary = SAFETY_SOURCE_3_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_4, @@ -242,8 +242,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_RECOMMENDATION, entryTitle = SAFETY_SOURCE_4_TITLE, entrySummary = SAFETY_SOURCE_4_SUMMARY, - withIssue = true - ) + withIssue = true, + ), ) setData( SOURCE_ID_5, @@ -251,8 +251,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_CRITICAL_WARNING, entryTitle = SAFETY_SOURCE_5_TITLE, entrySummary = SAFETY_SOURCE_5_SUMMARY, - withIssue = true - ) + withIssue = true, + ), ) } @@ -261,7 +261,7 @@ class SafetyCenterActivityTest { context.getString(safetyCenterTestConfigs.dynamicSourceGroup1.titleResId), SAFETY_SOURCE_2_SUMMARY, context.getString(safetyCenterTestConfigs.dynamicSourceGroup3.titleResId), - SAFETY_SOURCE_5_SUMMARY + SAFETY_SOURCE_5_SUMMARY, ) waitAllTextNotDisplayed( SAFETY_SOURCE_1_TITLE, @@ -269,7 +269,7 @@ class SafetyCenterActivityTest { SAFETY_SOURCE_1_SUMMARY, SAFETY_SOURCE_4_TITLE, SAFETY_SOURCE_5_TITLE, - SAFETY_SOURCE_4_SUMMARY + SAFETY_SOURCE_4_SUMMARY, ) } } @@ -358,7 +358,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.information) @@ -412,7 +412,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.unspecifiedDisabledWithTestActivityRedirect + safetySourceTestData.unspecifiedDisabledWithTestActivityRedirect, ) context.launchSafetyCenterActivity { @@ -427,7 +427,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.unspecifiedDisabledWithTestActivityRedirect + safetySourceTestData.unspecifiedDisabledWithTestActivityRedirect, ) context.launchSafetyCenterActivity { @@ -489,7 +489,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithIconAction + safetySourceTestData.informationWithIconAction, ) context.launchSafetyCenterActivity { @@ -523,7 +523,7 @@ class SafetyCenterActivityTest { val issue = safetySourceTestData.recommendationGeneralIssue safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(issue) + SafetySourceTestData.issuesOnly(issue), ) context.launchSafetyCenterActivity { waitDisplayed(By.desc("Alert. ${issue.title}")) } @@ -563,7 +563,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) context.launchSafetyCenterActivity { @@ -581,21 +581,21 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) context.launchSafetyCenterActivity { clickDismissIssueCard() waitAllTextDisplayed( "Dismiss this alert?", - "Review your security and privacy settings any time to add more protection" + "Review your security and privacy settings any time to add more protection", ) getUiDevice().rotate() waitAllTextDisplayed( "Dismiss this alert?", - "Review your security and privacy settings any time to add more protection" + "Review your security and privacy settings any time to add more protection", ) clickConfirmDismissal() @@ -609,7 +609,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) context.launchSafetyCenterActivity { @@ -626,7 +626,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) context.launchSafetyCenterActivity { @@ -650,13 +650,13 @@ class SafetyCenterActivityTest { // Set the initial data for the source safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage + safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage, ) // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -680,13 +680,13 @@ class SafetyCenterActivityTest { // Set the initial data for the source safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage + safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage, ) // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -708,13 +708,13 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation + safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation, ) // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -734,13 +734,13 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation + safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation, ) // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -764,7 +764,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation + safetySourceTestData.criticalWithResolvingGeneralIssueWithConfirmation, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -786,13 +786,13 @@ class SafetyCenterActivityTest { // Set the initial data for the source safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -909,11 +909,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -923,7 +923,7 @@ class SafetyCenterActivityTest { waitExpandedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -933,11 +933,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -948,7 +948,7 @@ class SafetyCenterActivityTest { waitCollapsedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -958,11 +958,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.criticalWithRedirectingIssue + safetySourceTestData.criticalWithRedirectingIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -973,7 +973,7 @@ class SafetyCenterActivityTest { waitCollapsedIssuesDisplayed( safetySourceTestData.criticalRedirectingIssue, safetySourceTestData.criticalResolvingGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -983,11 +983,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1007,11 +1007,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1022,7 +1022,7 @@ class SafetyCenterActivityTest { waitCollapsedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -1032,7 +1032,7 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) context.launchSafetyCenterActivity { @@ -1046,11 +1046,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1058,7 +1058,7 @@ class SafetyCenterActivityTest { waitCollapsedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -1068,11 +1068,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1084,7 +1084,7 @@ class SafetyCenterActivityTest { waitExpandedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -1094,11 +1094,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1118,7 +1118,7 @@ class SafetyCenterActivityTest { waitExpandedIssuesDisplayed( safetySourceTestData.criticalResolvingGeneralIssue, safetySourceTestData.recommendationGeneralIssue, - safetySourceTestData.informationIssue + safetySourceTestData.informationIssue, ) } } @@ -1128,11 +1128,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1152,11 +1152,11 @@ class SafetyCenterActivityTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_3, safetySourceTestData.informationWithIssue) @@ -1183,8 +1183,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, entrySummary = SAFETY_SOURCE_1_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_2, @@ -1192,8 +1192,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_2_TITLE, entrySummary = SAFETY_SOURCE_2_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_3, @@ -1201,8 +1201,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, entrySummary = SAFETY_SOURCE_3_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_4, @@ -1210,8 +1210,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_4_TITLE, entrySummary = SAFETY_SOURCE_4_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_5, @@ -1219,8 +1219,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_5_TITLE, entrySummary = SAFETY_SOURCE_5_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) } @@ -1238,7 +1238,7 @@ class SafetyCenterActivityTest { SAFETY_SOURCE_1_TITLE, SAFETY_SOURCE_1_SUMMARY, SAFETY_SOURCE_2_TITLE, - SAFETY_SOURCE_2_SUMMARY + SAFETY_SOURCE_2_SUMMARY, ) } } @@ -1253,8 +1253,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, entrySummary = SAFETY_SOURCE_1_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_2, @@ -1262,8 +1262,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_2_TITLE, entrySummary = SAFETY_SOURCE_2_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_3, @@ -1271,8 +1271,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, entrySummary = SAFETY_SOURCE_3_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_4, @@ -1280,8 +1280,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_4_TITLE, entrySummary = SAFETY_SOURCE_4_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_5, @@ -1289,8 +1289,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_5_TITLE, entrySummary = SAFETY_SOURCE_5_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) } @@ -1332,7 +1332,7 @@ class SafetyCenterActivityTest { ) waitAllTextDisplayed( context.getString(safetyCenterTestConfigs.dynamicSource1.titleResId), - context.getString(safetyCenterTestConfigs.dynamicSource2.titleResId) + context.getString(safetyCenterTestConfigs.dynamicSource2.titleResId), ) } } @@ -1348,8 +1348,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, entrySummary = SAFETY_SOURCE_1_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_2, @@ -1357,8 +1357,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_2_TITLE, entrySummary = SAFETY_SOURCE_2_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_3, @@ -1366,8 +1366,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, entrySummary = SAFETY_SOURCE_3_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_4, @@ -1375,8 +1375,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_4_TITLE, entrySummary = SAFETY_SOURCE_4_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) setData( SOURCE_ID_5, @@ -1384,8 +1384,8 @@ class SafetyCenterActivityTest { severityLevel = SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_5_TITLE, entrySummary = SAFETY_SOURCE_5_SUMMARY, - withIssue = false - ) + withIssue = false, + ), ) } @@ -1425,7 +1425,7 @@ class SafetyCenterActivityTest { context.launchSafetyCenterActivity { waitAllTextDisplayed( context.getString(lastGroup.titleResId), - context.getString(lastGroup.summaryResId) + context.getString(lastGroup.summaryResId), ) waitDisplayed(By.text(context.getString(firstGroup.titleResId))) { it.click() } diff --git a/tests/functional/safetycenter/singleuser/AndroidTest.xml b/tests/functional/safetycenter/singleuser/AndroidTest.xml index 3aa173508..af040eb6f 100644 --- a/tests/functional/safetycenter/singleuser/AndroidTest.xml +++ b/tests/functional/safetycenter/singleuser/AndroidTest.xml @@ -47,6 +47,10 @@ <!-- Disable syncing to prevent overwriting flags during testing. --> <option name="run-command" value="device_config set_sync_disabled_for_tests persistent" /> <option name="teardown-command" value="device_config set_sync_disabled_for_tests none" /> + <!-- TODO(b/379928062): Ensure device not on lockscreen. Reassess when keyguard bug is + closed --> + <option name="run-command" value="input keyevent KEYCODE_WAKEUP" /> + <option name="run-command" value="wm dismiss-keyguard" /> <!-- Dismiss any system dialogs (e.g. crashes, ANR). --> <option name="run-command" value="am broadcast -a android.intent.action.CLOSE_SYSTEM_DIALOGS --receiver-foreground" /> </target_preparer> diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt index cb3935ec5..985f15572 100644 --- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt +++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt @@ -160,7 +160,7 @@ class SafetyCenterManagerTest { get() = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary") + safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary"), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -169,7 +169,7 @@ class SafetyCenterManagerTest { get() = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName("scanning_title"), - safetyCenterResourcesApk.getStringByName("loading_summary") + safetyCenterResourcesApk.getStringByName("loading_summary"), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_UNKNOWN) .setRefreshStatus(REFRESH_STATUS_FULL_RESCAN_IN_PROGRESS) @@ -179,7 +179,7 @@ class SafetyCenterManagerTest { get() = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -190,7 +190,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_ok_review_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -203,7 +203,7 @@ class SafetyCenterManagerTest { ), safetyCenterResourcesApk.getStringByName( "overall_severity_level_ok_review_summary" - ) + ), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -214,7 +214,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_safety_recommendation_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_RECOMMENDATION) .build() @@ -225,7 +225,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_account_recommendation_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_RECOMMENDATION) .build() @@ -236,7 +236,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_device_recommendation_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_RECOMMENDATION) .build() @@ -247,7 +247,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_safety_warning_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -258,7 +258,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_safety_warning_title" ), - safetyCenterTestData.getAlertString(2) + safetyCenterTestData.getAlertString(2), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -269,7 +269,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_account_warning_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -280,7 +280,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_account_warning_title" ), - safetyCenterTestData.getAlertString(2) + safetyCenterTestData.getAlertString(2), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -291,7 +291,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_device_warning_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -302,7 +302,7 @@ class SafetyCenterManagerTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_device_warning_title" ), - safetyCenterTestData.getAlertString(2) + safetyCenterTestData.getAlertString(2), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -330,7 +330,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryDefault(DYNAMIC_IN_STATEFUL_ID), SafetyCenterEntry.Builder( SafetyCenterTestData.entryId(STATIC_IN_STATEFUL_ID), - "OK" + "OK", ) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) .setSummary("OK") @@ -342,7 +342,7 @@ class SafetyCenterManagerTest { .setSeverityUnspecifiedIconType( SEVERITY_UNSPECIFIED_ICON_TYPE_NO_ICON ) - .build() + .build(), ) ) .setSeverityUnspecifiedIconType( @@ -370,8 +370,8 @@ class SafetyCenterManagerTest { explicit = false ) ) - .build() - ) + .build(), + ), ) private val safetyCenterStaticEntryGroupMixedFromComplexConfig: SafetyCenterStaticEntryGroup @@ -392,8 +392,8 @@ class SafetyCenterManagerTest { explicit = false ) ) - .build() - ) + .build(), + ), ) private val safetyCenterStaticEntryGroupMixedUpdatedFromComplexConfig: @@ -415,8 +415,8 @@ class SafetyCenterManagerTest { explicit = false ) ) - .build() - ) + .build(), + ), ) private val safetyCenterDataFromConfigScanning: SafetyCenterData @@ -429,7 +429,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataFromConfig: SafetyCenterData @@ -442,7 +442,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryDefault(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataUnspecified: SafetyCenterData @@ -455,7 +455,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryUnspecified(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataOk: SafetyCenterData @@ -468,7 +468,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataOkWithIconAction: SafetyCenterData @@ -482,12 +482,12 @@ class SafetyCenterManagerTest { .safetyCenterEntryOkBuilder(SINGLE_SOURCE_ID) .setIconAction( ICON_ACTION_TYPE_INFO, - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) .build() ) ), - emptyList() + emptyList(), ) private val safetyCenterDataUnknownScanningWithError: SafetyCenterData @@ -500,7 +500,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataUnknownReviewError: SafetyCenterData @@ -513,7 +513,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataOkOneAlert: SafetyCenterData @@ -526,7 +526,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryOk(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataOkReviewCriticalEntry: SafetyCenterData @@ -535,7 +535,7 @@ class SafetyCenterManagerTest { safetyCenterStatusOkReview, emptyList(), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataOkReviewRecommendationEntry: SafetyCenterData @@ -544,7 +544,7 @@ class SafetyCenterManagerTest { safetyCenterStatusOkReview, emptyList(), listOf(safetyCenterEntryOrGroupRecommendation), - emptyList() + emptyList(), ) private val safetyCenterDataOkReviewOneAlert: SafetyCenterData @@ -553,7 +553,7 @@ class SafetyCenterManagerTest { safetyCenterStatusOkReviewOneAlert, listOf(safetyCenterTestData.safetyCenterIssueInformation(SINGLE_SOURCE_ID)), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataGeneralRecommendationOneAlert: SafetyCenterData @@ -566,7 +566,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataGeneralRecommendationAlertWithConfirmation: SafetyCenterData @@ -576,7 +576,7 @@ class SafetyCenterManagerTest { listOf( safetyCenterTestData.safetyCenterIssueRecommendation( SINGLE_SOURCE_ID, - confirmationDialog = true + confirmationDialog = true, ) ), listOf( @@ -584,7 +584,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataAccountRecommendationOneAlert: SafetyCenterData @@ -597,7 +597,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataDeviceRecommendationOneAlert: SafetyCenterData @@ -610,7 +610,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterEntryRecommendation(SINGLE_SOURCE_ID) ) ), - emptyList() + emptyList(), ) private val safetyCenterDataGeneralCriticalOneAlert: SafetyCenterData @@ -619,7 +619,7 @@ class SafetyCenterManagerTest { safetyCenterStatusGeneralCriticalOneAlert, listOf(safetyCenterTestData.safetyCenterIssueCritical(SINGLE_SOURCE_ID)), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataAccountCriticalOneAlert: SafetyCenterData @@ -628,7 +628,7 @@ class SafetyCenterManagerTest { safetyCenterStatusAccountCriticalOneAlert, listOf(safetyCenterTestData.safetyCenterIssueCritical(SINGLE_SOURCE_ID)), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataDeviceCriticalOneAlert: SafetyCenterData @@ -637,7 +637,7 @@ class SafetyCenterManagerTest { safetyCenterStatusDeviceCriticalOneAlert, listOf(safetyCenterTestData.safetyCenterIssueCritical(SINGLE_SOURCE_ID)), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataCriticalOneAlertInFlight: SafetyCenterData @@ -647,11 +647,11 @@ class SafetyCenterManagerTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( SINGLE_SOURCE_ID, - isActionInFlight = true + isActionInFlight = true, ) ), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) private val safetyCenterDataOkReviewOneDismissedAlertInFlight: SafetyCenterData @@ -660,13 +660,13 @@ class SafetyCenterManagerTest { safetyCenterStatusOkReview, emptyList(), listOf(safetyCenterEntryOrGroupCritical), - emptyList() + emptyList(), ) .withDismissedIssuesIfAtLeastU( listOf( safetyCenterTestData.safetyCenterIssueCritical( SINGLE_SOURCE_ID, - isActionInFlight = true + isActionInFlight = true, ) ) ) @@ -702,17 +702,17 @@ class SafetyCenterManagerTest { .safetyCenterEntryDefaultBuilder(DYNAMIC_OTHER_PACKAGE_ID) .setPendingIntent(null) .setEnabled(false) - .build() + .build(), ) ) .build() ), - safetyCenterEntryGroupMixedFromComplexConfig + safetyCenterEntryGroupMixedFromComplexConfig, ), listOf( safetyCenterStaticEntryGroupFromComplexConfig, - safetyCenterStaticEntryGroupMixedFromComplexConfig - ) + safetyCenterStaticEntryGroupMixedFromComplexConfig, + ), ) private val safetyCenterDataFromComplexConfigUpdated: SafetyCenterData @@ -722,28 +722,28 @@ class SafetyCenterManagerTest { listOf( safetyCenterTestData.safetyCenterIssueCritical( DYNAMIC_BAREBONE_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueCritical( ISSUE_ONLY_BAREBONE_ID, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( DYNAMIC_DISABLED_ID, - groupId = DYNAMIC_GROUP_ID + groupId = DYNAMIC_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, - groupId = ISSUE_ONLY_GROUP_ID + groupId = ISSUE_ONLY_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( DYNAMIC_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID + groupId = MIXED_STATELESS_GROUP_ID, ), safetyCenterTestData.safetyCenterIssueInformation( ISSUE_ONLY_IN_STATELESS_ID, - groupId = MIXED_STATELESS_GROUP_ID - ) + groupId = MIXED_STATELESS_GROUP_ID, + ), ), listOf( SafetyCenterEntryOrGroup( @@ -765,7 +765,7 @@ class SafetyCenterManagerTest { ), safetyCenterTestData.safetyCenterEntryUnspecified( DYNAMIC_HIDDEN_ID, - pendingIntent = null + pendingIntent = null, ), safetyCenterTestData.safetyCenterEntryOk( DYNAMIC_HIDDEN_WITH_SEARCH_ID @@ -774,17 +774,17 @@ class SafetyCenterManagerTest { .safetyCenterEntryDefaultBuilder(DYNAMIC_OTHER_PACKAGE_ID) .setPendingIntent(null) .setEnabled(false) - .build() + .build(), ) ) .build() ), - safetyCenterEntryGroupMixedFromComplexConfig + safetyCenterEntryGroupMixedFromComplexConfig, ), listOf( safetyCenterStaticEntryGroupFromComplexConfig, - safetyCenterStaticEntryGroupMixedUpdatedFromComplexConfig - ) + safetyCenterStaticEntryGroupMixedUpdatedFromComplexConfig, + ), ) @get:Rule(order = 1) val flagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() @@ -838,7 +838,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.setAllRefreshTimeoutsTo(TIMEOUT_LONG) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_RESCAN_BUTTON_CLICK @@ -869,7 +869,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) val listener = safetyCenterTestHelper.addListener() @@ -894,7 +894,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val listener = safetyCenterTestHelper.addListener() @@ -918,7 +918,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) val listener = safetyCenterTestHelper.addListener() @@ -944,7 +944,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.overrideRefreshOnPageOpenSources = setOf(SINGLE_SOURCE_ID) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -962,13 +962,13 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) assertFailsWith(TimeoutCancellationException::class) { safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( REFRESH_REASON_PAGE_OPEN, - timeout = TIMEOUT_SHORT + timeout = TIMEOUT_SHORT, ) } val apiSafetySourceDataBeforeSettingFlag = @@ -990,7 +990,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.noPageOpenConfig) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( @@ -1020,7 +1020,7 @@ class SafetyCenterManagerTest { val expectedExplicitPendingIntent = SafetySourceTestData.createRedirectPendingIntent( context, - Intent(ACTION_TEST_ACTIVITY).setPackage(context.packageName) + Intent(ACTION_TEST_ACTIVITY).setPackage(context.packageName), ) val defaultEntryPendingIntent = apiSafetyCenterData.entriesOrGroups.firstOrNull()?.entry?.pendingIntent @@ -1040,7 +1040,7 @@ class SafetyCenterManagerTest { val expectedImplicitPendingIntent = SafetySourceTestData.createRedirectPendingIntent( context, - Intent(ACTION_TEST_ACTIVITY_EXPORTED) + Intent(ACTION_TEST_ACTIVITY_EXPORTED), ) val defaultEntryPendingIntent = apiSafetyCenterData.entriesOrGroups.firstOrNull()?.entry?.pendingIntent @@ -1060,7 +1060,7 @@ class SafetyCenterManagerTest { val expectedImplicitPendingIntent = SafetySourceTestData.createRedirectPendingIntent( context, - Intent(ACTION_TEST_ACTIVITY_EXPORTED) + Intent(ACTION_TEST_ACTIVITY_EXPORTED), ) val staticEntryPendingIntent = apiSafetyCenterData.staticEntryGroups @@ -1086,7 +1086,7 @@ class SafetyCenterManagerTest { val expectedExplicitPendingIntent = SafetySourceTestData.createRedirectPendingIntent( context, - Intent(ACTION_TEST_ACTIVITY).setPackage(context.packageName) + Intent(ACTION_TEST_ACTIVITY).setPackage(context.packageName), ) val staticEntryPendingIntent = apiSafetyCenterData.staticEntryGroups @@ -1146,7 +1146,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithIconAction + safetySourceTestData.informationWithIconAction, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1160,7 +1160,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithIssueWithAttributionTitle + safetySourceTestData.informationWithIssueWithAttributionTitle, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1189,7 +1189,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.issueOnlySourceNoGroupTitleConfig) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1200,11 +1200,11 @@ class SafetyCenterManagerTest { listOf( safetyCenterTestData.safetyCenterIssueRecommendation( ISSUE_ONLY_ALL_OPTIONAL_ID, - attributionTitle = null + attributionTitle = null, ) ), emptyList(), - emptyList() + emptyList(), ) assertThat(apiSafetyCenterData).isEqualTo(expectedSafetyCenterData) } @@ -1227,7 +1227,7 @@ class SafetyCenterManagerTest { val previousApiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1241,7 +1241,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1264,7 +1264,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithInformationIssue + safetySourceTestData.criticalWithInformationIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1277,7 +1277,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1291,7 +1291,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithIssueWithActionConfirmation + safetySourceTestData.recommendationWithIssueWithActionConfirmation, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1305,7 +1305,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1318,7 +1318,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithDeviceIssue + safetySourceTestData.recommendationWithDeviceIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1331,7 +1331,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1344,7 +1344,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingAccountIssue + safetySourceTestData.criticalWithResolvingAccountIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1357,7 +1357,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingDeviceIssue + safetySourceTestData.criticalWithResolvingDeviceIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1376,7 +1376,7 @@ class SafetyCenterManagerTest { .defaultRecommendationIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_DATA) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1385,7 +1385,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_data_recommendation_title", - OVERALL_SEVERITY_LEVEL_RECOMMENDATION + OVERALL_SEVERITY_LEVEL_RECOMMENDATION, ) ) } @@ -1401,7 +1401,7 @@ class SafetyCenterManagerTest { .defaultCriticalResolvingIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_DATA) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1410,7 +1410,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_critical_data_warning_title", - OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING + OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING, ) ) } @@ -1426,7 +1426,7 @@ class SafetyCenterManagerTest { .defaultRecommendationIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PASSWORDS) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1435,7 +1435,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_passwords_recommendation_title", - OVERALL_SEVERITY_LEVEL_RECOMMENDATION + OVERALL_SEVERITY_LEVEL_RECOMMENDATION, ) ) } @@ -1451,7 +1451,7 @@ class SafetyCenterManagerTest { .defaultCriticalResolvingIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PASSWORDS) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1460,7 +1460,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_critical_passwords_warning_title", - OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING + OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING, ) ) } @@ -1476,7 +1476,7 @@ class SafetyCenterManagerTest { .defaultRecommendationIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PERSONAL_SAFETY) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1485,7 +1485,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_personal_recommendation_title", - OVERALL_SEVERITY_LEVEL_RECOMMENDATION + OVERALL_SEVERITY_LEVEL_RECOMMENDATION, ) ) } @@ -1501,7 +1501,7 @@ class SafetyCenterManagerTest { .defaultCriticalResolvingIssueBuilder() .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_PERSONAL_SAFETY) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1510,7 +1510,7 @@ class SafetyCenterManagerTest { .isEqualTo( safetyCenterTestData.safetyCenterStatusOneAlert( "overall_severity_level_critical_personal_warning_title", - OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING + OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING, ) ) } @@ -1526,7 +1526,7 @@ class SafetyCenterManagerTest { .defaultInformationIssueBuilder() .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_TIP) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1562,7 +1562,7 @@ class SafetyCenterManagerTest { .defaultInformationIssueBuilder("id_5") .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_TIP) .build(), - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1582,7 +1582,7 @@ class SafetyCenterManagerTest { .defaultInformationIssueBuilder() .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) .build() - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1618,7 +1618,7 @@ class SafetyCenterManagerTest { .defaultInformationIssueBuilder("id_5") .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_MANUAL) .build(), - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1637,8 +1637,8 @@ class SafetyCenterManagerTest { safetySourceTestData .defaultInformationIssueBuilder() .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_MANUAL) - .build(), - ) + .build() + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1648,7 +1648,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterStatusNAlerts( "overall_severity_level_ok_title", OVERALL_SEVERITY_LEVEL_OK, - numAlerts = 1 + numAlerts = 1, ) ) } @@ -1676,7 +1676,7 @@ class SafetyCenterManagerTest { .defaultInformationIssueBuilder("id_4") .setIssueActionability(SafetySourceIssue.ISSUE_ACTIONABILITY_AUTOMATIC) .build(), - ) + ), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1686,7 +1686,7 @@ class SafetyCenterManagerTest { safetyCenterTestData.safetyCenterStatusNAlerts( "overall_severity_level_ok_title", OVERALL_SEVERITY_LEVEL_OK, - numAlerts = 2 + numAlerts = 2, ) ) } @@ -1701,7 +1701,7 @@ class SafetyCenterManagerTest { assertThat( SafetyCenterBundles.getStaticEntryId( apiSafetyCenterData, - apiSafetyCenterData.staticEntryGroups[0].staticEntries[0] + apiSafetyCenterData.staticEntryGroups[0].staticEntries[0], ) ) .isEqualTo( @@ -1713,7 +1713,7 @@ class SafetyCenterManagerTest { assertThat( SafetyCenterBundles.getStaticEntryId( apiSafetyCenterData, - apiSafetyCenterData.staticEntryGroups[1].staticEntries[0] + apiSafetyCenterData.staticEntryGroups[1].staticEntries[0], ) ) .isEqualTo( @@ -1729,7 +1729,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingDeviceIssueAndRecommendationIssue + safetySourceTestData.criticalWithResolvingDeviceIssueAndRecommendationIssue, ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1742,11 +1742,11 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_3, - safetySourceTestData.criticalWithResolvingDeviceIssue + safetySourceTestData.criticalWithResolvingDeviceIssue, ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1759,11 +1759,11 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.multipleSourcesConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_3, - safetySourceTestData.criticalWithResolvingDeviceIssue + safetySourceTestData.criticalWithResolvingDeviceIssue, ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -1782,14 +1782,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -1798,7 +1798,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) } @@ -1814,14 +1814,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 and source group MULTIPLE_SOURCES_GROUP_ID_2 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1844,14 +1844,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 and source group MULTIPLE_SOURCES_GROUP_ID_1 safetyCenterTestHelper.setData( SOURCE_ID_2, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1874,14 +1874,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 and source group MULTIPLE_SOURCES_GROUP_ID_2 safetyCenterTestHelper.setData( SOURCE_ID_6, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -1902,14 +1902,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("different") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -1918,12 +1918,12 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ), safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 - ) + groupId = MULTIPLE_SOURCES_GROUP_ID_2, + ), ) .inOrder() } @@ -1939,14 +1939,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_6, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -1955,12 +1955,12 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ), safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_6, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 - ) + groupId = MULTIPLE_SOURCES_GROUP_ID_2, + ), ) .inOrder() } @@ -1976,21 +1976,21 @@ class SafetyCenterManagerTest { SOURCE_ID_4, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_6, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_7, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -1999,7 +1999,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_4, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) } @@ -2015,14 +2015,14 @@ class SafetyCenterManagerTest { SOURCE_ID_2, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -2031,7 +2031,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) } @@ -2047,49 +2047,49 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("A") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_2, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("A") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_2 safetyCenterTestHelper.setData( SOURCE_ID_3, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("B") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_4, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("B") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("A") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_6, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("B") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_3 safetyCenterTestHelper.setData( SOURCE_ID_7, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("B") - ) + ), ) val apiSafetyCenterIssues = safetyCenterManager.getSafetyCenterDataWithPermission().issues @@ -2098,16 +2098,16 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ), safetyCenterTestData.safetyCenterIssueRecommendation( SOURCE_ID_3, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ), safetyCenterTestData.safetyCenterIssueRecommendation( SOURCE_ID_4, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 - ) + groupId = MULTIPLE_SOURCES_GROUP_ID_1, + ), ) .inOrder() } @@ -2123,14 +2123,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2148,7 +2148,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) } @@ -2164,14 +2164,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_5, RECOMMENDATION_ISSUE_ID) @@ -2185,7 +2185,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) assertThat(apiSafetyCenterDismissedIssues).isEmpty() @@ -2202,14 +2202,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2224,7 +2224,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) } @@ -2240,14 +2240,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_5, CRITICAL_ISSUE_ID) @@ -2262,7 +2262,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) } @@ -2282,14 +2282,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2303,7 +2303,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) waitForWithTimeout(timeout = RESURFACE_TIMEOUT, checkPeriod = RESURFACE_CHECK) { @@ -2314,7 +2314,7 @@ class SafetyCenterManagerTest { .contains( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) hasResurfaced @@ -2329,13 +2329,13 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 99L, - SEVERITY_LEVEL_CRITICAL_WARNING to 0L + SEVERITY_LEVEL_CRITICAL_WARNING to 0L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to Duration.ZERO, SEVERITY_LEVEL_RECOMMENDATION to RESURFACE_DELAY, - SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO + SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO, ) safetyCenterTestHelper.setConfig( safetyCenterTestConfigs.multipleSourcesWithDeduplicationInfoConfig @@ -2345,14 +2345,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2366,7 +2366,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueRecommendation( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) waitForWithTimeout(timeout = RESURFACE_TIMEOUT, checkPeriod = RESURFACE_CHECK) { @@ -2377,7 +2377,7 @@ class SafetyCenterManagerTest { .contains( safetyCenterTestData.safetyCenterIssueRecommendation( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) hasResurfaced @@ -2391,13 +2391,13 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 99L, - SEVERITY_LEVEL_CRITICAL_WARNING to 99L + SEVERITY_LEVEL_CRITICAL_WARNING to 99L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to Duration.ZERO, SEVERITY_LEVEL_RECOMMENDATION to RESURFACE_DELAY, - SEVERITY_LEVEL_CRITICAL_WARNING to RESURFACE_DELAY.multipliedBy(100) + SEVERITY_LEVEL_CRITICAL_WARNING to RESURFACE_DELAY.multipliedBy(100), ) safetyCenterTestHelper.setConfig( safetyCenterTestConfigs.multipleSourcesWithDeduplicationInfoConfig @@ -2407,14 +2407,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2427,7 +2427,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) assertFailsWith(TimeoutCancellationException::class) { @@ -2439,7 +2439,7 @@ class SafetyCenterManagerTest { .contains( safetyCenterTestData.safetyCenterIssueRecommendation( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) hasResurfaced @@ -2454,13 +2454,13 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 99L, - SEVERITY_LEVEL_CRITICAL_WARNING to 99L + SEVERITY_LEVEL_CRITICAL_WARNING to 99L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to Duration.ZERO, SEVERITY_LEVEL_RECOMMENDATION to RESURFACE_DELAY.multipliedBy(100), - SEVERITY_LEVEL_CRITICAL_WARNING to RESURFACE_DELAY + SEVERITY_LEVEL_CRITICAL_WARNING to RESURFACE_DELAY, ) safetyCenterTestHelper.setConfig( safetyCenterTestConfigs.multipleSourcesWithDeduplicationInfoConfig @@ -2470,14 +2470,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SOURCE_ID_1, CRITICAL_ISSUE_ID) @@ -2490,7 +2490,7 @@ class SafetyCenterManagerTest { .containsExactly( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) waitForWithTimeout(timeout = RESURFACE_TIMEOUT, checkPeriod = RESURFACE_CHECK) { @@ -2501,7 +2501,7 @@ class SafetyCenterManagerTest { .contains( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_1, - groupId = MULTIPLE_SOURCES_GROUP_ID_1 + groupId = MULTIPLE_SOURCES_GROUP_ID_1, ) ) hasResurfaced @@ -2520,14 +2520,14 @@ class SafetyCenterManagerTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) // Belongs to DEDUPLICATION_GROUP_1 safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) val listener = safetyCenterTestHelper.addListener() @@ -2545,7 +2545,7 @@ class SafetyCenterManagerTest { .contains( safetyCenterTestData.safetyCenterIssueCritical( SOURCE_ID_5, - groupId = MULTIPLE_SOURCES_GROUP_ID_2 + groupId = MULTIPLE_SOURCES_GROUP_ID_2, ) ) hasResurfaced @@ -2571,7 +2571,7 @@ class SafetyCenterManagerTest { .setIssueCategory(SafetySourceIssue.ISSUE_CATEGORY_DEVICE) .build() ) - .build() + .build(), ) val apiSafetyCenterStatus = safetyCenterManager.getSafetyCenterDataWithPermission().status @@ -2584,32 +2584,32 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.complexConfig) safetyCenterTestHelper.setData( DYNAMIC_BAREBONE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterTestHelper.setData( DYNAMIC_DISABLED_ID, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(DYNAMIC_HIDDEN_ID, safetySourceTestData.unspecified) safetyCenterTestHelper.setData( DYNAMIC_HIDDEN_WITH_SEARCH_ID, - safetySourceTestData.information + safetySourceTestData.information, ) safetyCenterTestHelper.setData( ISSUE_ONLY_BAREBONE_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.criticalResolvingGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.criticalResolvingGeneralIssue), ) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) safetyCenterTestHelper.setData( DYNAMIC_IN_STATELESS_ID, - safetySourceTestData.unspecifiedWithIssue + safetySourceTestData.unspecifiedWithIssue, ) safetyCenterTestHelper.setData( ISSUE_ONLY_IN_STATELESS_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -2623,50 +2623,50 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.summaryTestConfig) safetyCenterManager.reportSafetySourceErrorWithPermission( SOURCE_ID_1, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) safetyCenterTestHelper.setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified" - ) + entrySummary = "unspecified", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues" - ) + entrySummary = "information without issues", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_RECOMMENDATION, - entrySummary = "recommendation" - ) + entrySummary = "recommendation", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_CRITICAL_WARNING, - entrySummary = "critical 1" - ) + entrySummary = "critical 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_7, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_CRITICAL_WARNING, - entrySummary = "critical 2" - ) + entrySummary = "critical 2", + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2682,43 +2682,43 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.summaryTestConfig) safetyCenterManager.reportSafetySourceErrorWithPermission( SOURCE_ID_1, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) safetyCenterTestHelper.setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified" - ) + entrySummary = "unspecified", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues" - ) + entrySummary = "information without issues", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_RECOMMENDATION, - entrySummary = "recommendation 1" - ) + entrySummary = "recommendation 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_RECOMMENDATION, - entrySummary = "recommendation 2" - ) + entrySummary = "recommendation 2", + ), ) // SOURCE_ID_7 leave as an UNKNOWN dynamic entry // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2737,52 +2737,52 @@ class SafetyCenterManagerTest { SOURCE_ID_1, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 1" - ) + entrySummary = "unspecified 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 2" - ) + entrySummary = "unspecified 2", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues 1" - ) + entrySummary = "information without issues 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue 1", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue 2", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues 2" - ) + entrySummary = "information without issues 2", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_7, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 3" - ) + entrySummary = "unspecified 3", + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2800,50 +2800,50 @@ class SafetyCenterManagerTest { SOURCE_ID_1, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 1" - ) + entrySummary = "unspecified 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 2" - ) + entrySummary = "unspecified 2", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues 1" - ) + entrySummary = "information without issues 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues 2" - ) + entrySummary = "information without issues 2", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 3" - ) + entrySummary = "unspecified 3", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information without issues 3" - ) + entrySummary = "information without issues 3", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_7, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 4" - ) + entrySummary = "unspecified 4", + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2861,51 +2861,51 @@ class SafetyCenterManagerTest { SOURCE_ID_1, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 1" - ) + entrySummary = "unspecified 1", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 2" - ) + entrySummary = "unspecified 2", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 3" - ) + entrySummary = "unspecified 3", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 4" - ) + entrySummary = "unspecified 4", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, entrySummary = "unspecified with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 6" - ) + entrySummary = "unspecified 6", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_7, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified 7" - ) + entrySummary = "unspecified 7", + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2921,34 +2921,34 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.summaryTestConfig) safetyCenterManager.reportSafetySourceErrorWithPermission( SOURCE_ID_1, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) safetyCenterManager.reportSafetySourceErrorWithPermission( SOURCE_ID_2, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) safetyCenterTestHelper.setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified" - ) + entrySummary = "unspecified", + ), ) // SOURCE_ID_5 leave as an UNKNOWN dynamic entry safetyCenterTestHelper.setData( SOURCE_ID_6, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information" - ) + entrySummary = "information", + ), ) // SOURCE_ID_7 leave as an UNKNOWN dynamic entry // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -2965,7 +2965,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.summaryTestConfig) safetyCenterManager.reportSafetySourceErrorWithPermission( SOURCE_ID_1, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) // SOURCE_ID_2 leave as an UNKNOWN dynamic entry safetyCenterTestHelper.setData( @@ -2973,15 +2973,15 @@ class SafetyCenterManagerTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified" - ) + entrySummary = "unspecified", + ), ) // SOURCE_ID_5 leave as an UNKNOWN dynamic entry // SOURCE_ID_6 leave as an UNKNOWN dynamic entry @@ -2989,8 +2989,8 @@ class SafetyCenterManagerTest { SOURCE_ID_7, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information" - ) + entrySummary = "information", + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -3011,22 +3011,22 @@ class SafetyCenterManagerTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, entrySummary = "information with issue", - withIssue = true - ) + withIssue = true, + ), ) safetyCenterTestHelper.setData( SOURCE_ID_4, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, - entrySummary = "unspecified" - ) + entrySummary = "unspecified", + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_INFORMATION, - entrySummary = "information" - ) + entrySummary = "information", + ), ) // SOURCE_ID_6 leave as an UNKNOWN dynamic entry safetyCenterTestHelper.setData( @@ -3034,8 +3034,8 @@ class SafetyCenterManagerTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SEVERITY_LEVEL_UNSPECIFIED, entrySummary = "unspecified with issue", - withIssue = true - ) + withIssue = true, + ), ) // STATIC_IN_STATEFUL_ID behaves like an UNSPECIFIED dynamic entry @@ -3083,7 +3083,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData( DYNAMIC_DISABLED_ID, - safetySourceTestData.informationWithIssue + safetySourceTestData.informationWithIssue, ) val informationWithIssueGroup = @@ -3123,7 +3123,7 @@ class SafetyCenterManagerTest { .build() ) ), - emptyList() + emptyList(), ) assertThat(safetyCenterData).isEqualTo(expectedSafetyCenterData) } @@ -3133,7 +3133,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceInvalidIntentConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithNullIntent + safetySourceTestData.informationWithNullIntent, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -3152,7 +3152,7 @@ class SafetyCenterManagerTest { .build() ) ), - emptyList() + emptyList(), ) assertThat(apiSafetyCenterData).isEqualTo(expectedSafetyCenterData) } @@ -3165,7 +3165,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -3184,7 +3184,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -3200,12 +3200,12 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.entryGroupWithIssueOnlyConfig) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.informationIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -3223,7 +3223,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(ISSUE_ONLY_ALL_OPTIONAL_ID, RECOMMENDATION_ISSUE_ID) @@ -3245,7 +3245,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData(SOURCE_ID_2, safetySourceTestData.information) safetyCenterTestHelper.setData( ISSUE_ONLY_ALL_OPTIONAL_ID, - SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue) + SafetySourceTestData.issuesOnly(safetySourceTestData.recommendationGeneralIssue), ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() @@ -3287,7 +3287,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val safetyCenterDataFromListener = listener.receiveSafetyCenterData() @@ -3313,7 +3313,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() @@ -3334,7 +3334,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID) @@ -3350,7 +3350,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val safetyCenterDataAfterSourcePushesDismissedIssueAgain = @@ -3364,14 +3364,14 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - issueTypeId = "some_other_issue_type_id" + issueTypeId = "some_other_issue_type_id", ) ) @@ -3388,11 +3388,11 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationDismissPendingIntentIssue + safetySourceTestData.recommendationDismissPendingIntentIssue, ) SafetySourceReceiver.setResponse( Request.DismissIssue(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val listener = safetyCenterTestHelper.addListener() @@ -3466,13 +3466,13 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 99L, - SEVERITY_LEVEL_CRITICAL_WARNING to 99L + SEVERITY_LEVEL_CRITICAL_WARNING to 99L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to Duration.ZERO, SEVERITY_LEVEL_RECOMMENDATION to Duration.ZERO, - SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO + SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO, ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData(SINGLE_SOURCE_ID, safetySourceTestData.informationWithIssue) @@ -3503,18 +3503,18 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 0L, - SEVERITY_LEVEL_CRITICAL_WARNING to 2L + SEVERITY_LEVEL_CRITICAL_WARNING to 2L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to RESURFACE_DELAY, SEVERITY_LEVEL_RECOMMENDATION to RESURFACE_DELAY, - SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO + SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO, ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingDeviceIssue + safetySourceTestData.criticalWithResolvingDeviceIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() checkState(apiSafetyCenterData == safetyCenterDataDeviceCriticalOneAlert) @@ -3559,18 +3559,18 @@ class SafetyCenterManagerTest { mapOf( SEVERITY_LEVEL_INFORMATION to 0L, SEVERITY_LEVEL_RECOMMENDATION to 99L, - SEVERITY_LEVEL_CRITICAL_WARNING to 0L + SEVERITY_LEVEL_CRITICAL_WARNING to 0L, ) SafetyCenterFlags.resurfaceIssueDelays = mapOf( SEVERITY_LEVEL_INFORMATION to Duration.ZERO, SEVERITY_LEVEL_RECOMMENDATION to RESURFACE_DELAY, - SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO + SEVERITY_LEVEL_CRITICAL_WARNING to Duration.ZERO, ) safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithDeviceIssue + safetySourceTestData.recommendationWithDeviceIssue, ) val apiSafetyCenterData = safetyCenterManager.getSafetyCenterDataWithPermission() checkState(apiSafetyCenterData == safetyCenterDataDeviceRecommendationOneAlert) @@ -3598,12 +3598,12 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -3611,8 +3611,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val safetyCenterDataFromListenerDuringResolveAction = listener.receiveSafetyCenterData() @@ -3627,7 +3627,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() SafetySourceReceiver.setResponse(Request.ResolveAction(SINGLE_SOURCE_ID), Response.Error) @@ -3637,8 +3637,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val safetyCenterDataFromListenerDuringResolveAction = listener.receiveSafetyCenterData() @@ -3662,7 +3662,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() @@ -3671,8 +3671,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val safetyCenterDataFromListenerDuringResolveAction = listener.receiveSafetyCenterData() @@ -3696,7 +3696,7 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -3704,8 +3704,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) listener.receiveSafetyCenterData() listener.receiveSafetyCenterData() @@ -3713,7 +3713,7 @@ class SafetyCenterManagerTest { SafetyCenterFlags.resolveActionTimeout = TIMEOUT_LONG SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -3721,8 +3721,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val safetyCenterDataFromListenerDuringResolveAction = listener.receiveSafetyCenterData() @@ -3737,11 +3737,11 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val issueId = SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID) val listener = safetyCenterTestHelper.addListener() @@ -3754,8 +3754,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) if (SdkLevel.isAtLeastU()) { @@ -3775,12 +3775,12 @@ class SafetyCenterManagerTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) val listener = safetyCenterTestHelper.addListener() SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) assertFailsWith(IllegalArgumentException::class) { safetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( @@ -3788,9 +3788,9 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID + "invalid", - CRITICAL_ISSUE_ACTION_ID + CRITICAL_ISSUE_ACTION_ID, ), - TIMEOUT_SHORT + TIMEOUT_SHORT, ) } @@ -3799,8 +3799,8 @@ class SafetyCenterManagerTest { SafetyCenterTestData.issueActionId( SINGLE_SOURCE_ID, CRITICAL_ISSUE_ID, - CRITICAL_ISSUE_ACTION_ID - ) + CRITICAL_ISSUE_ACTION_ID, + ), ) val safetyCenterDataFromListenerDuringResolveAction = listener.receiveSafetyCenterData() @@ -3891,7 +3891,7 @@ class SafetyCenterManagerTest { safetyCenterManager.reportSafetySourceErrorWithPermission( SINGLE_SOURCE_ID, - SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED) + SafetySourceErrorDetails(EVENT_SOURCE_STATE_CHANGED), ) val lastUpdated = dumpLastUpdated() diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterNotificationTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterNotificationTest.kt index 1678ccced..ce75b00f5 100644 --- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterNotificationTest.kt +++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterNotificationTest.kt @@ -116,7 +116,7 @@ class SafetyCenterNotificationTest { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) TestNotificationListener.waitForZeroNotifications() @@ -128,7 +128,7 @@ class SafetyCenterNotificationTest { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) TestNotificationListener.waitForZeroNotifications() @@ -140,7 +140,7 @@ class SafetyCenterNotificationTest { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) TestNotificationListener.waitForZeroNotifications() @@ -401,7 +401,7 @@ class SafetyCenterNotificationTest { SafetySourceIssue.Action.Builder( "default_action", "Default action", - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) .build() ) @@ -440,7 +440,7 @@ class SafetyCenterNotificationTest { SafetySourceIssue.Action.Builder( "default_action", "Default action", - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) .build() ) @@ -497,7 +497,7 @@ class SafetyCenterNotificationTest { "New action", safetySourceTestData.createTestActivityRedirectPendingIntent( identifier = "new_action" - ) + ), ) .build() ) @@ -697,13 +697,13 @@ class SafetyCenterNotificationTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) TestNotificationListener.waitForNotificationsMatching( @@ -728,7 +728,7 @@ class SafetyCenterNotificationTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) val notificationWithChannel = @@ -745,7 +745,7 @@ class SafetyCenterNotificationTest { SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) TestNotificationListener.waitForNotificationsMatching( @@ -762,7 +762,7 @@ class SafetyCenterNotificationTest { fun setSafetySourceData_withInformationIssue_lowImportanceBlockableNotification() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.informationWithIssue + safetySourceTestData.informationWithIssue, ) TestNotificationListener.waitForNotificationsMatching( @@ -781,7 +781,7 @@ class SafetyCenterNotificationTest { fun setSafetySourceData_withRecommendationIssue_defaultImportanceUnblockableNotification() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) TestNotificationListener.waitForNotificationsMatching( @@ -800,7 +800,7 @@ class SafetyCenterNotificationTest { fun setSafetySourceData_withCriticalIssue_highImportanceUnblockableNotification() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.criticalWithResolvingDeviceIssue(sourceId = uniqueSafetySourceId) + safetySourceTestData.criticalWithResolvingDeviceIssue(sourceId = uniqueSafetySourceId), ) TestNotificationListener.waitForNotificationsMatching( @@ -819,7 +819,7 @@ class SafetyCenterNotificationTest { fun dismissSafetyCenterIssue_dismissesNotification() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithAccountIssue + safetySourceTestData.recommendationWithAccountIssue, ) TestNotificationListener.waitForSingleNotificationMatching( @@ -832,7 +832,7 @@ class SafetyCenterNotificationTest { safetyCenterManager.dismissSafetyCenterIssueWithPermission( SafetyCenterTestData.issueId( uniqueSafetySourceId, - SafetySourceTestData.RECOMMENDATION_ISSUE_ID + SafetySourceTestData.RECOMMENDATION_ISSUE_ID, ) ) @@ -843,7 +843,7 @@ class SafetyCenterNotificationTest { fun dismissingNotification_doesNotUpdateSafetyCenterData() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId) + safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId), ) // Add the listener after setting the initial data so that we don't need to consume/receive // an update for that @@ -876,13 +876,13 @@ class SafetyCenterNotificationTest { SOURCE_ID_1, SafetySourceTestData.issuesOnly( safetySourceTestData.criticalIssueWithDeduplicationId("same") - ) + ), ) safetyCenterTestHelper.setData( SOURCE_ID_5, SafetySourceTestData.issuesOnly( safetySourceTestData.recommendationIssueWithDeduplicationId("same") - ) + ), ) val notificationWithChannel = @@ -926,7 +926,7 @@ class SafetyCenterNotificationTest { fun sendActionPendingIntent_successful_updatesListener() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId) + safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -940,7 +940,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) val listener = safetyCenterTestHelper.addListener() @@ -958,7 +958,7 @@ class SafetyCenterNotificationTest { fun sendActionPendingIntent_successfulNoSuccessMessage_removesNotification() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId) + safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -972,7 +972,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) sendActionPendingIntentAndWaitWithPermission(action) @@ -986,7 +986,7 @@ class SafetyCenterNotificationTest { uniqueSafetySourceId, safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage( sourceId = uniqueSafetySourceId - ) + ), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1000,7 +1000,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) sendActionPendingIntentAndWaitWithPermission(action) @@ -1017,7 +1017,7 @@ class SafetyCenterNotificationTest { uniqueSafetySourceId, safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage( sourceId = uniqueSafetySourceId - ) + ), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1031,7 +1031,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) sendActionPendingIntentAndWaitWithPermission(action) @@ -1049,7 +1049,7 @@ class SafetyCenterNotificationTest { uniqueSafetySourceId, safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage( sourceId = uniqueSafetySourceId - ) + ), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1063,7 +1063,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) SafetyCenterFlags.notificationsEnabled = false @@ -1078,7 +1078,7 @@ class SafetyCenterNotificationTest { uniqueSafetySourceId, safetySourceTestData.criticalWithResolvingIssueWithSuccessMessage( sourceId = uniqueSafetySourceId - ) + ), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1095,8 +1095,8 @@ class SafetyCenterNotificationTest { Response.SetData( safetySourceTestData.information, overrideSafetyEvent = - SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build() - ) + SafetyEvent.Builder(SafetyEvent.SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build(), + ), ) sendActionPendingIntentAndWaitWithPermission(action) @@ -1118,8 +1118,8 @@ class SafetyCenterNotificationTest { "Solve now!", safetySourceTestData.resolvingActionPendingIntent( sourceId = uniqueSafetySourceId, - sourceIssueActionId = "notification_action_id" - ) + sourceIssueActionId = "notification_action_id", + ), ) .setWillResolve(true) .setSuccessMessage("Solved via notification action :)") @@ -1140,8 +1140,8 @@ class SafetyCenterNotificationTest { "Default action", safetySourceTestData.resolvingActionPendingIntent( sourceId = uniqueSafetySourceId, - sourceIssueActionId = "issue_action_id" - ) + sourceIssueActionId = "issue_action_id", + ), ) .setWillResolve(true) .setSuccessMessage("Solved via issue action :(") @@ -1168,7 +1168,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) sendActionPendingIntentAndWaitWithPermission(action) @@ -1185,7 +1185,7 @@ class SafetyCenterNotificationTest { // to resolve that action successfully. safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId) + safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = uniqueSafetySourceId), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1199,7 +1199,7 @@ class SafetyCenterNotificationTest { checkNotNull(action) { "Notification action unexpectedly null" } SafetySourceReceiver.setResponse( Request.ResolveAction(uniqueSafetySourceId), - Response.Error + Response.Error, ) val listener = safetyCenterTestHelper.addListener() @@ -1224,7 +1224,7 @@ class SafetyCenterNotificationTest { fun sendContentPendingIntent_singleIssue_opensSafetyCenterWithIssueVisible() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithDeviceIssue + safetySourceTestData.recommendationWithDeviceIssue, ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1245,11 +1245,11 @@ class SafetyCenterNotificationTest { setFlagsForImmediateNotifications(SOURCE_ID_1) safetyCenterTestHelper.setData( SOURCE_ID_1, - safetySourceTestData.recommendationWithDeviceIssue + safetySourceTestData.recommendationWithDeviceIssue, ) safetyCenterTestHelper.setData( SOURCE_ID_2, - safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = SOURCE_ID_2) + safetySourceTestData.criticalWithResolvingGeneralIssue(sourceId = SOURCE_ID_2), ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1269,7 +1269,7 @@ class SafetyCenterNotificationTest { fun whenGreenIssue_notificationHasAutoCancel() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.informationWithIssue + safetySourceTestData.informationWithIssue, ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1286,7 +1286,7 @@ class SafetyCenterNotificationTest { fun whenNotGreenIssue_notificationDoesntHaveAutoCancel() { safetyCenterTestHelper.setData( uniqueSafetySourceId, - safetySourceTestData.recommendationWithDeviceIssue + safetySourceTestData.recommendationWithDeviceIssue, ) val notificationWithChannel = TestNotificationListener.waitForSingleNotificationMatching( @@ -1305,7 +1305,7 @@ class SafetyCenterNotificationTest { fun sendActionPendingIntentAndWaitWithPermission( action: Notification.Action, - timeout: Duration = Coroutines.TIMEOUT_LONG + timeout: Duration = Coroutines.TIMEOUT_LONG, ) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { PendingIntentSender.send(action.actionIntent) @@ -1328,13 +1328,13 @@ class SafetyCenterNotificationTest { fun sendContentPendingIntent( statusBarNotificationWithChannel: StatusBarNotificationWithChannel, - andExecuteBlock: () -> Unit = {} + andExecuteBlock: () -> Unit = {}, ) { val contentIntent = statusBarNotificationWithChannel.statusBarNotification.notification.contentIntent executeBlockAndExit( launchActivity = { PendingIntentSender.send(contentIntent) }, - block = andExecuteBlock + block = andExecuteBlock, ) } } diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetySourceDataFixesTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetySourceDataFixesTest.kt index 4ba293eb9..5cafe3d48 100644 --- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetySourceDataFixesTest.kt +++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetySourceDataFixesTest.kt @@ -105,7 +105,7 @@ class SafetySourceDataFixesTest { .addAction( safetySourceTestData.action( id = targetActionId, - pendingIntent = originalPendingIntent + pendingIntent = originalPendingIntent, ) ) .build() @@ -126,6 +126,7 @@ class SafetySourceDataFixesTest { ) assertThat(intentsFilterEqual(overriddenPendingIntent, expectedPendingIntent)).isTrue() } + @Test @SdkSuppress(minSdkVersion = UPSIDE_DOWN_CAKE) fun defaultActionOverride_notification_overridesMatchingActions() { @@ -143,7 +144,7 @@ class SafetySourceDataFixesTest { notification( safetySourceTestData.action( id = targetActionId, - pendingIntent = originalPendingIntent + pendingIntent = originalPendingIntent, ) ) ) @@ -183,7 +184,7 @@ class SafetySourceDataFixesTest { .addAction( safetySourceTestData.action( id = targetActionId, - pendingIntent = originalPendingIntent + pendingIntent = originalPendingIntent, ) ) .build() @@ -192,7 +193,7 @@ class SafetySourceDataFixesTest { safetyCenterTestHelper.setData( SOURCE_ID_2, // Different source ID - dataWithoutActionToOverride + dataWithoutActionToOverride, ) val actualPendingIntent = @@ -219,7 +220,7 @@ class SafetySourceDataFixesTest { .addAction( safetySourceTestData.action( id = "DifferentActionId", - pendingIntent = originalPendingIntent + pendingIntent = originalPendingIntent, ) ) .build() @@ -253,7 +254,7 @@ class SafetySourceDataFixesTest { .addAction( safetySourceTestData.action( id = targetActionId, - pendingIntent = originalPendingIntent + pendingIntent = originalPendingIntent, ) ) .build() @@ -289,7 +290,7 @@ class SafetySourceDataFixesTest { private fun intentsFilterEqual( actualPendingIntent: PendingIntent, - expectedPendingIntent: PendingIntent? + expectedPendingIntent: PendingIntent?, ) = callWithShellPermissionIdentity("android.permission.GET_INTENT_SENDER_INTENT") { actualPendingIntent.intentFilterEquals(expectedPendingIntent) diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterStatusCardTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterStatusCardTest.kt index f76a52256..6f147dfbf 100644 --- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterStatusCardTest.kt +++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterStatusCardTest.kt @@ -69,7 +69,7 @@ class SafetyCenterStatusCardTest { context.launchSafetyCenterActivity { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("scanning_title"), - safetyCenterResourcesApk.getStringByName("loading_summary") + safetyCenterResourcesApk.getStringByName("loading_summary"), ) } } @@ -79,13 +79,13 @@ class SafetyCenterStatusCardTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.informationWithIconAction + safetySourceTestData.informationWithIconAction, ) context.launchSafetyCenterActivity { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterResourcesApk.getStringByName("loading_summary") + safetyCenterResourcesApk.getStringByName("loading_summary"), ) } } @@ -98,7 +98,7 @@ class SafetyCenterStatusCardTest { context.launchSafetyCenterActivity(withReceiverPermission = true) { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_review_title"), - safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_review_summary") + safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_review_summary"), ) waitButtonDisplayed(RESCAN_BUTTON_LABEL) } @@ -110,13 +110,13 @@ class SafetyCenterStatusCardTest { preSetDataOnT(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary") + safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary"), ) waitButtonDisplayed(RESCAN_BUTTON_LABEL) } @@ -128,7 +128,7 @@ class SafetyCenterStatusCardTest { preSetDataOnT(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -143,13 +143,13 @@ class SafetyCenterStatusCardTest { preSetDataOnT(SINGLE_SOURCE_ID, safetySourceTestData.informationWithIssue) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.informationWithIssue) + Response.SetData(safetySourceTestData.informationWithIssue), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) waitButtonNotDisplayed(RESCAN_BUTTON_LABEL) } @@ -160,11 +160,11 @@ class SafetyCenterStatusCardTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.recommendationWithGeneralIssue + safetySourceTestData.recommendationWithGeneralIssue, ) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.recommendationWithGeneralIssue) + Response.SetData(safetySourceTestData.recommendationWithGeneralIssue), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -172,7 +172,7 @@ class SafetyCenterStatusCardTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_safety_recommendation_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) waitButtonNotDisplayed(RESCAN_BUTTON_LABEL) } @@ -183,11 +183,11 @@ class SafetyCenterStatusCardTest { safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig) safetyCenterTestHelper.setData( SINGLE_SOURCE_ID, - safetySourceTestData.criticalWithResolvingGeneralIssue + safetySourceTestData.criticalWithResolvingGeneralIssue, ) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue) + Response.SetData(safetySourceTestData.criticalWithResolvingGeneralIssue), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -195,7 +195,7 @@ class SafetyCenterStatusCardTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_safety_warning_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) waitButtonNotDisplayed(RESCAN_BUTTON_LABEL) } @@ -207,20 +207,20 @@ class SafetyCenterStatusCardTest { preSetDataOnT(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary") + safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary"), ) waitButtonDisplayed(RESCAN_BUTTON_LABEL) { it.click() } waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("scanning_title"), - safetyCenterResourcesApk.getStringByName("loading_summary") + safetyCenterResourcesApk.getStringByName("loading_summary"), ) } } @@ -231,17 +231,17 @@ class SafetyCenterStatusCardTest { preSetDataOnT(SINGLE_SOURCE_ID, safetySourceTestData.information) SafetySourceReceiver.setResponse( Request.Refresh(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.information) + Response.SetData(safetySourceTestData.information), ) SafetySourceReceiver.setResponse( Request.Rescan(SINGLE_SOURCE_ID), - Response.SetData(safetySourceTestData.recommendationWithGeneralIssue) + Response.SetData(safetySourceTestData.recommendationWithGeneralIssue), ) context.launchSafetyCenterActivity(withReceiverPermission = true) { waitAllTextDisplayed( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary") + safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_summary"), ) waitButtonDisplayed(RESCAN_BUTTON_LABEL) { it.click() } @@ -250,7 +250,7 @@ class SafetyCenterStatusCardTest { safetyCenterResourcesApk.getStringByName( "overall_severity_level_safety_recommendation_title" ), - safetyCenterTestData.getAlertString(1) + safetyCenterTestData.getAlertString(1), ) } } diff --git a/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt b/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt index 7ad83b949..c3e104504 100644 --- a/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt +++ b/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt @@ -47,9 +47,9 @@ import com.android.safetycenter.testing.UiTestHelper.waitAllTextDisplayed import com.android.safetycenter.testing.UiTestHelper.waitAllTextNotDisplayed import com.android.safetycenter.testing.UiTestHelper.waitButtonDisplayed import com.android.safetycenter.testing.UiTestHelper.waitDisplayed -import com.android.safetycenter.testing.UiTestHelper.waitPageTitleDisplayed import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueDisplayed import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueNotDisplayed +import java.util.regex.Pattern import org.junit.After import org.junit.Before import org.junit.Rule @@ -98,7 +98,7 @@ class PrivacySubpageTest { context.getString(firstSource.summaryResId), "Controls", context.getString(lastSource.titleResId), - context.getString(lastSource.summaryResId) + context.getString(lastSource.summaryResId), ) } } @@ -117,7 +117,7 @@ class PrivacySubpageTest { waitButtonDisplayed("Exit test activity") { it.click() } waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) } } @@ -156,16 +156,16 @@ class PrivacySubpageTest { context.launchSafetyCenterActivity(extras) { waitAllText( displayed = sensorPrivacyManager.supportsSensorToggle(CAMERA), - text = "Camera access" + text = "Camera access", ) waitAllText( displayed = sensorPrivacyManager.supportsSensorToggle(MICROPHONE), - text = "Microphone access" + text = "Microphone access", ) waitAllTextDisplayed("Show clipboard access") waitAllText( displayed = getPermissionControllerBool("config_display_show_password_toggle"), - text = "Show passwords" + text = "Show passwords", ) waitAllTextDisplayed("Location access") } @@ -179,16 +179,14 @@ class PrivacySubpageTest { val source: SafetySource = sourcesGroup.safetySources.first() val extras = Bundle() extras.putString(EXTRA_SAFETY_SOURCES_GROUP_ID, sourcesGroup.id) + val containsLocationPattern = Pattern.compile(".*[Ll]ocation.*") // NOTYPO context.launchSafetyCenterActivity(extras) { - openPageAndExit("Location access") { - waitPageTitleDisplayed("Location") - waitAllTextDisplayed("Use location") - } + openPageAndExit("Location access") { waitDisplayed(By.text(containsLocationPattern)) } waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) } } @@ -225,7 +223,7 @@ class PrivacySubpageTest { permissionControllerContext.resources.getIdentifier( resourceName, "bool", - "com.android.permissioncontroller" + "com.android.permissioncontroller", ) return permissionControllerContext.resources.getBoolean(resourceId) } diff --git a/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt b/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt index 236beb34e..5c770cc92 100644 --- a/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt +++ b/tests/functional/safetycenter/subpages/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt @@ -160,7 +160,7 @@ class SafetyCenterSubpagesTest { context.getString(firstGroup.titleResId), context.getString(firstGroup.summaryResId), context.getString(lastGroup.titleResId), - context.getString(lastGroup.summaryResId) + context.getString(lastGroup.summaryResId), ) openPageAndExit(context.getString(lastGroup.titleResId)) { @@ -191,7 +191,7 @@ class SafetyCenterSubpagesTest { waitAllTextDisplayed( context.getString(firstGroup.titleResId), context.getString(firstGroup.summaryResId), - context.getString(lastGroup.titleResId) + context.getString(lastGroup.titleResId), ) waitDisplayed(By.text(context.getString(lastGroup.summaryResId))) { it.click() } @@ -232,24 +232,24 @@ class SafetyCenterSubpagesTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SafetySourceData.SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_1_TITLE, - entrySummary = SAFETY_SOURCE_1_SUMMARY - ) + entrySummary = SAFETY_SOURCE_1_SUMMARY, + ), ) setData( SOURCE_ID_2, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SafetySourceData.SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_2_TITLE, - entrySummary = SAFETY_SOURCE_2_SUMMARY - ) + entrySummary = SAFETY_SOURCE_2_SUMMARY, + ), ) setData( SOURCE_ID_3, safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SafetySourceData.SEVERITY_LEVEL_INFORMATION, entryTitle = SAFETY_SOURCE_3_TITLE, - entrySummary = SAFETY_SOURCE_3_SUMMARY - ) + entrySummary = SAFETY_SOURCE_3_SUMMARY, + ), ) } val firstGroup = safetyCenterTestConfigs.multipleSourcesConfig.safetySourcesGroups[0] @@ -263,7 +263,7 @@ class SafetyCenterSubpagesTest { SAFETY_SOURCE_1_TITLE, SAFETY_SOURCE_1_SUMMARY, SAFETY_SOURCE_2_TITLE, - SAFETY_SOURCE_2_SUMMARY + SAFETY_SOURCE_2_SUMMARY, ) } @@ -287,7 +287,7 @@ class SafetyCenterSubpagesTest { waitButtonDisplayed("Exit test activity") { it.click() } waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) } } @@ -370,7 +370,7 @@ class SafetyCenterSubpagesTest { openPageAndExit(context.getString(sourcesGroup.titleResId)) { waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) } @@ -380,15 +380,15 @@ class SafetyCenterSubpagesTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION, entryTitle = "Updated title", - entrySummary = "Updated summary" + entrySummary = "Updated summary", ) - ) + ), ) openPageAndExit(context.getString(sourcesGroup.titleResId)) { waitAllTextNotDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) waitAllTextDisplayed("Updated title", "Updated summary") } @@ -405,7 +405,7 @@ class SafetyCenterSubpagesTest { openPageAndExit(context.getString(sourcesGroup.titleResId)) { waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) SafetySourceReceiver.setResponse( @@ -414,15 +414,15 @@ class SafetyCenterSubpagesTest { safetySourceTestData.buildSafetySourceDataWithSummary( severityLevel = SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION, entryTitle = "Updated title", - entrySummary = "Updated summary" + entrySummary = "Updated summary", ) - ) + ), ) UiAutomatorUtils2.getUiDevice().rotate() waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) waitAllTextNotDisplayed("Updated title", "Updated summary") } @@ -489,7 +489,7 @@ class SafetyCenterSubpagesTest { // Clear the data when action is triggered to simulate resolution. SafetySourceReceiver.setResponse( Request.ResolveAction(SINGLE_SOURCE_ID), - Response.ClearData + Response.ClearData, ) context.launchSafetyCenterActivity(withReceiverPermission = true) { @@ -921,7 +921,7 @@ class SafetyCenterSubpagesTest { waitPageTitleDisplayed(context.getString(sourcesGroup.titleResId)) waitAllTextDisplayed( context.getString(source.titleResId), - context.getString(source.summaryResId) + context.getString(source.summaryResId), ) } } @@ -952,7 +952,7 @@ class SafetyCenterSubpagesTest { waitAllTextDisplayed( context.getString(source.titleResId), context.getString(source.summaryResId), - safetyCenterResourcesApk.getStringByName("test_single_source_group_id_footer") + safetyCenterResourcesApk.getStringByName("test_single_source_group_id_footer"), ) } } @@ -975,7 +975,7 @@ class SafetyCenterSubpagesTest { private fun checkOnDismissedIssue( sourcesGroup: SafetySourcesGroup, issue: SafetySourceIssue, - block: () -> Unit + block: () -> Unit, ) { val safetyCenterIssueId = SafetyCenterTestData.issueId(SINGLE_SOURCE_ID, issue.id) safetyCenterTestHelper.dismissSafetyCenterIssue(safetyCenterIssueId) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/Coroutines.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/Coroutines.kt index a7009b19e..cc8c53d5e 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/Coroutines.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/Coroutines.kt @@ -56,14 +56,14 @@ object Coroutines { /** Shorthand for [runBlocking] combined with [withTimeoutOrNull] */ fun <T> runBlockingWithTimeoutOrNull( timeout: Duration = TIMEOUT_LONG, - block: suspend () -> T + block: suspend () -> T, ): T? = runBlocking { withTimeoutOrNull(timeout.toMillis()) { block() } } /** Check a condition using coroutines with a timeout. */ fun waitForWithTimeout( timeout: Duration = TIMEOUT_LONG, checkPeriod: Duration = CHECK_PERIOD, - condition: () -> Boolean + condition: () -> Boolean, ) { runBlockingWithTimeout(timeout) { waitFor(checkPeriod, condition) } } @@ -72,7 +72,7 @@ object Coroutines { fun waitForSuccessWithTimeout( timeout: Duration = TIMEOUT_LONG, checkPeriod: Duration = CHECK_PERIOD, - fallibleAction: () -> Unit + fallibleAction: () -> Unit, ) { waitForWithTimeout(timeout, checkPeriod) { try { diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/EnableSensorRule.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/EnableSensorRule.kt index 1ed0ecbc3..7303d631b 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/EnableSensorRule.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/EnableSensorRule.kt @@ -42,7 +42,7 @@ class EnableSensorRule(context: Context, val sensor: Int) : TestRule { override fun evaluate() { assumeTrue( "Test device does not support toggling sensor $sensor", - supportsSensorToggle() + supportsSensorToggle(), ) val oldSensorPrivacy = isSensorPrivacyEnabled() setSensorPrivacy(false) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/EqualsHashCodeToStringTester.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/EqualsHashCodeToStringTester.kt index 2dedfc853..77577d504 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/EqualsHashCodeToStringTester.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/EqualsHashCodeToStringTester.kt @@ -45,7 +45,7 @@ private constructor( private val ignoreHashCode: Boolean = false, private val ignoreToString: Boolean = false, private val parcelRoundTripEqualsEquivalence: Equivalence<T>? = null, - private val createCopy: ((T) -> T)? = null + private val createCopy: ((T) -> T)? = null, ) { private val equalsTester = EqualsTester() @@ -85,13 +85,13 @@ private constructor( parcelableCreator: Parcelable.Creator<T>, ignoreHashCode: Boolean = false, ignoreToString: Boolean = false, - createCopy: ((T) -> T)? = null + createCopy: ((T) -> T)? = null, ): EqualsHashCodeToStringTester<T> = EqualsHashCodeToStringTester( ignoreHashCode, ignoreToString, parcelRoundTripEqualsEquivalence(parcelableCreator), - createCopy + createCopy, ) /** @@ -103,13 +103,13 @@ private constructor( fun <T> of( ignoreHashCode: Boolean = false, ignoreToString: Boolean = false, - createCopy: ((T) -> T)? = null + createCopy: ((T) -> T)? = null, ): EqualsHashCodeToStringTester<T> = EqualsHashCodeToStringTester( ignoreHashCode, ignoreToString, parcelRoundTripEqualsEquivalence = null, - createCopy + createCopy, ) /** diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/NotificationCharacteristics.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/NotificationCharacteristics.kt index 81b752bca..11827a5f4 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/NotificationCharacteristics.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/NotificationCharacteristics.kt @@ -38,7 +38,7 @@ data class NotificationCharacteristics( private fun importanceMatches( statusBarNotificationWithChannel: StatusBarNotificationWithChannel, - characteristicImportance: Int + characteristicImportance: Int, ): Boolean { return characteristicImportance == IMPORTANCE_ANY || statusBarNotificationWithChannel.channel.importance == characteristicImportance @@ -46,7 +46,7 @@ data class NotificationCharacteristics( private fun blockableMatches( statusBarNotificationWithChannel: StatusBarNotificationWithChannel, - characteristicBlockable: Boolean? + characteristicBlockable: Boolean?, ): Boolean { return characteristicBlockable == null || statusBarNotificationWithChannel.channel.isBlockable == characteristicBlockable @@ -54,7 +54,7 @@ data class NotificationCharacteristics( fun safetySourceIdMatches( statusBarNotification: StatusBarNotification, - safetySourceId: String? + safetySourceId: String?, ): Boolean { return safetySourceId == null || SafetyCenterIds.issueKeyFromString(statusBarNotification.tag).safetySourceId == @@ -63,7 +63,7 @@ data class NotificationCharacteristics( private fun isMatch( statusBarNotificationWithChannel: StatusBarNotificationWithChannel, - characteristic: NotificationCharacteristics + characteristic: NotificationCharacteristics, ): Boolean { val notif = statusBarNotificationWithChannel.statusBarNotification.notification val extras = notif.extras @@ -75,13 +75,13 @@ data class NotificationCharacteristics( blockableMatches(statusBarNotificationWithChannel, characteristic.blockable) && safetySourceIdMatches( statusBarNotificationWithChannel.statusBarNotification, - characteristic.safetySourceId + characteristic.safetySourceId, ) } fun areMatching( statusBarNotifications: List<StatusBarNotificationWithChannel>, - characteristics: List<NotificationCharacteristics> + characteristics: List<NotificationCharacteristics>, ): Boolean { if (statusBarNotifications.size != characteristics.size) { return false diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterActivityLauncher.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterActivityLauncher.kt index 40515fa33..62f324d89 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterActivityLauncher.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterActivityLauncher.kt @@ -48,13 +48,13 @@ object SafetyCenterActivityLauncher { intentAction: String = ACTION_SAFETY_CENTER, withReceiverPermission: Boolean = false, preventTrampolineToSettings: Boolean = true, - block: () -> Unit + block: () -> Unit, ) { val launchSafetyCenterIntent = createIntent( intentAction, intentExtras, - preventTrampolineToSettings = preventTrampolineToSettings + preventTrampolineToSettings = preventTrampolineToSettings, ) if (withReceiverPermission) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { @@ -83,7 +83,7 @@ object SafetyCenterActivityLauncher { private fun createIntent( intentAction: String, intentExtras: Bundle?, - preventTrampolineToSettings: Boolean = false + preventTrampolineToSettings: Boolean = false, ): Intent { val launchIntent = Intent(intentAction).addFlags(FLAG_ACTIVITY_NEW_TASK).addFlags(FLAG_ACTIVITY_CLEAR_TASK) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterApisWithShellPermissions.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterApisWithShellPermissions.kt index 961d03c47..b5f732bad 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterApisWithShellPermissions.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterApisWithShellPermissions.kt @@ -52,7 +52,7 @@ object SafetyCenterApisWithShellPermissions { fun SafetyCenterManager.setSafetySourceDataWithPermission( safetySourceId: String, safetySourceData: SafetySourceData?, - safetyEvent: SafetyEvent + safetyEvent: SafetyEvent, ) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { setSafetySourceData(safetySourceId, safetySourceData, safetyEvent) @@ -72,7 +72,7 @@ object SafetyCenterApisWithShellPermissions { */ fun SafetyCenterManager.reportSafetySourceErrorWithPermission( safetySourceId: String, - safetySourceErrorDetails: SafetySourceErrorDetails + safetySourceErrorDetails: SafetySourceErrorDetails, ) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { reportSafetySourceError(safetySourceId, safetySourceErrorDetails) @@ -85,7 +85,7 @@ object SafetyCenterApisWithShellPermissions { */ fun SafetyCenterManager.refreshSafetySourcesWithPermission( refreshReason: Int, - safetySourceIds: List<String>? = null + safetySourceIds: List<String>? = null, ) { callWithShellPermissionIdentity(MANAGE_SAFETY_CENTER) { if (safetySourceIds != null) { @@ -116,7 +116,7 @@ object SafetyCenterApisWithShellPermissions { */ fun SafetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( executor: Executor, - listener: OnSafetyCenterDataChangedListener + listener: OnSafetyCenterDataChangedListener, ) { callWithShellPermissionIdentity(MANAGE_SAFETY_CENTER) { addOnSafetyCenterDataChangedListener(executor, listener) @@ -151,7 +151,7 @@ object SafetyCenterApisWithShellPermissions { */ fun SafetyCenterManager.executeSafetyCenterIssueActionWithPermission( safetyCenterIssueId: String, - safetyCenterIssueActionId: String + safetyCenterIssueActionId: String, ) { callWithShellPermissionIdentity(MANAGE_SAFETY_CENTER) { executeSafetyCenterIssueAction(safetyCenterIssueId, safetyCenterIssueActionId) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterEnabledChangedReceiver.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterEnabledChangedReceiver.kt index f8926caac..e454b6e25 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterEnabledChangedReceiver.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterEnabledChangedReceiver.kt @@ -54,16 +54,14 @@ class SafetyCenterEnabledChangedReceiver(private val context: Context) : Broadca fun setSafetyCenterEnabledWithReceiverPermissionAndWait( value: Boolean, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ): Boolean = callWithShellPermissionIdentity(READ_SAFETY_CENTER_STATUS) { SafetyCenterFlags.isEnabled = value receiveSafetyCenterEnabledChanged(timeout) } - fun setSafetyCenterEnabledWithoutReceiverPermissionAndWait( - value: Boolean, - ) { + fun setSafetyCenterEnabledWithoutReceiverPermissionAndWait(value: Boolean) { SafetyCenterFlags.isEnabled = value WaitForBroadcasts.waitForBroadcasts() receiveSafetyCenterEnabledChanged(TIMEOUT_SHORT) 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 912ea44ad..26a66a1a3 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterFlags.kt @@ -17,6 +17,7 @@ package com.android.safetycenter.testing import android.Manifest.permission.READ_DEVICE_CONFIG +import android.Manifest.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG import android.Manifest.permission.WRITE_DEVICE_CONFIG import android.annotation.TargetApi import android.app.job.JobInfo @@ -61,7 +62,7 @@ object SafetyCenterFlags { Flag( "safety_center_notifications_min_delay", defaultValue = Duration.ofHours(2), - DurationParser() + DurationParser(), ) /** @@ -72,7 +73,7 @@ object SafetyCenterFlags { Flag( "safety_center_notifications_allowed_sources", defaultValue = emptySet(), - SetParser(StringParser()) + SetParser(StringParser()), ) /** @@ -83,7 +84,7 @@ object SafetyCenterFlags { Flag( "safety_center_notifications_immediate_behavior_issues", defaultValue = emptySet(), - SetParser(StringParser()) + SetParser(StringParser()), ) /** @@ -98,7 +99,7 @@ object SafetyCenterFlags { Flag( "safety_center_notification_resurface_interval", defaultValue = Duration.ofDays(-1), - DurationParser() + DurationParser(), ) /** Flag that determines whether we should replace the IconAction of the lock screen source. */ @@ -119,7 +120,7 @@ object SafetyCenterFlags { Flag( "safety_center_refresh_sources_timeouts_millis", defaultValue = getAllRefreshTimeoutsMap(TEST_TIMEOUT), - MapParser(IntParser(), DurationParser()) + MapParser(IntParser(), DurationParser()), ) /** @@ -130,7 +131,7 @@ object SafetyCenterFlags { Flag( "safety_center_resolve_action_timeout_millis", defaultValue = TIMEOUT_LONG, - DurationParser() + DurationParser(), ) /** Flag that determines a duration after which a temporarily hidden issue will resurface. */ @@ -138,7 +139,7 @@ object SafetyCenterFlags { Flag( "safety_center_temp_hidden_issue_resurface_delay_millis", defaultValue = Duration.ofDays(2), - DurationParser() + DurationParser(), ) /** @@ -149,7 +150,7 @@ object SafetyCenterFlags { Flag( "safety_center_hide_resolved_ui_transition_delay_millis", defaultValue = Duration.ofMillis(400), - DurationParser() + DurationParser(), ) /** @@ -161,7 +162,7 @@ object SafetyCenterFlags { Flag( "safety_center_untracked_sources", defaultValue = emptySet(), - SetParser(StringParser()) + SetParser(StringParser()), ) /** @@ -173,7 +174,7 @@ object SafetyCenterFlags { Flag( "safety_center_resurface_issue_max_counts", defaultValue = emptyMap(), - MapParser(IntParser(), LongParser()) + MapParser(IntParser(), LongParser()), ) /** @@ -187,7 +188,7 @@ object SafetyCenterFlags { Flag( "safety_center_resurface_issue_delays_millis", defaultValue = emptyMap(), - MapParser(IntParser(), DurationParser()) + MapParser(IntParser(), DurationParser()), ) /** @@ -199,7 +200,7 @@ object SafetyCenterFlags { Flag( "safety_center_issue_category_allowlists", defaultValue = emptyMap(), - MapParser(IntParser(), SetParser(StringParser(), delimiter = "|")) + MapParser(IntParser(), SetParser(StringParser(), delimiter = "|")), ) /** @@ -211,7 +212,7 @@ object SafetyCenterFlags { Flag( "safety_center_actions_to_override_with_default_intent", defaultValue = emptyMap(), - MapParser(StringParser(), SetParser(StringParser(), delimiter = "|")) + MapParser(StringParser(), SetParser(StringParser(), delimiter = "|")), ) /** @@ -223,7 +224,7 @@ object SafetyCenterFlags { Flag( "safety_center_background_refresh_denied_sources", defaultValue = emptySet(), - SetParser(StringParser()) + SetParser(StringParser()), ) /** @@ -245,7 +246,7 @@ object SafetyCenterFlags { Flag( "safety_center_qs_tile_component_setting_flags", defaultValue = PackageManager.DONT_KILL_APP, - IntParser() + IntParser(), ) /** @@ -259,7 +260,7 @@ object SafetyCenterFlags { Flag( "safety_center_override_refresh_on_page_open_sources", defaultValue = setOf(), - SetParser(StringParser()) + SetParser(StringParser()), ) /** @@ -272,7 +273,7 @@ object SafetyCenterFlags { // do not set defaultValue to true, do not want background refreshes running // during other tests defaultValue = false, - BooleanParser() + BooleanParser(), ) /** @@ -286,7 +287,7 @@ object SafetyCenterFlags { Flag( "safety_center_periodic_background_interval_millis", defaultValue = Duration.ofDays(1), - DurationParser() + DurationParser(), ) /** Flag for allowlisting additional certificates for a given package. */ @@ -294,7 +295,7 @@ object SafetyCenterFlags { Flag( "safety_center_additional_allow_package_certs", defaultValue = emptyMap(), - MapParser(StringParser(), SetParser(StringParser(), delimiter = "|")) + MapParser(StringParser(), SetParser(StringParser(), delimiter = "|")), ) /** Every Safety Center flag. */ @@ -323,7 +324,7 @@ object SafetyCenterFlags { showSubpagesFlag, overrideRefreshOnPageOpenSourcesFlag, backgroundRefreshIsEnabledFlag, - periodicBackgroundRefreshIntervalFlag + periodicBackgroundRefreshIntervalFlag, ) /** A property that allows getting and setting the [isEnabledFlag]. */ @@ -453,7 +454,7 @@ object SafetyCenterFlags { REFRESH_REASON_DEVICE_LOCALE_CHANGE to refreshTimeout, REFRESH_REASON_SAFETY_CENTER_ENABLED to refreshTimeout, REFRESH_REASON_OTHER to refreshTimeout, - REFRESH_REASON_PERIODIC to refreshTimeout + REFRESH_REASON_PERIODIC to refreshTimeout, ) private interface Parser<T> { @@ -486,7 +487,7 @@ object SafetyCenterFlags { private class SetParser<T>( private val elementParser: Parser<T>, - private val delimiter: String = "," + private val delimiter: String = ",", ) : Parser<Set<T>> { override fun parseFromString(stringValue: String) = stringValue.split(delimiter).map(elementParser::parseFromString).toSet() @@ -499,7 +500,7 @@ object SafetyCenterFlags { private val keyParser: Parser<K>, private val valueParser: Parser<V>, private val entriesDelimiter: String = ",", - private val pairDelimiter: String = ":" + private val pairDelimiter: String = ":", ) : Parser<Map<K, V>> { override fun parseFromString(stringValue: String) = stringValue.split(entriesDelimiter).associate { pair -> @@ -532,13 +533,13 @@ object SafetyCenterFlags { } private fun writeDeviceConfigProperty(name: String, stringValue: String?) { - callWithShellPermissionIdentity(WRITE_DEVICE_CONFIG) { + callWithShellPermissionIdentity(WRITE_DEVICE_CONFIG, WRITE_ALLOWLISTED_DEVICE_CONFIG) { val valueWasSet = DeviceConfig.setProperty( NAMESPACE_PRIVACY, name, stringValue, /* makeDefault */ - false + false, ) require(valueWasSet) { "Could not set $name to: $stringValue" } } diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestConfigs.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestConfigs.kt index 261e179dd..231cec821 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestConfigs.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestConfigs.kt @@ -48,7 +48,7 @@ class SafetyCenterTestConfigs(private val context: Context) { context.packageManager .getPackageInfo( context.packageName, - PackageInfoFlags.of(GET_SIGNING_CERTIFICATES.toLong()) + PackageInfoFlags.of(GET_SIGNING_CERTIFICATES.toLong()), ) .signingInfo!! .apkContentsSigners[0] @@ -220,25 +220,25 @@ class SafetyCenterTestConfigs(private val context: Context) { .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_1, - DEDUPLICATION_GROUP_1 + DEDUPLICATION_GROUP_1, ) ) .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_2, - DEDUPLICATION_GROUP_1 + DEDUPLICATION_GROUP_1, ) ) .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_3, - DEDUPLICATION_GROUP_2 + DEDUPLICATION_GROUP_2, ) ) .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_4, - DEDUPLICATION_GROUP_3 + DEDUPLICATION_GROUP_3, ) ) .build() @@ -248,13 +248,13 @@ class SafetyCenterTestConfigs(private val context: Context) { .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_5, - DEDUPLICATION_GROUP_1 + DEDUPLICATION_GROUP_1, ) ) .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_6, - DEDUPLICATION_GROUP_3 + DEDUPLICATION_GROUP_3, ) ) .build() @@ -264,7 +264,7 @@ class SafetyCenterTestConfigs(private val context: Context) { .addSafetySource( issueOnlySafetySourceWithDuplicationInfo( SOURCE_ID_7, - DEDUPLICATION_GROUP_3 + DEDUPLICATION_GROUP_3, ) ) .build() diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt index 289bc32a8..631aae65f 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestData.kt @@ -80,7 +80,7 @@ class SafetyCenterTestData(context: Context) { ), safetyCenterResourcesApk.getStringByName( "overall_severity_level_ok_review_summary" - ) + ), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_UNKNOWN) .build() @@ -91,7 +91,7 @@ class SafetyCenterTestData(context: Context) { */ fun safetyCenterStatusOneAlert( statusResource: String, - overallSeverityLevel: Int + overallSeverityLevel: Int, ): SafetyCenterStatus = safetyCenterStatusNAlerts(statusResource, overallSeverityLevel, 1) /** @@ -105,7 +105,7 @@ class SafetyCenterTestData(context: Context) { ): SafetyCenterStatus = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName(statusResource), - getAlertString(numAlerts) + getAlertString(numAlerts), ) .setSeverityLevel(overallSeverityLevel) .build() @@ -114,12 +114,10 @@ class SafetyCenterTestData(context: Context) { * Returns an information [SafetyCenterStatus] that has "Tip(s) available" as a summary for the * given [numTipIssues]. */ - fun safetyCenterStatusTips( - numTipIssues: Int, - ): SafetyCenterStatus = + fun safetyCenterStatusTips(numTipIssues: Int): SafetyCenterStatus = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), - getIcuPluralsString("overall_severity_level_tip_summary", numTipIssues) + getIcuPluralsString("overall_severity_level_tip_summary", numTipIssues), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -128,15 +126,13 @@ class SafetyCenterTestData(context: Context) { * Returns an information [SafetyCenterStatus] that has "Action(s) taken" as a summary for the * given [numAutomaticIssues]. */ - fun safetyCenterStatusActionsTaken( - numAutomaticIssues: Int, - ): SafetyCenterStatus = + fun safetyCenterStatusActionsTaken(numAutomaticIssues: Int): SafetyCenterStatus = SafetyCenterStatus.Builder( safetyCenterResourcesApk.getStringByName("overall_severity_level_ok_title"), getIcuPluralsString( "overall_severity_level_action_taken_summary", - numAutomaticIssues - ) + numAutomaticIssues, + ), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_OK) .build() @@ -150,7 +146,7 @@ class SafetyCenterTestData(context: Context) { safetyCenterResourcesApk.getStringByName( "overall_severity_level_critical_safety_warning_title" ), - getAlertString(numAlerts) + getAlertString(numAlerts), ) .setSeverityLevel(OVERALL_SEVERITY_LEVEL_CRITICAL_WARNING) .build() @@ -165,7 +161,7 @@ class SafetyCenterTestData(context: Context) { userId: Int = UserHandle.myUserId(), title: CharSequence = "OK", pendingIntent: PendingIntent? = - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) = SafetyCenterEntry.Builder(entryId(sourceId, userId), title) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNKNOWN) @@ -183,7 +179,7 @@ class SafetyCenterTestData(context: Context) { userId: Int = UserHandle.myUserId(), title: CharSequence = "OK", pendingIntent: PendingIntent? = - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) = safetyCenterEntryDefaultBuilder(sourceId, userId, title, pendingIntent).build() /** @@ -194,7 +190,7 @@ class SafetyCenterTestData(context: Context) { fun safetyCenterEntryDefaultStaticBuilder( sourceId: String, userId: Int = UserHandle.myUserId(), - title: CharSequence = "OK" + title: CharSequence = "OK", ) = SafetyCenterEntry.Builder(entryId(sourceId, userId), title) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) @@ -219,7 +215,7 @@ class SafetyCenterTestData(context: Context) { fun safetyCenterEntryUnspecified( sourceId: String, pendingIntent: PendingIntent? = - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) = SafetyCenterEntry.Builder(entryId(sourceId), "Unspecified title") .setSeverityLevel(ENTRY_SEVERITY_LEVEL_UNSPECIFIED) @@ -237,7 +233,7 @@ class SafetyCenterTestData(context: Context) { fun safetyCenterEntryOkBuilder( sourceId: String, userId: Int = UserHandle.myUserId(), - title: CharSequence = "Ok title" + title: CharSequence = "Ok title", ) = SafetyCenterEntry.Builder(entryId(sourceId, userId), title) .setSeverityLevel(ENTRY_SEVERITY_LEVEL_OK) @@ -252,7 +248,7 @@ class SafetyCenterTestData(context: Context) { fun safetyCenterEntryOk( sourceId: String, userId: Int = UserHandle.myUserId(), - title: CharSequence = "Ok title" + title: CharSequence = "Ok title", ) = safetyCenterEntryOkBuilder(sourceId, userId, title).build() /** @@ -262,7 +258,7 @@ class SafetyCenterTestData(context: Context) { */ fun safetyCenterEntryRecommendation( sourceId: String, - summary: String = "Recommendation summary" + summary: String = "Recommendation summary", ) = SafetyCenterEntry.Builder(entryId(sourceId), "Recommendation title") .setSeverityLevel(ENTRY_SEVERITY_LEVEL_RECOMMENDATION) @@ -291,12 +287,12 @@ class SafetyCenterTestData(context: Context) { sourceId: String, userId: Int = UserHandle.myUserId(), attributionTitle: String? = "OK", - groupId: String? = SINGLE_SOURCE_GROUP_ID + groupId: String? = SINGLE_SOURCE_GROUP_ID, ) = SafetyCenterIssue.Builder( issueId(sourceId, INFORMATION_ISSUE_ID, userId = userId), "Information issue title", - "Information issue summary" + "Information issue summary", ) .setSeverityLevel(ISSUE_SEVERITY_LEVEL_OK) .setShouldConfirmDismissal(false) @@ -307,10 +303,10 @@ class SafetyCenterTestData(context: Context) { sourceId, INFORMATION_ISSUE_ID, INFORMATION_ISSUE_ACTION_ID, - userId + userId, ), "Review", - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) .build() ) @@ -332,12 +328,12 @@ class SafetyCenterTestData(context: Context) { userId: Int = UserHandle.myUserId(), attributionTitle: String? = "OK", groupId: String? = SINGLE_SOURCE_GROUP_ID, - confirmationDialog: Boolean = false + confirmationDialog: Boolean = false, ) = SafetyCenterIssue.Builder( issueId(sourceId, RECOMMENDATION_ISSUE_ID, userId = userId), "Recommendation issue title", - "Recommendation issue summary" + "Recommendation issue summary", ) .setSeverityLevel(ISSUE_SEVERITY_LEVEL_RECOMMENDATION) .setActions( @@ -347,10 +343,10 @@ class SafetyCenterTestData(context: Context) { sourceId, RECOMMENDATION_ISSUE_ID, RECOMMENDATION_ISSUE_ACTION_ID, - userId + userId, ), "See issue", - safetySourceTestData.createTestActivityRedirectPendingIntent() + safetySourceTestData.createTestActivityRedirectPendingIntent(), ) .apply { if (confirmationDialog && SdkLevel.isAtLeastU()) { @@ -359,7 +355,7 @@ class SafetyCenterTestData(context: Context) { "Confirmation title", "Confirmation text", "Confirmation yes", - "Confirmation no" + "Confirmation no", ) ) } @@ -384,12 +380,12 @@ class SafetyCenterTestData(context: Context) { isActionInFlight: Boolean = false, userId: Int = UserHandle.myUserId(), attributionTitle: String? = "OK", - groupId: String? = SINGLE_SOURCE_GROUP_ID + groupId: String? = SINGLE_SOURCE_GROUP_ID, ) = SafetyCenterIssue.Builder( issueId(sourceId, CRITICAL_ISSUE_ID, userId = userId), "Critical issue title", - "Critical issue summary" + "Critical issue summary", ) .setSeverityLevel(ISSUE_SEVERITY_LEVEL_CRITICAL_WARNING) .setActions( @@ -399,10 +395,10 @@ class SafetyCenterTestData(context: Context) { sourceId, CRITICAL_ISSUE_ID, CRITICAL_ISSUE_ACTION_ID, - userId + userId, ), "Solve issue", - safetySourceTestData.criticalIssueActionPendingIntent + safetySourceTestData.criticalIssueActionPendingIntent, ) .setWillResolve(true) .setIsInFlight(isActionInFlight) @@ -432,7 +428,7 @@ class SafetyCenterTestData(context: Context) { val messageFormat = MessageFormat( safetyCenterResourcesApk.getStringByName(name, formatArgs), - Locale.getDefault() + Locale.getDefault(), ) val arguments = ArrayMap<String, Any>() arguments["count"] = count @@ -448,7 +444,7 @@ class SafetyCenterTestData(context: Context) { .build(), emptyList(), emptyList(), - emptyList() + emptyList(), ) /** Creates an ID for a Safety Center entry. */ @@ -465,7 +461,7 @@ class SafetyCenterTestData(context: Context) { sourceId: String, sourceIssueId: String, issueTypeId: String = ISSUE_TYPE_ID, - userId: Int = UserHandle.myUserId() + userId: Int = UserHandle.myUserId(), ) = SafetyCenterIds.encodeToString( SafetyCenterIssueId.newBuilder() @@ -485,7 +481,7 @@ class SafetyCenterTestData(context: Context) { sourceId: String, sourceIssueId: String, sourceIssueActionId: String, - userId: Int = UserHandle.myUserId() + userId: Int = UserHandle.myUserId(), ) = SafetyCenterIds.encodeToString( SafetyCenterIssueActionId.newBuilder() @@ -546,7 +542,7 @@ class SafetyCenterTestData(context: Context) { private fun SafetyCenterData.copy( issues: List<SafetyCenterIssue> = this.issues, dismissedIssues: List<SafetyCenterIssue> = this.dismissedIssues, - extras: Bundle = this.extras + extras: Bundle = this.extras, ): SafetyCenterData = SafetyCenterData.Builder(status) .apply { 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 a138675d3..ac646648a 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestHelper.kt @@ -108,7 +108,7 @@ class SafetyCenterTestHelper(val context: Context) { } assumeTrue( "Cannot toggle SafetyCenter using DeviceConfig", - safetyCenterCanBeToggledUsingDeviceConfig() + safetyCenterCanBeToggledUsingDeviceConfig(), ) setEnabledWaitingForSafetyCenterBroadcastIdle(value, safetyCenterConfig) } @@ -132,7 +132,7 @@ class SafetyCenterTestHelper(val context: Context) { val listener = SafetyCenterTestListener() safetyCenterManager.addOnSafetyCenterDataChangedListenerWithPermission( directExecutor(), - listener + listener, ) if (skipInitialData) { listener.receiveSafetyCenterData() @@ -145,14 +145,14 @@ class SafetyCenterTestHelper(val context: Context) { fun setData( safetySourceId: String, safetySourceData: SafetySourceData?, - safetyEvent: SafetyEvent = EVENT_SOURCE_STATE_CHANGED + safetyEvent: SafetyEvent = EVENT_SOURCE_STATE_CHANGED, ) { Log.d(TAG, "setData for $safetySourceId") require(isEnabled()) safetyCenterManager.setSafetySourceDataWithPermission( safetySourceId, safetySourceData, - safetyEvent + safetyEvent, ) } @@ -173,7 +173,7 @@ class SafetyCenterTestHelper(val context: Context) { private fun setEnabledWaitingForSafetyCenterBroadcastIdle( value: Boolean, - safetyCenterConfig: SafetyCenterConfig + safetyCenterConfig: SafetyCenterConfig, ) = callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE, READ_SAFETY_CENTER_STATUS) { val enabledChangedReceiver = SafetyCenterEnabledChangedReceiver(context) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt index 8ce5c25d4..46e9b6593 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestListener.kt @@ -58,7 +58,7 @@ class SafetyCenterTestListener : OnSafetyCenterDataChangedListener { */ fun receiveSafetyCenterData( timeout: Duration = TIMEOUT_LONG, - matching: (SafetyCenterData) -> Boolean = { true } + matching: (SafetyCenterData) -> Boolean = { true }, ): SafetyCenterData = runBlockingWithTimeout(timeout) { var safetyCenterData = dataChannel.receive() @@ -78,7 +78,7 @@ class SafetyCenterTestListener : OnSafetyCenterDataChangedListener { */ fun waitForSafetyCenterRefresh( timeout: Duration = TIMEOUT_LONG, - withErrorEntry: Boolean? = null + withErrorEntry: Boolean? = null, ): SafetyCenterData { receiveSafetyCenterData(timeout) { it.status.refreshStatus == SafetyCenterStatus.REFRESH_STATUS_DATA_FETCH_IN_PROGRESS || diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestRule.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestRule.kt index dcbc4ebe9..c89b29b2a 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestRule.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetyCenterTestRule.kt @@ -23,7 +23,7 @@ import org.junit.runners.model.Statement /** A JUnit [TestRule] that performs setup and reset steps before and after Safety Center tests. */ class SafetyCenterTestRule( private val safetyCenterTestHelper: SafetyCenterTestHelper, - private val withNotifications: Boolean = false + private val withNotifications: Boolean = false, ) : TestRule { override fun apply(base: Statement, description: Description): Statement { diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceIntentHandler.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceIntentHandler.kt index 8386228b8..77d338f90 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceIntentHandler.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceIntentHandler.kt @@ -114,7 +114,7 @@ class SafetySourceIntentHandler { private suspend fun SafetyCenterManager.processRefreshSafetySources( intent: Intent, - userId: Int + userId: Int, ) { val broadcastId = intent.getStringExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID) if (broadcastId.isNullOrEmpty()) { @@ -190,7 +190,7 @@ class SafetySourceIntentHandler { private fun createResolveActionSuccessEvent( sourceIssueId: String, - sourceIssueActionId: String + sourceIssueActionId: String, ) = SafetyEvent.Builder(SAFETY_EVENT_TYPE_RESOLVING_ACTION_SUCCEEDED) .setSafetySourceIssueId(sourceIssueId) @@ -218,7 +218,7 @@ class SafetySourceIntentHandler { private suspend fun SafetyCenterManager.processRequest( request: Request, - safetyEventForResponse: (Response) -> SafetyEvent + safetyEventForResponse: (Response) -> SafetyEvent, ) { val response = mutex.withLock { requestsToResponses[request] } ?: return val safetyEvent = response.overrideSafetyEvent ?: safetyEventForResponse(response) @@ -242,25 +242,25 @@ class SafetySourceIntentHandler { /** Creates a refresh [Request] based on the given [sourceId] and [userId]. */ data class Refresh( override val sourceId: String, - override val userId: Int = UserHandle.myUserId() + override val userId: Int = UserHandle.myUserId(), ) : Request /** Creates a rescan [Request] based on the given [sourceId] and [userId]. */ data class Rescan( override val sourceId: String, - override val userId: Int = UserHandle.myUserId() + override val userId: Int = UserHandle.myUserId(), ) : Request /** Creates a resolve action [Request] based on the given [sourceId] and [userId]. */ data class ResolveAction( override val sourceId: String, - override val userId: Int = UserHandle.myUserId() + override val userId: Int = UserHandle.myUserId(), ) : Request /** Creates an issue dismissal [Request] based on the given [sourceId] and [userId]. */ data class DismissIssue( override val sourceId: String, - override val userId: Int = UserHandle.myUserId() + override val userId: Int = UserHandle.myUserId(), ) : Request } @@ -295,7 +295,7 @@ class SafetySourceIntentHandler { data class SetData( val safetySourceData: SafetySourceData, val overrideBroadcastId: String? = null, - override val overrideSafetyEvent: SafetyEvent? = null + override val overrideSafetyEvent: SafetyEvent? = null, ) : Response } diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceReceiver.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceReceiver.kt index 29072c989..6b86df0dd 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceReceiver.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceReceiver.kt @@ -86,7 +86,7 @@ class SafetySourceReceiver : BroadcastReceiver() { NotificationChannel( NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_ID, - IMPORTANCE_DEFAULT + IMPORTANCE_DEFAULT, ) ) startForeground( @@ -98,7 +98,7 @@ class SafetySourceReceiver : BroadcastReceiver() { "ForegroundService" ) .setSmallIcon(android.R.drawable.ic_info) - .build() + .build(), ) serviceScope.launch { try { @@ -150,7 +150,7 @@ class SafetySourceReceiver : BroadcastReceiver() { componentName, if (enabled) COMPONENT_ENABLED_STATE_ENABLED else COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP + PackageManager.DONT_KILL_APP, ) } @@ -165,7 +165,7 @@ class SafetySourceReceiver : BroadcastReceiver() { fun SafetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait( refreshReason: Int, safetySourceIds: List<String>? = null, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ): String = callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { refreshSafetySourcesWithPermission(refreshReason, safetySourceIds) @@ -174,7 +174,7 @@ class SafetySourceReceiver : BroadcastReceiver() { fun SafetyCenterManager.refreshSafetySourcesWithoutReceiverPermissionAndWait( refreshReason: Int, - safetySourceIds: List<String>? = null + safetySourceIds: List<String>? = null, ) { refreshSafetySourcesWithPermission(refreshReason, safetySourceIds) WaitForBroadcasts.waitForBroadcasts() @@ -183,16 +183,14 @@ class SafetySourceReceiver : BroadcastReceiver() { fun setSafetyCenterEnabledWithReceiverPermissionAndWait( value: Boolean, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ): Boolean = callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { SafetyCenterFlags.isEnabled = value receiveSafetyCenterEnabledChanged(timeout) } - fun setSafetyCenterEnabledWithoutReceiverPermissionAndWait( - value: Boolean, - ) { + fun setSafetyCenterEnabledWithoutReceiverPermissionAndWait(value: Boolean) { SafetyCenterFlags.isEnabled = value WaitForBroadcasts.waitForBroadcasts() receiveSafetyCenterEnabledChanged(TIMEOUT_SHORT) @@ -201,7 +199,7 @@ class SafetySourceReceiver : BroadcastReceiver() { fun SafetyCenterManager.executeSafetyCenterIssueActionWithPermissionAndWait( issueId: String, issueActionId: String, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { executeSafetyCenterIssueActionWithPermission(issueId, issueActionId) @@ -211,7 +209,7 @@ class SafetySourceReceiver : BroadcastReceiver() { fun SafetyCenterManager.dismissSafetyCenterIssueWithPermissionAndWait( issueId: String, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ) { callWithShellPermissionIdentity(SEND_SAFETY_CENTER_UPDATE) { dismissSafetyCenterIssueWithPermission(issueId) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceTestData.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceTestData.kt index 7e77c0827..aad665004 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceTestData.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SafetySourceTestData.kt @@ -63,11 +63,11 @@ class SafetySourceTestData(private val context: Context) { */ fun createTestActivityRedirectPendingIntent( explicit: Boolean = true, - identifier: String? = null + identifier: String? = null, ) = createRedirectPendingIntent( context, - createTestActivityIntent(context, explicit).setIdentifier(identifier) + createTestActivityIntent(context, explicit).setIdentifier(identifier), ) /** A [SafetySourceData] with a [SEVERITY_LEVEL_UNSPECIFIED] [SafetySourceStatus]. */ @@ -77,7 +77,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Unspecified title", "Unspecified summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setEnabled(false) .build() @@ -94,7 +94,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Clickable disabled title", "Clickable disabled summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setEnabled(false) .setPendingIntent(createTestActivityRedirectPendingIntent()) @@ -111,7 +111,7 @@ class SafetySourceTestData(private val context: Context) { fun defaultInformationIssueBuilder( id: String = INFORMATION_ISSUE_ID, title: String = "Information issue title", - summary: String = "Information issue summary" + summary: String = "Information issue summary", ) = SafetySourceIssue.Builder(id, title, summary, SEVERITY_LEVEL_INFORMATION, ISSUE_TYPE_ID) .addAction(action()) @@ -120,7 +120,7 @@ class SafetySourceTestData(private val context: Context) { fun action( id: String = INFORMATION_ISSUE_ACTION_ID, label: String = "Review", - pendingIntent: PendingIntent = createTestActivityRedirectPendingIntent() + pendingIntent: PendingIntent = createTestActivityRedirectPendingIntent(), ) = Action.Builder(id, label, pendingIntent).build() /** @@ -133,7 +133,7 @@ class SafetySourceTestData(private val context: Context) { "Information issue title", "Information issue summary", SEVERITY_LEVEL_INFORMATION, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .setSubtitle("Information issue subtitle") .addAction(action()) @@ -149,7 +149,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Unspecified title", "Unspecified summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -167,7 +167,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Unspecified title for Work", "Unspecified summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -185,7 +185,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Unspecified title for Private", "Unspecified summary", - SEVERITY_LEVEL_UNSPECIFIED + SEVERITY_LEVEL_UNSPECIFIED, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -292,7 +292,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Ok title for Work", "Ok summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -310,7 +310,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Ok title for Private", "Ok summary", - SEVERITY_LEVEL_INFORMATION + SEVERITY_LEVEL_INFORMATION, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -339,20 +339,20 @@ class SafetySourceTestData(private val context: Context) { fun defaultRecommendationIssueBuilder( title: String = "Recommendation issue title", summary: String = "Recommendation issue summary", - confirmationDialog: Boolean = false + confirmationDialog: Boolean = false, ) = SafetySourceIssue.Builder( RECOMMENDATION_ISSUE_ID, title, summary, SEVERITY_LEVEL_RECOMMENDATION, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction( Action.Builder( RECOMMENDATION_ISSUE_ACTION_ID, "See issue", - createTestActivityRedirectPendingIntent() + createTestActivityRedirectPendingIntent(), ) .apply { if (confirmationDialog && SdkLevel.isAtLeastU()) { @@ -418,7 +418,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Recommendation title", "Recommendation summary", - SEVERITY_LEVEL_RECOMMENDATION + SEVERITY_LEVEL_RECOMMENDATION, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -476,7 +476,7 @@ class SafetySourceTestData(private val context: Context) { fun resolvingActionPendingIntent( sourceId: String = SINGLE_SOURCE_ID, sourceIssueId: String = CRITICAL_ISSUE_ID, - sourceIssueActionId: String = CRITICAL_ISSUE_ACTION_ID + sourceIssueActionId: String = CRITICAL_ISSUE_ACTION_ID, ) = broadcastPendingIntent( Intent(ACTION_RESOLVE_ACTION) @@ -498,7 +498,7 @@ class SafetySourceTestData(private val context: Context) { Action.Builder( CRITICAL_ISSUE_ACTION_ID, "Solve issue", - criticalIssueActionPendingIntent(sourceId = sourceId) + criticalIssueActionPendingIntent(sourceId = sourceId), ) .setWillResolve(true) .build() @@ -510,7 +510,7 @@ class SafetySourceTestData(private val context: Context) { Action.Builder( CRITICAL_ISSUE_ACTION_ID, "Solve issue", - criticalIssueActionPendingIntent + criticalIssueActionPendingIntent, ) .setWillResolve(true) .setConfirmationDialogDetails(CONFIRMATION_DETAILS) @@ -521,7 +521,7 @@ class SafetySourceTestData(private val context: Context) { Action.Builder( CRITICAL_ISSUE_ACTION_ID, "Redirect", - createTestActivityRedirectPendingIntent() + createTestActivityRedirectPendingIntent(), ) .build() @@ -537,7 +537,7 @@ class SafetySourceTestData(private val context: Context) { Action.Builder( CRITICAL_ISSUE_ACTION_ID, "Solve issue", - criticalIssueActionPendingIntent(sourceId = sourceId) + criticalIssueActionPendingIntent(sourceId = sourceId), ) .setWillResolve(true) .setSuccessMessage("Issue solved") @@ -550,7 +550,7 @@ class SafetySourceTestData(private val context: Context) { "Critical issue title", "Critical issue summary", SEVERITY_LEVEL_CRITICAL_WARNING, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction(criticalResolvingActionWithSuccessMessage) .build() @@ -562,7 +562,7 @@ class SafetySourceTestData(private val context: Context) { "Critical issue title", "Critical issue summary", SEVERITY_LEVEL_CRITICAL_WARNING, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction(criticalResolvingActionWithSuccessMessage(sourceId = sourceId)) .build() @@ -577,13 +577,13 @@ class SafetySourceTestData(private val context: Context) { "Critical issue title 2", "Critical issue summary 2", SEVERITY_LEVEL_CRITICAL_WARNING, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction( Action.Builder( CRITICAL_ISSUE_ACTION_ID, "Go solve issue", - createTestActivityRedirectPendingIntent() + createTestActivityRedirectPendingIntent(), ) .build() ) @@ -620,7 +620,7 @@ class SafetySourceTestData(private val context: Context) { "Critical issue title", "Critical issue summary", SEVERITY_LEVEL_CRITICAL_WARNING, - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction(criticalResolvingAction(sourceId)) @@ -679,7 +679,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Critical title", "Critical summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -811,7 +811,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Critical title", "Critical summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -829,7 +829,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Critical title", "Critical summary", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -854,7 +854,7 @@ class SafetySourceTestData(private val context: Context) { SafetySourceStatus.Builder( "Critical title 2", "Critical summary 2", - SEVERITY_LEVEL_CRITICAL_WARNING + SEVERITY_LEVEL_CRITICAL_WARNING, ) .setPendingIntent(createTestActivityRedirectPendingIntent()) .build() @@ -870,7 +870,7 @@ class SafetySourceTestData(private val context: Context) { severityLevel: Int, entrySummary: String, withIssue: Boolean = false, - entryTitle: String = "Entry title" + entryTitle: String = "Entry title", ) = SafetySourceData.Builder() .setStatus( @@ -886,13 +886,13 @@ class SafetySourceTestData(private val context: Context) { "Issue title", "Issue summary", max(severityLevel, SEVERITY_LEVEL_INFORMATION), - ISSUE_TYPE_ID + ISSUE_TYPE_ID, ) .addAction( Action.Builder( "action_id", "Action", - createTestActivityRedirectPendingIntent() + createTestActivityRedirectPendingIntent(), ) .build() ) @@ -907,7 +907,7 @@ class SafetySourceTestData(private val context: Context) { context, 0, intent.addFlags(FLAG_RECEIVER_FOREGROUND).setPackage(context.packageName), - PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_IMMUTABLE, ) companion object { @@ -945,7 +945,7 @@ class SafetySourceTestData(private val context: Context) { CONFIRMATION_TITLE, CONFIRMATION_TEXT, CONFIRMATION_YES, - CONFIRMATION_NO + CONFIRMATION_NO, ) /** A [SafetyEvent] to push arbitrary changes to Safety Center. */ @@ -979,7 +979,7 @@ class SafetySourceTestData(private val context: Context) { context, 0 /* requestCode */, intent, - PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_IMMUTABLE, ) } } diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SettingsPackage.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SettingsPackage.kt index 2ba127f4e..8fef70ce3 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/SettingsPackage.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/SettingsPackage.kt @@ -38,7 +38,7 @@ object SettingsPackage { PackageManager.MATCH_DIRECT_BOOT_AWARE or PackageManager.MATCH_DIRECT_BOOT_UNAWARE) .toLong() - ) + ), )!! .activityInfo .packageName diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/StatusBarNotificationWithChannel.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/StatusBarNotificationWithChannel.kt index 53ea34362..a4569b72b 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/StatusBarNotificationWithChannel.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/StatusBarNotificationWithChannel.kt @@ -22,5 +22,5 @@ import android.service.notification.StatusBarNotification /** Tuple of [StatusBarNotification] and the [NotificationChannel] it was posted to. */ data class StatusBarNotificationWithChannel( val statusBarNotification: StatusBarNotification, - val channel: NotificationChannel + val channel: NotificationChannel, ) diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestActivity.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestActivity.kt index eceffb74f..12b4f7fd2 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestActivity.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestActivity.kt @@ -52,10 +52,12 @@ class TestActivity : Activity() { fun enableHighPriorityAlias() { setAliasEnabledState(COMPONENT_ENABLED_STATE_ENABLED) } + /** @see [enableHighPriorityAlias] */ fun disableHighPriorityAlias() { setAliasEnabledState(COMPONENT_ENABLED_STATE_DISABLED) } + private fun setAliasEnabledState(state: Int) { val name = ComponentName(getApplicationContext(), TestActivity::class.java.name + "Priority") diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestNotificationListener.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestNotificationListener.kt index 21bf76fad..17b520349 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestNotificationListener.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/TestNotificationListener.kt @@ -115,7 +115,7 @@ class TestNotificationListener : NotificationListenerService() { */ fun waitForSingleNotificationMatching( characteristics: NotificationCharacteristics, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ): StatusBarNotificationWithChannel { return waitForNotificationsMatching(characteristics, timeout = timeout).first() } @@ -128,12 +128,12 @@ class TestNotificationListener : NotificationListenerService() { */ fun waitForNotificationsMatching( vararg characteristics: NotificationCharacteristics, - timeout: Duration = TIMEOUT_LONG + timeout: Duration = TIMEOUT_LONG, ): List<StatusBarNotificationWithChannel> { val charsList = characteristics.toList() return waitForNotificationsToSatisfy( timeout = timeout, - description = "notification(s) matching characteristics $charsList" + description = "notification(s) matching characteristics $charsList", ) { NotificationCharacteristics.areMatching(it, charsList) } @@ -147,7 +147,7 @@ class TestNotificationListener : NotificationListenerService() { */ fun waitForSuccessNotification( successMessage: String, - onNotification: (StatusBarNotification) -> Unit = {} + onNotification: (StatusBarNotification) -> Unit = {}, ) { // Only wait for the notification event and don't wait for all notifications to "settle" // as this notification is auto-cancelled after 10s; which can cause flakyness. @@ -185,7 +185,7 @@ class TestNotificationListener : NotificationListenerService() { timeout: Duration = TIMEOUT_LONG, forAtLeast: Duration = TIMEOUT_SHORT, description: String, - predicate: (List<StatusBarNotificationWithChannel>) -> Boolean + predicate: (List<StatusBarNotificationWithChannel>) -> Boolean, ): List<StatusBarNotificationWithChannel> { // First we wait at most timeout for the active notifications to satisfy the given // predicate or otherwise we throw: @@ -198,7 +198,7 @@ class TestNotificationListener : NotificationListenerService() { throw AssertionError( "Expected: $description, but notifications were " + "${getSafetyCenterNotifications()} after waiting for $timeout", - e + e, ) } @@ -298,7 +298,7 @@ class TestNotificationListener : NotificationListenerService() { getInstanceOrThrow().cancelNotification(key) waitForNotificationsToSatisfy( timeout = TIMEOUT_LONG, - description = "no notification with the key $key" + description = "no notification with the key $key", ) { notifications -> notifications.none { it.statusBarNotification.key == key } } @@ -327,7 +327,7 @@ class TestNotificationListener : NotificationListenerService() { throw IllegalStateException( "Notification dismissal was not recorded in the issue cache: " + dumpIssueDismissalsRepositoryState(), - e + e, ) } } @@ -362,7 +362,7 @@ class TestNotificationListener : NotificationListenerService() { fun reset(context: Context) { waitForNotificationsToSatisfy( forAtLeast = Duration.ZERO, - description = "all Safety Center notifications removed in tear down" + description = "all Safety Center notifications removed in tear down", ) { it.isEmpty() } diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt index 0e062692a..c7d195528 100644 --- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt +++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt @@ -175,7 +175,7 @@ object UiTestHelper { fun waitGroupShownOnHomepage(context: Context, group: SafetySourcesGroup) { waitAllTextDisplayed( context.getString(group.titleResId), - context.getString(group.summaryResId) + context.getString(group.summaryResId), ) } |