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

Commit f423e810 authored by Brad Ebinger's avatar Brad Ebinger Committed by android-build-merger
Browse files

Merge "Makes some updates to the ImsService Rebind process" am: ff78a983

am: 680888a9

Change-Id: Ieaa225f219f72b3ef8ad8adf8b01c96f84dacca4
parents 89aa950f 680888a9
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() {