Show logout button on keyguard

- Introduced logout button with desnse button style that switch to user 0 and stop the user
- Use owner_info to calculate KeyguardStatusView bottom if that exist, or keyguard_clock_container otherwise, to prevent notification overlapping owenr_info or the clock.

Test: Logout button does not appear in user 0
Test: Logout button does not appear on unmanaged device
Test: Logout button does not appear when isLogoutEnabled is false
Test: Logout button is shown on secondary users when isLogoutEnabled is true, clicking on logout button switch to user 0 and stops the user
Bug: 71786325

Change-Id: I5adfabd3ea4cc2ed78e7bdd31cbb25f2cea4cce2
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 52d005c..41515eb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -498,7 +498,8 @@
         float shelfSize = shelf.getVisibility() == GONE ? 0
                 : shelf.getIntrinsicHeight() + notificationPadding;
         float availableSpace = mNotificationStackScroller.getHeight() - minPadding - shelfSize
-                - Math.max(mIndicationBottomPadding, mAmbientIndicationBottomPadding);
+                - Math.max(mIndicationBottomPadding, mAmbientIndicationBottomPadding)
+                - mKeyguardStatusView.getLogoutButtonHeight();
         int count = 0;
         for (int i = 0; i < mNotificationStackScroller.getChildCount(); i++) {
             ExpandableView child = (ExpandableView) mNotificationStackScroller.getChildAt(i);