aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2016-07-22 08:46:49 -0700
committergitbuildkicker <android-build@google.com>2016-07-22 15:52:03 -0700
commit0a8d469557fd1f7a7048df9a1243293c346d459b (patch)
treeef0174e627818f42d38b8b6246584db6b0b72839
parent4effdca336ead475a90ac1529ff4007f7218dfd7 (diff)
downloadims-0a8d469557fd1f7a7048df9a1243293c346d459b.tar.gz
Add ImsVideoProviderWrapperCallback to notify local components.
Added a callback class in ImsVideoProviderWrapperCallback so that local components such as ImsPhoneConnection can listen to incoming session modification responses. Bug: 29381561 Change-Id: I38e5be1996c22be2e5f8797c825e0ab90d49fda1
-rw-r--r--src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java b/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
index ea0469f8..3f0e6290 100644
--- a/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
+++ b/src/java/com/android/ims/internal/ImsVideoCallProviderWrapper.java
@@ -29,6 +29,10 @@ import android.view.Surface;
import com.android.internal.os.SomeArgs;
+import java.util.Collections;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
/**
* Subclass implementation of {@link Connection.VideoProvider}. This intermediates and
* communicates with the actual implementation of the video call provider in the IMS service; it is
@@ -41,6 +45,12 @@ import com.android.internal.os.SomeArgs;
* @hide
*/
public class ImsVideoCallProviderWrapper extends Connection.VideoProvider {
+
+ public interface ImsVideoProviderWrapperCallback {
+ void onReceiveSessionModifyResponse(int status, VideoProfile requestProfile,
+ VideoProfile responseProfile);
+ }
+
private static final int MSG_RECEIVE_SESSION_MODIFY_REQUEST = 1;
private static final int MSG_RECEIVE_SESSION_MODIFY_RESPONSE = 2;
private static final int MSG_HANDLE_CALL_SESSION_EVENT = 3;
@@ -52,6 +62,8 @@ public class ImsVideoCallProviderWrapper extends Connection.VideoProvider {
private final IImsVideoCallProvider mVideoCallProvider;
private final ImsVideoCallCallback mBinder;
private RegistrantList mDataUsageUpdateRegistrants = new RegistrantList();
+ private final Set<ImsVideoProviderWrapperCallback> mCallbacks = Collections.newSetFromMap(
+ new ConcurrentHashMap<ImsVideoProviderWrapperCallback, Boolean>(8, 0.9f, 1));
private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
@Override
@@ -119,6 +131,14 @@ public class ImsVideoCallProviderWrapper extends Connection.VideoProvider {
mDataUsageUpdateRegistrants.remove(h);
}
+ public void addImsVideoProviderCallback(ImsVideoProviderWrapperCallback callback) {
+ mCallbacks.add(callback);
+ }
+
+ public void removeImsVideoProviderCallback(ImsVideoProviderWrapperCallback callback) {
+ mCallbacks.remove(callback);
+ }
+
/** Default handler used to consolidate binder method calls onto a single thread. */
private final Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
@@ -136,6 +156,14 @@ public class ImsVideoCallProviderWrapper extends Connection.VideoProvider {
VideoProfile responseProfile = (VideoProfile) args.arg3;
receiveSessionModifyResponse(status, requestProfile, responseProfile);
+
+ // Notify any local Telephony components interested in upgrade responses.
+ for (ImsVideoProviderWrapperCallback callback : mCallbacks) {
+ if (callback != null) {
+ callback.onReceiveSessionModifyResponse(status, requestProfile,
+ responseProfile);
+ }
+ }
} finally {
args.recycle();
}