diff options
7 files changed, 121 insertions, 72 deletions
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/privacysources/SafetyCenterReceiverTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/privacysources/SafetyCenterReceiverTest.kt index 6a45ac7c4..a0199979d 100644 --- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/privacysources/SafetyCenterReceiverTest.kt +++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/privacysources/SafetyCenterReceiverTest.kt @@ -40,10 +40,10 @@ import com.android.permissioncontroller.privacysources.SafetyCenterReceiver.Refr import com.android.permissioncontroller.privacysources.SafetyCenterReceiver.RefreshEvent.EVENT_REFRESH_REQUESTED import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestCoroutineDispatcher +import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.resetMain -import kotlinx.coroutines.test.runBlockingTest +import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain import org.junit.After import org.junit.Before @@ -74,7 +74,7 @@ class SafetyCenterReceiverTest { val application = Mockito.mock(PermissionControllerApplication::class.java) } - private val testCoroutineDispatcher = TestCoroutineDispatcher() + private val unconfinedCoroutineDispatcher = UnconfinedTestDispatcher() @Mock lateinit var mockSafetyCenterManager: SafetyCenterManager @Mock lateinit var mockPackageManager: PackageManager @@ -88,7 +88,7 @@ class SafetyCenterReceiverTest { private fun privacySourceMap(context: Context) = mapOf( TEST_PRIVACY_SOURCE_ID to mockPrivacySource, - TEST_PRIVACY_SOURCE_ID_2 to mockPrivacySource2 + TEST_PRIVACY_SOURCE_ID_2 to mockPrivacySource2, ) @Before @@ -110,28 +110,28 @@ class SafetyCenterReceiverTest { whenever( Utils.getSystemServiceSafe( any(ContextWrapper::class.java), - eq(UserManager::class.java) + eq(UserManager::class.java), ) ) .thenReturn(mockUserManager) whenever( Utils.getSystemServiceSafe( any(ContextWrapper::class.java), - eq(SafetyCenterManager::class.java) + eq(SafetyCenterManager::class.java), ) ) .thenReturn(mockSafetyCenterManager) whenever(mockUserManager.isProfile).thenReturn(false) - safetyCenterReceiver = SafetyCenterReceiver(::privacySourceMap, testCoroutineDispatcher) + safetyCenterReceiver = + SafetyCenterReceiver(::privacySourceMap, unconfinedCoroutineDispatcher) - Dispatchers.setMain(testCoroutineDispatcher) + Dispatchers.setMain(unconfinedCoroutineDispatcher) } @After fun cleanup() { Dispatchers.resetMain() - testCoroutineDispatcher.cleanupTestCoroutines() mockitoSession.finishMocking() } @@ -141,91 +141,104 @@ class SafetyCenterReceiverTest { DeviceConfig.getInt( eq(DeviceConfig.NAMESPACE_PRIVACY), eq(SafetyCenterQsTileService.QS_TILE_COMPONENT_SETTING_FLAGS), - ArgumentMatchers.anyInt() + ArgumentMatchers.anyInt(), ) ) .thenReturn(PackageManager.DONT_KILL_APP) } @Test - fun onReceive_actionSafetyCenterEnabledChanged() = runBlockingTest { - mockQSTileSettingsFlag() - safetyCenterReceiver.onReceive(application, Intent(ACTION_SAFETY_CENTER_ENABLED_CHANGED)) + fun onReceive_actionSafetyCenterEnabledChanged() = + runTest(UnconfinedTestDispatcher()) { + mockQSTileSettingsFlag() + safetyCenterReceiver.onReceive( + application, + Intent(ACTION_SAFETY_CENTER_ENABLED_CHANGED), + ) - verify(mockPrivacySource).safetyCenterEnabledChanged(application, true) - verify(mockPrivacySource2).safetyCenterEnabledChanged(application, true) - } + verify(mockPrivacySource).safetyCenterEnabledChanged(application, true) + verify(mockPrivacySource2).safetyCenterEnabledChanged(application, true) + } @Test - fun onReceive_actionSafetyCenterEnabledChanged_safetyCenterDisabled() = runBlockingTest { - mockQSTileSettingsFlag() - whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) - - safetyCenterReceiver.onReceive(application, Intent(ACTION_SAFETY_CENTER_ENABLED_CHANGED)) - advanceUntilIdle() + fun onReceive_actionSafetyCenterEnabledChanged_safetyCenterDisabled() = + runTest(UnconfinedTestDispatcher()) { + mockQSTileSettingsFlag() + whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) + + safetyCenterReceiver.onReceive( + application, + Intent(ACTION_SAFETY_CENTER_ENABLED_CHANGED), + ) + advanceUntilIdle() - verify(mockPrivacySource).safetyCenterEnabledChanged(application, false) - verify(mockPrivacySource2).safetyCenterEnabledChanged(application, false) - } + verify(mockPrivacySource).safetyCenterEnabledChanged(application, false) + verify(mockPrivacySource2).safetyCenterEnabledChanged(application, false) + } @Test - fun onReceive_actionBootCompleted() = runBlockingTest { - val intent = Intent(ACTION_BOOT_COMPLETED) + fun onReceive_actionBootCompleted() = + runTest(UnconfinedTestDispatcher()) { + val intent = Intent(ACTION_BOOT_COMPLETED) - safetyCenterReceiver.onReceive(application, intent) - advanceUntilIdle() + safetyCenterReceiver.onReceive(application, intent) + advanceUntilIdle() - verify(mockPrivacySource) - .rescanAndPushSafetyCenterData(application, intent, EVENT_DEVICE_REBOOTED) - verify(mockPrivacySource2) - .rescanAndPushSafetyCenterData(application, intent, EVENT_DEVICE_REBOOTED) - } + verify(mockPrivacySource) + .rescanAndPushSafetyCenterData(application, intent, EVENT_DEVICE_REBOOTED) + verify(mockPrivacySource2) + .rescanAndPushSafetyCenterData(application, intent, EVENT_DEVICE_REBOOTED) + } @Test - fun onReceive_actionBootCompleted_safetyCenterDisabled() = runBlockingTest { - whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) - val intent = Intent(ACTION_BOOT_COMPLETED) + fun onReceive_actionBootCompleted_safetyCenterDisabled() = + runTest(UnconfinedTestDispatcher()) { + whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) + val intent = Intent(ACTION_BOOT_COMPLETED) - safetyCenterReceiver.onReceive(application, intent) - advanceUntilIdle() + safetyCenterReceiver.onReceive(application, intent) + advanceUntilIdle() - verifyZeroInteractions(mockPrivacySource) - verifyZeroInteractions(mockPrivacySource2) - } + verifyZeroInteractions(mockPrivacySource) + verifyZeroInteractions(mockPrivacySource2) + } @Test - fun onReceive_actionRefreshSafetySources() = runBlockingTest { - val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) - intent.putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, arrayOf(TEST_PRIVACY_SOURCE_ID)) + fun onReceive_actionRefreshSafetySources() = + runTest(UnconfinedTestDispatcher()) { + val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) + intent.putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, arrayOf(TEST_PRIVACY_SOURCE_ID)) - safetyCenterReceiver.onReceive(application, intent) - advanceUntilIdle() + safetyCenterReceiver.onReceive(application, intent) + advanceUntilIdle() - verify(mockPrivacySource) - .rescanAndPushSafetyCenterData(application, intent, EVENT_REFRESH_REQUESTED) - verifyZeroInteractions(mockPrivacySource2) - } + verify(mockPrivacySource) + .rescanAndPushSafetyCenterData(application, intent, EVENT_REFRESH_REQUESTED) + verifyZeroInteractions(mockPrivacySource2) + } @Test - fun onReceive_actionRefreshSafetySources_noSourcesSpecified() = runBlockingTest { - val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) + fun onReceive_actionRefreshSafetySources_noSourcesSpecified() = + runTest(UnconfinedTestDispatcher()) { + val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) - safetyCenterReceiver.onReceive(application, intent) - advanceUntilIdle() + safetyCenterReceiver.onReceive(application, intent) + advanceUntilIdle() - verifyZeroInteractions(mockPrivacySource) - verifyZeroInteractions(mockPrivacySource2) - } + verifyZeroInteractions(mockPrivacySource) + verifyZeroInteractions(mockPrivacySource2) + } @Test - fun onReceive_actionRefreshSafetySources_safetyCenterDisabled() = runBlockingTest { - whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) - val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) + fun onReceive_actionRefreshSafetySources_safetyCenterDisabled() = + runTest(UnconfinedTestDispatcher()) { + whenever(mockSafetyCenterManager.isSafetyCenterEnabled).thenReturn(false) + val intent = Intent(ACTION_REFRESH_SAFETY_SOURCES) - safetyCenterReceiver.onReceive(application, intent) - advanceUntilIdle() + safetyCenterReceiver.onReceive(application, intent) + advanceUntilIdle() - verifyZeroInteractions(mockPrivacySource) - verifyZeroInteractions(mockPrivacySource2) - } + verifyZeroInteractions(mockPrivacySource) + verifyZeroInteractions(mockPrivacySource2) + } } diff --git a/PermissionController/tests/permissionui/Android.bp b/PermissionController/tests/permissionui/Android.bp index 6e1839d1d..5f177f40c 100644 --- a/PermissionController/tests/permissionui/Android.bp +++ b/PermissionController/tests/permissionui/Android.bp @@ -47,7 +47,7 @@ android_test { "androidx.test.ext.truth", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", - "com.android.permission.flags-aconfig-java", + "com.android.permission.flags-aconfig-java-export", "compatibility-device-util-axt", "flag-junit", "permission-test-util-lib", diff --git a/service/java/com/android/ecm/EnhancedConfirmationCallTrackerService.java b/service/java/com/android/ecm/EnhancedConfirmationCallTrackerService.java index 407d56f70..9117d6558 100644 --- a/service/java/com/android/ecm/EnhancedConfirmationCallTrackerService.java +++ b/service/java/com/android/ecm/EnhancedConfirmationCallTrackerService.java @@ -44,7 +44,7 @@ public class EnhancedConfirmationCallTrackerService extends InCallService { @Override public void onCreate() { super.onCreate(); - if (Flags.enhancedConfirmationInCallApisEnabled()) { + if (Flags.unknownCallPackageInstallBlockingEnabled()) { mEnhancedConfirmationManagerLocal = LocalManagerRegistry.getManager(EnhancedConfirmationManagerLocal.class); } diff --git a/service/java/com/android/ecm/EnhancedConfirmationManagerLocalImpl.java b/service/java/com/android/ecm/EnhancedConfirmationManagerLocalImpl.java index a5c6d3c36..b34eac9f4 100644 --- a/service/java/com/android/ecm/EnhancedConfirmationManagerLocalImpl.java +++ b/service/java/com/android/ecm/EnhancedConfirmationManagerLocalImpl.java @@ -29,7 +29,7 @@ class EnhancedConfirmationManagerLocalImpl implements EnhancedConfirmationManage private final EnhancedConfirmationService mService; EnhancedConfirmationManagerLocalImpl(EnhancedConfirmationService service) { - if (Flags.enhancedConfirmationInCallApisEnabled()) { + if (Flags.unknownCallPackageInstallBlockingEnabled()) { mService = service; } else { mService = null; diff --git a/service/java/com/android/ecm/EnhancedConfirmationService.java b/service/java/com/android/ecm/EnhancedConfirmationService.java index af2e81133..65fde6daf 100644 --- a/service/java/com/android/ecm/EnhancedConfirmationService.java +++ b/service/java/com/android/ecm/EnhancedConfirmationService.java @@ -133,7 +133,7 @@ public class EnhancedConfirmationService extends SystemService { } void addOngoingCall(Call call) { - if (!Flags.enhancedConfirmationInCallApisEnabled()) { + if (!Flags.unknownCallPackageInstallBlockingEnabled()) { return; } if (call.getDetails() == null) { @@ -143,7 +143,7 @@ public class EnhancedConfirmationService extends SystemService { } void removeOngoingCall(String callId) { - if (!Flags.enhancedConfirmationInCallApisEnabled()) { + if (!Flags.unknownCallPackageInstallBlockingEnabled()) { return; } Integer returned = mOngoingCalls.remove(callId); diff --git a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml index 9114a1ecd..2b40d3ed7 100644 --- a/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml +++ b/tests/cts/permissionpolicy/res/raw/automotive_android_manifest.xml @@ -80,6 +80,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_car_seats" android:description="@string/car_permission_desc_control_car_seats"/> + <permission android:name="android.car.permission.READ_CAR_SEATS" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_seats" + android:description="@string/car_permission_desc_read_car_seats" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CONTROL_CAR_AIRBAGS" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_car_airbags" @@ -121,10 +127,22 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_tires" android:description="@string/car_permission_desc_car_tires"/> + <permission android:name="android.car.permission.CAR_TIRES_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_car_tires_3p" + android:description="@string/car_permission_desc_car_tires_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.READ_CAR_STEERING" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_steering" android:description="@string/car_permission_desc_car_steering"/> + <permission android:name="android.car.permission.READ_CAR_STEERING_3P" + android:permissionGroup="android.permission-group.LOCATION" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_car_steering_3p" + android:description="@string/car_permission_desc_read_car_steering_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.READ_CAR_DISPLAY_UNITS" android:protectionLevel="normal" android:label="@string/car_permission_label_read_car_display_units" @@ -150,6 +168,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_car_engine_detailed" android:description="@string/car_permission_desc_car_engine_detailed"/> + <permission android:name="android.car.permission.CAR_ENGINE_DETAILED_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_car_engine_detailed_3p" + android:description="@string/car_permission_desc_car_engine_detailed_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CAR_DYNAMICS_STATE" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_vehicle_dynamics_state" @@ -305,6 +329,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_driving_state" android:description="@string/car_permission_desc_driving_state"/> + <permission android:name="android.car.permission.CAR_DRIVING_STATE_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_driving_state_3p" + android:description="@string/car_permission_desc_driving_state_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.USE_CAR_TELEMETRY_SERVICE" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_use_telemetry_service" @@ -637,6 +667,12 @@ android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_read_windshield_wipers" android:description="@string/car_permission_desc_read_windshield_wipers"/> + <permission android:name="android.car.permission.READ_WINDSHIELD_WIPERS_3P" + android:permissionGroup="android.car.permission-group.CAR_MONITORING" + android:protectionLevel="dangerous" + android:label="@string/car_permission_label_read_windshield_wipers_3p" + android:description="@string/car_permission_desc_read_windshield_wipers_3p" + android:featureFlag="android.car.feature.vehicle_property_25q2_3p_permissions"/> <permission android:name="android.car.permission.CONTROL_WINDSHIELD_WIPERS" android:protectionLevel="signature|privileged" android:label="@string/car_permission_label_control_windshield_wipers" diff --git a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt index c410f9c9c..16a27c9a8 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/EnhancedConfirmationInCallTest.kt @@ -52,7 +52,7 @@ import org.junit.Test */ @AppModeFull(reason = "Instant apps cannot install packages") @SdkSuppress(minSdkVersion = Build.VERSION_CODES.BAKLAVA, codeName = "Baklava") -@RequiresFlagsEnabled(Flags.FLAG_ENHANCED_CONFIRMATION_IN_CALL_APIS_ENABLED) +@RequiresFlagsEnabled(Flags.FLAG_UNKNOWN_CALL_PACKAGE_INSTALL_BLOCKING_ENABLED) // @CddTest(requirement = "TBD") class EnhancedConfirmationInCallTest { private val ecm = context.getSystemService(EnhancedConfirmationManager::class.java)!! |