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

Commit 62411b5a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Rename OnProjectionStateChangeListener ->...

Merge "Rename OnProjectionStateChangeListener -> OnProjectionStateChangedListener" into sc-dev am: 8c62b2ba

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14429650

Change-Id: I53f58c6906e0d84bfbeaa3704a35662bcd04695b
parents f1ac1176 8c62b2ba
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id
    private boolean mDockIdle;
    private boolean mProjectionActive;
    private IdlenessListener mIdleListener;
    private final UiModeManager.OnProjectionStateChangeListener mOnProjectionStateChangeListener =
    private final UiModeManager.OnProjectionStateChangedListener mOnProjectionStateChangedListener =
            this::onProjectionStateChanged;

    private AlarmManager.OnAlarmListener mIdleAlarmListener = () -> {
@@ -105,9 +105,9 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id

        // TODO(b/172579710): Move the callbacks off the main executor and on to
        //  JobSchedulerBackgroundThread.getExecutor() once synchronization is fixed in this class.
        context.getSystemService(UiModeManager.class).addOnProjectionStateChangeListener(
        context.getSystemService(UiModeManager.class).addOnProjectionStateChangedListener(
                UiModeManager.PROJECTION_TYPE_ALL, context.getMainExecutor(),
                mOnProjectionStateChangeListener);
                mOnProjectionStateChangedListener);
    }

    private void onProjectionStateChanged(@UiModeManager.ProjectionType int activeProjectionTypes,
+3 −3
Original line number Diff line number Diff line
@@ -838,12 +838,12 @@ package android.app {
  }
  public class UiModeManager {
    method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void addOnProjectionStateChangeListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.app.UiModeManager.OnProjectionStateChangeListener);
    method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void addOnProjectionStateChangedListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.app.UiModeManager.OnProjectionStateChangedListener);
    method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int);
    method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public int getActiveProjectionTypes();
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public java.util.Set<java.lang.String> getProjectingPackages(int);
    method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean releaseProjection(int);
    method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangeListener(@NonNull android.app.UiModeManager.OnProjectionStateChangeListener);
    method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangedListener(@NonNull android.app.UiModeManager.OnProjectionStateChangedListener);
    method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean requestProjection(int);
    field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED";
    field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED";
@@ -855,7 +855,7 @@ package android.app {
    field public static final int PROJECTION_TYPE_NONE = 0; // 0x0
  }
  public static interface UiModeManager.OnProjectionStateChangeListener {
  public static interface UiModeManager.OnProjectionStateChangedListener {
    method public void onProjectionStateChanged(int, @NonNull java.util.Set<java.lang.String>);
  }
+1 −1
Original line number Diff line number Diff line
@@ -17,6 +17,6 @@
package android.app;

/** {@hide} */
oneway interface IOnProjectionStateChangeListener {
oneway interface IOnProjectionStateChangedListener {
  void onProjectionStateChanged(int activeProjectionTypes, in List<String> projectingPackages);
}
 No newline at end of file
+3 −3
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package android.app;

import android.app.IOnProjectionStateChangeListener;
import android.app.IOnProjectionStateChangedListener;

/**
 * Interface used to control special UI modes.
@@ -119,12 +119,12 @@ interface IUiModeManager {
    /**
    * Registers a listener for changes to projection state.
    */
    void addOnProjectionStateChangeListener(in IOnProjectionStateChangeListener listener, int projectionType);
    void addOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener, int projectionType);

    /**
    * Unregisters a listener for changes to projection state.
    */
    void removeOnProjectionStateChangeListener(in IOnProjectionStateChangeListener listener);
    void removeOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener);

    /**
    * Returns packages that have currently set the given projection type.
+32 −31
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ public class UiModeManager {
     * @hide
     */
    @SystemApi
    public interface OnProjectionStateChangeListener {
    public interface OnProjectionStateChangedListener {
        /**
         * Callback invoked when projection state changes for a {@link ProjectionType} for which
         * this listener was added.
@@ -254,10 +254,10 @@ public class UiModeManager {
    private final Object mLock = new Object();
    /**
     * Map that stores internally created {@link InnerListener} objects keyed by their corresponding
     * externally provided {@link OnProjectionStateChangeListener} objects.
     * externally provided callback objects.
     */
    @GuardedBy("mLock")
    private final Map<OnProjectionStateChangeListener, InnerListener>
    private final Map<OnProjectionStateChangedListener, InnerListener>
            mProjectionStateListenerMap = new ArrayMap<>();

    /**
@@ -265,9 +265,9 @@ public class UiModeManager {
     * fail to remove listeners.
     */
    @GuardedBy("mLock")
    private final OnProjectionStateChangeListenerResourceManager
            mOnProjectionStateChangeListenerResourceManager =
            new OnProjectionStateChangeListenerResourceManager();
    private final OnProjectionStateChangedListenerResourceManager
            mOnProjectionStateChangedListenerResourceManager =
            new OnProjectionStateChangedListenerResourceManager();

    @UnsupportedAppUsage
    /*package*/ UiModeManager() throws ServiceNotFoundException {
@@ -687,7 +687,7 @@ public class UiModeManager {

    /**
     * Indicates no projection type. Can be used to compare with the {@link ProjectionType} in
     * {@link OnProjectionStateChangeListener#onProjectionStateChanged(int, Set)}.
     * {@link OnProjectionStateChangedListener#onProjectionStateChanged(int, Set)}.
     *
     * @hide
     */
@@ -706,7 +706,7 @@ public class UiModeManager {
    public static final int PROJECTION_TYPE_AUTOMOTIVE = 0x0001;
    /**
     * Indicates all projection types. For use with
     * {@link #addOnProjectionStateChangeListener(int, Executor, OnProjectionStateChangeListener)}
     * {@link #addOnProjectionStateChangedListener(int, Executor, OnProjectionStateChangedListener)}
     * and {@link #getProjectingPackages(int)}.
     *
     * @hide
@@ -829,15 +829,15 @@ public class UiModeManager {
     *
     * @param projectionType one or more {@link ProjectionType}s to listen for changes regarding
     * @param executor an {@link Executor} on which to invoke the callbacks
     * @param listener the {@link OnProjectionStateChangeListener} to add
     * @param listener the {@link OnProjectionStateChangedListener} to add
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE)
    public void addOnProjectionStateChangeListener(@ProjectionType int projectionType,
    public void addOnProjectionStateChangedListener(@ProjectionType int projectionType,
            @NonNull @CallbackExecutor Executor executor,
            @NonNull OnProjectionStateChangeListener listener) {
            @NonNull OnProjectionStateChangedListener listener) {
        synchronized (mLock) {
            if (mProjectionStateListenerMap.containsKey(listener)) {
                Slog.i(TAG, "Attempted to add listener that was already added.");
@@ -845,12 +845,12 @@ public class UiModeManager {
            }
            if (mService != null) {
                InnerListener innerListener = new InnerListener(executor, listener,
                        mOnProjectionStateChangeListenerResourceManager);
                        mOnProjectionStateChangedListenerResourceManager);
                try {
                    mService.addOnProjectionStateChangeListener(innerListener, projectionType);
                    mService.addOnProjectionStateChangedListener(innerListener, projectionType);
                    mProjectionStateListenerMap.put(listener, innerListener);
                } catch (RemoteException e) {
                    mOnProjectionStateChangeListenerResourceManager.remove(innerListener);
                    mOnProjectionStateChangedListenerResourceManager.remove(innerListener);
                    throw e.rethrowFromSystemServer();
                }
            }
@@ -860,14 +860,14 @@ public class UiModeManager {
    /**
     * Removes the listener so it stops receiving updates for all {@link ProjectionType}s.
     *
     * @param listener the {@link OnProjectionStateChangeListener} to remove
     * @param listener the {@link OnProjectionStateChangedListener} to remove
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE)
    public void removeOnProjectionStateChangeListener(
            @NonNull OnProjectionStateChangeListener listener) {
    public void removeOnProjectionStateChangedListener(
            @NonNull OnProjectionStateChangedListener listener) {
        synchronized (mLock) {
            InnerListener innerListener = mProjectionStateListenerMap.get(listener);
            if (innerListener == null) {
@@ -876,23 +876,23 @@ public class UiModeManager {
            }
            if (mService != null) {
                try {
                    mService.removeOnProjectionStateChangeListener(innerListener);
                    mService.removeOnProjectionStateChangedListener(innerListener);
                } catch (RemoteException e) {
                    throw e.rethrowFromSystemServer();
                }
            }
            mProjectionStateListenerMap.remove(listener);
            mOnProjectionStateChangeListenerResourceManager.remove(innerListener);
            mOnProjectionStateChangedListenerResourceManager.remove(innerListener);
        }
    }

    private static class InnerListener extends IOnProjectionStateChangeListener.Stub {
        private final WeakReference<OnProjectionStateChangeListenerResourceManager>
    private static class InnerListener extends IOnProjectionStateChangedListener.Stub {
        private final WeakReference<OnProjectionStateChangedListenerResourceManager>
                mResourceManager;

        private InnerListener(@NonNull Executor executor,
                @NonNull OnProjectionStateChangeListener outerListener,
                @NonNull OnProjectionStateChangeListenerResourceManager resourceManager) {
                @NonNull OnProjectionStateChangedListener outerListener,
                @NonNull OnProjectionStateChangedListenerResourceManager resourceManager) {
            resourceManager.put(this, executor, outerListener);
            mResourceManager = new WeakReference<>(resourceManager);
        }
@@ -900,13 +900,14 @@ public class UiModeManager {
        @Override
        public void onProjectionStateChanged(int activeProjectionTypes,
                List<String> projectingPackages) {
            OnProjectionStateChangeListenerResourceManager resourceManager = mResourceManager.get();
            OnProjectionStateChangedListenerResourceManager resourceManager =
                    mResourceManager.get();
            if (resourceManager == null) {
                Slog.w(TAG, "Can't execute onProjectionStateChanged, resource manager is gone.");
                return;
            }

            OnProjectionStateChangeListener outerListener = resourceManager.getOuterListener(this);
            OnProjectionStateChangedListener outerListener = resourceManager.getOuterListener(this);
            Executor executor = resourceManager.getExecutor(this);
            if (outerListener == null || executor == null) {
                Slog.w(TAG, "Can't execute onProjectionStatechanged, references are null.");
@@ -914,7 +915,7 @@ public class UiModeManager {
            }

            executor.execute(PooledLambda.obtainRunnable(
                    OnProjectionStateChangeListener::onProjectionStateChanged,
                    OnProjectionStateChangedListener::onProjectionStateChanged,
                    outerListener,
                    activeProjectionTypes,
                    new ArraySet<>(projectingPackages)).recycleOnUse());
@@ -924,15 +925,15 @@ public class UiModeManager {
    /**
     * Wrapper class that ensures we don't leak {@link Activity} or other large {@link Context} in
     * which this {@link UiModeManager} resides if/when it ends without unregistering associated
     * {@link OnProjectionStateChangeListener}s.
     * callback objects.
     */
    private static class OnProjectionStateChangeListenerResourceManager {
        private final Map<InnerListener, OnProjectionStateChangeListener> mOuterListenerMap =
    private static class OnProjectionStateChangedListenerResourceManager {
        private final Map<InnerListener, OnProjectionStateChangedListener> mOuterListenerMap =
                new ArrayMap<>(1);
        private final Map<InnerListener, Executor> mExecutorMap = new ArrayMap<>(1);

        void put(@NonNull InnerListener innerListener, @NonNull Executor executor,
                OnProjectionStateChangeListener outerListener) {
                OnProjectionStateChangedListener outerListener) {
            mOuterListenerMap.put(innerListener, outerListener);
            mExecutorMap.put(innerListener, executor);
        }
@@ -942,7 +943,7 @@ public class UiModeManager {
            mExecutorMap.remove(innerListener);
        }

        OnProjectionStateChangeListener getOuterListener(@NonNull InnerListener innerListener) {
        OnProjectionStateChangedListener getOuterListener(@NonNull InnerListener innerListener) {
            return mOuterListenerMap.get(innerListener);
        }

Loading