Loading core/java/com/android/internal/statusbar/IStatusBar.aidl +7 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,13 @@ oneway interface IStatusBar */ void showGlobalActionsMenu(); /** * Set whether the top app currently hides the statusbar. * * @param hidesStatusBar whether it is being hidden */ void setTopAppHidesStatusBar(boolean hidesStatusBar); void addQsTile(in ComponentName tile); void remQsTile(in ComponentName tile); void clickQsTile(in ComponentName tile); Loading packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +14 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_SHOW_GLOBAL_ACTIONS = 34 << MSG_SHIFT; private static final int MSG_TOGGLE_PANEL = 35 << MSG_SHIFT; private static final int MSG_SHOW_SHUTDOWN_UI = 36 << MSG_SHIFT; private static final int MSG_SET_TOP_APP_HIDES_STATUS_BAR = 37 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -132,6 +133,7 @@ public class CommandQueue extends IStatusBar.Stub { default void startAssist(Bundle args) { } default void onCameraLaunchGestureDetected(int source) { } default void showPictureInPictureMenu() { } default void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) { } default void addQsTile(ComponentName tile) { } default void remQsTile(ComponentName tile) { } Loading Loading @@ -440,6 +442,13 @@ public class CommandQueue extends IStatusBar.Stub { } } @Override public void setTopAppHidesStatusBar(boolean hidesStatusBar) { mHandler.removeMessages(MSG_SET_TOP_APP_HIDES_STATUS_BAR); mHandler.obtainMessage(MSG_SET_TOP_APP_HIDES_STATUS_BAR, hidesStatusBar ? 1 : 0, 0) .sendToTarget(); } @Override public void showShutdownUi(boolean isReboot, String reason) { synchronized (mLock) { Loading Loading @@ -640,6 +649,11 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.get(i).handleShowShutdownUi(msg.arg1 != 0, (String) msg.obj); } break; case MSG_SET_TOP_APP_HIDES_STATUS_BAR: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).setTopAppHidesStatusBar(msg.arg1 != 0); } break; } } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,13 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } private boolean shouldHideNotificationIcons() { return !mStatusBar.isClosed() && mStatusBarComponent.hideStatusBarIconsWhenExpanded(); if (!mStatusBar.isClosed() && mStatusBarComponent.hideStatusBarIconsWhenExpanded()) { return true; } if (mStatusBarComponent.hideStatusBarIconsForBouncer()) { return true; } return false; } public void hideSystemIconArea(boolean animate) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +58 −2 Original line number Diff line number Diff line Loading @@ -104,7 +104,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.Vibrator; import android.provider.Settings; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.StatusBarNotification; import android.service.vr.IVrManager; Loading Loading @@ -143,7 +142,6 @@ import android.widget.Toast; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.graphics.ColorUtils; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; Loading Loading @@ -639,6 +637,12 @@ public class StatusBar extends SystemUI implements DemoMode, // Fingerprint (as computed by getLoggingFingerprint() of the last logged state. private int mLastLoggedStateFingerprint; private boolean mTopHidesStatusBar; private boolean mStatusBarWindowHidden; private boolean mHideIconsForBouncer; private boolean mIsOccluded; private boolean mWereIconsJustHidden; private boolean mBouncerWasShowingWhenHidden; public boolean isStartedGoingToSleep() { return mStartedGoingToSleep; Loading Loading @@ -2825,6 +2829,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setPanelExpanded(boolean isExpanded) { mPanelExpanded = isExpanded; updateHideIconsForBouncer(false /* animate */); mStatusBarWindowManager.setPanelExpanded(isExpanded); mVisualStabilityManager.setPanelExpanded(isExpanded); if (isExpanded && getBarState() != StatusBarState.KEYGUARD) { Loading Loading @@ -2890,6 +2895,40 @@ public class StatusBar extends SystemUI implements DemoMode, return mAmbientIndicationContainer; } public void setOccluded(boolean occluded) { mIsOccluded = occluded; updateHideIconsForBouncer(false /* animate */); } public boolean hideStatusBarIconsForBouncer() { return mHideIconsForBouncer || mWereIconsJustHidden; } /** * @param animate should the change of the icons be animated. */ private void updateHideIconsForBouncer(boolean animate) { boolean shouldHideIconsForBouncer = !mPanelExpanded && mTopHidesStatusBar && mIsOccluded && (mBouncerShowing || mStatusBarWindowHidden); if (mHideIconsForBouncer != shouldHideIconsForBouncer) { mHideIconsForBouncer = shouldHideIconsForBouncer; if (!shouldHideIconsForBouncer && mBouncerWasShowingWhenHidden) { // We're delaying the showing, since most of the time the fullscreen app will // hide the icons again and we don't want them to fade in and out immediately again. mWereIconsJustHidden = true; mHandler.postDelayed(() -> { mWereIconsJustHidden = false; recomputeDisableFlags(true); }, 500); } else { recomputeDisableFlags(animate); } } if (shouldHideIconsForBouncer) { mBouncerWasShowingWhenHidden = mBouncerShowing; } } /** * All changes to the status bar and notifications funnel through here and are batched. */ Loading Loading @@ -3216,6 +3255,10 @@ public class StatusBar extends SystemUI implements DemoMode, mStatusBarView.collapsePanel(false /* animate */, false /* delayed */, 1.0f /* speedUpFactor */); } if (mStatusBarView != null) { mStatusBarWindowHidden = state == WINDOW_STATE_HIDDEN; updateHideIconsForBouncer(false /* animate */); } } } Loading Loading @@ -5162,6 +5205,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setBouncerShowing(boolean bouncerShowing) { mBouncerShowing = bouncerShowing; if (mStatusBarView != null) mStatusBarView.setBouncerShowing(bouncerShowing); updateHideIconsForBouncer(true /* animate */); recomputeDisableFlags(true /* animate */); } Loading Loading @@ -6568,6 +6612,18 @@ public class StatusBar extends SystemUI implements DemoMode, mHandler.obtainMessage(msg, deviceId, 0).sendToTarget(); } @Override public void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) { mTopHidesStatusBar = topAppHidesStatusBar; if (!topAppHidesStatusBar && mWereIconsJustHidden) { // Immediately update the icon hidden state, since that should only apply if we're // staying fullscreen. mWereIconsJustHidden = false; recomputeDisableFlags(true); } updateHideIconsForBouncer(true /* animate */); } protected void sendCloseSystemWindows(String reason) { try { ActivityManager.getService().closeSystemDialogs(reason); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } public void setOccluded(boolean occluded, boolean animate) { mStatusBar.setOccluded(occluded); if (occluded && !mOccluded && mShowing) { if (mStatusBar.isInLaunchTransition()) { mOccluded = true; Loading Loading
core/java/com/android/internal/statusbar/IStatusBar.aidl +7 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,13 @@ oneway interface IStatusBar */ void showGlobalActionsMenu(); /** * Set whether the top app currently hides the statusbar. * * @param hidesStatusBar whether it is being hidden */ void setTopAppHidesStatusBar(boolean hidesStatusBar); void addQsTile(in ComponentName tile); void remQsTile(in ComponentName tile); void clickQsTile(in ComponentName tile); Loading
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +14 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_SHOW_GLOBAL_ACTIONS = 34 << MSG_SHIFT; private static final int MSG_TOGGLE_PANEL = 35 << MSG_SHIFT; private static final int MSG_SHOW_SHUTDOWN_UI = 36 << MSG_SHIFT; private static final int MSG_SET_TOP_APP_HIDES_STATUS_BAR = 37 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -132,6 +133,7 @@ public class CommandQueue extends IStatusBar.Stub { default void startAssist(Bundle args) { } default void onCameraLaunchGestureDetected(int source) { } default void showPictureInPictureMenu() { } default void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) { } default void addQsTile(ComponentName tile) { } default void remQsTile(ComponentName tile) { } Loading Loading @@ -440,6 +442,13 @@ public class CommandQueue extends IStatusBar.Stub { } } @Override public void setTopAppHidesStatusBar(boolean hidesStatusBar) { mHandler.removeMessages(MSG_SET_TOP_APP_HIDES_STATUS_BAR); mHandler.obtainMessage(MSG_SET_TOP_APP_HIDES_STATUS_BAR, hidesStatusBar ? 1 : 0, 0) .sendToTarget(); } @Override public void showShutdownUi(boolean isReboot, String reason) { synchronized (mLock) { Loading Loading @@ -640,6 +649,11 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.get(i).handleShowShutdownUi(msg.arg1 != 0, (String) msg.obj); } break; case MSG_SET_TOP_APP_HIDES_STATUS_BAR: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).setTopAppHidesStatusBar(msg.arg1 != 0); } break; } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,13 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } private boolean shouldHideNotificationIcons() { return !mStatusBar.isClosed() && mStatusBarComponent.hideStatusBarIconsWhenExpanded(); if (!mStatusBar.isClosed() && mStatusBarComponent.hideStatusBarIconsWhenExpanded()) { return true; } if (mStatusBarComponent.hideStatusBarIconsForBouncer()) { return true; } return false; } public void hideSystemIconArea(boolean animate) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +58 −2 Original line number Diff line number Diff line Loading @@ -104,7 +104,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.Vibrator; import android.provider.Settings; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.StatusBarNotification; import android.service.vr.IVrManager; Loading Loading @@ -143,7 +142,6 @@ import android.widget.Toast; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.graphics.ColorUtils; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; Loading Loading @@ -639,6 +637,12 @@ public class StatusBar extends SystemUI implements DemoMode, // Fingerprint (as computed by getLoggingFingerprint() of the last logged state. private int mLastLoggedStateFingerprint; private boolean mTopHidesStatusBar; private boolean mStatusBarWindowHidden; private boolean mHideIconsForBouncer; private boolean mIsOccluded; private boolean mWereIconsJustHidden; private boolean mBouncerWasShowingWhenHidden; public boolean isStartedGoingToSleep() { return mStartedGoingToSleep; Loading Loading @@ -2825,6 +2829,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setPanelExpanded(boolean isExpanded) { mPanelExpanded = isExpanded; updateHideIconsForBouncer(false /* animate */); mStatusBarWindowManager.setPanelExpanded(isExpanded); mVisualStabilityManager.setPanelExpanded(isExpanded); if (isExpanded && getBarState() != StatusBarState.KEYGUARD) { Loading Loading @@ -2890,6 +2895,40 @@ public class StatusBar extends SystemUI implements DemoMode, return mAmbientIndicationContainer; } public void setOccluded(boolean occluded) { mIsOccluded = occluded; updateHideIconsForBouncer(false /* animate */); } public boolean hideStatusBarIconsForBouncer() { return mHideIconsForBouncer || mWereIconsJustHidden; } /** * @param animate should the change of the icons be animated. */ private void updateHideIconsForBouncer(boolean animate) { boolean shouldHideIconsForBouncer = !mPanelExpanded && mTopHidesStatusBar && mIsOccluded && (mBouncerShowing || mStatusBarWindowHidden); if (mHideIconsForBouncer != shouldHideIconsForBouncer) { mHideIconsForBouncer = shouldHideIconsForBouncer; if (!shouldHideIconsForBouncer && mBouncerWasShowingWhenHidden) { // We're delaying the showing, since most of the time the fullscreen app will // hide the icons again and we don't want them to fade in and out immediately again. mWereIconsJustHidden = true; mHandler.postDelayed(() -> { mWereIconsJustHidden = false; recomputeDisableFlags(true); }, 500); } else { recomputeDisableFlags(animate); } } if (shouldHideIconsForBouncer) { mBouncerWasShowingWhenHidden = mBouncerShowing; } } /** * All changes to the status bar and notifications funnel through here and are batched. */ Loading Loading @@ -3216,6 +3255,10 @@ public class StatusBar extends SystemUI implements DemoMode, mStatusBarView.collapsePanel(false /* animate */, false /* delayed */, 1.0f /* speedUpFactor */); } if (mStatusBarView != null) { mStatusBarWindowHidden = state == WINDOW_STATE_HIDDEN; updateHideIconsForBouncer(false /* animate */); } } } Loading Loading @@ -5162,6 +5205,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setBouncerShowing(boolean bouncerShowing) { mBouncerShowing = bouncerShowing; if (mStatusBarView != null) mStatusBarView.setBouncerShowing(bouncerShowing); updateHideIconsForBouncer(true /* animate */); recomputeDisableFlags(true /* animate */); } Loading Loading @@ -6568,6 +6612,18 @@ public class StatusBar extends SystemUI implements DemoMode, mHandler.obtainMessage(msg, deviceId, 0).sendToTarget(); } @Override public void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) { mTopHidesStatusBar = topAppHidesStatusBar; if (!topAppHidesStatusBar && mWereIconsJustHidden) { // Immediately update the icon hidden state, since that should only apply if we're // staying fullscreen. mWereIconsJustHidden = false; recomputeDisableFlags(true); } updateHideIconsForBouncer(true /* animate */); } protected void sendCloseSystemWindows(String reason) { try { ActivityManager.getService().closeSystemDialogs(reason); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } public void setOccluded(boolean occluded, boolean animate) { mStatusBar.setOccluded(occluded); if (occluded && !mOccluded && mShowing) { if (mStatusBar.isInLaunchTransition()) { mOccluded = true; Loading