From 0527c9ceaf94f8eb70dd74dfdfeaf2db6e857f22 Mon Sep 17 00:00:00 2001 From: Calvin Pan Date: Tue, 31 Jan 2023 10:51:53 +0800 Subject: [PATCH 1/2] Log grammatical inflection API usage Bug: 237579711 Test: statsd_testdrive 584 Change-Id: Id8bc42cc0b43dfa9ed44eae438ed1220192275a9 --- .../GrammaticalInflectionService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java index 1a357eea00946..ec065a662b461 100644 --- a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java +++ b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java @@ -21,11 +21,13 @@ import static android.content.res.Configuration.GRAMMATICAL_GENDER_NOT_SPECIFIED import android.annotation.Nullable; import android.app.IGrammaticalInflectionManager; import android.content.Context; +import android.content.pm.PackageManagerInternal; import android.os.Binder; import android.os.IBinder; import android.os.Process; import android.os.SystemProperties; +import com.android.internal.util.FrameworkStatsLog; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.wm.ActivityTaskManagerInternal; @@ -39,6 +41,7 @@ public class GrammaticalInflectionService extends SystemService { private final GrammaticalInflectionBackupHelper mBackupHelper; private final ActivityTaskManagerInternal mActivityTaskManagerInternal; + private PackageManagerInternal mPackageManagerInternal; private static final String GRAMMATICAL_INFLECTION_ENABLED = "i18n.grammatical_Inflection.enabled"; @@ -55,6 +58,7 @@ public class GrammaticalInflectionService extends SystemService { public GrammaticalInflectionService(Context context) { super(context); mActivityTaskManagerInternal = LocalServices.getService(ActivityTaskManagerInternal.class); + mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class); mBackupHelper = new GrammaticalInflectionBackupHelper( this, context.getPackageManager()); } @@ -114,6 +118,16 @@ public class GrammaticalInflectionService extends SystemService { return; } + final int uid = mPackageManagerInternal + .getPackageUid(appPackageName, /* flags */ 0, userId); + int preValue = getApplicationGrammaticalGender(appPackageName, userId); + + FrameworkStatsLog.write(FrameworkStatsLog.GRAMMATICAL_INFLECTION_CHANGED, + FrameworkStatsLog.APPLICATION_GRAMMATICAL_INFLECTION_CHANGED__SOURCE_ID__OTHERS, + uid, + gender != GRAMMATICAL_GENDER_NOT_SPECIFIED, + preValue != GRAMMATICAL_GENDER_NOT_SPECIFIED); + final ActivityTaskManagerInternal.PackageConfigurationUpdater updater = mActivityTaskManagerInternal.createPackageConfigurationUpdater(appPackageName, userId); From f9899e943480e5c72a7a2749cf71190bc3d31054 Mon Sep 17 00:00:00 2001 From: Calvin Pan Date: Tue, 31 Jan 2023 12:16:58 +0800 Subject: [PATCH 2/2] Clearing the user settings when feature flag off Bug: 265972075 Test: build pass Change-Id: I7ee8cd9fcbdad331aab74ca20bc68ed86524ba4f --- .../GrammaticalInflectionService.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java index ec065a662b461..41053e908a00a 100644 --- a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java +++ b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java @@ -26,6 +26,7 @@ import android.os.Binder; import android.os.IBinder; import android.os.Process; import android.os.SystemProperties; +import android.util.Log; import com.android.internal.util.FrameworkStatsLog; import com.android.server.LocalServices; @@ -38,7 +39,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; *

This service is API entry point for storing app-specific grammatical inflection. */ public class GrammaticalInflectionService extends SystemService { - + private final String TAG = "GrammaticalInflection"; private final GrammaticalInflectionBackupHelper mBackupHelper; private final ActivityTaskManagerInternal mActivityTaskManagerInternal; private PackageManagerInternal mPackageManagerInternal; @@ -114,24 +115,26 @@ public class GrammaticalInflectionService extends SystemService { protected void setRequestedApplicationGrammaticalGender( String appPackageName, int userId, int gender) { + int preValue = getApplicationGrammaticalGender(appPackageName, userId); + final ActivityTaskManagerInternal.PackageConfigurationUpdater updater = + mActivityTaskManagerInternal.createPackageConfigurationUpdater(appPackageName, + userId); + if (!SystemProperties.getBoolean(GRAMMATICAL_INFLECTION_ENABLED, true)) { + if (preValue != GRAMMATICAL_GENDER_NOT_SPECIFIED) { + Log.d(TAG, "Clearing the user's grammatical gender setting"); + updater.setGrammaticalGender(GRAMMATICAL_GENDER_NOT_SPECIFIED).commit(); + } return; } - final int uid = mPackageManagerInternal - .getPackageUid(appPackageName, /* flags */ 0, userId); - int preValue = getApplicationGrammaticalGender(appPackageName, userId); - + final int uid = mPackageManagerInternal.getPackageUid(appPackageName, 0, userId); FrameworkStatsLog.write(FrameworkStatsLog.GRAMMATICAL_INFLECTION_CHANGED, FrameworkStatsLog.APPLICATION_GRAMMATICAL_INFLECTION_CHANGED__SOURCE_ID__OTHERS, uid, gender != GRAMMATICAL_GENDER_NOT_SPECIFIED, preValue != GRAMMATICAL_GENDER_NOT_SPECIFIED); - final ActivityTaskManagerInternal.PackageConfigurationUpdater updater = - mActivityTaskManagerInternal.createPackageConfigurationUpdater(appPackageName, - userId); - updater.setGrammaticalGender(gender).commit(); } }