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

Commit ba983ba6 authored by Daniel Zheng's avatar Daniel Zheng Committed by Android (Google) Code Review
Browse files

Merge "enforce permissions on diagnostics API" into main

parents b99e9ff1 944624c0
Loading
Loading
Loading
Loading
+14 −8
Original line number Original line Diff line number Diff line
@@ -140,8 +140,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public boolean start() {
        public boolean start() {
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
            enforceEnterTradeInModePermission();
                    "Cannot enter trade-in mode foyer");
            final int state = getTradeInModeState();
            final int state = getTradeInModeState();
            if (state == TIM_STATE_FOYER) {
            if (state == TIM_STATE_FOYER) {
                return true;
                return true;
@@ -179,8 +178,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public boolean enterEvaluationMode() {
        public boolean enterEvaluationMode() {
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
            enforceEnterTradeInModePermission();
                    "Cannot enter trade-in evaluation mode");
            if (!checkEvaluationModePreconditions()) {
            if (!checkEvaluationModePreconditions()) {
                return false;
                return false;
            }
            }
@@ -204,8 +202,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public boolean isEvaluationModeAllowed() {
        public boolean isEvaluationModeAllowed() {
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
            enforceEnterTradeInModePermission();
                    "Cannot test for trade-in evaluation mode allowed");
            return checkEvaluationModePreconditions();
            return checkEvaluationModePreconditions();
        }
        }


@@ -253,6 +250,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int[] getScreenPartStatus() throws RemoteException {
        public int[] getScreenPartStatus() throws RemoteException {
            enforceEnterTradeInModePermission();
            int[] statuses = new int[DisplayControl.getPhysicalDisplayIds().length];
            int[] statuses = new int[DisplayControl.getPhysicalDisplayIds().length];
            int index = 0;
            int index = 0;
            // loop through all displayId to find id of internal display
            // loop through all displayId to find id of internal display
@@ -268,6 +266,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getHingeCount() throws RemoteException {
        public int getHingeCount() throws RemoteException {
            enforceEnterTradeInModePermission();
            android.hardware.health.HingeInfo[] info = getHealthService().getHingeInfo();
            android.hardware.health.HingeInfo[] info = getHealthService().getHingeInfo();
            return (info == null) ? 0 : info.length;
            return (info == null) ? 0 : info.length;
        }
        }
@@ -275,6 +274,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getFoldCount(int hingeId) throws RemoteException {
        public int getFoldCount(int hingeId) throws RemoteException {
            enforceEnterTradeInModePermission();
            int hingeCount = getHingeCount();
            int hingeCount = getHingeCount();
            if (hingeId >= hingeCount) {
            if (hingeId >= hingeCount) {
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
@@ -286,6 +286,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getHingeLifeSpan(int hingeId) throws RemoteException {
        public int getHingeLifeSpan(int hingeId) throws RemoteException {
            enforceEnterTradeInModePermission();
            int hingeCount = getHingeCount();
            int hingeCount = getHingeCount();
            if (hingeId >= hingeCount) {
            if (hingeId >= hingeCount) {
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
                Slog.e(TAG, "Hinge " + hingeId + " is greater than hinge count: " + hingeCount);
@@ -297,6 +298,7 @@ public final class TradeInModeService extends SystemService {
        @Override
        @Override
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        @RequiresPermission(android.Manifest.permission.ENTER_TRADE_IN_MODE)
        public int getMoistureIntrusionDetected(long timeoutMillis) throws RemoteException {
        public int getMoistureIntrusionDetected(long timeoutMillis) throws RemoteException {
            enforceEnterTradeInModePermission();
            SensorManager m = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
            SensorManager m = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
            Sensor moistureDetectionSensor = m.getDefaultSensor(Sensor.TYPE_MOISTURE_INTRUSION);
            Sensor moistureDetectionSensor = m.getDefaultSensor(Sensor.TYPE_MOISTURE_INTRUSION);


@@ -338,9 +340,13 @@ public final class TradeInModeService extends SystemService {
            }
            }
        }
        }


        private void enforceTestingPermissions() {
        private void enforceEnterTradeInModePermission() {
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
            mContext.enforceCallingOrSelfPermission("android.permission.ENTER_TRADE_IN_MODE",
                    "Caller must have ENTER_TRADE_IN_MODE permission");
                    "caller missing ENTER_TRADE_IN_MODE permission");
        }

        private void enforceTestingPermissions() {
            enforceEnterTradeInModePermission();
            if (!isDebuggable()) {
            if (!isDebuggable()) {
                throw new SecurityException("ro.debuggable must be set to 1");
                throw new SecurityException("ro.debuggable must be set to 1");
            }
            }