summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zoey Chen <zoeychen@google.com> 2024-03-22 17:31:13 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-03-22 17:31:13 +0000
commit41e0fb56688f084799b9b108e2efd067da4db07d (patch)
tree9993e2f63b5192c7895c3ee866a72ee1d9c9737f
parentaa4a248f197740ba3443b6951286d7cb8ac9ece4 (diff)
parentb7ee99beabdb32ca8e80684a7c322e8cde528a0a (diff)
Merge "[ToA] Do not copy grammatical gender from admin user, we should get grammatical gender by userId" into main
-rw-r--r--core/java/android/app/GrammaticalInflectionManager.java20
-rw-r--r--core/java/android/app/IGrammaticalInflectionManager.aidl6
-rw-r--r--core/java/android/provider/Settings.java10
-rw-r--r--services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java9
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) {