From 8ba8ca9ccf5ef0bd7049c43008aaa59c13fd5606 Mon Sep 17 00:00:00 2001 From: Steven Wu Date: Thu, 11 Apr 2019 10:47:42 -0400 Subject: [PATCH] Add additional logging for ongoing and foreground bubble types. Bug: 123543171 Test: manual Change-Id: Id7045fa89632703dec48a3f53b4f3dc6cb11efd8 --- cmds/statsd/src/atoms.proto | 6 ++++++ .../com/android/systemui/bubbles/BubbleController.java | 9 +++++---- .../com/android/systemui/bubbles/BubbleExpandedView.java | 4 +++- .../com/android/systemui/bubbles/BubbleStackView.java | 8 ++++++-- .../notification/collection/NotificationEntry.java | 8 ++++++++ 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 90ba7ce0c812b..2c802c2d868a5 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -5584,6 +5584,12 @@ message BubbleUIChanged { // Whether the bubble is unread. If it is unread, a dot is shown in the bubble stack icon. optional bool is_unread = 9; + + // Whether the bubble is an on-going one. + optional bool is_ongoing = 10; + + // Whether the bubble is produced by an app running in foreground. + optional bool is_foreground = 11; } /** diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java index 89abd35ab92ef..05f4aef3b6c61 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java @@ -583,23 +583,24 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe private boolean shouldAutoExpand(NotificationEntry entry) { Notification.BubbleMetadata metadata = entry.getBubbleMetadata(); return metadata != null && metadata.getAutoExpandBubble() - && isForegroundApp(entry.notification.getPackageName()); + && isForegroundApp(mContext, entry.notification.getPackageName()); } private void updateShowInShadeForSuppressNotification(NotificationEntry entry) { boolean suppressNotification = entry.getBubbleMetadata() != null && entry.getBubbleMetadata().getSuppressNotification() - && isForegroundApp(entry.notification.getPackageName()); + && isForegroundApp(mContext, entry.notification.getPackageName()); entry.setShowInShadeWhenBubble(!suppressNotification); } /** * Return true if the applications with the package name is running in foreground. * + * @param context application context. * @param pkgName application package name. */ - private boolean isForegroundApp(String pkgName) { - ActivityManager am = mContext.getSystemService(ActivityManager.class); + public static boolean isForegroundApp(Context context, String pkgName) { + ActivityManager am = context.getSystemService(ActivityManager.class); List tasks = am.getRunningTasks(1 /* maxNum */); return !tasks.isEmpty() && pkgName.equals(tasks.get(0).topActivity.getPackageName()); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java index 285d4aab4f66f..17275ad58240b 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java @@ -723,7 +723,9 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList action, mStackView.getNormalizedXPosition(), mStackView.getNormalizedYPosition(), - entry.showInShadeWhenBubble()); + entry.showInShadeWhenBubble(), + entry.isForegroundService(), + BubbleController.isForegroundApp(mContext, notification.getPackageName())); } private int getDimenForPackageUser(int resId, String pkg, int userId) { diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java index 53e65e662fb84..012bd060250dd 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java @@ -1070,7 +1070,9 @@ public class BubbleStackView extends FrameLayout { action, getNormalizedXPosition(), getNormalizedYPosition(), - false /* unread notification */); + false /* unread bubble */, + false /* on-going bubble */, + false /* foreground bubble */); } else { StatusBarNotification notification = bubble.entry.notification; StatsLog.write(StatsLog.BUBBLE_UI_CHANGED, @@ -1082,7 +1084,9 @@ public class BubbleStackView extends FrameLayout { action, getNormalizedXPosition(), getNormalizedYPosition(), - bubble.entry.showInShadeWhenBubble()); + bubble.entry.showInShadeWhenBubble(), + bubble.entry.isForegroundService(), + BubbleController.isForegroundApp(mContext, notification.getPackageName())); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java index f69356ea14a0b..ce9401cff676d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java @@ -830,4 +830,12 @@ public final class NotificationEntry { this.index = index; } } + + /** + * Returns whether the notification is a foreground service. It shows that this is an ongoing + * bubble. + */ + public boolean isForegroundService() { + return (notification.getNotification().flags & Notification.FLAG_FOREGROUND_SERVICE) != 0; + } }