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

Commit b659c4f4 authored by Chris Wren's avatar Chris Wren
Browse files

report notification load on panel reveal

Counts may differ from user perception. For example, if notifications arrive
after the shade is open (even if it is only peeking) there will not be another
panel_reveal before the user sees the shade.  User perception is more accurately
measured by visibility events.

Peek events will report the notificaiton load as 1.

Bug: 20088581
Change-Id: I10221d4b66a18c223aae21e616615f087c65b1e1
parent 4572cbc9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ interface IStatusBarService
    // You need the STATUS_BAR_SERVICE permission
    void registerStatusBar(IStatusBar callbacks, out StatusBarIconList iconList,
            out int[] switches, out List<IBinder> binders);
    void onPanelRevealed(boolean clearNotificationEffects);
    void onPanelRevealed(boolean clearNotificationEffects, int numItems);
    void onPanelHidden();
    // Mark current notifications as "seen" and stop ringing, vibrating, blinking.
    void clearNotificationEffects();
+7 −1
Original line number Diff line number Diff line
@@ -1623,7 +1623,13 @@ public abstract class BaseStatusBar extends SystemUI implements
                boolean clearNotificationEffects = !isPanelFullyCollapsed() &&
                    (mShowLockscreenNotifications ||
                        (mState == StatusBarState.SHADE || mState == StatusBarState.SHADE_LOCKED));
                mBarService.onPanelRevealed(clearNotificationEffects);
                int notificationLoad = mNotificationData.getActiveNotifications().size();
                if (mHeadsUpManager.hasPinnedHeadsUp() && isPanelFullyCollapsed())  {
                    notificationLoad = 1;
                } else {
                    MetricsLogger.histogram(mContext, "note_load", notificationLoad);
                }
                mBarService.onPanelRevealed(clearNotificationEffects, notificationLoad);
            } else {
                mBarService.onPanelHidden();
            }
+1 −0
Original line number Diff line number Diff line
@@ -1180,6 +1180,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                        notification.getKey());
                notification.getNotification().fullScreenIntent.send();
                shadeEntry.notifyFullScreenIntentLaunched();
                MetricsLogger.count(mContext, "note_fullscreen", 1);
            } catch (PendingIntent.CanceledException e) {
            }
        }
+5 −2
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.view.View;
import android.view.ViewTreeObserver;
import android.view.accessibility.AccessibilityEvent;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
@@ -82,6 +83,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
    private final View mStatusBarWindowView;
    private final int mStatusBarHeight;
    private final int mNotificationsTopPadding;
    private final Context mContext;
    private PhoneStatusBar mBar;
    private int mSnoozeLengthMs;
    private ContentObserver mSettingsObserver;
@@ -101,7 +103,8 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
    private boolean mIsObserving;

    public HeadsUpManager(final Context context, View statusBarWindowView) {
        Resources resources = context.getResources();
        mContext = context;
        Resources resources = mContext.getResources();
        mTouchAcceptanceDelay = resources.getInteger(R.integer.touch_acceptance_delay);
        mSnoozedPackages = new ArrayMap<>();
        mDefaultSnoozeLengthMs = resources.getInteger(R.integer.heads_up_default_snooze_length_ms);
@@ -165,6 +168,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
     */
    public void showNotification(NotificationData.Entry headsUp) {
        if (DEBUG) Log.v(TAG, "showNotification");
        MetricsLogger.count(mContext, "note_peek", 1);
        addHeadsUpEntry(headsUp);
        updateNotification(headsUp, true);
        headsUp.setInterruption();
@@ -522,7 +526,6 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
        });
    }


    /**
     * This represents a notification and how long it is in a heads up mode. It also manages its
     * lifecycle automatically when created.
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ option java_package com.android.server
2752 notification_cancel_all (uid|1|5),(pid|1|5),(pkg|3),(userid|1|5),(required_flags|1),(forbidden_flags|1),(reason|1|5),(listener|3)
# when the notification panel is shown
# Note: New tag range starts here since 2753+ have been used below.
27500 notification_panel_revealed
27500 notification_panel_revealed (items|1)
# when the notification panel is hidden
27501 notification_panel_hidden
# when notifications are newly displayed on screen, or disappear from screen
Loading