diff options
| author | 2019-11-19 17:55:43 -0500 | |
|---|---|---|
| committer | 2019-11-20 11:35:23 -0500 | |
| commit | fe7f088afbfad073da04f34513d840c4ef3adf91 (patch) | |
| tree | d71d9edeb7d4d495dfd39a2caa2542e6bc81a858 | |
| parent | 35fbfcbd24f53ba695e3175603071f79129fc20f (diff) | |
Override default assistant
When setting the default assistant, we now look for an override
component value. if no component override exist, then we load the
default.
Fixes: 144774755
Test: atest NotificationManagerServicetest
Change-Id: I395f7d6ea0999dc7d2b95ece32e67a1ed77c0897
2 files changed, 45 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 3351bb1eb35b..898b9ea1119e 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -559,13 +559,6 @@ public class NotificationManagerService extends SystemService { ArraySet<String> assistants = new ArraySet<>(); - String deviceAssistant = DeviceConfig.getProperty( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE); - if (deviceAssistant != null) { - assistants.addAll(Arrays.asList(deviceAssistant.split( - ManagedServices.ENABLED_SERVICES_SEPARATOR))); - } assistants.addAll(Arrays.asList(getContext().getResources().getString( com.android.internal.R.string.config_defaultAssistantAccessComponent) .split(ManagedServices.ENABLED_SERVICES_SEPARATOR))); @@ -594,6 +587,13 @@ public class NotificationManagerService extends SystemService { } protected void setDefaultAssistantForUser(int userId) { + String overrideDefaultAssistantString = DeviceConfig.getProperty( + DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE); + ComponentName overrideDefaultAssistant = + ComponentName.unflattenFromString(overrideDefaultAssistantString); + if (allowAssistant(userId, overrideDefaultAssistant)) return; + ArraySet<ComponentName> defaults = mAssistants.getDefaultComponents(); // We should have only one default assistant by default // allowAssistant should execute once in practice diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index 4d0cfbc6ad11..028ce5094651 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -57,6 +57,7 @@ import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyString; @@ -753,6 +754,43 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test + public void testDefaultAssistant_overrideDefault() { + final int userId = 0; + final String testComponent = "package/class"; + final List<UserInfo> userInfos = new ArrayList<>(); + userInfos.add(new UserInfo(0, "", 0)); + final ArraySet<ComponentName> validAssistants = new ArraySet<>(); + validAssistants.add(ComponentName.unflattenFromString(testComponent)); + final String originalComponent = DeviceConfig.getProperty( + DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE + ); + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE, + testComponent, + false + ); + when(mActivityManager.isLowRamDevice()).thenReturn(false); + when(mAssistants.queryPackageForServices(isNull(), anyInt(), anyInt())) + .thenReturn(validAssistants); + when(mAssistants.getDefaultComponents()).thenReturn(new ArraySet<>()); + when(mUm.getEnabledProfiles(anyInt())).thenReturn(userInfos); + + mService.setDefaultAssistantForUser(userId); + + verify(mAssistants).setPackageOrComponentEnabled( + eq(testComponent), eq(userId), eq(true), eq(true)); + + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE, + originalComponent, + false + ); + } + + @Test public void testCreateNotificationChannels_IdenticalChannelsInListIgnoresSecond() throws Exception { final NotificationChannel channel1 = |