blob: c95e14f0113a7f8e0ad83096f78ae4b1d93773ea [file] [log] [blame]
Ihab Awad5d0410f2014-07-30 10:07:40 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 R* limitations under the License.
15 */
16
Tyler Gunnef9f6f92014-09-12 22:16:17 -070017package android.telecom;
Ihab Awad5d0410f2014-07-30 10:07:40 -070018
Ihab Awad5d0410f2014-07-30 10:07:40 -070019import android.net.Uri;
Santos Cordon6b7f9552015-05-27 17:21:45 -070020import android.os.Bundle;
Ihab Awad5d0410f2014-07-30 10:07:40 -070021import android.os.Handler;
22import android.os.Message;
23import android.os.RemoteException;
Junhoedf3d822022-11-24 09:26:37 +000024import android.os.ResultReceiver;
Brad Ebinger4d75bee2016-10-28 12:29:55 -070025import android.telecom.Logging.Session;
Ihab Awad5d0410f2014-07-30 10:07:40 -070026
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070027import com.android.internal.os.SomeArgs;
Tyler Gunnef9f6f92014-09-12 22:16:17 -070028import com.android.internal.telecom.IConnectionServiceAdapter;
29import com.android.internal.telecom.IVideoProvider;
30import com.android.internal.telecom.RemoteServiceCallback;
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070031
32import java.util.List;
33
Ihab Awad5d0410f2014-07-30 10:07:40 -070034/**
35 * A component that provides an RPC servant implementation of {@link IConnectionServiceAdapter},
36 * posting incoming messages on the main thread on a client-supplied delegate object.
37 *
38 * TODO: Generate this and similar classes using a compiler starting from AIDL interfaces.
39 *
40 * @hide
41 */
42final class ConnectionServiceAdapterServant {
Ihab Awad6107bab2014-08-18 09:23:25 -070043 private static final int MSG_HANDLE_CREATE_CONNECTION_COMPLETE = 1;
44 private static final int MSG_SET_ACTIVE = 2;
45 private static final int MSG_SET_RINGING = 3;
46 private static final int MSG_SET_DIALING = 4;
47 private static final int MSG_SET_DISCONNECTED = 5;
48 private static final int MSG_SET_ON_HOLD = 6;
Andrew Lee100e2932014-09-08 15:34:24 -070049 private static final int MSG_SET_RINGBACK_REQUESTED = 7;
Ihab Awad5c9c86e2014-11-12 13:41:16 -080050 private static final int MSG_SET_CONNECTION_CAPABILITIES = 8;
Ihab Awad6107bab2014-08-18 09:23:25 -070051 private static final int MSG_SET_IS_CONFERENCED = 9;
52 private static final int MSG_ADD_CONFERENCE_CALL = 10;
53 private static final int MSG_REMOVE_CALL = 11;
54 private static final int MSG_ON_POST_DIAL_WAIT = 12;
55 private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 13;
56 private static final int MSG_SET_VIDEO_STATE = 14;
57 private static final int MSG_SET_VIDEO_CALL_PROVIDER = 15;
Andrew Lee100e2932014-09-08 15:34:24 -070058 private static final int MSG_SET_IS_VOIP_AUDIO_MODE = 16;
Ihab Awad6107bab2014-08-18 09:23:25 -070059 private static final int MSG_SET_STATUS_HINTS = 17;
Andrew Lee100e2932014-09-08 15:34:24 -070060 private static final int MSG_SET_ADDRESS = 18;
Ihab Awad6107bab2014-08-18 09:23:25 -070061 private static final int MSG_SET_CALLER_DISPLAY_NAME = 19;
Evan Charlton23dc2412014-09-03 10:07:03 -070062 private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
Tyler Gunn4a57b9b2014-10-30 14:27:48 -070063 private static final int MSG_ADD_EXISTING_CONNECTION = 21;
Nancy Chen27d1c2d2014-12-15 16:12:50 -080064 private static final int MSG_ON_POST_DIAL_CHAR = 22;
Anthony Lee17455a32015-04-24 15:25:29 -070065 private static final int MSG_SET_CONFERENCE_MERGE_FAILED = 23;
Tyler Gunndee56a82016-03-23 16:06:34 -070066 private static final int MSG_PUT_EXTRAS = 24;
67 private static final int MSG_REMOVE_EXTRAS = 25;
68 private static final int MSG_ON_CONNECTION_EVENT = 26;
Tyler Gunn720c6642016-03-22 09:02:47 -070069 private static final int MSG_SET_CONNECTION_PROPERTIES = 27;
Tyler Gunnc96b5e02016-07-07 22:53:57 -070070 private static final int MSG_SET_PULLING = 28;
Tyler Gunnf5035432017-01-09 09:43:12 -080071 private static final int MSG_SET_AUDIO_ROUTE = 29;
Hall Liu57006aa2017-02-06 10:49:48 -080072 private static final int MSG_ON_RTT_INITIATION_SUCCESS = 30;
73 private static final int MSG_ON_RTT_INITIATION_FAILURE = 31;
74 private static final int MSG_ON_RTT_REMOTELY_TERMINATED = 32;
75 private static final int MSG_ON_RTT_UPGRADE_REQUEST = 33;
Srikanth Chintalafcb15012017-05-04 20:58:34 +053076 private static final int MSG_SET_PHONE_ACCOUNT_CHANGED = 34;
Pengquan Meng63d25a52017-11-21 18:01:13 -080077 private static final int MSG_CONNECTION_SERVICE_FOCUS_RELEASED = 35;
Tyler Gunn68a73a42018-10-03 15:38:57 -070078 private static final int MSG_SET_CONFERENCE_STATE = 36;
Ravi Paluri80aa2142019-12-02 11:57:37 +053079 private static final int MSG_HANDLE_CREATE_CONFERENCE_COMPLETE = 37;
Brad Ebinger31774ae2020-04-08 16:25:12 -070080 private static final int MSG_SET_CALL_DIRECTION = 38;
Ihab Awad5d0410f2014-07-30 10:07:40 -070081
82 private final IConnectionServiceAdapter mDelegate;
83
84 private final Handler mHandler = new Handler() {
85 @Override
86 public void handleMessage(Message msg) {
87 try {
88 internalHandleMessage(msg);
89 } catch (RemoteException e) {
90 }
91 }
92
93 // Internal method defined to centralize handling of RemoteException
94 private void internalHandleMessage(Message msg) throws RemoteException {
95 switch (msg.what) {
Ihab Awad6107bab2014-08-18 09:23:25 -070096 case MSG_HANDLE_CREATE_CONNECTION_COMPLETE: {
Ihab Awad5d0410f2014-07-30 10:07:40 -070097 SomeArgs args = (SomeArgs) msg.obj;
98 try {
Ihab Awad6107bab2014-08-18 09:23:25 -070099 mDelegate.handleCreateConnectionComplete(
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700100 (String) args.arg1,
101 (ConnectionRequest) args.arg2,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700102 (ParcelableConnection) args.arg3,
103 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700104 } finally {
105 args.recycle();
106 }
107 break;
108 }
Ravi Paluri80aa2142019-12-02 11:57:37 +0530109 case MSG_HANDLE_CREATE_CONFERENCE_COMPLETE: {
110 SomeArgs args = (SomeArgs) msg.obj;
111 try {
112 mDelegate.handleCreateConferenceComplete(
113 (String) args.arg1,
114 (ConnectionRequest) args.arg2,
115 (ParcelableConference) args.arg3,
116 null /*Session.Info*/);
117 } finally {
118 args.recycle();
119 }
120 break;
121 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700122 case MSG_SET_ACTIVE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700123 mDelegate.setActive((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700124 break;
125 case MSG_SET_RINGING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700126 mDelegate.setRinging((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700127 break;
128 case MSG_SET_DIALING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700129 mDelegate.setDialing((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700130 break;
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700131 case MSG_SET_PULLING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700132 mDelegate.setPulling((String) msg.obj, null /*Session.Info*/);
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700133 break;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700134 case MSG_SET_DISCONNECTED: {
135 SomeArgs args = (SomeArgs) msg.obj;
136 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700137 mDelegate.setDisconnected((String) args.arg1, (DisconnectCause) args.arg2,
138 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700139 } finally {
140 args.recycle();
141 }
142 break;
143 }
144 case MSG_SET_ON_HOLD:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700145 mDelegate.setOnHold((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700146 break;
Andrew Lee100e2932014-09-08 15:34:24 -0700147 case MSG_SET_RINGBACK_REQUESTED:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700148 mDelegate.setRingbackRequested((String) msg.obj, msg.arg1 == 1,
149 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700150 break;
Ihab Awad5c9c86e2014-11-12 13:41:16 -0800151 case MSG_SET_CONNECTION_CAPABILITIES:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700152 mDelegate.setConnectionCapabilities((String) msg.obj, msg.arg1,
153 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700154 break;
Tyler Gunn720c6642016-03-22 09:02:47 -0700155 case MSG_SET_CONNECTION_PROPERTIES:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700156 mDelegate.setConnectionProperties((String) msg.obj, msg.arg1,
157 null /*Session.Info*/);
Tyler Gunn720c6642016-03-22 09:02:47 -0700158 break;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700159 case MSG_SET_IS_CONFERENCED: {
160 SomeArgs args = (SomeArgs) msg.obj;
161 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700162 mDelegate.setIsConferenced((String) args.arg1, (String) args.arg2,
163 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700164 } finally {
165 args.recycle();
166 }
167 break;
168 }
Santos Cordon823fd3c2014-08-07 18:35:18 -0700169 case MSG_ADD_CONFERENCE_CALL: {
170 SomeArgs args = (SomeArgs) msg.obj;
171 try {
172 mDelegate.addConferenceCall(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700173 (String) args.arg1, (ParcelableConference) args.arg2,
174 null /*Session.Info*/);
Santos Cordon823fd3c2014-08-07 18:35:18 -0700175 } finally {
176 args.recycle();
177 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700178 break;
Santos Cordon823fd3c2014-08-07 18:35:18 -0700179 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700180 case MSG_REMOVE_CALL:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700181 mDelegate.removeCall((String) msg.obj,
182 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700183 break;
184 case MSG_ON_POST_DIAL_WAIT: {
185 SomeArgs args = (SomeArgs) msg.obj;
186 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700187 mDelegate.onPostDialWait((String) args.arg1, (String) args.arg2,
188 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700189 } finally {
190 args.recycle();
191 }
192 break;
193 }
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800194 case MSG_ON_POST_DIAL_CHAR: {
195 SomeArgs args = (SomeArgs) msg.obj;
196 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700197 mDelegate.onPostDialChar((String) args.arg1, (char) args.argi1,
198 null /*Session.Info*/);
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800199 } finally {
200 args.recycle();
201 }
202 break;
203 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700204 case MSG_QUERY_REMOTE_CALL_SERVICES:
Tyler Gunn4c69fb32019-05-17 10:49:16 -0700205 SomeArgs args2 = (SomeArgs) msg.obj;
206 try {
207 mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) args2.arg1,
208 (String) args2.arg2, null /*Session.Info*/);
209 } finally {
210 args2.recycle();
211 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700212 break;
213 case MSG_SET_VIDEO_STATE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700214 mDelegate.setVideoState((String) msg.obj, msg.arg1, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700215 break;
216 case MSG_SET_VIDEO_CALL_PROVIDER: {
217 SomeArgs args = (SomeArgs) msg.obj;
218 try {
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700219 mDelegate.setVideoProvider((String) args.arg1,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700220 (IVideoProvider) args.arg2, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700221 } finally {
222 args.recycle();
223 }
224 break;
225 }
Andrew Lee100e2932014-09-08 15:34:24 -0700226 case MSG_SET_IS_VOIP_AUDIO_MODE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700227 mDelegate.setIsVoipAudioMode((String) msg.obj, msg.arg1 == 1,
228 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700229 break;
230 case MSG_SET_STATUS_HINTS: {
231 SomeArgs args = (SomeArgs) msg.obj;
232 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700233 mDelegate.setStatusHints((String) args.arg1, (StatusHints) args.arg2,
234 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700235 } finally {
236 args.recycle();
237 }
238 break;
239 }
Andrew Lee100e2932014-09-08 15:34:24 -0700240 case MSG_SET_ADDRESS: {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700241 SomeArgs args = (SomeArgs) msg.obj;
242 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700243 mDelegate.setAddress((String) args.arg1, (Uri) args.arg2, args.argi1,
244 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700245 } finally {
246 args.recycle();
247 }
248 break;
249 }
250 case MSG_SET_CALLER_DISPLAY_NAME: {
251 SomeArgs args = (SomeArgs) msg.obj;
252 try {
253 mDelegate.setCallerDisplayName(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700254 (String) args.arg1, (String) args.arg2, args.argi1,
255 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700256 } finally {
257 args.recycle();
258 }
259 break;
260 }
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700261 case MSG_SET_CONFERENCEABLE_CONNECTIONS: {
262 SomeArgs args = (SomeArgs) msg.obj;
263 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700264 mDelegate.setConferenceableConnections((String) args.arg1,
265 (List<String>) args.arg2, null /*Session.Info*/);
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700266 } finally {
267 args.recycle();
268 }
269 break;
270 }
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700271 case MSG_ADD_EXISTING_CONNECTION: {
272 SomeArgs args = (SomeArgs) msg.obj;
273 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700274 mDelegate.addExistingConnection((String) args.arg1,
275 (ParcelableConnection) args.arg2, null /*Session.Info*/);
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700276 } finally {
277 args.recycle();
278 }
279 break;
280 }
Anthony Lee17455a32015-04-24 15:25:29 -0700281 case MSG_SET_CONFERENCE_MERGE_FAILED: {
282 SomeArgs args = (SomeArgs) msg.obj;
283 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700284 mDelegate.setConferenceMergeFailed((String) args.arg1,
285 null /*Session.Info*/);
Anthony Lee17455a32015-04-24 15:25:29 -0700286 } finally {
287 args.recycle();
288 }
289 break;
290 }
Tyler Gunndee56a82016-03-23 16:06:34 -0700291 case MSG_PUT_EXTRAS: {
Santos Cordon6b7f9552015-05-27 17:21:45 -0700292 SomeArgs args = (SomeArgs) msg.obj;
293 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700294 mDelegate.putExtras((String) args.arg1, (Bundle) args.arg2,
295 null /*Session.Info*/);
Tyler Gunndee56a82016-03-23 16:06:34 -0700296 } finally {
297 args.recycle();
298 }
299 break;
300 }
301 case MSG_REMOVE_EXTRAS: {
302 SomeArgs args = (SomeArgs) msg.obj;
303 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700304 mDelegate.removeExtras((String) args.arg1, (List<String>) args.arg2,
305 null /*Session.Info*/);
Santos Cordon6b7f9552015-05-27 17:21:45 -0700306 } finally {
307 args.recycle();
308 }
Tyler Gunn86c9fb42016-02-24 13:17:21 -0800309 break;
Santos Cordon6b7f9552015-05-27 17:21:45 -0700310 }
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800311 case MSG_ON_CONNECTION_EVENT: {
312 SomeArgs args = (SomeArgs) msg.obj;
313 try {
Tyler Gunn876dbfb2016-03-14 15:18:07 -0700314 mDelegate.onConnectionEvent((String) args.arg1, (String) args.arg2,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700315 (Bundle) args.arg3, null /*Session.Info*/);
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800316 } finally {
317 args.recycle();
318 }
Tyler Gunn86c9fb42016-02-24 13:17:21 -0800319 break;
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800320 }
Tyler Gunnf5035432017-01-09 09:43:12 -0800321 case MSG_SET_AUDIO_ROUTE: {
322 SomeArgs args = (SomeArgs) msg.obj;
323 try {
Hall Liua98f58b52017-11-07 17:59:28 -0800324 mDelegate.setAudioRoute((String) args.arg1, args.argi1, (String) args.arg2,
325 (Session.Info) args.arg3);
Tyler Gunnf5035432017-01-09 09:43:12 -0800326 } finally {
327 args.recycle();
328 }
329 break;
330 }
Hall Liu57006aa2017-02-06 10:49:48 -0800331 case MSG_ON_RTT_INITIATION_SUCCESS:
332 mDelegate.onRttInitiationSuccess((String) msg.obj, null /*Session.Info*/);
333 break;
334 case MSG_ON_RTT_INITIATION_FAILURE:
335 mDelegate.onRttInitiationFailure((String) msg.obj, msg.arg1,
336 null /*Session.Info*/);
337 break;
338 case MSG_ON_RTT_REMOTELY_TERMINATED:
339 mDelegate.onRttSessionRemotelyTerminated((String) msg.obj,
340 null /*Session.Info*/);
341 break;
342 case MSG_ON_RTT_UPGRADE_REQUEST:
343 mDelegate.onRemoteRttRequest((String) msg.obj, null /*Session.Info*/);
344 break;
Srikanth Chintalafcb15012017-05-04 20:58:34 +0530345 case MSG_SET_PHONE_ACCOUNT_CHANGED: {
346 SomeArgs args = (SomeArgs) msg.obj;
347 try {
348 mDelegate.onPhoneAccountChanged((String) args.arg1,
349 (PhoneAccountHandle) args.arg2, null /*Session.Info*/);
350 } finally {
351 args.recycle();
352 }
353 break;
354 }
Pengquan Meng63d25a52017-11-21 18:01:13 -0800355 case MSG_CONNECTION_SERVICE_FOCUS_RELEASED:
356 mDelegate.onConnectionServiceFocusReleased(null /*Session.Info*/);
357 break;
Brad Ebinger31774ae2020-04-08 16:25:12 -0700358 case MSG_SET_CONFERENCE_STATE: {
Tyler Gunn68a73a42018-10-03 15:38:57 -0700359 SomeArgs args = (SomeArgs) msg.obj;
360 try {
361 mDelegate.setConferenceState((String) args.arg1, (Boolean) args.arg2,
362 (Session.Info) args.arg3);
363 } finally {
364 args.recycle();
365 }
Brad Ebinger31774ae2020-04-08 16:25:12 -0700366 break;
367 }
368 case MSG_SET_CALL_DIRECTION: {
369 SomeArgs args = (SomeArgs) msg.obj;
370 try {
371 mDelegate.setCallDirection((String) args.arg1, args.argi1,
372 (Session.Info) args.arg2);
373 } finally {
374 args.recycle();
375 }
376 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700377 }
378 }
379 };
380
381 private final IConnectionServiceAdapter mStub = new IConnectionServiceAdapter.Stub() {
382 @Override
Ihab Awad6107bab2014-08-18 09:23:25 -0700383 public void handleCreateConnectionComplete(
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700384 String id,
385 ConnectionRequest request,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700386 ParcelableConnection connection,
387 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700388 SomeArgs args = SomeArgs.obtain();
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700389 args.arg1 = id;
390 args.arg2 = request;
391 args.arg3 = connection;
Ihab Awad6107bab2014-08-18 09:23:25 -0700392 mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_COMPLETE, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700393 }
394
395 @Override
Ravi Paluri80aa2142019-12-02 11:57:37 +0530396 public void handleCreateConferenceComplete(
397 String id,
398 ConnectionRequest request,
399 ParcelableConference conference,
400 Session.Info sessionInfo) {
401 SomeArgs args = SomeArgs.obtain();
402 args.arg1 = id;
403 args.arg2 = request;
404 args.arg3 = conference;
405 mHandler.obtainMessage(MSG_HANDLE_CREATE_CONFERENCE_COMPLETE, args).sendToTarget();
406 }
407
408
409 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700410 public void setActive(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700411 mHandler.obtainMessage(MSG_SET_ACTIVE, connectionId).sendToTarget();
412 }
413
414 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700415 public void setRinging(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700416 mHandler.obtainMessage(MSG_SET_RINGING, connectionId).sendToTarget();
417 }
418
419 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700420 public void setDialing(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700421 mHandler.obtainMessage(MSG_SET_DIALING, connectionId).sendToTarget();
422 }
423
424 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700425 public void setPulling(String connectionId, Session.Info sessionInfo) {
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700426 mHandler.obtainMessage(MSG_SET_PULLING, connectionId).sendToTarget();
427 }
428
429 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700430 public void setDisconnected(String connectionId, DisconnectCause disconnectCause,
431 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700432 SomeArgs args = SomeArgs.obtain();
433 args.arg1 = connectionId;
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700434 args.arg2 = disconnectCause;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700435 mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
436 }
437
438 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700439 public void setOnHold(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700440 mHandler.obtainMessage(MSG_SET_ON_HOLD, connectionId).sendToTarget();
441 }
442
443 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700444 public void setRingbackRequested(String connectionId, boolean ringback,
445 Session.Info sessionInfo) {
Andrew Lee100e2932014-09-08 15:34:24 -0700446 mHandler.obtainMessage(MSG_SET_RINGBACK_REQUESTED, ringback ? 1 : 0, 0, connectionId)
Ihab Awad5d0410f2014-07-30 10:07:40 -0700447 .sendToTarget();
448 }
449
450 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700451 public void setConnectionCapabilities(String connectionId, int connectionCapabilities,
452 Session.Info sessionInfo) {
Ihab Awad5c9c86e2014-11-12 13:41:16 -0800453 mHandler.obtainMessage(
454 MSG_SET_CONNECTION_CAPABILITIES, connectionCapabilities, 0, connectionId)
Ihab Awad5d0410f2014-07-30 10:07:40 -0700455 .sendToTarget();
456 }
457
458 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700459 public void setConnectionProperties(String connectionId, int connectionProperties,
460 Session.Info sessionInfo) {
Tyler Gunn720c6642016-03-22 09:02:47 -0700461 mHandler.obtainMessage(
462 MSG_SET_CONNECTION_PROPERTIES, connectionProperties, 0, connectionId)
463 .sendToTarget();
464 }
465
466 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700467 public void setConferenceMergeFailed(String callId, Session.Info sessionInfo) {
Anthony Lee17455a32015-04-24 15:25:29 -0700468 SomeArgs args = SomeArgs.obtain();
469 args.arg1 = callId;
470 mHandler.obtainMessage(MSG_SET_CONFERENCE_MERGE_FAILED, args).sendToTarget();
471 }
472
473 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700474 public void setIsConferenced(String callId, String conferenceCallId,
475 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700476 SomeArgs args = SomeArgs.obtain();
477 args.arg1 = callId;
478 args.arg2 = conferenceCallId;
479 mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
480 }
481
482 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700483 public void addConferenceCall(String callId, ParcelableConference parcelableConference,
484 Session.Info sessionInfo) {
Santos Cordon823fd3c2014-08-07 18:35:18 -0700485 SomeArgs args = SomeArgs.obtain();
486 args.arg1 = callId;
487 args.arg2 = parcelableConference;
488 mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700489 }
490
491 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700492 public void removeCall(String connectionId,
493 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700494 mHandler.obtainMessage(MSG_REMOVE_CALL, connectionId).sendToTarget();
495 }
496
497 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700498 public void onPostDialWait(String connectionId, String remainingDigits,
499 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700500 SomeArgs args = SomeArgs.obtain();
501 args.arg1 = connectionId;
502 args.arg2 = remainingDigits;
503 mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
504 }
505
506 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700507 public void onPostDialChar(String connectionId, char nextChar,
508 Session.Info sessionInfo) {
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800509 SomeArgs args = SomeArgs.obtain();
510 args.arg1 = connectionId;
511 args.argi1 = nextChar;
512 mHandler.obtainMessage(MSG_ON_POST_DIAL_CHAR, args).sendToTarget();
513 }
514
515 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700516 public void queryRemoteConnectionServices(RemoteServiceCallback callback,
Tyler Gunn4c69fb32019-05-17 10:49:16 -0700517 String callingPackage, Session.Info sessionInfo) {
518 SomeArgs args = SomeArgs.obtain();
519 args.arg1 = callback;
520 args.arg2 = callingPackage;
Tyler Gunn156a33b2019-05-30 16:52:28 -0700521 mHandler.obtainMessage(MSG_QUERY_REMOTE_CALL_SERVICES, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700522 }
523
524 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700525 public void setVideoState(String connectionId, int videoState,
526 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700527 mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, connectionId).sendToTarget();
528 }
529
530 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700531 public void setVideoProvider(String connectionId, IVideoProvider videoProvider,
532 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700533 SomeArgs args = SomeArgs.obtain();
534 args.arg1 = connectionId;
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700535 args.arg2 = videoProvider;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700536 mHandler.obtainMessage(MSG_SET_VIDEO_CALL_PROVIDER, args).sendToTarget();
537 }
538
539 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700540 public final void setIsVoipAudioMode(String connectionId, boolean isVoip,
541 Session.Info sessionInfo) {
Andrew Lee100e2932014-09-08 15:34:24 -0700542 mHandler.obtainMessage(MSG_SET_IS_VOIP_AUDIO_MODE, isVoip ? 1 : 0, 0,
Ihab Awad5d0410f2014-07-30 10:07:40 -0700543 connectionId).sendToTarget();
544 }
545
546 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700547 public final void setStatusHints(String connectionId, StatusHints statusHints,
548 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700549 SomeArgs args = SomeArgs.obtain();
550 args.arg1 = connectionId;
551 args.arg2 = statusHints;
552 mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
553 }
554
555 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700556 public final void setAddress(String connectionId, Uri address, int presentation,
557 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700558 SomeArgs args = SomeArgs.obtain();
559 args.arg1 = connectionId;
Andrew Lee100e2932014-09-08 15:34:24 -0700560 args.arg2 = address;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700561 args.argi1 = presentation;
Andrew Lee100e2932014-09-08 15:34:24 -0700562 mHandler.obtainMessage(MSG_SET_ADDRESS, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700563 }
564
565 @Override
566 public final void setCallerDisplayName(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700567 String connectionId, String callerDisplayName, int presentation,
568 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700569 SomeArgs args = SomeArgs.obtain();
570 args.arg1 = connectionId;
571 args.arg2 = callerDisplayName;
572 args.argi1 = presentation;
573 mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
574 }
575
576 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700577 public final void setConferenceableConnections(String connectionId,
578 List<String> conferenceableConnectionIds, Session.Info sessionInfo) {
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700579 SomeArgs args = SomeArgs.obtain();
580 args.arg1 = connectionId;
581 args.arg2 = conferenceableConnectionIds;
582 mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
583 }
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700584
585 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700586 public final void addExistingConnection(String connectionId,
587 ParcelableConnection connection, Session.Info sessionInfo) {
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700588 SomeArgs args = SomeArgs.obtain();
589 args.arg1 = connectionId;
590 args.arg2 = connection;
591 mHandler.obtainMessage(MSG_ADD_EXISTING_CONNECTION, args).sendToTarget();
592 }
Santos Cordon6b7f9552015-05-27 17:21:45 -0700593
594 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700595 public final void putExtras(String connectionId, Bundle extras, Session.Info sessionInfo) {
Santos Cordon6b7f9552015-05-27 17:21:45 -0700596 SomeArgs args = SomeArgs.obtain();
597 args.arg1 = connectionId;
598 args.arg2 = extras;
Tyler Gunndee56a82016-03-23 16:06:34 -0700599 mHandler.obtainMessage(MSG_PUT_EXTRAS, args).sendToTarget();
600 }
601
602 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700603 public final void removeExtras(String connectionId, List<String> keys,
604 Session.Info sessionInfo) {
Tyler Gunndee56a82016-03-23 16:06:34 -0700605 SomeArgs args = SomeArgs.obtain();
606 args.arg1 = connectionId;
607 args.arg2 = keys;
608 mHandler.obtainMessage(MSG_REMOVE_EXTRAS, args).sendToTarget();
Santos Cordon6b7f9552015-05-27 17:21:45 -0700609 }
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800610
611 @Override
Tyler Gunnf5035432017-01-09 09:43:12 -0800612 public final void setAudioRoute(String connectionId, int audioRoute,
Hall Liua98f58b52017-11-07 17:59:28 -0800613 String bluetoothAddress, Session.Info sessionInfo) {
Tyler Gunnf5035432017-01-09 09:43:12 -0800614 SomeArgs args = SomeArgs.obtain();
615 args.arg1 = connectionId;
616 args.argi1 = audioRoute;
Hall Liua98f58b52017-11-07 17:59:28 -0800617 args.arg2 = bluetoothAddress;
618 args.arg3 = sessionInfo;
Tyler Gunnf5035432017-01-09 09:43:12 -0800619 mHandler.obtainMessage(MSG_SET_AUDIO_ROUTE, args).sendToTarget();
620 }
621
622 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700623 public final void onConnectionEvent(String connectionId, String event, Bundle extras,
624 Session.Info sessionInfo) {
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800625 SomeArgs args = SomeArgs.obtain();
626 args.arg1 = connectionId;
627 args.arg2 = event;
Tyler Gunn876dbfb2016-03-14 15:18:07 -0700628 args.arg3 = extras;
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800629 mHandler.obtainMessage(MSG_ON_CONNECTION_EVENT, args).sendToTarget();
630 }
Hall Liu57006aa2017-02-06 10:49:48 -0800631
632 @Override
633 public void onRttInitiationSuccess(String connectionId, Session.Info sessionInfo)
634 throws RemoteException {
635 mHandler.obtainMessage(MSG_ON_RTT_INITIATION_SUCCESS, connectionId).sendToTarget();
636 }
637
638 @Override
639 public void onRttInitiationFailure(String connectionId, int reason,
640 Session.Info sessionInfo)
641 throws RemoteException {
642 mHandler.obtainMessage(MSG_ON_RTT_INITIATION_FAILURE, reason, 0, connectionId)
643 .sendToTarget();
644 }
645
646 @Override
647 public void onRttSessionRemotelyTerminated(String connectionId, Session.Info sessionInfo)
648 throws RemoteException {
649 mHandler.obtainMessage(MSG_ON_RTT_REMOTELY_TERMINATED, connectionId).sendToTarget();
650 }
651
652 @Override
653 public void onRemoteRttRequest(String connectionId, Session.Info sessionInfo)
654 throws RemoteException {
655 mHandler.obtainMessage(MSG_ON_RTT_UPGRADE_REQUEST, connectionId).sendToTarget();
656 }
Srikanth Chintalafcb15012017-05-04 20:58:34 +0530657
658 @Override
659 public void onPhoneAccountChanged(String callId, PhoneAccountHandle pHandle,
660 Session.Info sessionInfo) {
661 SomeArgs args = SomeArgs.obtain();
662 args.arg1 = callId;
663 args.arg2 = pHandle;
664 mHandler.obtainMessage(MSG_SET_PHONE_ACCOUNT_CHANGED, args).sendToTarget();
665 }
Pengquan Meng63d25a52017-11-21 18:01:13 -0800666
667 @Override
668 public void onConnectionServiceFocusReleased(Session.Info sessionInfo) {
669 mHandler.obtainMessage(MSG_CONNECTION_SERVICE_FOCUS_RELEASED).sendToTarget();
670 }
Mengjun Leng25707742017-07-04 11:10:37 +0800671
672 @Override
673 public void resetConnectionTime(String callId, Session.Info sessionInfo) {
674 // Do nothing
675 }
Tyler Gunn68a73a42018-10-03 15:38:57 -0700676
677 @Override
678 public void setConferenceState(String callId, boolean isConference,
679 Session.Info sessionInfo) {
680 SomeArgs args = SomeArgs.obtain();
681 args.arg1 = callId;
682 args.arg2 = isConference;
683 args.arg3 = sessionInfo;
684 mHandler.obtainMessage(MSG_SET_CONFERENCE_STATE, args).sendToTarget();
685 }
Brad Ebinger31774ae2020-04-08 16:25:12 -0700686
687 @Override
688 public void setCallDirection(String callId, int direction,
689 Session.Info sessionInfo) {
690 SomeArgs args = SomeArgs.obtain();
691 args.arg1 = callId;
692 args.argi1 = direction;
693 args.arg2 = sessionInfo;
694 mHandler.obtainMessage(MSG_SET_CALL_DIRECTION, args).sendToTarget();
695 }
Junhoedf3d822022-11-24 09:26:37 +0000696
697 @Override
698 public void requestCallEndpointChange(String callId, CallEndpoint endpoint,
699 ResultReceiver callback, Session.Info sessionInfo) {
700 // Do nothing
701 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700702 };
703
704 public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
705 mDelegate = delegate;
706 }
707
708 public IConnectionServiceAdapter getStub() {
709 return mStub;
710 }
711}