ConnectionServiceAdapterServant.java revision 5d0410fa7c2dead7906780551ba4aa0305021cef
15d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad/*
25d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Copyright (C) 2014 The Android Open Source Project
35d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
45d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Licensed under the Apache License, Version 2.0 (the "License");
55d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * you may not use this file except in compliance with the License.
65d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * You may obtain a copy of the License at
75d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
85d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *      http://www.apache.org/licenses/LICENSE-2.0
95d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * Unless required by applicable law or agreed to in writing, software
115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * distributed under the License is distributed on an "AS IS" BASIS,
125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * See the License for the specific language governing permissions and
145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad R* limitations under the License.
155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad */
165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
175d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadpackage android.telecomm;
185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport com.android.internal.os.SomeArgs;
205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport com.android.internal.telecomm.IConnectionServiceAdapter;
215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport com.android.internal.telecomm.IVideoCallProvider;
225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport com.android.internal.telecomm.RemoteServiceCallback;
235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.app.PendingIntent;
255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.net.Uri;
265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.Handler;
275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.Message;
285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadimport android.os.RemoteException;
295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad/**
315d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * A component that provides an RPC servant implementation of {@link IConnectionServiceAdapter},
325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * posting incoming messages on the main thread on a client-supplied delegate object.
335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
345d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * TODO: Generate this and similar classes using a compiler starting from AIDL interfaces.
355d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad *
365d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad * @hide
375d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad */
385d0410fa7c2dead7906780551ba4aa0305021cefIhab Awadfinal class ConnectionServiceAdapterServant {
395d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_HANDLE_CREATE_CONNECTION_SUCCESSFUL = 1;
405d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_HANDLE_CREATE_CONNECTION_FAILED = 2;
415d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_HANDLE_CREATE_CONNECTION_CANCELLED = 3;
425d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_ACTIVE = 4;
435d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_RINGING = 5;
445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_DIALING = 6;
455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_DISCONNECTED = 7;
465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_ON_HOLD = 8;
475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_REQUESTING_RINGBACK = 9;
485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_CALL_CAPABILITIES = 10;
495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_IS_CONFERENCED = 11;
505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_ADD_CONFERENCE_CALL = 12;
515d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_REMOVE_CALL = 13;
525d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_ON_POST_DIAL_WAIT = 14;
535d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 15;
545d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_VIDEO_STATE = 16;
555d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_VIDEO_CALL_PROVIDER = 17;
565d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_AUDIO_MODE_IS_VOIP = 18;
575d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_STATUS_HINTS = 19;
585d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_HANDLE = 20;
595d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_SET_CALLER_DISPLAY_NAME = 21;
605d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private static final int MSG_START_ACTIVITY_FROM_IN_CALL = 22;
615d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
625d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final IConnectionServiceAdapter mDelegate;
635d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
645d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final Handler mHandler = new Handler() {
655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void handleMessage(Message msg) {
675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            try {
685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                internalHandleMessage(msg);
695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            } catch (RemoteException e) {
705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            }
715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        // Internal method defined to centralize handling of RemoteException
745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        private void internalHandleMessage(Message msg) throws RemoteException {
755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            switch (msg.what) {
765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_HANDLE_CREATE_CONNECTION_SUCCESSFUL: {
775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.handleCreateConnectionSuccessful(
805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (ConnectionRequest) args.arg1,
815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (ParcelableConnection) args.arg2);
825d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
835d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_HANDLE_CREATE_CONNECTION_FAILED: {
885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.handleCreateConnectionFailed(
915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (ConnectionRequest) args.arg1,
925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                args.argi1,
935d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (String) args.arg2);
945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_HANDLE_CREATE_CONNECTION_CANCELLED: {
1005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.handleCreateConnectionCancelled((ConnectionRequest) msg.obj);
1015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_ACTIVE:
1045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setActive((String) msg.obj);
1055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_RINGING:
1075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setRinging((String) msg.obj);
1085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_DIALING:
1105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setDialing((String) msg.obj);
1115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_DISCONNECTED: {
1135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setDisconnected(
1165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (String) args.arg1, args.argi1, (String) args.arg2);
1175d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_ON_HOLD:
1235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setOnHold((String) msg.obj);
1245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_REQUESTING_RINGBACK:
1265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setRequestingRingback((String) msg.obj, msg.arg1 == 1);
1275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_CALL_CAPABILITIES:
1295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setCallCapabilities((String) msg.obj, msg.arg1);
1305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1315d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_IS_CONFERENCED: {
1325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1345d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setIsConferenced((String) args.arg1, (String) args.arg2);
1355d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1365d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1375d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1385d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1395d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1405d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_ADD_CONFERENCE_CALL:
1415d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.addConferenceCall((String) msg.obj);
1425d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1435d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_REMOVE_CALL:
1445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.removeCall((String) msg.obj);
1455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_ON_POST_DIAL_WAIT: {
1475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.onPostDialWait((String) args.arg1, (String) args.arg2);
1505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1515d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1525d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1535d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1545d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1555d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_QUERY_REMOTE_CALL_SERVICES:
1565d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) msg.obj);
1575d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1585d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_VIDEO_STATE:
1595d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setVideoState((String) msg.obj, msg.arg1);
1605d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1615d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_VIDEO_CALL_PROVIDER: {
1625d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1635d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1645d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setVideoCallProvider((String) args.arg1,
1655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (IVideoCallProvider) args.arg2);
1665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_AUDIO_MODE_IS_VOIP:
1725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    mDelegate.setAudioModeIsVoip((String) msg.obj, msg.arg1 == 1);
1735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_STATUS_HINTS: {
1755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setStatusHints((String) args.arg1, (StatusHints) args.arg2);
1785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1825d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1835d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_HANDLE: {
1845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setHandle((String) args.arg1, (Uri) args.arg2, args.argi1);
1875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
1905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
1915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
1925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_SET_CALLER_DISPLAY_NAME: {
1935d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
1945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
1955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.setCallerDisplayName(
1965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (String) args.arg1, (String) args.arg2, args.argi1);
1975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
1985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
1995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
2005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
2015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
2025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                case MSG_START_ACTIVITY_FROM_IN_CALL: {
2035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    SomeArgs args = (SomeArgs) msg.obj;
2045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    try {
2055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        mDelegate.startActivityFromInCall(
2065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                                (String) args.arg1, (PendingIntent) args.arg2);
2075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    } finally {
2085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                        args.recycle();
2095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    }
2105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    break;
2115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                }
2125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            }
2135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    };
2155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    private final IConnectionServiceAdapter mStub = new IConnectionServiceAdapter.Stub() {
2175d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void handleCreateConnectionSuccessful(
2195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                ConnectionRequest request, ParcelableConnection connection) {
2205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
2215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = request;
2225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = connection;
2235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_SUCCESSFUL, args).sendToTarget();
2245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void handleCreateConnectionFailed(
2285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                ConnectionRequest request, int errorCode, String errorMessage) {
2295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
2305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = request;
2315d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = errorCode;
2325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = errorMessage;
2335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_FAILED, args).sendToTarget();
2345d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2355d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2365d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2375d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void handleCreateConnectionCancelled(ConnectionRequest request) {
2385d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_CANCELLED, request).sendToTarget();
2395d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2405d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2415d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2425d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setActive(String connectionId) {
2435d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_ACTIVE, connectionId).sendToTarget();
2445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setRinging(String connectionId) {
2485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_RINGING, connectionId).sendToTarget();
2495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2515d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2525d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setDialing(String connectionId) {
2535d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_DIALING, connectionId).sendToTarget();
2545d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2555d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2565d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2575d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setDisconnected(
2585d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                String connectionId, int disconnectCause, String disconnectMessage) {
2595d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
2605d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
2615d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = disconnectMessage;
2625d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = disconnectCause;
2635d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
2645d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setOnHold(String connectionId) {
2685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_ON_HOLD, connectionId).sendToTarget();
2695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setRequestingRingback(String connectionId, boolean ringback) {
2735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_REQUESTING_RINGBACK, ringback ? 1 : 0, 0, connectionId)
2745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    .sendToTarget();
2755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2785d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setCallCapabilities(String connectionId, int callCapabilities) {
2795d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_CALL_CAPABILITIES, callCapabilities, 0, connectionId)
2805d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    .sendToTarget();
2815d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2825d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2835d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2845d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setIsConferenced(String callId, String conferenceCallId) {
2855d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
2865d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = callId;
2875d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = conferenceCallId;
2885d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
2895d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2905d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2915d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2925d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void addConferenceCall(String callId) {
2935d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, callId).sendToTarget();
2945d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
2955d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
2965d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
2975d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void removeCall(String connectionId) {
2985d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_REMOVE_CALL, connectionId).sendToTarget();
2995d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3005d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3015d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3025d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void onPostDialWait(String connectionId, String remainingDigits) {
3035d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3045d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3055d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = remainingDigits;
3065d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
3075d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3085d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3095d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3105d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void queryRemoteConnectionServices(RemoteServiceCallback callback) {
3115d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_QUERY_REMOTE_CALL_SERVICES, callback).sendToTarget();
3125d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3135d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3145d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3155d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setVideoState(String connectionId, int videoState) {
3165d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, connectionId).sendToTarget();
3175d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3185d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3195d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3205d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public void setVideoCallProvider(
3215d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                String connectionId, IVideoCallProvider videoCallProvider) {
3225d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3235d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3245d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = videoCallProvider;
3255d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_VIDEO_CALL_PROVIDER, args).sendToTarget();
3265d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3275d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3285d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3295d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setAudioModeIsVoip(String connectionId, boolean isVoip) {
3305d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, isVoip ? 1 : 0, 0,
3315d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                    connectionId).sendToTarget();
3325d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3335d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3345d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3355d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setStatusHints(String connectionId, StatusHints statusHints) {
3365d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3375d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3385d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = statusHints;
3395d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
3405d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3415d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3425d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3435d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setHandle(String connectionId, Uri handle, int presentation) {
3445d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3455d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3465d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = handle;
3475d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = presentation;
3485d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_HANDLE, args).sendToTarget();
3495d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3505d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3515d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3525d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void setCallerDisplayName(
3535d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad                String connectionId, String callerDisplayName, int presentation) {
3545d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3555d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3565d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = callerDisplayName;
3575d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.argi1 = presentation;
3585d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
3595d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3605d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3615d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        @Override
3625d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        public final void startActivityFromInCall(String connectionId, PendingIntent intent) {
3635d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            SomeArgs args = SomeArgs.obtain();
3645d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg1 = connectionId;
3655d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            args.arg2 = intent;
3665d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad            mHandler.obtainMessage(MSG_START_ACTIVITY_FROM_IN_CALL, args).sendToTarget();
3675d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        }
3685d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    };
3695d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3705d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
3715d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        mDelegate = delegate;
3725d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    }
3735d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad
3745d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    public IConnectionServiceAdapter getStub() {
3755d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad        return mStub;
3765d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad    }
3775d0410fa7c2dead7906780551ba4aa0305021cefIhab Awad}
378