diff options
| author | 2024-03-22 17:31:13 +0000 | |
|---|---|---|
| committer | 2024-03-22 17:31:13 +0000 | |
| commit | 41e0fb56688f084799b9b108e2efd067da4db07d (patch) | |
| tree | 9993e2f63b5192c7895c3ee866a72ee1d9c9737f | |
| parent | aa4a248f197740ba3443b6951286d7cb8ac9ece4 (diff) | |
| parent | b7ee99beabdb32ca8e80684a7c322e8cde528a0a (diff) | |
Merge "[ToA] Do not copy grammatical gender from admin user, we should get grammatical gender by userId" into main
4 files changed, 45 insertions, 0 deletions
diff --git a/core/java/android/app/GrammaticalInflectionManager.java b/core/java/android/app/GrammaticalInflectionManager.java index 3e7d66563c5e..f0bc3e29a508 100644 --- a/core/java/android/app/GrammaticalInflectionManager.java +++ b/core/java/android/app/GrammaticalInflectionManager.java @@ -143,4 +143,24 @@ public class GrammaticalInflectionManager { throw e.rethrowFromSystemServer(); } } + + /** + * Peeks the current grammatical gender of privileged application from the specific user's + * encrypted file. + * + * @return the value of system grammatical gender. + * @hide + * @see Configuration#getGrammaticalGender + */ + @RequiresPermission(Manifest.permission.READ_SYSTEM_GRAMMATICAL_GENDER) + @FlaggedApi(Flags.FLAG_SYSTEM_TERMS_OF_ADDRESS_ENABLED) + @Configuration.GrammaticalGender + public int peekSystemGrammaticalGenderByUserId(int userId) { + try { + return mService.peekSystemGrammaticalGenderByUserId(mContext.getAttributionSource(), + userId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/app/IGrammaticalInflectionManager.aidl b/core/java/android/app/IGrammaticalInflectionManager.aidl index 86f2e9110889..a5e2d0b29759 100644 --- a/core/java/android/app/IGrammaticalInflectionManager.aidl +++ b/core/java/android/app/IGrammaticalInflectionManager.aidl @@ -43,4 +43,10 @@ import android.content.AttributionSource; * Gets the grammatical gender from system. */ int getSystemGrammaticalGender(in AttributionSource attributionSource, int userId); + + /** + * Peeks the grammatical gender from system by user Id. + */ + int peekSystemGrammaticalGenderByUserId(in AttributionSource attributionSource, int userId); + } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 5bb490336f5d..ec5421e789f8 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -16,6 +16,8 @@ package android.provider; +import static android.app.Flags.systemTermsOfAddressEnabled; + import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; @@ -37,6 +39,7 @@ import android.app.ActivityThread; import android.app.AppOpsManager; import android.app.Application; import android.app.AutomaticZenRule; +import android.app.GrammaticalInflectionManager; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.SearchManager; @@ -4594,6 +4597,13 @@ public final class Settings { } outConfig.fontWeightAdjustment = Settings.Secure.getIntForUser( cr, Settings.Secure.FONT_WEIGHT_ADJUSTMENT, DEFAULT_FONT_WEIGHT, userHandle); + if (systemTermsOfAddressEnabled()) { + GrammaticalInflectionManager manager = + ActivityThread.currentApplication().getApplicationContext() + .getSystemService(GrammaticalInflectionManager.class); + outConfig.setGrammaticalGender( + manager.peekSystemGrammaticalGenderByUserId(userHandle)); + } final String localeValue = Settings.System.getStringForUser(cr, SYSTEM_LOCALES, userHandle); diff --git a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java index 3fafca8ed377..96d4bda67b16 100644 --- a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java +++ b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java @@ -143,6 +143,15 @@ public class GrammaticalInflectionService extends SystemService { } @Override + public int peekSystemGrammaticalGenderByUserId(AttributionSource attributionSource, + int userId) { + return canGetSystemGrammaticalGender(attributionSource) + ? GrammaticalInflectionService.this.getSystemGrammaticalGender( + attributionSource, userId) + : GRAMMATICAL_GENDER_NOT_SPECIFIED; + } + + @Override public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ShellCallback callback, ResultReceiver resultReceiver) { |