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

Commit 206fc30a authored by Rambo Wang's avatar Rambo Wang Committed by Automerger Merge Worker
Browse files

Merge "Clear up ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED logic" am: aac94b26...

Merge "Clear up ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED logic" am: aac94b26 am: f8f8a406 am: fa815644

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

Change-Id: Ib948561ba54963d88e35f79df4a73f4c9b1719a4
parents cd045eb0 fa815644
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
@@ -190,20 +190,6 @@ public class PhoneStateListener {
    @Deprecated
    public static final int LISTEN_SIGNAL_STRENGTHS                         = 0x00000100;

    /**
     * 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.
     *
     * @see #onSignalStrengthsChanged
     *
     * @hide
     * @deprecated Use TelephonyManager#setSignalStrengthUpdateRequest
     * instead.
     */
    @Deprecated
    @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
    public static final int LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH          = 0x00000200;

    /**
     * Listen for changes to observed cell info.
     *
+0 −4
Original line number Diff line number Diff line
@@ -1041,10 +1041,6 @@ public class TelephonyRegistryManager {
            eventList.add(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED);
        }

        if ((eventMask & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) != 0) {
            eventList.add(TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED);
        }

        if ((eventMask & PhoneStateListener.LISTEN_CELL_INFO) != 0) {
            eventList.add(TelephonyCallback.EVENT_CELL_INFO_CHANGED);
        }
+1 −1
Original line number Diff line number Diff line
@@ -2400,7 +2400,7 @@
    <permission android:name="android.permission.READ_ACTIVE_EMERGENCY_SESSION"
        android:protectionLevel="signature" />

    <!-- Allows listen permission to always reported signal strength.
    <!-- Allows listen permission to always reported system signal strength.
         @hide Used internally. -->
    <permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH"
        android:protectionLevel="signature" />
+2 −51
Original line number Diff line number Diff line
@@ -1164,17 +1164,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                        remove(r.binder);
                    }
                }
                if (events.contains(
                        TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) {
                    updateReportSignalStrengthDecision(r.subId);
                    try {
                        if (mSignalStrength[r.phoneId] != null) {
                            r.callback.onSignalStrengthsChanged(mSignalStrength[r.phoneId]);
                        }
                    } catch (RemoteException ex) {
                        remove(r.binder);
                    }
                }
                if (validateEventAndUserLocked(
                        r, TelephonyCallback.EVENT_CELL_INFO_CHANGED)) {
                    try {
@@ -1353,27 +1342,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        }
    }

    private void updateReportSignalStrengthDecision(int subscriptionId) {
        synchronized (mRecords) {
            TelephonyManager telephonyManager = (TelephonyManager) mContext
                    .getSystemService(Context.TELEPHONY_SERVICE);
            for (Record r : mRecords) {
                // If any of the system clients wants to always listen to signal strength,
                // we need to set it on.
                if (r.matchTelephonyCallbackEvent(
                        TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) {
                    telephonyManager.createForSubscriptionId(subscriptionId)
                            .setAlwaysReportSignalStrength(true);
                    return;
                }
            }
            // If none of the system clients wants to always listen to signal strength,
            // we need to set it off.
            telephonyManager.createForSubscriptionId(subscriptionId)
                    .setAlwaysReportSignalStrength(false);
        }
    }

    private String getCallIncomingNumber(Record record, int phoneId) {
        // Only reveal the incoming number if the record has read call log permission.
        return record.canReadCallLog() ? mCallIncomingNumber[phoneId] : "";
@@ -1457,14 +1425,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    }

                    mRecords.remove(i);

                    // Every time a client that is registrating to always receive the signal
                    // strength is removed from registry records, we need to check if
                    // the signal strength decision needs to update on its slot.
                    if (r.matchTelephonyCallbackEvent(
                            TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) {
                        updateReportSignalStrengthDecision(r.subId);
                    }
                    return;
                }
            }
@@ -1696,10 +1656,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                        log("notifySignalStrengthForPhoneId: r=" + r + " subId=" + subId
                                + " phoneId=" + phoneId + " ss=" + signalStrength);
                    }
                    if ((r.matchTelephonyCallbackEvent(
                    if (r.matchTelephonyCallbackEvent(
                            TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED)
                            || r.matchTelephonyCallbackEvent(
                            TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED))
                            && idMatch(r, subId, phoneId)) {
                        try {
                            if (DBG) {
@@ -3120,11 +3078,6 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION, null);
        }

        if ((events.contains(TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED))) {
            mContext.enforceCallingOrSelfPermission(
                    android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH, null);
        }

        if (isPrivilegedPhoneStatePermissionRequired(events)) {
            mContext.enforceCallingOrSelfPermission(
                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
@@ -3285,9 +3238,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
            }
        }

        if (events.contains(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED)
                || events.contains(
                TelephonyCallback.EVENT_ALWAYS_REPORTED_SIGNAL_STRENGTH_CHANGED)) {
        if (events.contains(TelephonyCallback.EVENT_SIGNAL_STRENGTHS_CHANGED)) {
            try {
                if (mSignalStrength[phoneId] != null) {
                    SignalStrength signalStrength = mSignalStrength[phoneId];
+12 −3
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.telephony;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.os.Binder;
import android.os.IBinder;
import android.os.Parcel;
@@ -66,10 +68,15 @@ public final class SignalStrengthUpdateRequest implements Parcelable {
    private final IBinder mLiveToken;

    private SignalStrengthUpdateRequest(
            @NonNull List<SignalThresholdInfo> signalThresholdInfos,
            @Nullable List<SignalThresholdInfo> signalThresholdInfos,
            boolean isReportingRequestedWhileIdle,
            boolean isSystemThresholdReportingRequestedWhileIdle) {
        // System app (like Bluetooth) can specify the request to report system thresholds while
        // device is idle (with permission protection). In this case, the request doesn't need to
        // provide a non-empty list of SignalThresholdInfo which is only asked for public apps.
        if (!isSystemThresholdReportingRequestedWhileIdle) {
            validate(signalThresholdInfos);
        }

        mSignalThresholdInfos = signalThresholdInfos;
        mIsReportingRequestedWhileIdle = isReportingRequestedWhileIdle;
@@ -128,13 +135,15 @@ public final class SignalStrengthUpdateRequest implements Parcelable {
        /**
         * Set the builder object if require reporting on the system thresholds when device is idle.
         *
         * This can only used by the system caller.
         * <p>This can only used by the system caller. Requires permission
         * {@link android.Manifest.permission#LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH}.
         *
         * @param isSystemThresholdReportingRequestedWhileIdle true if request reporting on the
         *                                                     system thresholds when device is idle
         * @return the builder to facilitate the chaining
         * @hide
         */
        @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
        public @NonNull Builder setSystemThresholdReportingRequestedWhileIdle(
                boolean isSystemThresholdReportingRequestedWhileIdle) {
            mIsSystemThresholdReportingRequestedWhileIdle =
Loading