Merge "add setDefaultExecutor to ImsCallSessionListener to set the executor when a conference call is established"

This commit is contained in:
Hakjun Choi
2023-01-31 03:04:13 +00:00
committed by Android (Google) Code Review
3 changed files with 35 additions and 3 deletions

View File

@@ -35,6 +35,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
@@ -50,6 +51,7 @@ import java.util.Set;
public class ImsCallSessionListener {
private static final String TAG = "ImsCallSessionListener";
private final IImsCallSessionListener mListener;
private Executor mExecutor = null;
/** @hide */
public ImsCallSessionListener(IImsCallSessionListener l) {
@@ -247,6 +249,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) {
@@ -278,6 +283,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) {
@@ -365,6 +373,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) {
@@ -410,6 +421,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) {
@@ -836,5 +850,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;
}
}
}

View File

@@ -1141,6 +1141,7 @@ public class MmTelFeature extends ImsFeature {
throw new IllegalStateException("Session is not available.");
}
try {
c.setDefaultExecutor(MmTelFeature.this.mExecutor);
listener.onIncomingCall(c.getServiceImpl(), null, extras);
} catch (RemoteException e) {
throw new RuntimeException(e);
@@ -1175,7 +1176,9 @@ public class MmTelFeature extends ImsFeature {
IImsCallSessionListener isl =
listener.onIncomingCall(c.getServiceImpl(), callId, extras);
if (isl != null) {
return new ImsCallSessionListener(isl);
ImsCallSessionListener iCSL = new ImsCallSessionListener(isl);
iCSL.setDefaultExecutor(MmTelFeature.this.mExecutor);
return iCSL;
} else {
return null;
}

View File

@@ -220,8 +220,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