From 47d98de60bc5504271e027aef0b7ea218f0aaf59 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Tue, 1 Mar 2016 15:01:14 -0800 Subject: [PATCH] Hide overlay windows in VR mode bug:26775563 Change-Id: I0e81cc64f281cd085ff642ebd93f32ceb3ad5480 --- .../android/server/vr/VrManagerService.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index 2f076d1d69e33..7611527d2b995 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -15,9 +15,12 @@ */ package com.android.server.vr; +import android.app.AppOpsManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.os.Binder; +import android.os.IBinder; import android.os.UserHandle; import android.util.ArraySet; import android.util.Slog; @@ -40,6 +43,9 @@ public class VrManagerService extends SystemService { private static native void setVrModeNative(boolean enabled); private final Object mLock = new Object(); + + private final IBinder mOverlayToken = new Binder(); + private boolean mVrModeEnabled = false; private ArraySet mListeners = new ArraySet<>(); @@ -97,11 +103,25 @@ public class VrManagerService extends SystemService { // Log mode change event. Slog.i(TAG, "VR mode " + ((mVrModeEnabled) ? "enabled" : "disabled")); setVrModeNative(mVrModeEnabled); + updateOverlayStateLocked(); onVrModeChangedLocked(); } } } + private void updateOverlayStateLocked() { + final long identity = Binder.clearCallingIdentity(); + try { + AppOpsManager appOpsManager = getContext().getSystemService(AppOpsManager.class); + if (appOpsManager != null) { + appOpsManager.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, + mVrModeEnabled, mOverlayToken); + } + } finally { + Binder.restoreCallingIdentity(identity); + } + } + private boolean getVrMode() { synchronized (mLock) { return mVrModeEnabled;