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

Commit a13cdf4d authored by Rupesh Bansal's avatar Rupesh Bansal
Browse files

Refactored EventMask to EventFlag

Bug: 372700957
Test: Simple refactor
Flag: EXEMPT refactor
Change-Id: I3d077261ad36eb992f9e6a098b29fbcca647d5f2
parent a1d05e9e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -580,7 +580,7 @@ public final class DisplayManager {
            EVENT_FLAG_DISPLAY_CONNECTION_CHANGED,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface EventsMask {}
    public @interface EventFlag {}

    /**
     * Event type for when a new display is added.
@@ -774,7 +774,7 @@ public final class DisplayManager {
     * @param listener The listener to register.
     * @param handler The handler on which the listener should be invoked, or null
     * if the listener should be invoked on the calling thread's looper.
     * @param eventsMask A bitmask of the event types for which this listener is subscribed.
     * @param eventFlagsMask A bitmask of the event types for which this listener is subscribed.
     *
     * @see #EVENT_FLAG_DISPLAY_ADDED
     * @see #EVENT_FLAG_DISPLAY_CHANGED
@@ -786,8 +786,8 @@ public final class DisplayManager {
     * @hide
     */
    public void registerDisplayListener(@NonNull DisplayListener listener,
            @Nullable Handler handler, @EventsMask long eventsMask) {
        mGlobal.registerDisplayListener(listener, handler, eventsMask,
            @Nullable Handler handler, @EventFlag long eventFlagsMask) {
        mGlobal.registerDisplayListener(listener, handler, eventFlagsMask,
                ActivityThread.currentPackageName());
    }

+39 −36
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
package android.hardware.display;


import static android.hardware.display.DisplayManager.EventsMask;
import static android.hardware.display.DisplayManager.EventFlag;
import static android.view.Display.HdrCapabilities.HdrType;

import android.Manifest;
@@ -130,7 +130,7 @@ public final class DisplayManagerGlobal {
    private final IDisplayManager mDm;

    private DisplayManagerCallback mCallback;
    private @EventsMask long mRegisteredEventsMask = 0;
    private @EventFlag long mRegisteredEventFlagsMask = 0;
    private final CopyOnWriteArrayList<DisplayListenerDelegate> mDisplayListeners =
            new CopyOnWriteArrayList<>();

@@ -346,10 +346,11 @@ public final class DisplayManagerGlobal {
     * @param packageName of the calling package.
     */
    public void registerDisplayListener(@NonNull DisplayListener listener,
            @Nullable Handler handler, @EventsMask long eventsMask, String packageName) {
            @Nullable Handler handler, @EventFlag long eventFlagsMask,
            String packageName) {
        Looper looper = getLooperForHandler(handler);
        Handler springBoard = new Handler(looper);
        registerDisplayListener(listener, new HandlerExecutor(springBoard), eventsMask,
        registerDisplayListener(listener, new HandlerExecutor(springBoard), eventFlagsMask,
                packageName);
    }

@@ -358,32 +359,32 @@ public final class DisplayManagerGlobal {
     *
     * @param listener The listener that will be called when display changes occur.
     * @param executor Executor for the thread that will be receiving the callbacks. Cannot be null.
     * @param eventsMask Mask of events to be listened to.
     * @param eventFlagsMask Flag of events to be listened to.
     * @param packageName of the calling package.
     */
    public void registerDisplayListener(@NonNull DisplayListener listener,
            @NonNull Executor executor, @EventsMask long eventsMask, String packageName) {
            @NonNull Executor executor, @EventFlag long eventFlagsMask, String packageName) {
        if (listener == null) {
            throw new IllegalArgumentException("listener must not be null");
        }

        if (eventsMask == 0) {
        if (eventFlagsMask == 0) {
            throw new IllegalArgumentException("The set of events to listen to must not be empty.");
        }

        if (extraLogging()) {
            Slog.i(TAG, "Registering Display Listener: "
                    + Long.toBinaryString(eventsMask) + ", packageName: " + packageName);
                    + Long.toBinaryString(eventFlagsMask) + ", packageName: " + packageName);
        }

        synchronized (mLock) {
            int index = findDisplayListenerLocked(listener);
            if (index < 0) {
                mDisplayListeners.add(new DisplayListenerDelegate(listener, executor, eventsMask,
                        packageName));
                mDisplayListeners.add(new DisplayListenerDelegate(listener, executor,
                        eventFlagsMask, packageName));
                registerCallbackIfNeededLocked();
            } else {
                mDisplayListeners.get(index).setEventsMask(eventsMask);
                mDisplayListeners.get(index).setEventFlagsMask(eventFlagsMask);
            }
            updateCallbackIfNeededLocked();
            maybeLogAllDisplayListeners();
@@ -455,12 +456,12 @@ public final class DisplayManagerGlobal {
        return -1;
    }

    @EventsMask
    private int calculateEventsMaskLocked() {
    @EventFlag
    private int calculateEventFlagsMaskLocked() {
        int mask = 0;
        final int numListeners = mDisplayListeners.size();
        for (int i = 0; i < numListeners; i++) {
            mask |= mDisplayListeners.get(i).mEventsMask;
            mask |= mDisplayListeners.get(i).mEventFlagsMask;
        }
        if (mDispatchNativeCallbacks) {
            mask |= DisplayManager.EVENT_FLAG_DISPLAY_ADDED
@@ -478,14 +479,14 @@ public final class DisplayManagerGlobal {
    }

    private void updateCallbackIfNeededLocked() {
        int mask = calculateEventsMaskLocked();
        int mask = calculateEventFlagsMaskLocked();
        if (DEBUG) {
            Log.d(TAG, "Mask for listener: " + mask);
            Log.d(TAG, "Flag for listener: " + mask);
        }
        if (mask != mRegisteredEventsMask) {
        if (mask != mRegisteredEventFlagsMask) {
            try {
                mDm.registerCallbackWithEventMask(mCallback, mask);
                mRegisteredEventsMask = mask;
                mRegisteredEventFlagsMask = mask;
            } catch (RemoteException ex) {
                throw ex.rethrowFromSystemServer();
            }
@@ -1276,7 +1277,7 @@ public final class DisplayManagerGlobal {

    private static final class DisplayListenerDelegate {
        public final DisplayListener mListener;
        public volatile long mEventsMask;
        public volatile long mEventFlagsMask;

        private final DisplayInfo mDisplayInfo = new DisplayInfo();
        private final Executor mExecutor;
@@ -1284,10 +1285,10 @@ public final class DisplayManagerGlobal {
        private final String mPackageName;

        DisplayListenerDelegate(DisplayListener listener, @NonNull Executor executor,
                @EventsMask long eventsMask, String packageName) {
                @EventFlag long eventFlag, String packageName) {
            mExecutor = executor;
            mListener = listener;
            mEventsMask = eventsMask;
            mEventFlagsMask = eventFlag;
            mPackageName = packageName;
        }

@@ -1309,16 +1310,16 @@ public final class DisplayManagerGlobal {
            mGenerationId.incrementAndGet();
        }

        void setEventsMask(@EventsMask long newEventsMask) {
            mEventsMask = newEventsMask;
        void setEventFlagsMask(@EventFlag long newEventsFlag) {
            mEventFlagsMask = newEventsFlag;
        }

        private void handleDisplayEventInner(int displayId, @DisplayEvent int event,
        private void handleDisplayEventInner(int displayId, @DisplayEvent int eventFlagsMask,
                @Nullable DisplayInfo info, boolean forceUpdate) {
            if (extraLogging()) {
                Slog.i(TAG, "DLD(" + eventToString(event)
                Slog.i(TAG, "DLD(" + eventToString(eventFlagsMask)
                        + ", display=" + displayId
                        + ", mEventsMask=" + Long.toBinaryString(mEventsMask)
                        + ", mEventsFlagMask=" + Long.toBinaryString(mEventFlagsMask)
                        + ", mPackageName=" + mPackageName
                        + ", displayInfo=" + info
                        + ", listener=" + mListener.getClass() + ")");
@@ -1326,18 +1327,18 @@ public final class DisplayManagerGlobal {
            if (DEBUG) {
                Trace.beginSection(
                        TextUtils.trimToSize(
                                "DLD(" + eventToString(event)
                                "DLD(" + eventToString(eventFlagsMask)
                                + ", display=" + displayId
                                + ", listener=" + mListener.getClass() + ")", 127));
            }
            switch (event) {
            switch (eventFlagsMask) {
                case EVENT_DISPLAY_ADDED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0) {
                        mListener.onDisplayAdded(displayId);
                    }
                    break;
                case EVENT_DISPLAY_CHANGED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0) {
                        if (info != null && (forceUpdate || !info.equals(mDisplayInfo))) {
                            if (extraLogging()) {
                                Slog.i(TAG, "Sending onDisplayChanged: Display Changed. Info: "
@@ -1349,27 +1350,29 @@ public final class DisplayManagerGlobal {
                    }
                    break;
                case EVENT_DISPLAY_BRIGHTNESS_CHANGED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0) {
                        mListener.onDisplayChanged(displayId);
                    }
                    break;
                case EVENT_DISPLAY_REMOVED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0) {
                        mListener.onDisplayRemoved(displayId);
                    }
                    break;
                case EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0) {
                        mListener.onDisplayChanged(displayId);
                    }
                    break;
                case EVENT_DISPLAY_CONNECTED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED)
                            != 0) {
                        mListener.onDisplayConnected(displayId);
                    }
                    break;
                case EVENT_DISPLAY_DISCONNECTED:
                    if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) {
                    if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED)
                            != 0) {
                        mListener.onDisplayDisconnected(displayId);
                    }
                    break;
@@ -1381,7 +1384,7 @@ public final class DisplayManagerGlobal {

        @Override
        public String toString() {
            return "mask: {" + mEventsMask + "}, for " + mListener.getClass();
            return "mEventFlagsMask: {" + mEventFlagsMask + "}, for " + mListener.getClass();
        }
    }

+23 −22
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import static android.Manifest.permission.MANAGE_DISPLAYS;
import static android.Manifest.permission.RESTRICT_DISPLAY_MODES;
import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_CACHED;
import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_GONE;
import static android.hardware.display.DisplayManager.EventsMask;
import static android.hardware.display.DisplayManager.EventFlag;
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_ALWAYS_UNLOCKED;
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR;
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD;
@@ -1390,16 +1390,16 @@ public final class DisplayManagerService extends SystemService {
    }

    private void registerCallbackInternal(IDisplayManagerCallback callback, int callingPid,
            int callingUid, @EventsMask long eventsMask) {
            int callingUid, @EventFlag long eventFlagsMask) {
        synchronized (mSyncRoot) {
            CallbackRecord record = mCallbacks.get(callingPid);

            if (record != null) {
                record.updateEventsMask(eventsMask);
                record.updateEventFlagsMask(eventFlagsMask);
                return;
            }

            record = new CallbackRecord(callingPid, callingUid, callback, eventsMask);
            record = new CallbackRecord(callingPid, callingUid, callback, eventFlagsMask);
            try {
                IBinder binder = callback.asBinder();
                binder.linkToDeath(record, 0);
@@ -3997,7 +3997,7 @@ public final class DisplayManagerService extends SystemService {
        public final int mPid;
        public final int mUid;
        private final IDisplayManagerCallback mCallback;
        private @EventsMask AtomicLong mEventsMask;
        private @DisplayManager.EventFlag AtomicLong mEventFlagsMask;
        private final String mPackageName;

        public boolean mWifiDisplayScanRequested;
@@ -4018,11 +4018,11 @@ public final class DisplayManagerService extends SystemService {
        private boolean mFrozen;

        CallbackRecord(int pid, int uid, @NonNull IDisplayManagerCallback callback,
                @EventsMask long eventsMask) {
                @EventFlag long eventFlagsMask) {
            mPid = pid;
            mUid = uid;
            mCallback = callback;
            mEventsMask = new AtomicLong(eventsMask);
            mEventFlagsMask = new AtomicLong(eventFlagsMask);
            mCached = false;
            mFrozen = false;

@@ -4044,8 +4044,8 @@ public final class DisplayManagerService extends SystemService {
            mPackageName = packageNames == null ? null : packageNames[0];
        }

        public void updateEventsMask(@EventsMask long eventsMask) {
            mEventsMask.set(eventsMask);
        public void updateEventFlagsMask(@EventFlag long eventFlag) {
            mEventFlagsMask.set(eventFlag);
        }

        /**
@@ -4109,12 +4109,13 @@ public final class DisplayManagerService extends SystemService {
            if (!shouldSendEvent(event)) {
                if (extraLogging(mPackageName)) {
                    Slog.i(TAG,
                            "Not sending displayEvent: " + event + " due to mask:" + mEventsMask);
                            "Not sending displayEvent: " + event + " due to flag:"
                                    + mEventFlagsMask);
                }
                if (Trace.isTagEnabled(Trace.TRACE_TAG_POWER)) {
                    Trace.instant(Trace.TRACE_TAG_POWER,
                            "notifyDisplayEventAsync#notSendingEvent=" + event + ",mEventsMask="
                                    + mEventsMask);
                            "notifyDisplayEventAsync#notSendingEvent=" + event + ",mEventsFlag="
                                    + mEventFlagsMask);
                }
                // The client is not interested in this event, so do nothing.
                return true;
@@ -4160,22 +4161,22 @@ public final class DisplayManagerService extends SystemService {
         * Return true if the client is interested in this event.
         */
        private boolean shouldSendEvent(@DisplayEvent int event) {
            final long mask = mEventsMask.get();
            final long flag = mEventFlagsMask.get();
            switch (event) {
                case DisplayManagerGlobal.EVENT_DISPLAY_ADDED:
                    return (mask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0;
                case DisplayManagerGlobal.EVENT_DISPLAY_CHANGED:
                    return (mask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0;
                case DisplayManagerGlobal.EVENT_DISPLAY_BRIGHTNESS_CHANGED:
                    return (mask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0;
                case DisplayManagerGlobal.EVENT_DISPLAY_REMOVED:
                    return (mask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0;
                case DisplayManagerGlobal.EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED:
                    return (mask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0;
                case DisplayManagerGlobal.EVENT_DISPLAY_CONNECTED:
                    // fallthrough
                case DisplayManagerGlobal.EVENT_DISPLAY_DISCONNECTED:
                    return (mask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0;
                    return (flag & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0;
                default:
                    // This should never happen.
                    Slog.e(TAG, "Unknown display event " + event);
@@ -4369,7 +4370,7 @@ public final class DisplayManagerService extends SystemService {
        @Override // Binder call
        @SuppressLint("AndroidFrameworkRequiresPermission") // Permission only required sometimes
        public void registerCallbackWithEventMask(IDisplayManagerCallback callback,
                @EventsMask long eventsMask) {
                @EventFlag long eventFlagsMask) {
            if (callback == null) {
                throw new IllegalArgumentException("listener must not be null");
            }
@@ -4378,7 +4379,7 @@ public final class DisplayManagerService extends SystemService {
            final int callingUid = Binder.getCallingUid();

            if (mFlags.isConnectedDisplayManagementEnabled()) {
                if ((eventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) {
                if ((eventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) {
                    mContext.enforceCallingOrSelfPermission(MANAGE_DISPLAYS,
                            "Permission required to get signals about connection events.");
                }
@@ -4386,7 +4387,7 @@ public final class DisplayManagerService extends SystemService {

            final long token = Binder.clearCallingIdentity();
            try {
                registerCallbackInternal(callback, callingPid, callingUid, eventsMask);
                registerCallbackInternal(callback, callingPid, callingUid, eventFlagsMask);
            } finally {
                Binder.restoreCallingIdentity(token);
            }