Take CLONE_TO_MANAGED_PROFILE into account in InputMethodSettings
This is a preparation to clone SHOW_IME_WITH_HARD_KEYBOARD to profile users. With this CL, InputMethodSettings takes CLONE_TO_MANAGED_PROFILE into account when writing secure settings. The point is that when a secure settings key is in Settings.Secure.CLONE_TO_MANAGED_PROFILE, the value needs to be written into the profile parent's settings, not the current user's one. In this way, InputMethodSettings doesn't need to be updated when a new entry is added to / removed from CLONE_TO_MANAGED_PROFILE. This CL does not change Settings.Secure.CLONE_TO_MANAGED_PROFILE hence there should be no behavior change. Bug: 123379418 Test: make -j checkbuild Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases Change-Id: Ieefefb8630ddef3b247ebb865a604e5c72dfb49c
This commit is contained in:
@@ -34,6 +34,7 @@ import android.os.UserManagerInternal;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.IntArray;
|
||||
import android.util.Pair;
|
||||
import android.util.Printer;
|
||||
@@ -756,6 +757,14 @@ final class InputMethodUtils {
|
||||
*/
|
||||
private final ArrayMap<String, String> mCopyOnWriteDataStore = new ArrayMap<>();
|
||||
|
||||
private static final ArraySet<String> CLONE_TO_MANAGED_PROFILE = new ArraySet<>();
|
||||
static {
|
||||
Settings.Secure.getCloneToManagedProfileSettings(CLONE_TO_MANAGED_PROFILE);
|
||||
}
|
||||
|
||||
private static final UserManagerInternal sUserManagerInternal =
|
||||
LocalServices.getService(UserManagerInternal.class);
|
||||
|
||||
private boolean mCopyOnWrite = false;
|
||||
@NonNull
|
||||
private String mEnabledInputMethodsStrCache = "";
|
||||
@@ -833,7 +842,9 @@ final class InputMethodUtils {
|
||||
if (mCopyOnWrite) {
|
||||
mCopyOnWriteDataStore.put(key, str);
|
||||
} else {
|
||||
Settings.Secure.putStringForUser(mResolver, key, str, mCurrentUserId);
|
||||
final int userId = CLONE_TO_MANAGED_PROFILE.contains(key)
|
||||
? sUserManagerInternal.getProfileParentId(mCurrentUserId) : mCurrentUserId;
|
||||
Settings.Secure.putStringForUser(mResolver, key, str, userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -852,7 +863,9 @@ final class InputMethodUtils {
|
||||
if (mCopyOnWrite) {
|
||||
mCopyOnWriteDataStore.put(key, String.valueOf(value));
|
||||
} else {
|
||||
Settings.Secure.putIntForUser(mResolver, key, value, mCurrentUserId);
|
||||
final int userId = CLONE_TO_MANAGED_PROFILE.contains(key)
|
||||
? sUserManagerInternal.getProfileParentId(mCurrentUserId) : mCurrentUserId;
|
||||
Settings.Secure.putIntForUser(mResolver, key, value, userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user