Add additional logging for ongoing and foreground bubble types.

Bug: 123543171
Test: manual
Change-Id: Id7045fa89632703dec48a3f53b4f3dc6cb11efd8
This commit is contained in:
Steven Wu
2019-04-11 10:47:42 -04:00
parent 49e9f80efd
commit 8ba8ca9ccf
5 changed files with 28 additions and 7 deletions

View File

@@ -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;
}
/**

View File

@@ -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<RunningTaskInfo> tasks = am.getRunningTasks(1 /* maxNum */);
return !tasks.isEmpty() && pkgName.equals(tasks.get(0).topActivity.getPackageName());
}

View File

@@ -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) {

View File

@@ -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()));
}
}

View File

@@ -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;
}
}