Merge "Treat SysUI as top application when GlobalActions is shown" into qt-r1-dev am: bac4851b43

am: 7637645f8d

Change-Id: I5a305bee064e3fea6cbdb3b3553ca95935c62a18
This commit is contained in:
Steve Elliott
2019-07-31 15:14:43 -07:00
committed by android-build-merger
2 changed files with 55 additions and 34 deletions

View File

@@ -95,6 +95,7 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActionsPanelPlugin; import com.android.systemui.plugins.GlobalActionsPanelPlugin;
import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.UnlockMethodCache; import com.android.systemui.statusbar.phone.UnlockMethodCache;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.EmergencyDialerConstants;
@@ -1515,6 +1516,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private boolean mShowing; private boolean mShowing;
private float mScrimAlpha; private float mScrimAlpha;
private ResetOrientationData mResetOrientationData; private ResetOrientationData mResetOrientationData;
private boolean mHadTopUi;
private final StatusBarWindowController mStatusBarWindowController;
ActionsDialog(Context context, MyAdapter adapter, ActionsDialog(Context context, MyAdapter adapter,
GlobalActionsPanelPlugin.PanelViewController plugin) { GlobalActionsPanelPlugin.PanelViewController plugin) {
@@ -1523,6 +1526,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mAdapter = adapter; mAdapter = adapter;
mColorExtractor = Dependency.get(SysuiColorExtractor.class); mColorExtractor = Dependency.get(SysuiColorExtractor.class);
mStatusBarService = Dependency.get(IStatusBarService.class); mStatusBarService = Dependency.get(IStatusBarService.class);
mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
// Window initialization // Window initialization
Window window = getWindow(); Window window = getWindow();
@@ -1698,6 +1702,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
public void show() { public void show() {
super.show(); super.show();
mShowing = true; mShowing = true;
mHadTopUi = mStatusBarWindowController.getForceHasTopUi();
mStatusBarWindowController.setForceHasTopUi(true);
mBackgroundDrawable.setAlpha(0); mBackgroundDrawable.setAlpha(0);
mGlobalActionsLayout.setTranslationX(mGlobalActionsLayout.getAnimationOffsetX()); mGlobalActionsLayout.setTranslationX(mGlobalActionsLayout.getAnimationOffsetX());
mGlobalActionsLayout.setTranslationY(mGlobalActionsLayout.getAnimationOffsetY()); mGlobalActionsLayout.setTranslationY(mGlobalActionsLayout.getAnimationOffsetY());
@@ -1730,7 +1736,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
.translationX(mGlobalActionsLayout.getAnimationOffsetX()) .translationX(mGlobalActionsLayout.getAnimationOffsetX())
.translationY(mGlobalActionsLayout.getAnimationOffsetY()) .translationY(mGlobalActionsLayout.getAnimationOffsetY())
.setDuration(300) .setDuration(300)
.withEndAction(super::dismiss) .withEndAction(this::completeDismiss)
.setInterpolator(new LogAccelerateInterpolator()) .setInterpolator(new LogAccelerateInterpolator())
.setUpdateListener(animation -> { .setUpdateListener(animation -> {
int alpha = (int) ((1f - (Float) animation.getAnimatedValue()) int alpha = (int) ((1f - (Float) animation.getAnimatedValue())
@@ -1743,10 +1749,15 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
} }
void dismissImmediately() { void dismissImmediately() {
super.dismiss();
mShowing = false; mShowing = false;
dismissPanel(); dismissPanel();
resetOrientation(); resetOrientation();
completeDismiss();
}
private void completeDismiss() {
mStatusBarWindowController.setForceHasTopUi(mHadTopUi);
super.dismiss();
} }
private void dismissPanel() { private void dismissPanel() {

View File

@@ -76,13 +76,13 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
private final WindowManager mWindowManager; private final WindowManager mWindowManager;
private final IActivityManager mActivityManager; private final IActivityManager mActivityManager;
private final DozeParameters mDozeParameters; private final DozeParameters mDozeParameters;
private final WindowManager.LayoutParams mLpChanged; private final LayoutParams mLpChanged;
private final boolean mKeyguardScreenRotation; private final boolean mKeyguardScreenRotation;
private final long mLockScreenDisplayTimeout; private final long mLockScreenDisplayTimeout;
private final Display.Mode mKeyguardDisplayMode; private final Display.Mode mKeyguardDisplayMode;
private final KeyguardBypassController mKeyguardBypassController; private final KeyguardBypassController mKeyguardBypassController;
private ViewGroup mStatusBarView; private ViewGroup mStatusBarView;
private WindowManager.LayoutParams mLp; private LayoutParams mLp;
private boolean mHasTopUi; private boolean mHasTopUi;
private boolean mHasTopUiChanged; private boolean mHasTopUiChanged;
private int mBarHeight; private int mBarHeight;
@@ -117,7 +117,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation(); mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation();
mDozeParameters = dozeParameters; mDozeParameters = dozeParameters;
mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze(); mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze();
mLpChanged = new WindowManager.LayoutParams(); mLpChanged = new LayoutParams();
mKeyguardBypassController = keyguardBypassController; mKeyguardBypassController = keyguardBypassController;
mLockScreenDisplayTimeout = context.getResources() mLockScreenDisplayTimeout = context.getResources()
.getInteger(R.integer.config_lockScreenDisplayTimeout); .getInteger(R.integer.config_lockScreenDisplayTimeout);
@@ -171,19 +171,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
// Now that the status bar window encompasses the sliding panel and its // Now that the status bar window encompasses the sliding panel and its
// translucent backdrop, the entire thing is made TRANSLUCENT and is // translucent backdrop, the entire thing is made TRANSLUCENT and is
// hardware-accelerated. // hardware-accelerated.
mLp = new WindowManager.LayoutParams( mLp = new LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
barHeight, barHeight,
WindowManager.LayoutParams.TYPE_STATUS_BAR, LayoutParams.TYPE_STATUS_BAR,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | LayoutParams.FLAG_SPLIT_TOUCH
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, | LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,
PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT);
mLp.token = new Binder(); mLp.token = new Binder();
mLp.gravity = Gravity.TOP; mLp.gravity = Gravity.TOP;
mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLp.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
mLp.setTitle("StatusBar"); mLp.setTitle("StatusBar");
mLp.packageName = mContext.getPackageName(); mLp.packageName = mContext.getPackageName();
mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
@@ -216,9 +216,9 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
private void applyKeyguardFlags(State state) { private void applyKeyguardFlags(State state) {
if (state.keyguardShowing) { if (state.keyguardShowing) {
mLpChanged.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_KEYGUARD;
} else { } else {
mLpChanged.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; mLpChanged.privateFlags &= ~LayoutParams.PRIVATE_FLAG_KEYGUARD;
} }
final boolean scrimsOccludingWallpaper = final boolean scrimsOccludingWallpaper =
@@ -226,9 +226,9 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
final boolean keyguardOrAod = state.keyguardShowing final boolean keyguardOrAod = state.keyguardShowing
|| (state.dozing && mDozeParameters.getAlwaysOn()); || (state.dozing && mDozeParameters.getAlwaysOn());
if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) { if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) {
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; mLpChanged.flags |= LayoutParams.FLAG_SHOW_WALLPAPER;
} else { } else {
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; mLpChanged.flags &= ~LayoutParams.FLAG_SHOW_WALLPAPER;
} }
if (state.dozing) { if (state.dozing) {
@@ -267,17 +267,17 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
if (state.bouncerShowing && (state.keyguardOccluded || state.keyguardNeedsInput) if (state.bouncerShowing && (state.keyguardOccluded || state.keyguardNeedsInput)
|| ENABLE_REMOTE_INPUT && state.remoteInputActive || ENABLE_REMOTE_INPUT && state.remoteInputActive
|| state.bubbleExpanded) { || state.bubbleExpanded) {
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mLpChanged.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE;
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; mLpChanged.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
} else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) { } else if (state.isKeyguardShowingAndNotOccluded() || panelFocusable) {
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mLpChanged.flags &= ~LayoutParams.FLAG_NOT_FOCUSABLE;
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; mLpChanged.flags |= LayoutParams.FLAG_ALT_FOCUSABLE_IM;
} else { } else {
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; mLpChanged.flags |= LayoutParams.FLAG_NOT_FOCUSABLE;
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; mLpChanged.flags &= ~LayoutParams.FLAG_ALT_FOCUSABLE_IM;
} }
mLpChanged.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLpChanged.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
} }
private void applyForceShowNavigationFlag(State state) { private void applyForceShowNavigationFlag(State state) {
@@ -335,19 +335,19 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
&& state.statusBarState == StatusBarState.KEYGUARD && state.statusBarState == StatusBarState.KEYGUARD
&& !state.qsExpanded && !state.forceUserActivity) { && !state.qsExpanded && !state.forceUserActivity) {
mLpChanged.inputFeatures |= mLpChanged.inputFeatures |=
WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
} else { } else {
mLpChanged.inputFeatures &= mLpChanged.inputFeatures &=
~WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; ~LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY;
} }
} }
private void applyStatusBarColorSpaceAgnosticFlag(State state) { private void applyStatusBarColorSpaceAgnosticFlag(State state) {
if (!isExpanded(state)) { if (!isExpanded(state)) {
mLpChanged.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC; mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
} else { } else {
mLpChanged.privateFlags &= mLpChanged.privateFlags &=
~WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC; ~LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
} }
} }
@@ -396,16 +396,16 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
mLpChanged.privateFlags |= WindowManager mLpChanged.privateFlags |= WindowManager
.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT; .LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
} else { } else {
mLpChanged.privateFlags &= ~WindowManager mLpChanged.privateFlags
.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT; &= ~LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
} }
} }
private void applyModalFlag(State state) { private void applyModalFlag(State state) {
if (state.headsUpShowing) { if (state.headsUpShowing) {
mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mLpChanged.flags |= LayoutParams.FLAG_NOT_TOUCH_MODAL;
} else { } else {
mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mLpChanged.flags &= ~LayoutParams.FLAG_NOT_TOUCH_MODAL;
} }
} }
@@ -413,12 +413,12 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
if (state.forceDozeBrightness) { if (state.forceDozeBrightness) {
mLpChanged.screenBrightness = mScreenBrightnessDoze; mLpChanged.screenBrightness = mScreenBrightnessDoze;
} else { } else {
mLpChanged.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE; mLpChanged.screenBrightness = LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
} }
} }
private void applyHasTopUi(State state) { private void applyHasTopUi(State state) {
mHasTopUiChanged = isExpanded(state); mHasTopUiChanged = state.forceHasTopUi || isExpanded(state);
} }
private void applyNotTouchable(State state) { private void applyNotTouchable(State state) {
@@ -642,6 +642,15 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
apply(mCurrentState); apply(mCurrentState);
} }
public boolean getForceHasTopUi() {
return mCurrentState.forceHasTopUi;
}
public void setForceHasTopUi(boolean forceHasTopUi) {
mCurrentState.forceHasTopUi = forceHasTopUi;
apply(mCurrentState);
}
private static class State { private static class State {
boolean keyguardShowing; boolean keyguardShowing;
boolean keyguardOccluded; boolean keyguardOccluded;
@@ -663,6 +672,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
boolean notTouchable; boolean notTouchable;
boolean bubblesShowing; boolean bubblesShowing;
boolean bubbleExpanded; boolean bubbleExpanded;
boolean forceHasTopUi;
/** /**
* The {@link StatusBar} state from the status bar. * The {@link StatusBar} state from the status bar.