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

Commit a40b1323 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Improve ImsManager efficiency and make threading more obvious

1) Superficial change to classes using ImsManager that register callbacks.
Instead of internally creating Executors on the threads, make it obvious
to the callers by making them pass in an Executor.

Test: atest FrameworksTelephonyTests
Merged-In: Ie393ae6610ebfbd4c939faec7fd8aaf96cbf6683
Change-Id: Ie393ae6610ebfbd4c939faec7fd8aaf96cbf6683
parent 461681f0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -292,8 +292,8 @@ public class ImsSmsDispatcher extends SMSDispatcher {
    }

    private void setListeners() throws ImsException {
        getImsManager().addRegistrationCallback(mRegistrationCallback);
        getImsManager().addCapabilitiesCallback(mCapabilityCallback);
        getImsManager().addRegistrationCallback(mRegistrationCallback, this::post);
        getImsManager().addCapabilitiesCallback(mCapabilityCallback, this::post);
        getImsManager().setSmsListener(getSmsListener());
        getImsManager().onSmsReady();
    }
+0 −16
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@ import android.util.LocalLog;
import android.util.Log;
import android.util.SparseArray;

import com.android.ims.FeatureConnector;
import com.android.ims.ImsFeatureBinderRepository;
import com.android.ims.ImsFeatureContainer;
import com.android.ims.internal.IImsServiceFeatureCallback;
@@ -716,21 +715,6 @@ public class ImsResolver implements ImsServiceController.ImsServiceControllerCal
        mRepo.registerForConnectionUpdates(slotId, feature, callback, mRunnableExecutor);
    }

    /**
     * Do not set up a persistent callback, but rather call back once depending on if the feature
     * requested exists.
     */
    public void callBackIfExists(int slotId, int feature, IImsServiceFeatureCallback callback) {
        ImsFeatureContainer c = mRepo.getIfExists(slotId, feature).orElse(null);
        try {
            if (c != null) {
                callback.imsFeatureCreated(c);
            } else {
                callback.imsFeatureRemoved(FeatureConnector.UNAVAILABLE_REASON_DISCONNECTED);
            }
        } catch (RemoteException ignore) { } //remote is dead.
    }

    /**
     * Unregister a previously registered IImsServiceFeatureCallback through
     * {@link #listenForFeature(int, int, IImsServiceFeatureCallback)}.
+2 −2
Original line number Diff line number Diff line
@@ -981,8 +981,8 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        log("startListeningForCalls");
        mOperationLocalLog.log("startListeningForCalls - Connecting to ImsService");
        mImsManager.open(mMmTelFeatureListener);
        mImsManager.addRegistrationCallback(mPhone.getImsMmTelRegistrationCallback());
        mImsManager.addCapabilitiesCallback(mImsCapabilityCallback);
        mImsManager.addRegistrationCallback(mPhone.getImsMmTelRegistrationCallback(), this::post);
        mImsManager.addCapabilitiesCallback(mImsCapabilityCallback, this::post);

        mImsManager.setConfigListener(mImsConfigListener);

+2 −1
Original line number Diff line number Diff line
@@ -229,7 +229,8 @@ public class ImsPhoneCallTrackerTest extends TelephonyTest {
            mCapabilityCallback = (ImsMmTelManager.CapabilityCallback) invocation.getArguments()[0];
            return mCapabilityCallback;

        }).when(mImsManager).addCapabilitiesCallback(any(ImsMmTelManager.CapabilityCallback.class));
        }).when(mImsManager).addCapabilitiesCallback(
                any(ImsMmTelManager.CapabilityCallback.class), any());

        doReturn(mImsConfig).when(mImsManager).getConfigInterface();