diff --git a/res/values/strings.xml b/res/values/strings.xml index b00a1f56edd..eab76b361b0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -258,10 +258,10 @@ Stylus - + Tail button press - - %s (Work profile) + + %s (Work profile) Write in text fields diff --git a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java index e821966f428..ec9f4c6eb51 100644 --- a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java +++ b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java @@ -254,16 +254,17 @@ public class StylusDevicesController extends AbstractPreferenceController implem private List getUserAndManagedProfiles() { UserManager um = mContext.getSystemService(UserManager.class); - final ArrayList userManagedProfiles = new ArrayList<>(); + final List userManagedProfiles = new ArrayList<>(); // Add the current user, then add all the associated managed profiles. final UserHandle currentUser = Process.myUserHandle(); userManagedProfiles.add(currentUser); final List userInfos = um.getUsers(); for (UserInfo info : userInfos) { - if (um.isManagedProfile(info.id) - && um.getProfileParent(info.id).id == currentUser.getIdentifier()) { - userManagedProfiles.add(UserHandle.of(info.id)); + int userId = info.id; + if (um.isManagedProfile(userId) + && um.getProfileParent(userId).id == currentUser.getIdentifier()) { + userManagedProfiles.add(UserHandle.of(userId)); } } return userManagedProfiles; diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java index 7fa6236b197..1fcf396f31c 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java @@ -315,7 +315,7 @@ public class StylusDevicesControllerTest { } @Test - public void defaultNotesPreferenceClick_multiUser_showsProfileSelectorDialog() { + public void defaultNotesPreferenceClick_multiUserManagedProfile_showsProfileSelectorDialog() { mContext.setTheme(R.style.Theme_AppCompat); final String permissionPackageName = "permissions.package"; final UserHandle currentUser = Process.myUserHandle(); @@ -337,13 +337,43 @@ public class StylusDevicesControllerTest { assertTrue(mController.mDialog.isShowing()); } + @Test + public void defaultNotesPreferenceClick_noManagedProfile_sendsManageDefaultRoleIntent() { + final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); + mContext.setTheme(R.style.Theme_AppCompat); + final String permissionPackageName = "permissions.package"; + final UserHandle currentUser = Process.myUserHandle(); + List userInfos = Arrays.asList( + new UserInfo(currentUser.getIdentifier(), "current", 0), + new UserInfo(1, "other", UserInfo.FLAG_FULL) + ); + when(mUserManager.getUsers()).thenReturn(userInfos); + when(mUserManager.isManagedProfile(1)).thenReturn(false); + when(mUserManager.getUserInfo(currentUser.getIdentifier())).thenReturn(userInfos.get(0)); + when(mUserManager.getUserInfo(1)).thenReturn(userInfos.get(1)); + when(mUserManager.getProfileParent(any())).thenReturn(null); + when(mPm.getPermissionControllerPackageName()).thenReturn(permissionPackageName); + + showScreen(mController); + Preference defaultNotesPref = mPreferenceContainer.getPreference(0); + mController.onPreferenceClick(defaultNotesPref); + + verify(mContext).startActivity(captor.capture()); + Intent intent = captor.getValue(); + assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP); + assertThat(intent.getPackage()).isEqualTo(permissionPackageName); + assertThat(intent.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo( + RoleManager.ROLE_NOTES); + assertNull(mController.mDialog); + } + @Test public void profileSelectDialogClickCallback_onClick_sendsIntent() { Intent intent = new Intent(); UserHandle user1 = mock(UserHandle.class); UserHandle user2 = mock(UserHandle.class); - List users = Arrays.asList(new UserHandle[] {user1, user2}); - mController.mDialog = mock(Dialog.class); + List users = Arrays.asList(user1, user2); + mController.mDialog = new Dialog(mContext); UserAdapter.OnClickListener callback = mController .createProfileDialogClickCallback(intent, users);