From 096ba22ae3a40630792eb6fc262597af46e47b6a Mon Sep 17 00:00:00 2001 From: Dan Sandler Date: Mon, 11 Apr 2016 15:30:12 -0400 Subject: [PATCH] Suppress immersive mode confirmation in VR mode. Change-Id: I5046d3f60727bded484cb11233638be0e24ef0d8 Fixes: 28052143 --- .../policy/ImmersiveModeConfirmation.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java index 160d44c58bc9e..27077f2f74f75 100644 --- a/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java +++ b/services/core/java/com/android/server/policy/ImmersiveModeConfirmation.java @@ -27,8 +27,11 @@ import android.graphics.PixelFormat; import android.graphics.drawable.ColorDrawable; import android.os.Handler; import android.os.Message; +import android.os.RemoteException; +import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; +import android.service.vr.IVrManager; import android.util.DisplayMetrics; import android.util.Slog; import android.util.SparseBooleanArray; @@ -45,6 +48,7 @@ import android.widget.Button; import android.widget.FrameLayout; import com.android.internal.R; +import com.android.server.vr.VrManagerService; /** * Helper to manage showing/hiding a confirmation prompt when the navigation bar is hidden @@ -66,6 +70,7 @@ public class ImmersiveModeConfirmation { private long mPanicTime; private WindowManager mWindowManager; private int mCurrentUserId; + private IVrManager mVrManager; public ImmersiveModeConfirmation(Context context) { mContext = context; @@ -75,6 +80,8 @@ public class ImmersiveModeConfirmation { .getInteger(R.integer.config_immersive_mode_confirmation_panic); mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); + mVrManager = (IVrManager) IVrManager.Stub.asInterface( + ServiceManager.getService(VrManagerService.VR_MANAGER_BINDER_SERVICE)); } private long getNavBarExitDuration() { @@ -112,6 +119,14 @@ public class ImmersiveModeConfirmation { } } + private boolean getVrMode() { + boolean vrMode = false; + try { + vrMode = mVrManager.getVrModeState(); + } catch (RemoteException ex) { } + return vrMode; + } + public void immersiveModeChanged(String pkg, boolean isImmersiveMode, boolean userSetupComplete) { mHandler.removeMessages(H.SHOW); @@ -119,7 +134,10 @@ public class ImmersiveModeConfirmation { final boolean disabled = PolicyControl.disableImmersiveConfirmation(pkg); if (DEBUG) Slog.d(TAG, String.format("immersiveModeChanged() disabled=%s mConfirmed=%s", disabled, mConfirmed)); - if (!disabled && (DEBUG_SHOW_EVERY_TIME || !mConfirmed) && userSetupComplete) { + if (!disabled + && (DEBUG_SHOW_EVERY_TIME || !mConfirmed) + && userSetupComplete + && !getVrMode()) { mHandler.sendEmptyMessageDelayed(H.SHOW, mShowDelayMs); } } else {