summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2016-03-01 23:02:30 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-01 23:02:31 +0000
commit2ab93cb22ad641572bdfed1b2d3d9e8dc1e89f1f (patch)
tree2e1753b682281c79f3c6b670c7991aa91ee6fe7a
parent8486706affc6366af57a4e39797f9bf8d2ad68e3 (diff)
parent47d98de60bc5504271e027aef0b7ea218f0aaf59 (diff)
Merge "Hide overlay windows in VR mode" into nyc-dev
-rw-r--r--services/core/java/com/android/server/vr/VrManagerService.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index 2f076d1d69e3..7611527d2b99 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<VrStateListener> 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;