From 29f2f2e56adfddd2f33a66b71eceb6505f0d288b Mon Sep 17 00:00:00 2001 From: Santos Cordon Date: Thu, 11 Sep 2014 19:50:24 -0700 Subject: Disconnect all connections if telecomm unbinds to the service. Bug: 1748658 Change-Id: I7bd3d6f28b7fa25f2ee0b308b5dc16d70d67949f --- .../java/android/telecomm/ConnectionService.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'telecomm') diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java index 833aa26..68066da 100644 --- a/telecomm/java/android/telecomm/ConnectionService.java +++ b/telecomm/java/android/telecomm/ConnectionService.java @@ -507,6 +507,13 @@ public abstract class ConnectionService extends Service { return mBinder; } + /** {@inheritDoc} */ + @Override + public boolean onUnbind(Intent intent) { + endAllConnections(); + return super.onUnbind(intent); + } + /** * This can be used by telecomm to either create a new outgoing call or attach to an existing * incoming call. In either case, telecomm will cycle through a set of services and call @@ -965,4 +972,17 @@ public abstract class ConnectionService extends Service { } return sNullConference; } + + private void endAllConnections() { + // Unbound from telecomm. We should end all connections and conferences. + for (Connection connection : mIdByConnection.keySet()) { + // only operate on top-level calls. Conference calls will be removed on their own. + if (connection.getConference() == null) { + connection.onDisconnect(); + } + } + for (Conference conference : mIdByConference.keySet()) { + conference.onDisconnect(); + } + } } -- cgit v1.1