Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bd991b3 authored by Tyler Gunn's avatar Tyler Gunn Committed by android-build-merger
Browse files

Merge "Self managed CS implementation."

am: d736a6b2

Change-Id: I9c1a84cade87a208f2e509fb0f32457c64014147
parents b9f4a2d6 d736a6b2
Loading
Loading
Loading
Loading
+61 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@ public abstract class ConnectionService extends Service {
    private static final String SESSION_ADD_CS_ADAPTER = "CS.aCSA";
    private static final String SESSION_ADD_CS_ADAPTER = "CS.aCSA";
    private static final String SESSION_REMOVE_CS_ADAPTER = "CS.rCSA";
    private static final String SESSION_REMOVE_CS_ADAPTER = "CS.rCSA";
    private static final String SESSION_CREATE_CONN = "CS.crCo";
    private static final String SESSION_CREATE_CONN = "CS.crCo";
    private static final String SESSION_CREATE_CONN_FAILED = "CS.crCoF";
    private static final String SESSION_ABORT = "CS.ab";
    private static final String SESSION_ABORT = "CS.ab";
    private static final String SESSION_ANSWER = "CS.an";
    private static final String SESSION_ANSWER = "CS.an";
    private static final String SESSION_ANSWER_VIDEO = "CS.anV";
    private static final String SESSION_ANSWER_VIDEO = "CS.anV";
@@ -142,6 +143,7 @@ public abstract class ConnectionService extends Service {
    private static final int MSG_PULL_EXTERNAL_CALL = 22;
    private static final int MSG_PULL_EXTERNAL_CALL = 22;
    private static final int MSG_SEND_CALL_EVENT = 23;
    private static final int MSG_SEND_CALL_EVENT = 23;
    private static final int MSG_ON_EXTRAS_CHANGED = 24;
    private static final int MSG_ON_EXTRAS_CHANGED = 24;
    private static final int MSG_CREATE_CONNECTION_FAILED = 25;


    private static Connection sNullConnection;
    private static Connection sNullConnection;


@@ -210,6 +212,25 @@ public abstract class ConnectionService extends Service {
            }
            }
        }
        }


        @Override
        public void createConnectionFailed(
                String callId,
                ConnectionRequest request,
                boolean isIncoming,
                Session.Info sessionInfo) {
            Log.startSession(sessionInfo, SESSION_CREATE_CONN_FAILED);
            try {
                SomeArgs args = SomeArgs.obtain();
                args.arg1 = callId;
                args.arg2 = request;
                args.arg3 = Log.createSubsession();
                args.argi1 = isIncoming ? 1 : 0;
                mHandler.obtainMessage(MSG_CREATE_CONNECTION_FAILED, args).sendToTarget();
            } finally {
                Log.endSession();
            }
        }

        @Override
        @Override
        public void abort(String callId, Session.Info sessionInfo) {
        public void abort(String callId, Session.Info sessionInfo) {
            Log.startSession(sessionInfo, SESSION_ABORT);
            Log.startSession(sessionInfo, SESSION_ABORT);
@@ -552,6 +573,35 @@ public abstract class ConnectionService extends Service {
                    }
                    }
                    break;
                    break;
                }
                }
                case MSG_CREATE_CONNECTION_FAILED: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    Log.continueSession((Session) args.arg3, SESSION_HANDLER +
                            SESSION_CREATE_CONN_FAILED);
                    try {
                        final String id = (String) args.arg1;
                        final ConnectionRequest request = (ConnectionRequest) args.arg2;
                        final boolean isIncoming = args.argi1 == 1;
                        if (!mAreAccountsInitialized) {
                            Log.d(this, "Enqueueing pre-init request %s", id);
                            mPreInitializationConnectionRequests.add(
                                    new android.telecom.Logging.Runnable(
                                            SESSION_HANDLER + SESSION_CREATE_CONN_FAILED + ".pICR",
                                            null /*lock*/) {
                                        @Override
                                        public void loggedRun() {
                                            createConnectionFailed(id, request, isIncoming);
                                        }
                                    }.prepare());
                        } else {
                            Log.i(this, "createConnectionFailed %s", id);
                            createConnectionFailed(id, request, isIncoming);
                        }
                    } finally {
                        args.recycle();
                        Log.endSession();
                    }
                    break;
                }
                case MSG_ABORT: {
                case MSG_ABORT: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    SomeArgs args = (SomeArgs) msg.obj;
                    Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_ABORT);
                    Log.continueSession((Session) args.arg2, SESSION_HANDLER + SESSION_ABORT);
@@ -1175,6 +1225,17 @@ public abstract class ConnectionService extends Service {
        }
        }
    }
    }


    private void createConnectionFailed(final String callId, final ConnectionRequest request,
            boolean isIncoming) {

        Log.i(this, "createConnectionFailed %s", callId);
        if (isIncoming) {
            onCreateIncomingConnectionFailed(request);
        } else {
            onCreateOutgoingConnectionFailed(request);
        }
    }

    private void abort(String callId) {
    private void abort(String callId) {
        Log.d(this, "abort %s", callId);
        Log.d(this, "abort %s", callId);
        findConnectionForAction(callId, "abort").onAbort();
        findConnectionForAction(callId, "abort").onAbort();
+4 −0
Original line number Original line Diff line number Diff line
@@ -1517,6 +1517,10 @@ public class TelecomManager {
     *      otherwise.
     *      otherwise.
     */
     */
    public boolean isIncomingCallPermitted(PhoneAccountHandle phoneAccountHandle) {
    public boolean isIncomingCallPermitted(PhoneAccountHandle phoneAccountHandle) {
        if (phoneAccountHandle == null) {
            return false;
        }

        ITelecomService service = getTelecomService();
        ITelecomService service = getTelecomService();
        if (service != null) {
        if (service != null) {
            try {
            try {
+3 −0
Original line number Original line Diff line number Diff line
@@ -46,6 +46,9 @@ oneway interface IConnectionService {
            boolean isUnknown,
            boolean isUnknown,
            in Session.Info sessionInfo);
            in Session.Info sessionInfo);


    void createConnectionFailed(String callId, in ConnectionRequest request, boolean isIncoming,
            in Session.Info sessionInfo);

    void abort(String callId, in Session.Info sessionInfo);
    void abort(String callId, in Session.Info sessionInfo);


    void answerVideo(String callId, int videoState, in Session.Info sessionInfo);
    void answerVideo(String callId, int videoState, in Session.Info sessionInfo);