Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ab93cb2 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Hide overlay windows in VR mode" into nyc-dev

parents 8486706a 47d98de6
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -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;