summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2021-06-24 17:53:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-06-24 17:53:45 +0000
commite06a55ba9f831b837bb19c81f776267b9c893c92 (patch)
treef652b65818ed16b5c277f2cbedc82935b4030d2d
parente0dcf62f29675f879731b3e0d5f5281b672e0212 (diff)
parent9e80f5e2388799778a678390c27a0d0f332136bb (diff)
Merge "Add a device config for FGS denied notification." into sc-dev
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerConstants.java24
2 files changed, 27 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 5e388d94869d..3b3febea0272 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -6165,8 +6165,10 @@ public final class ActiveServices {
&& code != REASON_UID_VISIBLE;
}
- // TODO: remove this notification after feature development is done
private void showFgsBgRestrictedNotificationLocked(ServiceRecord r) {
+ if (!mAm.mConstants.mFgsStartRestrictionNotificationEnabled /* default is false */) {
+ return;
+ }
final Context context = mAm.mContext;
final String title = "Foreground Service BG-Launch Restricted";
final String content = "App restricted: " + r.mRecentCallingPackage;
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 0d19efc20785..445d0ba2ee6d 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -198,6 +198,13 @@ final class ActivityManagerConstants extends ContentObserver {
"default_fgs_starts_restriction_enabled";
/**
+ * Default value for mFgsStartRestrictionNotificationEnabled if not explicitly set in
+ * Settings.Global.
+ */
+ private static final String KEY_DEFAULT_FGS_STARTS_RESTRICTION_NOTIFICATION_ENABLED =
+ "default_fgs_starts_restriction_notification_enabled";
+
+ /**
* Default value for mFgsStartRestrictionCheckCallerTargetSdk if not explicitly set in
* Settings.Global.
*/
@@ -432,6 +439,10 @@ final class ActivityManagerConstants extends ContentObserver {
// at all.
volatile boolean mFlagFgsStartRestrictionEnabled = true;
+ // Whether to display a notification when a service is restricted from startForeground due to
+ // foreground service background start restriction.
+ volatile boolean mFgsStartRestrictionNotificationEnabled = false;
+
/**
* Indicates whether the foreground service background start restriction is enabled for
* caller app that is targeting S+.
@@ -652,6 +663,9 @@ final class ActivityManagerConstants extends ContentObserver {
case KEY_DEFAULT_FGS_STARTS_RESTRICTION_ENABLED:
updateFgsStartsRestriction();
break;
+ case KEY_DEFAULT_FGS_STARTS_RESTRICTION_NOTIFICATION_ENABLED:
+ updateFgsStartsRestrictionNotification();
+ break;
case KEY_DEFAULT_FGS_STARTS_RESTRICTION_CHECK_CALLER_TARGET_SDK:
updateFgsStartsRestrictionCheckCallerTargetSdk();
break;
@@ -953,6 +967,13 @@ final class ActivityManagerConstants extends ContentObserver {
/*defaultValue*/ true);
}
+ private void updateFgsStartsRestrictionNotification() {
+ mFgsStartRestrictionNotificationEnabled = DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+ KEY_DEFAULT_FGS_STARTS_RESTRICTION_NOTIFICATION_ENABLED,
+ /*defaultValue*/ false);
+ }
+
private void updateFgsStartsRestrictionCheckCallerTargetSdk() {
mFgsStartRestrictionCheckCallerTargetSdk = DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
@@ -1272,6 +1293,9 @@ final class ActivityManagerConstants extends ContentObserver {
pw.print("="); pw.println(mFlagBackgroundFgsStartRestrictionEnabled);
pw.print(" "); pw.print(KEY_DEFAULT_FGS_STARTS_RESTRICTION_ENABLED); pw.print("=");
pw.println(mFlagFgsStartRestrictionEnabled);
+ pw.print(" "); pw.print(KEY_DEFAULT_FGS_STARTS_RESTRICTION_NOTIFICATION_ENABLED);
+ pw.print("=");
+ pw.println(mFgsStartRestrictionNotificationEnabled);
pw.print(" "); pw.print(KEY_DEFAULT_FGS_STARTS_RESTRICTION_CHECK_CALLER_TARGET_SDK);
pw.print("="); pw.println(mFgsStartRestrictionCheckCallerTargetSdk);
pw.print(" "); pw.print(KEY_FGS_ATOM_SAMPLE_RATE);