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

Commit 01ee2cd5 authored by Selim Cinek's avatar Selim Cinek
Browse files

Allowing heads-up notifications now on the lock screen

In order to isolate notifications properly from their group
and in order to allow them to visually reorder, we now allow
heads up notifications on the lock screen.

Change-Id: I1d04a92e66ae92ecee4f8ee23b218c2b167dadd4
Test: existing tests pass
Test: add heads up on lockscreen
Test: heads up group child on lockscreen
Bug: 32442500
parent 45e63815
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -2219,7 +2219,9 @@ public abstract class BaseStatusBar extends SystemUI implements
                entry.row.setVisibility(View.GONE);
            } else {
                boolean wasGone = entry.row.getVisibility() == View.GONE;
                if (wasGone) {
                    entry.row.setVisibility(View.VISIBLE);
                }
                if (!childNotification && !entry.row.isRemoved()) {
                    if (wasGone) {
                        // notify the scroller of a child addition
@@ -2450,9 +2452,7 @@ public abstract class BaseStatusBar extends SystemUI implements
            return false;
        }

        boolean inUse = mPowerManager.isScreenOn()
                && (!mStatusBarKeyguardViewManager.isShowing()
                || mStatusBarKeyguardViewManager.isOccluded());
        boolean inUse = mPowerManager.isScreenOn();
        try {
            inUse = inUse && !mDreamManager.isDreaming();
        } catch (RemoteException e) {
@@ -2491,7 +2491,9 @@ public abstract class BaseStatusBar extends SystemUI implements
                if (DEBUG) Log.d(TAG, "No peeking: accessible fullscreen: " + sbn.getKey());
                return false;
            } else {
                return true;
                // we only allow head-up on the lockscreen if it doesn't have a fullscreen intent
                return !mStatusBarKeyguardViewManager.isShowing()
                        || mStatusBarKeyguardViewManager.isOccluded();
            }
        }

+3 −3
Original line number Diff line number Diff line
@@ -1346,7 +1346,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
            return getMinHeight();
        } else if (mIsSummaryWithChildren && !mOnKeyguard) {
            return mChildrenContainer.getIntrinsicHeight();
        } else if (mIsHeadsUp || mHeadsupDisappearRunning) {
        } else if (!mOnKeyguard && (mIsHeadsUp || mHeadsupDisappearRunning)) {
            if (isPinned() || mHeadsupDisappearRunning) {
                return getPinnedHeadsUpHeight(true /* atLeastMinHeight */);
            } else if (isExpanded()) {
@@ -1659,11 +1659,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {

    @Override
    public int getMinHeight() {
        if (mIsHeadsUp && mHeadsUpManager.isTrackingHeadsUp()) {
        if (!mOnKeyguard && mIsHeadsUp && mHeadsUpManager.isTrackingHeadsUp()) {
                return getPinnedHeadsUpHeight(false /* atLeastMinHeight */);
        } else if (mIsSummaryWithChildren && !isGroupExpanded() && !mShowingPublic) {
            return mChildrenContainer.getMinHeight();
        } else if (mIsHeadsUp) {
        } else if (!mOnKeyguard && mIsHeadsUp) {
            return mHeadsUpHeight;
        }
        NotificationContentView showingLayout = getShowingLayout();
+1 −0
Original line number Diff line number Diff line
@@ -4616,6 +4616,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
        mState = state;
        mGroupManager.setStatusBarState(state);
        mHeadsUpManager.setStatusBarState(state);
        mFalsingManager.setStatusBarState(state);
        mStatusBarWindowManager.setStatusBarState(state);
        mStackScroller.setStatusBarState(state);
+8 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
@@ -110,6 +111,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
    private boolean mRemoteInputActive;
    private float mExpandedHeight;
    private VisualStabilityManager mVisualStabilityManager;
    private int mStatusBarState;

    public HeadsUpManager(final Context context, View statusBarWindowView,
                          NotificationGroupManager groupManager) {
@@ -217,7 +219,8 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
    }

    private boolean shouldHeadsUpBecomePinned(NotificationData.Entry entry) {
        return !mIsExpanded || hasFullScreenIntent(entry);
        return mStatusBarState != StatusBarState.KEYGUARD
                && !mIsExpanded || hasFullScreenIntent(entry);
    }

    private boolean hasFullScreenIntent(NotificationData.Entry entry) {
@@ -624,6 +627,10 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
        mVisualStabilityManager = visualStabilityManager;
    }

    public void setStatusBarState(int statusBarState) {
        mStatusBarState = statusBarState;
    }

    /**
     * This represents a notification and how long it is in a heads up mode. It also manages its
     * lifecycle automatically when created.