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.

Merged-In: I1d04a92e66ae92ecee4f8ee23b218c2b167dadd4
Change-Id: I1d04a92e66ae92ecee4f8ee23b218c2b167dadd4
Test: existing tests pass
Test: add heads up on lockscreen
Test: heads up group child on lockscreen
Bug: 33773401
This commit is contained in:
Selim Cinek
2016-12-21 18:23:11 +01:00
parent add9526b1d
commit ab24dc9f29
4 changed files with 19 additions and 9 deletions

View File

@@ -2291,7 +2291,9 @@ public abstract class BaseStatusBar extends SystemUI implements
} }
} else { } else {
boolean wasGone = entry.row.getVisibility() == View.GONE; boolean wasGone = entry.row.getVisibility() == View.GONE;
entry.row.setVisibility(View.VISIBLE); if (wasGone) {
entry.row.setVisibility(View.VISIBLE);
}
if (!childNotification && !entry.row.isRemoved()) { if (!childNotification && !entry.row.isRemoved()) {
if (wasGone) { if (wasGone) {
// notify the scroller of a child addition // notify the scroller of a child addition
@@ -2546,9 +2548,7 @@ public abstract class BaseStatusBar extends SystemUI implements
return false; return false;
} }
boolean inUse = mPowerManager.isScreenOn() boolean inUse = mPowerManager.isScreenOn();
&& (!mStatusBarKeyguardViewManager.isShowing()
|| mStatusBarKeyguardViewManager.isOccluded());
try { try {
inUse = inUse && !mDreamManager.isDreaming(); inUse = inUse && !mDreamManager.isDreaming();
} catch (RemoteException e) { } catch (RemoteException e) {
@@ -2587,7 +2587,9 @@ public abstract class BaseStatusBar extends SystemUI implements
if (DEBUG) Log.d(TAG, "No peeking: accessible fullscreen: " + sbn.getKey()); if (DEBUG) Log.d(TAG, "No peeking: accessible fullscreen: " + sbn.getKey());
return false; return false;
} else { } else {
return true; // we only allow head-up on the lockscreen if it doesn't have a fullscreen intent
return !mStatusBarKeyguardViewManager.isShowing()
|| mStatusBarKeyguardViewManager.isOccluded();
} }
} }

View File

@@ -1215,7 +1215,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
return getMinHeight(); return getMinHeight();
} else if (mIsSummaryWithChildren && !mOnKeyguard) { } else if (mIsSummaryWithChildren && !mOnKeyguard) {
return mChildrenContainer.getIntrinsicHeight(); return mChildrenContainer.getIntrinsicHeight();
} else if (mIsHeadsUp || mHeadsupDisappearRunning) { } else if (!mOnKeyguard && (mIsHeadsUp || mHeadsupDisappearRunning)) {
if (isPinned() || mHeadsupDisappearRunning) { if (isPinned() || mHeadsupDisappearRunning) {
return getPinnedHeadsUpHeight(true /* atLeastMinHeight */); return getPinnedHeadsUpHeight(true /* atLeastMinHeight */);
} else if (isExpanded()) { } else if (isExpanded()) {
@@ -1513,11 +1513,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
@Override @Override
public int getMinHeight() { public int getMinHeight() {
if (mIsHeadsUp && mHeadsUpManager.isTrackingHeadsUp()) { if (!mOnKeyguard && mIsHeadsUp && mHeadsUpManager.isTrackingHeadsUp()) {
return getPinnedHeadsUpHeight(false /* atLeastMinHeight */); return getPinnedHeadsUpHeight(false /* atLeastMinHeight */);
} else if (mIsSummaryWithChildren && !isGroupExpanded() && !mShowingPublic) { } else if (mIsSummaryWithChildren && !isGroupExpanded() && !mShowingPublic) {
return mChildrenContainer.getMinHeight(); return mChildrenContainer.getMinHeight();
} else if (mIsHeadsUp) { } else if (!mOnKeyguard && mIsHeadsUp) {
return mHeadsUpHeight; return mHeadsUpHeight;
} }
NotificationContentView showingLayout = getShowingLayout(); NotificationContentView showingLayout = getShowingLayout();

View File

@@ -4524,6 +4524,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
} }
mState = state; mState = state;
mGroupManager.setStatusBarState(state); mGroupManager.setStatusBarState(state);
mHeadsUpManager.setStatusBarState(state);
mFalsingManager.setStatusBarState(state); mFalsingManager.setStatusBarState(state);
mStatusBarWindowManager.setStatusBarState(state); mStatusBarWindowManager.setStatusBarState(state);
updateReportRejectedTouchVisibility(); updateReportRejectedTouchVisibility();

View File

@@ -34,6 +34,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData; import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.PhoneStatusBar; import com.android.systemui.statusbar.phone.PhoneStatusBar;
@@ -109,6 +110,7 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
private boolean mIsObserving; private boolean mIsObserving;
private boolean mRemoteInputActive; private boolean mRemoteInputActive;
private VisualStabilityManager mVisualStabilityManager; private VisualStabilityManager mVisualStabilityManager;
private int mStatusBarState;
public HeadsUpManager(final Context context, View statusBarWindowView, public HeadsUpManager(final Context context, View statusBarWindowView,
NotificationGroupManager groupManager) { NotificationGroupManager groupManager) {
@@ -216,7 +218,8 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
} }
private boolean shouldHeadsUpBecomePinned(NotificationData.Entry entry) { private boolean shouldHeadsUpBecomePinned(NotificationData.Entry entry) {
return !mIsExpanded || hasFullScreenIntent(entry); return mStatusBarState != StatusBarState.KEYGUARD
&& !mIsExpanded || hasFullScreenIntent(entry);
} }
private boolean hasFullScreenIntent(NotificationData.Entry entry) { private boolean hasFullScreenIntent(NotificationData.Entry entry) {
@@ -623,6 +626,10 @@ public class HeadsUpManager implements ViewTreeObserver.OnComputeInternalInsetsL
mVisualStabilityManager = visualStabilityManager; 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 * This represents a notification and how long it is in a heads up mode. It also manages its
* lifecycle automatically when created. * lifecycle automatically when created.