From dc0eca6cd201004f378694b672139332227ef4a7 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 13 Jun 2019 22:37:31 -0700 Subject: Remove dependency on OverviewProxyService from StatusBarWindowController Bug: 134712444 Test: atest SystemUITests Change-Id: Ifd6ac77670c408da74a7278e8da5868e78a6a068 Merged-In: Ifd6ac77670c408da74a7278e8da5868e78a6a068 --- .../systemui/recents/OverviewProxyService.java | 22 ++++++++++- .../statusbar/phone/StatusBarWindowCallback.java | 20 ++++++++++ .../statusbar/phone/StatusBarWindowController.java | 46 ++++++++++++++-------- 3 files changed, 70 insertions(+), 18 deletions(-) create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowCallback.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 88a8b31dc361..b4299fd760fd 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -27,6 +27,9 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_INP import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import android.annotation.FloatRange; import android.app.ActivityTaskManager; @@ -67,6 +70,7 @@ import com.android.systemui.statusbar.phone.NavigationBarFragment; import com.android.systemui.statusbar.phone.NavigationBarView; import com.android.systemui.statusbar.phone.NavigationModeController; import com.android.systemui.statusbar.phone.StatusBar; +import com.android.systemui.statusbar.phone.StatusBarWindowCallback; import com.android.systemui.statusbar.phone.StatusBarWindowController; import com.android.systemui.statusbar.policy.CallbackController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; @@ -90,7 +94,6 @@ public class OverviewProxyService implements CallbackController> + mCallbacks = Lists.newArrayList(); private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class); @@ -109,6 +110,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat Dependency.get(ConfigurationController.class).addCallback(this); } + /** + * Register to receive notifications about status bar window state changes. + */ + public void registerCallback(StatusBarWindowCallback callback) { + // Prevent adding duplicate callbacks + for (int i = 0; i < mCallbacks.size(); i++) { + if (mCallbacks.get(i).get() == callback) { + return; + } + } + mCallbacks.add(new WeakReference(callback)); + } + private boolean shouldEnableKeyguardScreenRotation() { Resources res = mContext.getResources(); return SystemProperties.getBoolean("lockscreen.rot_override", false) @@ -319,18 +333,18 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat } mHasTopUi = mHasTopUiChanged; } - updateSystemUiStateFlags(); - } - - public void updateSystemUiStateFlags() { - int displayId = mContext.getDisplayId(); - OverviewProxyService overviewProxyService = Dependency.get(OverviewProxyService.class); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING, - mCurrentState.keyguardShowing && !mCurrentState.keyguardOccluded, displayId); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED, - mCurrentState.keyguardShowing && mCurrentState.keyguardOccluded, displayId); - overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING, - mCurrentState.bouncerShowing, displayId); + notifyStateChangedCallbacks(); + } + + public void notifyStateChangedCallbacks() { + for (int i = 0; i < mCallbacks.size(); i++) { + StatusBarWindowCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onStateChanged(mCurrentState.keyguardShowing, + mCurrentState.keyguardOccluded, + mCurrentState.bouncerShowing); + } + } } private void applyForceStatusBarVisibleFlag(State state) { -- cgit v1.2.3-59-g8ed1b