summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hakjun Choi <hakjunc@google.com> 2023-02-18 03:06:41 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2023-02-18 03:06:41 +0000
commitd897e2934d2d2519ab493d36d5da10d02d5377fb (patch)
treefdec084867f349859b1878875ae08dd08cc391f9
parent4ce28e4b3c7bc207197dc1c4958a83690b107670 (diff)
parent0405865818a6053923e992e80a4abc32162b416c (diff)
Merge "add setDefaultExecutor to ImsCallSessionListener to set the executor when a conference call is established"
-rw-r--r--telephony/java/android/telephony/ims/ImsCallSessionListener.java29
-rw-r--r--telephony/java/android/telephony/ims/feature/MmTelFeature.java1
-rw-r--r--telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java5
3 files changed, 32 insertions, 3 deletions
diff --git a/telephony/java/android/telephony/ims/ImsCallSessionListener.java b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
index db99acfd9a35..3533c0907fac 100644
--- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java
+++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
@@ -31,6 +31,7 @@ import com.android.ims.internal.IImsCallSession;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.Executor;
/**
* Listener interface for notifying the Framework's {@link ImsCallSession} for updates to an ongoing
@@ -44,8 +45,8 @@ import java.util.Set;
// ImsCallSessionListenerConverter is also changed.
@SystemApi
public class ImsCallSessionListener {
-
private final IImsCallSessionListener mListener;
+ private Executor mExecutor = null;
/** @hide */
public ImsCallSessionListener(IImsCallSessionListener l) {
@@ -243,6 +244,9 @@ public class ImsCallSessionListener {
public void callSessionMergeStarted(ImsCallSessionImplBase newSession, ImsCallProfile profile)
{
try {
+ if (newSession != null && mExecutor != null) {
+ newSession.setDefaultExecutor(mExecutor);
+ }
mListener.callSessionMergeStarted(newSession != null ?
newSession.getServiceImpl() : null, profile);
} catch (RemoteException e) {
@@ -274,6 +278,9 @@ public class ImsCallSessionListener {
*/
public void callSessionMergeComplete(ImsCallSessionImplBase newSession) {
try {
+ if (newSession != null && mExecutor != null) {
+ newSession.setDefaultExecutor(mExecutor);
+ }
mListener.callSessionMergeComplete(newSession != null ?
newSession.getServiceImpl() : null);
} catch (RemoteException e) {
@@ -361,6 +368,9 @@ public class ImsCallSessionListener {
public void callSessionConferenceExtended(ImsCallSessionImplBase newSession,
ImsCallProfile profile) {
try {
+ if (newSession != null && mExecutor != null) {
+ newSession.setDefaultExecutor(mExecutor);
+ }
mListener.callSessionConferenceExtended(
newSession != null ? newSession.getServiceImpl() : null, profile);
} catch (RemoteException e) {
@@ -406,6 +416,9 @@ public class ImsCallSessionListener {
public void callSessionConferenceExtendReceived(ImsCallSessionImplBase newSession,
ImsCallProfile profile) {
try {
+ if (newSession != null && mExecutor != null) {
+ newSession.setDefaultExecutor(mExecutor);
+ }
mListener.callSessionConferenceExtendReceived(newSession != null
? newSession.getServiceImpl() : null, profile);
} catch (RemoteException e) {
@@ -808,5 +821,19 @@ public class ImsCallSessionListener {
e.rethrowFromSystemServer();
}
}
+
+ /**
+ * Set default Executor from ImsService.
+ * @param executor The default executor to use when executing the methods by the vendor
+ * implementation of {@link ImsCallSessionImplBase} for conference call.
+ * This executor is dedicated to set vendor CallSessionImpl
+ * only when conference call is established.
+ * @hide
+ */
+ public final void setDefaultExecutor(@NonNull Executor executor) {
+ if (mExecutor == null) {
+ mExecutor = executor;
+ }
+ }
}
diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
index fb0e659ec77b..ebe11e938c39 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -644,6 +644,7 @@ public class MmTelFeature extends ImsFeature {
throw new IllegalStateException("Session is not available.");
}
try {
+ c.setDefaultExecutor(MmTelFeature.this.mExecutor);
listener.onIncomingCall(c.getServiceImpl(), extras);
} catch (RemoteException e) {
throw new RuntimeException(e);
diff --git a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
index e8100957517f..25bf7d6af9ca 100644
--- a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
@@ -173,8 +173,9 @@ public class ImsCallSessionImplBase implements AutoCloseable {
@Override
public void setListener(IImsCallSessionListener listener) {
- executeMethodAsync(() -> ImsCallSessionImplBase.this.setListener(
- new ImsCallSessionListener(listener)), "setListener");
+ ImsCallSessionListener iCSL = new ImsCallSessionListener(listener);
+ iCSL.setDefaultExecutor(mExecutor);
+ executeMethodAsync(() -> ImsCallSessionImplBase.this.setListener(iCSL), "setListener");
}
@Override