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

Commit 64e10132 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
Test: atest FrameworksTelephonyTests
Change-Id: Idcf8b558c3807a3f9f5094afee532e76ea6f02cb
parent 5093c581
Loading
Loading
Loading
Loading
+23 −0
Original line number Original line Diff line number Diff line
@@ -7394,6 +7394,29 @@ public class TelephonyManager {
        return null;
        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.
     * @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.
     * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for.
+8 −0
Original line number Original line Diff line number Diff line
@@ -850,6 +850,14 @@ interface ITelephony {
     */
     */
    IImsRcsFeature getRcsFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback);
    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.
    * Returns the IImsRegistration associated with the slot and feature specified.
    */
    */