Remove dependency on OverviewProxyService from StatusBarWindowController
Bug: 134712444 Test: atest SystemUITests Change-Id: Ifd6ac77670c408da74a7278e8da5868e78a6a068 Merged-In: Ifd6ac77670c408da74a7278e8da5868e78a6a068
This commit is contained in:
@@ -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_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_SYSUI_PROXY;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;
|
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.annotation.FloatRange;
|
||||||
import android.app.ActivityTaskManager;
|
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.NavigationBarView;
|
||||||
import com.android.systemui.statusbar.phone.NavigationModeController;
|
import com.android.systemui.statusbar.phone.NavigationModeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
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.phone.StatusBarWindowController;
|
||||||
import com.android.systemui.statusbar.policy.CallbackController;
|
import com.android.systemui.statusbar.policy.CallbackController;
|
||||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||||
@@ -90,7 +94,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
|||||||
private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
|
private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
|
||||||
|
|
||||||
public static final String TAG_OPS = "OverviewProxyService";
|
public static final String TAG_OPS = "OverviewProxyService";
|
||||||
public static final boolean DEBUG_OVERVIEW_PROXY = false;
|
|
||||||
private static final long BACKOFF_MILLIS = 1000;
|
private static final long BACKOFF_MILLIS = 1000;
|
||||||
private static final long DEFERRED_CALLBACK_MILLIS = 5000;
|
private static final long DEFERRED_CALLBACK_MILLIS = 5000;
|
||||||
|
|
||||||
@@ -442,6 +445,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final StatusBarWindowCallback mStatusBarWindowCallback = this::onStatusBarStateChanged;
|
||||||
|
|
||||||
// This is the death handler for the binder from the launcher service
|
// This is the death handler for the binder from the launcher service
|
||||||
private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
|
private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
|
||||||
= this::cleanupAfterDeath;
|
= this::cleanupAfterDeath;
|
||||||
@@ -481,6 +486,9 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
|||||||
PatternMatcher.PATTERN_LITERAL);
|
PatternMatcher.PATTERN_LITERAL);
|
||||||
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
||||||
mContext.registerReceiver(mLauncherStateChangedReceiver, filter);
|
mContext.registerReceiver(mLauncherStateChangedReceiver, filter);
|
||||||
|
|
||||||
|
// Listen for status bar state changes
|
||||||
|
statusBarWinController.registerCallback(mStatusBarWindowCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
|
public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
|
||||||
@@ -531,7 +539,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
|||||||
navBarView.updateSystemUiStateFlags();
|
navBarView.updateSystemUiStateFlags();
|
||||||
}
|
}
|
||||||
if (mStatusBarWinController != null) {
|
if (mStatusBarWinController != null) {
|
||||||
mStatusBarWinController.updateSystemUiStateFlags();
|
mStatusBarWinController.notifyStateChangedCallbacks();
|
||||||
}
|
}
|
||||||
notifySystemUiStateFlags(mSysUiStateFlags);
|
notifySystemUiStateFlags(mSysUiStateFlags);
|
||||||
}
|
}
|
||||||
@@ -546,6 +554,16 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onStatusBarStateChanged(boolean keyguardShowing, boolean keyguardOccluded,
|
||||||
|
boolean bouncerShowing) {
|
||||||
|
int displayId = mContext.getDisplayId();
|
||||||
|
setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING,
|
||||||
|
keyguardShowing && !keyguardOccluded, displayId);
|
||||||
|
setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED,
|
||||||
|
keyguardShowing && keyguardOccluded, displayId);
|
||||||
|
setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING, bouncerShowing, displayId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the navbar region which can receive touch inputs
|
* Sets the navbar region which can receive touch inputs
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
|
public interface StatusBarWindowCallback {
|
||||||
|
void onStateChanged(boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing);
|
||||||
|
}
|
||||||
@@ -18,9 +18,6 @@ package com.android.systemui.statusbar.phone;
|
|||||||
|
|
||||||
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||||
|
|
||||||
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 static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
|
import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
@@ -47,17 +44,19 @@ import com.android.systemui.colorextraction.SysuiColorExtractor;
|
|||||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
||||||
import com.android.systemui.recents.OverviewProxyService;
|
|
||||||
import com.android.systemui.statusbar.RemoteInputController.Callback;
|
import com.android.systemui.statusbar.RemoteInputController.Callback;
|
||||||
import com.android.systemui.statusbar.StatusBarState;
|
import com.android.systemui.statusbar.StatusBarState;
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||||
|
|
||||||
|
import com.google.android.collect.Lists;
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
@@ -84,6 +83,8 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
private final State mCurrentState = new State();
|
private final State mCurrentState = new State();
|
||||||
private OtherwisedCollapsedListener mListener;
|
private OtherwisedCollapsedListener mListener;
|
||||||
private ForcePluginOpenListener mForcePluginOpenListener;
|
private ForcePluginOpenListener mForcePluginOpenListener;
|
||||||
|
private final ArrayList<WeakReference<StatusBarWindowCallback>>
|
||||||
|
mCallbacks = Lists.newArrayList();
|
||||||
|
|
||||||
private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
|
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);
|
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<StatusBarWindowCallback>(callback));
|
||||||
|
}
|
||||||
|
|
||||||
private boolean shouldEnableKeyguardScreenRotation() {
|
private boolean shouldEnableKeyguardScreenRotation() {
|
||||||
Resources res = mContext.getResources();
|
Resources res = mContext.getResources();
|
||||||
return SystemProperties.getBoolean("lockscreen.rot_override", false)
|
return SystemProperties.getBoolean("lockscreen.rot_override", false)
|
||||||
@@ -319,18 +333,18 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
}
|
}
|
||||||
mHasTopUi = mHasTopUiChanged;
|
mHasTopUi = mHasTopUiChanged;
|
||||||
}
|
}
|
||||||
updateSystemUiStateFlags();
|
notifyStateChangedCallbacks();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateSystemUiStateFlags() {
|
public void notifyStateChangedCallbacks() {
|
||||||
int displayId = mContext.getDisplayId();
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
OverviewProxyService overviewProxyService = Dependency.get(OverviewProxyService.class);
|
StatusBarWindowCallback cb = mCallbacks.get(i).get();
|
||||||
overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING,
|
if (cb != null) {
|
||||||
mCurrentState.keyguardShowing && !mCurrentState.keyguardOccluded, displayId);
|
cb.onStateChanged(mCurrentState.keyguardShowing,
|
||||||
overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED,
|
mCurrentState.keyguardOccluded,
|
||||||
mCurrentState.keyguardShowing && mCurrentState.keyguardOccluded, displayId);
|
mCurrentState.bouncerShowing);
|
||||||
overviewProxyService.setSystemUiStateFlag(SYSUI_STATE_BOUNCER_SHOWING,
|
}
|
||||||
mCurrentState.bouncerShowing, displayId);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyForceStatusBarVisibleFlag(State state) {
|
private void applyForceStatusBarVisibleFlag(State state) {
|
||||||
|
|||||||
Reference in New Issue
Block a user