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

Commit df451bd5 authored by Tyler Gunn's avatar Tyler Gunn Committed by Automerger Merge Worker
Browse files

Handle null bindings returned from ConnectionService. am: 410ce026 am: 86f45ae8

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/17104573

Change-Id: Ie4e6225ddb2223d3d1d02253956581f86f566cc8
parents d455e0ff 86f45ae8
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -150,7 +150,6 @@ public abstract class ServiceBinder {
                    Log.i(this, "Service bound %s", componentName);

                    Log.addEvent(mCall, LogUtils.Events.CS_BOUND, componentName);
                    mCall = null;

                    // Unbind request was queued so unbind immediately.
                    if (mIsBindingAborted) {
@@ -192,6 +191,30 @@ public abstract class ServiceBinder {
                Log.endSession();
            }
        }

        /**
         * Handles the case where the {@link ConnectionService} we bound to returned a null binding.
         * We want to unbind from the service and cleanup and call resources at this time.
         * @param componentName The component of the {@link ConnectionService}.
         */
        @Override
        public void onNullBinding(ComponentName componentName) {
            try {
                Log.startSession("SBC.oNB");
                synchronized (mLock) {
                    Log.w(this, "Null binding %s", componentName);
                    Log.addEvent(mCall, "NULL_BINDING", componentName);
                    String componentStr = componentName == null ? "null" : componentName.toString();
                    android.util.EventLog.writeEvent(0x534e4554, "211114016", -1, componentStr);
                    logServiceDisconnected("onNullBinding");
                    mContext.unbindService(this);
                    clearAbort();
                    handleFailedConnection();
                }
            } finally {
                Log.endSession();
            }
        }
    }

    private void handleDisconnect() {