From cbf43a741723e877ce7626f0877a83df2231c5ec Mon Sep 17 00:00:00 2001 From: Kazuki Takise Date: Tue, 1 Feb 2022 14:46:19 +0900 Subject: [PATCH] Add config to disable Bubbles Some platforms like ARC doesn't support Bubbles for now, and they need a way to disable the feature platform-wide without any code divergence from upstream. Bug: 138677613 Test: Manually confirmed bubbles didn't appear anymore in ARC. Change-Id: I59c30f75e0e2013aa23aa7221aa69310e2c66774 --- core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + .../android/server/notification/BubbleExtractor.java | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 35bed2d764256..cd3ba1ef14f79 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3804,6 +3804,9 @@ true + + true + false diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index f177226c4ec33..9fc88947be0a7 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -379,6 +379,7 @@ + diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java index 41e067e571904..a561390ac7e4a 100644 --- a/services/core/java/com/android/server/notification/BubbleExtractor.java +++ b/services/core/java/com/android/server/notification/BubbleExtractor.java @@ -32,6 +32,7 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.res.Resources; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; @@ -49,10 +50,15 @@ public class BubbleExtractor implements NotificationSignalExtractor { private ActivityManager mActivityManager; private Context mContext; + boolean mSupportsBubble; + public void initialize(Context context, NotificationUsageStats usageStats) { if (DBG) Slog.d(TAG, "Initializing " + getClass().getSimpleName() + "."); mContext = context; mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); + + mSupportsBubble = Resources.getSystem().getBoolean( + com.android.internal.R.bool.config_supportsBubble); } public RankingReconsideration process(NotificationRecord record) { @@ -138,6 +144,10 @@ public class BubbleExtractor implements NotificationSignalExtractor { */ @VisibleForTesting boolean canPresentAsBubble(NotificationRecord r) { + if (!mSupportsBubble) { + return false; + } + Notification notification = r.getNotification(); Notification.BubbleMetadata metadata = notification.getBubbleMetadata(); String pkg = r.getSbn().getPackageName();