Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ba8ca9c authored by Steven Wu's avatar Steven Wu
Browse files

Add additional logging for ongoing and foreground bubble types.

Bug: 123543171
Test: manual
Change-Id: Id7045fa89632703dec48a3f53b4f3dc6cb11efd8
parent 49e9f80e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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;
}

/**
+5 −4
Original line number Diff line number Diff line
@@ -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());
    }
+3 −1
Original line number Diff line number Diff line
@@ -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) {
+6 −2
Original line number Diff line number Diff line
@@ -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()));
        }
    }

+8 −0
Original line number Diff line number Diff line
@@ -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;
    }
}