Handle null bindings returned from ConnectionService. am: 410ce02600
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/17104573
Change-Id: I976149c24f1ce26f2053172ccd881c76877ded28
diff --git a/src/com/android/server/telecom/ServiceBinder.java b/src/com/android/server/telecom/ServiceBinder.java
index c64fc73..bd992e5 100644
--- a/src/com/android/server/telecom/ServiceBinder.java
+++ b/src/com/android/server/telecom/ServiceBinder.java
@@ -149,7 +149,6 @@
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) {
@@ -191,6 +190,30 @@
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() {