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

Commit 3afcd20f authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Fix MmTelFeatureConnection Memory Leak

In FeatureConnection, we never cleaned up the ImsFeatureStatusCallback
after it was destroyed, leaving zombie FeatureConnections around.

Bug: 156893040
Fixes: 157948894
Test: atest FrameworksTelephonyTests
Merged-In: Idcf8b558c3807a3f9f5094afee532e76ea6f02cb
Change-Id: Idcf8b558c3807a3f9f5094afee532e76ea6f02cb
parent 7efd5a48
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -7329,6 +7329,29 @@ public class TelephonyManager {
        return null;
    }

    /**
     * Unregister a IImsServiceFeatureCallback previously associated with an ImsFeature through
     * {@link #getImsMmTelFeatureAndListen(int, IImsServiceFeatureCallback)} or
     * {@link #getImsRcsFeatureAndListen(int, IImsServiceFeatureCallback)}.
     * @param slotIndex The SIM slot associated with the callback.
     * @param featureType The {@link android.telephony.ims.feature.ImsFeature.FeatureType}
     *                    associated with the callback.
     * @param callback The callback to be unregistered.
     * @hide
     */
    public void unregisterImsFeatureCallback(int slotIndex, int featureType,
            IImsServiceFeatureCallback callback) {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                telephony.unregisterImsFeatureCallback(slotIndex, featureType, callback);
            }
        } catch (RemoteException e) {
            Rlog.e(TAG, "unregisterImsFeatureCallback, RemoteException: "
                    + e.getMessage());
        }
    }

    /**
     * @return the {@IImsRegistration} interface that corresponds with the slot index and feature.
     * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for.
+8 −0
Original line number Diff line number Diff line
@@ -850,6 +850,14 @@ interface ITelephony {
     */
    IImsRcsFeature getRcsFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback);

    /**
     * Unregister a callback that was previously registered through
     * {@link #getMmTelFeatureAndListen} or {@link #getRcsFeatureAndListen}. This should always be
     * called when the callback is no longer being used.
     */
    void unregisterImsFeatureCallback(int slotId, int featureType,
            in IImsServiceFeatureCallback callback);

    /**
    * Returns the IImsRegistration associated with the slot and feature specified.
    */