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

Commit ca9a81be authored by Kyeongkab.Nam's avatar Kyeongkab.Nam
Browse files

Fix permission error of binding to TvInputService

Bind to the TvInputService even if TvInputService
calls addHardwareInput(), addHdmiInput(), or
removeHardwareInput().

Bug: 207301256
Test: manual
Change-Id: I91cdf49f9ff1af240b5d87cec02e95ae305cf46f
parent 7922a468
Loading
Loading
Loading
Loading
+29 −14
Original line number Diff line number Diff line
@@ -2985,23 +2985,35 @@ public final class TvInputManagerService extends SystemService {
        public void addHardwareInput(int deviceId, TvInputInfo inputInfo) {
            ensureHardwarePermission();
            ensureValidInput(inputInfo);
            final long identity = Binder.clearCallingIdentity();
            try {
                synchronized (mLock) {
                    mTvInputHardwareManager.addHardwareInput(deviceId, inputInfo);
                    addHardwareInputLocked(inputInfo);
                }
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }

        public void addHdmiInput(int id, TvInputInfo inputInfo) {
            ensureHardwarePermission();
            ensureValidInput(inputInfo);
            final long identity = Binder.clearCallingIdentity();
            try {
                synchronized (mLock) {
                    mTvInputHardwareManager.addHdmiInput(id, inputInfo);
                    addHardwareInputLocked(inputInfo);
                }
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }

        public void removeHardwareInput(String inputId) {
            ensureHardwarePermission();
            final long identity = Binder.clearCallingIdentity();
            try {
                synchronized (mLock) {
                    ServiceState serviceState = getServiceStateLocked(mComponent, mUserId);
                    boolean removed = serviceState.hardwareInputMap.remove(inputId) != null;
@@ -3012,6 +3024,9 @@ public final class TvInputManagerService extends SystemService {
                        Slog.e(TAG, "failed to remove input " + inputId);
                    }
                }
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }
    }