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

Commit ff78a983 authored by Brad Ebinger's avatar Brad Ebinger Committed by Gerrit Code Review
Browse files

Merge "Makes some updates to the ImsService Rebind process"

parents a8b56a37 b53ad908
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -65,10 +65,10 @@ public class ImsServiceController {

        @Override
        public void binderDied() {
            Log.e(LOG_TAG, "ImsService(" + mComponentName + ") died. Cleaning up.");
            Log.e(LOG_TAG, "ImsService(" + mComponentName + ") died. Restarting...");
            notifyAllFeaturesRemoved();
            cleanUpService();
            mHandler.postDelayed(mRestartImsServiceRunnable, mRebindRetry.getRetryTimeout());
            startDelayedRebindToService();
        }
    }

@@ -76,16 +76,18 @@ public class ImsServiceController {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            if (service != null) {
            synchronized (mLock) {
                mIsBound = true;
                mIsBinding = false;
                grantPermissionsToService();
                Log.d(LOG_TAG, "ImsService(" + name + "): onServiceConnected with binder: "
                        + service);
                if (service != null) {
                    mImsDeathRecipient = new ImsDeathRecipient(name);
                    try {
                        service.linkToDeath(mImsDeathRecipient, 0);
                        mImsServiceControllerBinder = service;
                        mIImsServiceController = IImsServiceController.Stub.asInterface(service);
                        mIsBound = true;
                        mIsBinding = false;
                        grantPermissionsToService();
                        // create all associated features in the ImsService
                        for (Pair<Integer, Integer> i : mImsFeatures) {
                            addImsServiceFeature(i);
@@ -114,7 +116,8 @@ public class ImsServiceController {
            }
            notifyAllFeaturesRemoved();
            cleanUpService();
            mHandler.postDelayed(mRestartImsServiceRunnable, mRebindRetry.getRetryTimeout());
            Log.w(LOG_TAG, "ImsService(" + name + "): onServiceDisconnected. Rebinding...");
            startDelayedRebindToService();
        }
    }

@@ -358,6 +361,13 @@ public class ImsServiceController {
        }
    }

    // Only add a new rebind if there are no pending rebinds waiting.
    private void startDelayedRebindToService() {
        if (!mHandler.hasCallbacks(mRestartImsServiceRunnable)) {
            mHandler.postDelayed(mRestartImsServiceRunnable, mRebindRetry.getRetryTimeout());
        }
    }

    // Grant runtime permissions to ImsService. PackageManager ensures that the ImsService is
    // system/signed before granting permissions.
    private void grantPermissionsToService() {