Rename DPM.isDefaultInputMethodSetByOwner()
Settings.Secure.DEFAULT_INPUT_METHOD is a misnomer. It does not really
record a permanent default of any sort - it just indicates the currently
chosen IME. Thus, isDefaultInputMethodSetByOwner() should more
appropriately be called isCurrentInputMethodSetByOwner().
Furthermore, it turns out that setting a different IME for a user and
the user's work profile is unsupported. Thus, it is sufficient for the
intended use case to just retrieve the calling user's default IME.
There is no need for a |user| parameter.
Bug: 32692748
Test: unit tests (see DevicePolicyManagerTest.java for invocation)
Test: cts-tradefed run cts-dev --module CtsDevicePolicyManagerTestCases
Change-Id: Ia0846d38a1361042429dae7430a8b055575ef2e0
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index f797f31..f969e80 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -3806,144 +3806,163 @@
.thenReturn(true);
assertTrue(dpm.clearResetPasswordToken(admin1));
}
-
- public void testIsDefaultInputMethodSetByOwnerForDeviceOwner() throws Exception {
- final String defaultIme = Settings.Secure.DEFAULT_INPUT_METHOD;
- final Uri defaultImeUri = Settings.Secure.getUriFor(defaultIme);
- final UserHandle firstUser = UserHandle.SYSTEM;
- final UserHandle secondUser = UserHandle.of(DpmMockContext.CALLER_USER_HANDLE);
- // Set up a Device Owner.
- mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+ public void testIsCurrentInputMethodSetByOwnerForDeviceOwner() throws Exception {
+ final String currentIme = Settings.Secure.DEFAULT_INPUT_METHOD;
+ final Uri currentImeUri = Settings.Secure.getUriFor(currentIme);
+ final int deviceOwnerUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+ final int firstUserSystemUid = UserHandle.getUid(UserHandle.USER_SYSTEM,
+ DpmMockContext.SYSTEM_UID);
+ final int secondUserSystemUid = UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE,
+ DpmMockContext.SYSTEM_UID);
+
+ // Set up a device owner.
+ mContext.binder.callingUid = deviceOwnerUid;
setupDeviceOwner();
- // First and second user set default IMEs manually.
- final long ident = mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // First and second user set IMEs manually.
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Device Owner changes default IME for first user.
- when(mContext.settings.settingsSecureGetStringForUser(defaultIme, UserHandle.USER_SYSTEM))
+ // Device owner changes IME for first user.
+ mContext.binder.callingUid = deviceOwnerUid;
+ when(mContext.settings.settingsSecureGetStringForUser(currentIme, UserHandle.USER_SYSTEM))
.thenReturn("ime1");
- dpm.setSecureSetting(admin1, defaultIme, "ime2");
- verify(mContext.settings).settingsSecurePutStringForUser(defaultIme, "ime2",
+ dpm.setSecureSetting(admin1, currentIme, "ime2");
+ verify(mContext.settings).settingsSecurePutStringForUser(currentIme, "ime2",
UserHandle.USER_SYSTEM);
reset(mContext.settings);
- dpms.notifyChangeToContentObserver(defaultImeUri, UserHandle.USER_SYSTEM);
- mContext.binder.clearCallingIdentity();
- assertTrue(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ dpms.notifyChangeToContentObserver(currentImeUri, UserHandle.USER_SYSTEM);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Second user changes default IME manually.
- dpms.notifyChangeToContentObserver(defaultImeUri, DpmMockContext.CALLER_USER_HANDLE);
- mContext.binder.clearCallingIdentity();
- assertTrue(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // Second user changes IME manually.
+ dpms.notifyChangeToContentObserver(currentImeUri, DpmMockContext.CALLER_USER_HANDLE);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // First user changes default IME manually.
- dpms.notifyChangeToContentObserver(defaultImeUri, UserHandle.USER_SYSTEM);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // First user changes IME manually.
+ dpms.notifyChangeToContentObserver(currentImeUri, UserHandle.USER_SYSTEM);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Device Owner changes default IME for first user again.
- when(mContext.settings.settingsSecureGetStringForUser(defaultIme, UserHandle.USER_SYSTEM))
+ // Device owner changes IME for first user again.
+ mContext.binder.callingUid = deviceOwnerUid;
+ when(mContext.settings.settingsSecureGetStringForUser(currentIme, UserHandle.USER_SYSTEM))
.thenReturn("ime2");
- dpm.setSecureSetting(admin1, defaultIme, "ime3");
- verify(mContext.settings).settingsSecurePutStringForUser(defaultIme, "ime3",
+ dpm.setSecureSetting(admin1, currentIme, "ime3");
+ verify(mContext.settings).settingsSecurePutStringForUser(currentIme, "ime3",
UserHandle.USER_SYSTEM);
- dpms.notifyChangeToContentObserver(defaultImeUri, UserHandle.USER_SYSTEM);
- mContext.binder.clearCallingIdentity();
- assertTrue(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
+ dpms.notifyChangeToContentObserver(currentImeUri, UserHandle.USER_SYSTEM);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
// Restarting the DPMS should not lose information.
initializeDpms();
- assertTrue(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Device Owner can find out whether it set the default IME itself.
- assertTrue(dpm.isDefaultInputMethodSetByOwner(firstUser));
+ // Device owner can find out whether it set the current IME itself.
+ mContext.binder.callingUid = deviceOwnerUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
- // Removing the Device Owner should clear the information that it set the default IME.
+ // Removing the device owner should clear the information that it set the current IME.
clearDeviceOwner();
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
}
- public void testIsDefaultInputMethodSetByOwnerForProfileOwner() throws Exception {
- final String defaultIme = Settings.Secure.DEFAULT_INPUT_METHOD;
- final Uri defaultImeUri = Settings.Secure.getUriFor(defaultIme);
- final UserHandle firstUser = UserHandle.SYSTEM;
- final UserHandle secondUser = UserHandle.of(DpmMockContext.CALLER_USER_HANDLE);
+ public void testIsCurrentInputMethodSetByOwnerForProfileOwner() throws Exception {
+ final String currentIme = Settings.Secure.DEFAULT_INPUT_METHOD;
+ final Uri currentImeUri = Settings.Secure.getUriFor(currentIme);
+ final int profileOwnerUid = DpmMockContext.CALLER_UID;
+ final int firstUserSystemUid = UserHandle.getUid(UserHandle.USER_SYSTEM,
+ DpmMockContext.SYSTEM_UID);
+ final int secondUserSystemUid = UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE,
+ DpmMockContext.SYSTEM_UID);
// Set up a profile owner.
+ mContext.binder.callingUid = profileOwnerUid;
setupProfileOwner();
- // First and second user set default IMEs manually.
- final long ident = mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // First and second user set IMEs manually.
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Profile Owner changes default IME for second user.
- when(mContext.settings.settingsSecureGetStringForUser(defaultIme,
+ // Profile owner changes IME for second user.
+ mContext.binder.callingUid = profileOwnerUid;
+ when(mContext.settings.settingsSecureGetStringForUser(currentIme,
DpmMockContext.CALLER_USER_HANDLE)).thenReturn("ime1");
- dpm.setSecureSetting(admin1, defaultIme, "ime2");
- verify(mContext.settings).settingsSecurePutStringForUser(defaultIme, "ime2",
+ dpm.setSecureSetting(admin1, currentIme, "ime2");
+ verify(mContext.settings).settingsSecurePutStringForUser(currentIme, "ime2",
DpmMockContext.CALLER_USER_HANDLE);
reset(mContext.settings);
- dpms.notifyChangeToContentObserver(defaultImeUri, DpmMockContext.CALLER_USER_HANDLE);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertTrue(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ dpms.notifyChangeToContentObserver(currentImeUri, DpmMockContext.CALLER_USER_HANDLE);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
- // First user changes default IME manually.
- dpms.notifyChangeToContentObserver(defaultImeUri, UserHandle.USER_SYSTEM);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertTrue(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // First user changes IME manually.
+ dpms.notifyChangeToContentObserver(currentImeUri, UserHandle.USER_SYSTEM);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
- // Second user changes default IME manually.
- dpms.notifyChangeToContentObserver(defaultImeUri, DpmMockContext.CALLER_USER_HANDLE);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ // Second user changes IME manually.
+ dpms.notifyChangeToContentObserver(currentImeUri, DpmMockContext.CALLER_USER_HANDLE);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
- // Profile Owner changes default IME for second user again.
- when(mContext.settings.settingsSecureGetStringForUser(defaultIme,
+ // Profile owner changes IME for second user again.
+ mContext.binder.callingUid = profileOwnerUid;
+ when(mContext.settings.settingsSecureGetStringForUser(currentIme,
DpmMockContext.CALLER_USER_HANDLE)).thenReturn("ime2");
- dpm.setSecureSetting(admin1, defaultIme, "ime3");
- verify(mContext.settings).settingsSecurePutStringForUser(defaultIme, "ime3",
+ dpm.setSecureSetting(admin1, currentIme, "ime3");
+ verify(mContext.settings).settingsSecurePutStringForUser(currentIme, "ime3",
DpmMockContext.CALLER_USER_HANDLE);
- dpms.notifyChangeToContentObserver(defaultImeUri, DpmMockContext.CALLER_USER_HANDLE);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertTrue(dpm.isDefaultInputMethodSetByOwner(secondUser));
+ dpms.notifyChangeToContentObserver(currentImeUri, DpmMockContext.CALLER_USER_HANDLE);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
// Restarting the DPMS should not lose information.
initializeDpms();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertTrue(dpm.isDefaultInputMethodSetByOwner(secondUser));
- mContext.binder.restoreCallingIdentity(ident);
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
- // Profile Owner can find out whether it set the default IME itself.
- assertTrue(dpm.isDefaultInputMethodSetByOwner(secondUser));
+ // Profile owner can find out whether it set the current IME itself.
+ mContext.binder.callingUid = profileOwnerUid;
+ assertTrue(dpm.isCurrentInputMethodSetByOwner());
- // Removing the Profile Owner should clear the information that it set the default IME.
+ // Removing the profile owner should clear the information that it set the current IME.
dpm.clearProfileOwner(admin1);
- mContext.binder.clearCallingIdentity();
- assertFalse(dpm.isDefaultInputMethodSetByOwner(firstUser));
- assertFalse(dpm.isDefaultInputMethodSetByOwner(secondUser));
+ mContext.binder.callingUid = firstUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
+ mContext.binder.callingUid = secondUserSystemUid;
+ assertFalse(dpm.isCurrentInputMethodSetByOwner());
}
public void testGetOwnerInstalledCaCertsForDeviceOwner() throws Exception {