diff options
| -rw-r--r-- | Android.mk | 1 | ||||
| -rw-r--r-- | core/java/android/service/vr/IVrManager.aidl | 15 | ||||
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 6 | ||||
| -rw-r--r-- | services/core/java/com/android/server/vr/PersistentVrStateListener.java (renamed from core/java/android/service/vr/IPersistentVrStateCallbacks.aidl) | 23 | ||||
| -rw-r--r-- | services/core/java/com/android/server/vr/VrManagerInternal.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/vr/VrManagerService.java | 92 |
6 files changed, 51 insertions, 89 deletions
diff --git a/Android.mk b/Android.mk index 2cb888ce8d60..03b2533e8bc0 100644 --- a/Android.mk +++ b/Android.mk @@ -282,7 +282,6 @@ LOCAL_SRC_FILES += \ core/java/android/service/notification/IStatusBarNotificationHolder.aidl \ core/java/android/service/notification/IConditionListener.aidl \ core/java/android/service/notification/IConditionProvider.aidl \ - core/java/android/service/vr/IPersistentVrStateCallbacks.aidl \ core/java/android/service/vr/IVrListener.aidl \ core/java/android/service/vr/IVrManager.aidl \ core/java/android/service/vr/IVrStateCallbacks.aidl \ diff --git a/core/java/android/service/vr/IVrManager.aidl b/core/java/android/service/vr/IVrManager.aidl index fce06d6d91c2..6034c1820972 100644 --- a/core/java/android/service/vr/IVrManager.aidl +++ b/core/java/android/service/vr/IVrManager.aidl @@ -17,7 +17,6 @@ package android.service.vr; import android.service.vr.IVrStateCallbacks; -import android.service.vr.IPersistentVrStateCallbacks; /** @hide */ interface IVrManager { @@ -37,20 +36,6 @@ interface IVrManager { void unregisterListener(in IVrStateCallbacks cb); /** - * Add a callback to be notified when persistent VR mode state changes. - * - * @param cb the callback instance to add. - */ - void registerPersistentVrStateListener(in IPersistentVrStateCallbacks cb); - - /** - * Remove the callack from the current set of registered callbacks. - * - * @param cb the callback to remove. - */ - void unregisterPersistentVrStateListener(in IPersistentVrStateCallbacks cb); - - /** * Return current VR mode state. * * @return {@code true} if VR mode is enabled. diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0dbb6aaf69b2..7eb4df83a17b 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -182,7 +182,6 @@ import android.provider.Settings; import android.service.dreams.DreamManagerInternal; import android.service.dreams.DreamService; import android.service.dreams.IDreamManager; -import android.service.vr.IPersistentVrStateCallbacks; import android.speech.RecognizerIntent; import android.telecom.TelecomManager; import android.util.DisplayMetrics; @@ -237,6 +236,7 @@ import com.android.server.policy.keyguard.KeyguardStateMonitor.StateCallback; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.wm.AppTransition; import com.android.server.vr.VrManagerInternal; +import com.android.server.vr.PersistentVrStateListener; import java.io.File; import java.io.FileReader; @@ -999,8 +999,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } MyOrientationListener mOrientationListener; - final IPersistentVrStateCallbacks mPersistentVrModeListener = - new IPersistentVrStateCallbacks.Stub() { + final PersistentVrStateListener mPersistentVrModeListener = + new PersistentVrStateListener() { @Override public void onPersistentVrStateChanged(boolean enabled) { mPersistentVrModeEnabled = enabled; diff --git a/core/java/android/service/vr/IPersistentVrStateCallbacks.aidl b/services/core/java/com/android/server/vr/PersistentVrStateListener.java index 7de8b6362d89..bccd5f165aed 100644 --- a/core/java/android/service/vr/IPersistentVrStateCallbacks.aidl +++ b/services/core/java/com/android/server/vr/PersistentVrStateListener.java @@ -1,11 +1,11 @@ /** - * Copyright (c) 2017, The Android Open Source Project + * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,12 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.android.server.vr; -package android.service.vr; - -/** @hide */ -oneway interface IPersistentVrStateCallbacks { - - void onPersistentVrStateChanged(in boolean enabled); +/** + * Listener for state changes to persistent VR mode. + * + * @hide Only for use within system server. + */ +public abstract class PersistentVrStateListener { + /** + * Called when the Persistent VR mode state changes. + * + * @param enabled {@code true} if persistent VR mode is enabled. + */ + public abstract void onPersistentVrStateChanged(boolean enabled); } diff --git a/services/core/java/com/android/server/vr/VrManagerInternal.java b/services/core/java/com/android/server/vr/VrManagerInternal.java index 358861d0c9c4..210aa44c0c03 100644 --- a/services/core/java/com/android/server/vr/VrManagerInternal.java +++ b/services/core/java/com/android/server/vr/VrManagerInternal.java @@ -17,7 +17,6 @@ package com.android.server.vr; import android.annotation.NonNull; import android.content.ComponentName; -import android.service.vr.IPersistentVrStateCallbacks; /** * Service for accessing the VR mode manager. @@ -102,5 +101,5 @@ public abstract class VrManagerInternal { /** * Adds listener that reports state changes to persistent VR mode. */ - public abstract void addPersistentVrModeStateListener(IPersistentVrStateCallbacks listener); + public abstract void addPersistentVrModeStateListener(PersistentVrStateListener listener); } diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index 5bcdd4cd036e..a00115cba2a2 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -40,7 +40,6 @@ import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.service.notification.NotificationListenerService; -import android.service.vr.IPersistentVrStateCallbacks; import android.service.vr.IVrListener; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; @@ -124,10 +123,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC private int mCurrentVrModeUser; private boolean mWasDefaultGranted; private boolean mGuard; - private final RemoteCallbackList<IVrStateCallbacks> mVrStateRemoteCallbacks = + private final RemoteCallbackList<IVrStateCallbacks> mRemoteCallbacks = new RemoteCallbackList<>(); - private final RemoteCallbackList<IPersistentVrStateCallbacks> - mPersistentVrStateRemoteCallbacks = new RemoteCallbackList<>(); + private final ArrayList<PersistentVrStateListener> mPersistentVrStateListeners = + new ArrayList<>(); private int mPreviousCoarseLocationMode = INVALID_APPOPS_MODE; private int mPreviousManageOverlayMode = INVALID_APPOPS_MODE; private VrState mPendingState; @@ -203,16 +202,16 @@ public class VrManagerService extends SystemService implements EnabledComponentC switch(msg.what) { case MSG_VR_STATE_CHANGE : { boolean state = (msg.arg1 == 1); - int i = mVrStateRemoteCallbacks.beginBroadcast(); + int i = mRemoteCallbacks.beginBroadcast(); while (i > 0) { i--; try { - mVrStateRemoteCallbacks.getBroadcastItem(i).onVrStateChanged(state); + mRemoteCallbacks.getBroadcastItem(i).onVrStateChanged(state); } catch (RemoteException e) { // Noop } } - mVrStateRemoteCallbacks.finishBroadcast(); + mRemoteCallbacks.finishBroadcast(); } break; case MSG_PENDING_VR_STATE_CHANGE : { synchronized(mLock) { @@ -223,17 +222,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC } break; case MSG_PERSISTENT_VR_MODE_STATE_CHANGE : { boolean state = (msg.arg1 == 1); - int i = mPersistentVrStateRemoteCallbacks.beginBroadcast(); - while (i > 0) { - i--; - try { - mPersistentVrStateRemoteCallbacks.getBroadcastItem(i) - .onPersistentVrStateChanged(state); - } catch (RemoteException e) { - // Noop - } + for (int i = 0; i < mPersistentVrStateListeners.size(); i++) { + mPersistentVrStateListeners.get(i).onPersistentVrStateChanged( + state); } - mPersistentVrStateRemoteCallbacks.finishBroadcast(); } break; default : throw new IllegalStateException("Unknown message type: " + msg.what); @@ -391,26 +383,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC } @Override - public void registerPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); - if (cb == null) { - throw new IllegalArgumentException("Callback binder object is null."); - } - - VrManagerService.this.addPersistentStateCallback(cb); - } - - @Override - public void unregisterPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); - if (cb == null) { - throw new IllegalArgumentException("Callback binder object is null."); - } - - VrManagerService.this.removePersistentStateCallback(cb); - } - - @Override public boolean getVrModeState() { return VrManagerService.this.getVrMode(); } @@ -442,21 +414,13 @@ public class VrManagerService extends SystemService implements EnabledComponentC String tab = " "; dumpStateTransitions(pw); pw.println("\n\nRemote Callbacks:"); - int i=mVrStateRemoteCallbacks.beginBroadcast(); // create the broadcast item array - while(i-->0) { - pw.print(tab); - pw.print(mVrStateRemoteCallbacks.getBroadcastItem(i)); - if (i>0) pw.println(","); - } - mVrStateRemoteCallbacks.finishBroadcast(); - pw.println("\n\nPersistent Vr State Remote Callbacks:"); - i=mPersistentVrStateRemoteCallbacks.beginBroadcast(); + int i=mRemoteCallbacks.beginBroadcast(); // create the broadcast item array while(i-->0) { pw.print(tab); - pw.print(mPersistentVrStateRemoteCallbacks.getBroadcastItem(i)); + pw.print(mRemoteCallbacks.getBroadcastItem(i)); if (i>0) pw.println(","); } - mPersistentVrStateRemoteCallbacks.finishBroadcast(); + mRemoteCallbacks.finishBroadcast(); pw.println("\n"); pw.println("Installed VrListenerService components:"); int userId = mCurrentVrModeUser; @@ -479,6 +443,16 @@ public class VrManagerService extends SystemService implements EnabledComponentC pw.println(n.flattenToString()); } } + pw.println("Attached persistent mode listeners:"); + if (mPersistentVrStateListeners == null || + mPersistentVrStateListeners.size() == 0) { + pw.println("None"); + } else { + for (PersistentVrStateListener l : mPersistentVrStateListeners) { + pw.print(tab); + pw.println("listener: " + l); + } + } pw.println("\n"); pw.println("********* End of VrManagerService Dump *********"); } @@ -533,8 +507,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC } @Override - public void addPersistentVrModeStateListener(IPersistentVrStateCallbacks listener) { - VrManagerService.this.addPersistentStateCallback(listener); + public void addPersistentVrModeStateListener(PersistentVrStateListener listener) { + VrManagerService.this.addPersistentVrModeStateListener(listener); } } @@ -1110,6 +1084,12 @@ public class VrManagerService extends SystemService implements EnabledComponentC (mPersistentVrModeEnabled) ? 1 : 0, 0)); } + private void addPersistentVrModeStateListener(PersistentVrStateListener listener) { + synchronized (mLock) { + mPersistentVrStateListeners.add(listener); + } + } + private int hasVrPackage(@NonNull ComponentName targetPackageName, int userId) { synchronized (mLock) { return mComponentObserver.isValid(targetPackageName, userId); @@ -1131,19 +1111,11 @@ public class VrManagerService extends SystemService implements EnabledComponentC */ private void addStateCallback(IVrStateCallbacks cb) { - mVrStateRemoteCallbacks.register(cb); + mRemoteCallbacks.register(cb); } private void removeStateCallback(IVrStateCallbacks cb) { - mVrStateRemoteCallbacks.unregister(cb); - } - - private void addPersistentStateCallback(IPersistentVrStateCallbacks cb) { - mPersistentVrStateRemoteCallbacks.register(cb); - } - - private void removePersistentStateCallback(IPersistentVrStateCallbacks cb) { - mPersistentVrStateRemoteCallbacks.unregister(cb); + mRemoteCallbacks.unregister(cb); } private boolean getVrMode() { |