Merge "Remove dependency on OverviewProxyService from StatusBarWindowController" into qt-dev

am: b8886dd613

Change-Id: I6798b83b63a92589c9d8f501d5529d4071e10094
This commit is contained in:
Winson Chung
2019-06-17 12:16:30 -07:00
committed by android-build-merger
3 changed files with 68 additions and 16 deletions

View File

@@ -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
*/ */

View File

@@ -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);
}

View File

@@ -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;
@@ -83,6 +82,8 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
private float mScreenBrightnessDoze; private float mScreenBrightnessDoze;
private final State mCurrentState = new State(); private final State mCurrentState = new State();
private OtherwisedCollapsedListener mListener; private OtherwisedCollapsedListener mListener;
private final ArrayList<WeakReference<StatusBarWindowCallback>>
mCallbacks = Lists.newArrayList();
private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class); private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
@@ -108,6 +109,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)
@@ -318,18 +332,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) {