Merge "Listen for VIS window visibility changes in SysUI" into tm-dev am: 0b870355cb am: 9ef47d9ed9 am: cfa19fb1f7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17211291

Change-Id: Iec7d8aace358b38112e02502a67d4c5f7bcd41a2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-04-30 03:51:32 +00:00
committed by Automerger Merge Worker
2 changed files with 45 additions and 3 deletions

View File

@@ -123,6 +123,8 @@ public class QuickStepContract {
public static final int SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED = 1 << 23; public static final int SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED = 1 << 23;
// The current app is in immersive mode // The current app is in immersive mode
public static final int SYSUI_STATE_IMMERSIVE_MODE = 1 << 24; public static final int SYSUI_STATE_IMMERSIVE_MODE = 1 << 24;
// The voice interaction session window is showing
public static final int SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING = 1 << 25;
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({SYSUI_STATE_SCREEN_PINNING, @IntDef({SYSUI_STATE_SCREEN_PINNING,
@@ -149,7 +151,8 @@ public class QuickStepContract {
SYSUI_STATE_DEVICE_DOZING, SYSUI_STATE_DEVICE_DOZING,
SYSUI_STATE_BACK_DISABLED, SYSUI_STATE_BACK_DISABLED,
SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED, SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED,
SYSUI_STATE_IMMERSIVE_MODE SYSUI_STATE_IMMERSIVE_MODE,
SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING
}) })
public @interface SystemUiStateFlags {} public @interface SystemUiStateFlags {}
@@ -184,6 +187,7 @@ public class QuickStepContract {
str.add((flags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0 str.add((flags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0
? "bubbles_mange_menu_expanded" : ""); ? "bubbles_mange_menu_expanded" : "");
str.add((flags & SYSUI_STATE_IMMERSIVE_MODE) != 0 ? "immersive_mode" : ""); str.add((flags & SYSUI_STATE_IMMERSIVE_MODE) != 0 ? "immersive_mode" : "");
str.add((flags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0 ? "vis_win_showing" : "");
return str.toString(); return str.toString();
} }
@@ -254,9 +258,11 @@ public class QuickStepContract {
* disabled. * disabled.
*/ */
public static boolean isBackGestureDisabled(int sysuiStateFlags) { public static boolean isBackGestureDisabled(int sysuiStateFlags) {
// Always allow when the bouncer/global actions is showing (even on top of the keyguard) // Always allow when the bouncer/global actions/voice session is showing (even on top of
// the keyguard)
if ((sysuiStateFlags & SYSUI_STATE_BOUNCER_SHOWING) != 0 if ((sysuiStateFlags & SYSUI_STATE_BOUNCER_SHOWING) != 0
|| (sysuiStateFlags & SYSUI_STATE_DIALOG_SHOWING) != 0) { || (sysuiStateFlags & SYSUI_STATE_DIALOG_SHOWING) != 0
|| (sysuiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0) {
return false; return false;
} }
if ((sysuiStateFlags & SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY) != 0) { if ((sysuiStateFlags & SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY) != 0) {

View File

@@ -41,6 +41,7 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_D
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;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
import android.annotation.FloatRange; import android.annotation.FloatRange;
import android.app.ActivityTaskManager; import android.app.ActivityTaskManager;
@@ -77,6 +78,8 @@ import androidx.annotation.NonNull;
import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity; import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.AssistUtils;
import com.android.internal.app.IVoiceInteractionSessionListener;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.ScreenDecorationsUtils; import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.internal.util.ScreenshotHelper; import com.android.internal.util.ScreenshotHelper;
@@ -551,6 +554,30 @@ public class OverviewProxyService extends CurrentUserTracker implements
private final IBinder.DeathRecipient mOverviewServiceDeathRcpt private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
= this::cleanupAfterDeath; = this::cleanupAfterDeath;
private final IVoiceInteractionSessionListener mVoiceInteractionSessionListener =
new IVoiceInteractionSessionListener.Stub() {
@Override
public void onVoiceSessionShown() {
// Do nothing
}
@Override
public void onVoiceSessionHidden() {
// Do nothing
}
@Override
public void onVoiceSessionWindowVisibilityChanged(boolean visible) {
mContext.getMainExecutor().execute(() ->
OverviewProxyService.this.onVoiceSessionWindowVisibilityChanged(visible));
}
@Override
public void onSetUiHints(Bundle hints) {
// Do nothing
}
};
@SuppressWarnings("OptionalUsedAsFieldOrParameterType") @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
@Inject @Inject
public OverviewProxyService(Context context, CommandQueue commandQueue, public OverviewProxyService(Context context, CommandQueue commandQueue,
@@ -569,6 +596,7 @@ public class OverviewProxyService extends CurrentUserTracker implements
ScreenLifecycle screenLifecycle, ScreenLifecycle screenLifecycle,
UiEventLogger uiEventLogger, UiEventLogger uiEventLogger,
KeyguardUnlockAnimationController sysuiUnlockAnimationController, KeyguardUnlockAnimationController sysuiUnlockAnimationController,
AssistUtils assistUtils,
DumpManager dumpManager) { DumpManager dumpManager) {
super(broadcastDispatcher); super(broadcastDispatcher);
mContext = context; mContext = context;
@@ -640,6 +668,9 @@ public class OverviewProxyService extends CurrentUserTracker implements
startConnectionToCurrentUser(); startConnectionToCurrentUser();
mStartingSurface = startingSurface; mStartingSurface = startingSurface;
mSysuiUnlockAnimationController = sysuiUnlockAnimationController; mSysuiUnlockAnimationController = sysuiUnlockAnimationController;
// Listen for assistant changes
assistUtils.registerVoiceInteractionSessionListener(mVoiceInteractionSessionListener);
} }
@Override @Override
@@ -648,6 +679,11 @@ public class OverviewProxyService extends CurrentUserTracker implements
internalConnectToCurrentUser(); internalConnectToCurrentUser();
} }
public void onVoiceSessionWindowVisibilityChanged(boolean visible) {
mSysUiState.setFlag(SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING, visible)
.commitUpdate(mContext.getDisplayId());
}
public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton, public void notifyBackAction(boolean completed, int downX, int downY, boolean isButton,
boolean gestureSwipeLeft) { boolean gestureSwipeLeft) {
try { try {