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

Commit dfdee636 authored by sqian's avatar sqian
Browse files

Add LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH into Shell permission

> Is the minimally scoped permission that needs to be added?
This is a minimal permission for always listening to signal strength.

> What options did you explore that did not need this permission?
CTS is required by API council; Telephony CTS is using shell to have
system permission. I don't see other options.

Integrate the callback of LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH

Test: CTS; https://paste.googleplex.com/5811446241820672
Bug: 147322848
Change-Id: Id5afd261a7f00c25e3af3558f30fb92aad42f060
parent 64c1e4dd
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -168,9 +168,11 @@ public class PhoneStateListener {
    public static final int LISTEN_SIGNAL_STRENGTHS                         = 0x00000100;
    public static final int LISTEN_SIGNAL_STRENGTHS                         = 0x00000100;


    /**
    /**
     * Listen for always reported changes of the network signal strengths (cellular),
     * Listen for changes of the network signal strengths (cellular) always reported from modem,
     * even in some situations such as the screen of the device is off.
     * even in some situations such as the screen of the device is off.
     *
     *
     * @see #onSignalStrengthsChanged
     *
     * @hide
     * @hide
     */
     */
    @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
    @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
+3 −0
Original line number Original line Diff line number Diff line
@@ -211,6 +211,9 @@
    <!-- Permission required for CTS test - CrossProfileAppsHostSideTest -->
    <!-- Permission required for CTS test - CrossProfileAppsHostSideTest -->
    <uses-permission android:name="android.permission.INTERACT_ACROSS_PROFILES"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_PROFILES"/>


    <!-- permissions required for CTS test - PhoneStateListenerTest -->
    <uses-permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH" />

    <!-- Permission required for CTS test - UiModeManagerTest -->
    <!-- Permission required for CTS test - UiModeManagerTest -->
    <uses-permission android:name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>
    <uses-permission android:name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>


+19 −5
Original line number Original line Diff line number Diff line
@@ -891,6 +891,13 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    if ((events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
                    if ((events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
                            != 0) {
                            != 0) {
                        updateReportSignalStrengthDecision(r.subId);
                        updateReportSignalStrengthDecision(r.subId);
                        try {
                            if (mSignalStrength[phoneId] != null) {
                                r.callback.onSignalStrengthsChanged(mSignalStrength[phoneId]);
                            }
                        } catch (RemoteException ex) {
                            remove(r.binder);
                        }
                    }
                    }
                    if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO)) {
                    if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO)) {
                        try {
                        try {
@@ -1307,9 +1314,10 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                        log("notifySignalStrengthForPhoneId: r=" + r + " subId=" + subId
                        log("notifySignalStrengthForPhoneId: r=" + r + " subId=" + subId
                                + " phoneId=" + phoneId + " ss=" + signalStrength);
                                + " phoneId=" + phoneId + " ss=" + signalStrength);
                    }
                    }
                    if (r.matchPhoneStateListenerEvent(
                    if ((r.matchPhoneStateListenerEvent(PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)
                                PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) &&
                            || r.matchPhoneStateListenerEvent(
                            idMatch(r.subId, subId, phoneId)) {
                                    PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH))
                            && idMatch(r.subId, subId, phoneId)) {
                        try {
                        try {
                            if (DBG) {
                            if (DBG) {
                                log("notifySignalStrengthForPhoneId: callback.onSsS r=" + r
                                log("notifySignalStrengthForPhoneId: callback.onSsS r=" + r
@@ -2454,6 +2462,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION, null);
                    android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION, null);
        }
        }


        if ((events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) != 0) {
            mContext.enforceCallingOrSelfPermission(
                    android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH, null);
        }

        if ((events & READ_PRIVILEGED_PHONE_STATE_PERMISSION_MASK) != 0) {
        if ((events & READ_PRIVILEGED_PHONE_STATE_PERMISSION_MASK) != 0) {
            mContext.enforceCallingOrSelfPermission(
            mContext.enforceCallingOrSelfPermission(
                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
@@ -2569,7 +2582,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
            }
            }
        }
        }


        if ((events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0) {
        if ((events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0
                || (events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) != 0) {
            try {
            try {
                if (mSignalStrength[phoneId] != null) {
                if (mSignalStrength[phoneId] != null) {
                    SignalStrength signalStrength = mSignalStrength[phoneId];
                    SignalStrength signalStrength = mSignalStrength[phoneId];