blob: 79ad51b92b81e6f93439aab5396425f7834bb888 [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;
Brad Ebinger4d75bee2016-10-28 12:29:55 -070024import android.telecom.Logging.Session;
Ihab Awad5d0410f2014-07-30 10:07:40 -070025
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070026import com.android.internal.os.SomeArgs;
Tyler Gunnef9f6f92014-09-12 22:16:17 -070027import com.android.internal.telecom.IConnectionServiceAdapter;
28import com.android.internal.telecom.IVideoProvider;
29import com.android.internal.telecom.RemoteServiceCallback;
Santos Cordon7c7bc7f2014-07-28 18:15:48 -070030
31import java.util.List;
32
Ihab Awad5d0410f2014-07-30 10:07:40 -070033/**
34 * A component that provides an RPC servant implementation of {@link IConnectionServiceAdapter},
35 * posting incoming messages on the main thread on a client-supplied delegate object.
36 *
37 * TODO: Generate this and similar classes using a compiler starting from AIDL interfaces.
38 *
39 * @hide
40 */
41final class ConnectionServiceAdapterServant {
Ihab Awad6107bab2014-08-18 09:23:25 -070042 private static final int MSG_HANDLE_CREATE_CONNECTION_COMPLETE = 1;
43 private static final int MSG_SET_ACTIVE = 2;
44 private static final int MSG_SET_RINGING = 3;
45 private static final int MSG_SET_DIALING = 4;
46 private static final int MSG_SET_DISCONNECTED = 5;
47 private static final int MSG_SET_ON_HOLD = 6;
Andrew Lee100e2932014-09-08 15:34:24 -070048 private static final int MSG_SET_RINGBACK_REQUESTED = 7;
Ihab Awad5c9c86e2014-11-12 13:41:16 -080049 private static final int MSG_SET_CONNECTION_CAPABILITIES = 8;
Ihab Awad6107bab2014-08-18 09:23:25 -070050 private static final int MSG_SET_IS_CONFERENCED = 9;
51 private static final int MSG_ADD_CONFERENCE_CALL = 10;
52 private static final int MSG_REMOVE_CALL = 11;
53 private static final int MSG_ON_POST_DIAL_WAIT = 12;
54 private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 13;
55 private static final int MSG_SET_VIDEO_STATE = 14;
56 private static final int MSG_SET_VIDEO_CALL_PROVIDER = 15;
Andrew Lee100e2932014-09-08 15:34:24 -070057 private static final int MSG_SET_IS_VOIP_AUDIO_MODE = 16;
Ihab Awad6107bab2014-08-18 09:23:25 -070058 private static final int MSG_SET_STATUS_HINTS = 17;
Andrew Lee100e2932014-09-08 15:34:24 -070059 private static final int MSG_SET_ADDRESS = 18;
Ihab Awad6107bab2014-08-18 09:23:25 -070060 private static final int MSG_SET_CALLER_DISPLAY_NAME = 19;
Evan Charlton23dc2412014-09-03 10:07:03 -070061 private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
Tyler Gunn4a57b9b2014-10-30 14:27:48 -070062 private static final int MSG_ADD_EXISTING_CONNECTION = 21;
Nancy Chen27d1c2d2014-12-15 16:12:50 -080063 private static final int MSG_ON_POST_DIAL_CHAR = 22;
Anthony Lee17455a32015-04-24 15:25:29 -070064 private static final int MSG_SET_CONFERENCE_MERGE_FAILED = 23;
Tyler Gunndee56a82016-03-23 16:06:34 -070065 private static final int MSG_PUT_EXTRAS = 24;
66 private static final int MSG_REMOVE_EXTRAS = 25;
67 private static final int MSG_ON_CONNECTION_EVENT = 26;
Tyler Gunn720c6642016-03-22 09:02:47 -070068 private static final int MSG_SET_CONNECTION_PROPERTIES = 27;
Tyler Gunnc96b5e02016-07-07 22:53:57 -070069 private static final int MSG_SET_PULLING = 28;
Tyler Gunnf5035432017-01-09 09:43:12 -080070 private static final int MSG_SET_AUDIO_ROUTE = 29;
Hall Liu57006aa2017-02-06 10:49:48 -080071 private static final int MSG_ON_RTT_INITIATION_SUCCESS = 30;
72 private static final int MSG_ON_RTT_INITIATION_FAILURE = 31;
73 private static final int MSG_ON_RTT_REMOTELY_TERMINATED = 32;
74 private static final int MSG_ON_RTT_UPGRADE_REQUEST = 33;
Srikanth Chintalafcb15012017-05-04 20:58:34 +053075 private static final int MSG_SET_PHONE_ACCOUNT_CHANGED = 34;
Pengquan Meng63d25a52017-11-21 18:01:13 -080076 private static final int MSG_CONNECTION_SERVICE_FOCUS_RELEASED = 35;
Tyler Gunn68a73a42018-10-03 15:38:57 -070077 private static final int MSG_SET_CONFERENCE_STATE = 36;
Ravi Paluri80aa2142019-12-02 11:57:37 +053078 private static final int MSG_HANDLE_CREATE_CONFERENCE_COMPLETE = 37;
Ihab Awad5d0410f2014-07-30 10:07:40 -070079
80 private final IConnectionServiceAdapter mDelegate;
81
82 private final Handler mHandler = new Handler() {
83 @Override
84 public void handleMessage(Message msg) {
85 try {
86 internalHandleMessage(msg);
87 } catch (RemoteException e) {
88 }
89 }
90
91 // Internal method defined to centralize handling of RemoteException
92 private void internalHandleMessage(Message msg) throws RemoteException {
93 switch (msg.what) {
Ihab Awad6107bab2014-08-18 09:23:25 -070094 case MSG_HANDLE_CREATE_CONNECTION_COMPLETE: {
Ihab Awad5d0410f2014-07-30 10:07:40 -070095 SomeArgs args = (SomeArgs) msg.obj;
96 try {
Ihab Awad6107bab2014-08-18 09:23:25 -070097 mDelegate.handleCreateConnectionComplete(
Ihab Awadb19a0bc2014-08-07 19:46:01 -070098 (String) args.arg1,
99 (ConnectionRequest) args.arg2,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700100 (ParcelableConnection) args.arg3,
101 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700102 } finally {
103 args.recycle();
104 }
105 break;
106 }
Ravi Paluri80aa2142019-12-02 11:57:37 +0530107 case MSG_HANDLE_CREATE_CONFERENCE_COMPLETE: {
108 SomeArgs args = (SomeArgs) msg.obj;
109 try {
110 mDelegate.handleCreateConferenceComplete(
111 (String) args.arg1,
112 (ConnectionRequest) args.arg2,
113 (ParcelableConference) args.arg3,
114 null /*Session.Info*/);
115 } finally {
116 args.recycle();
117 }
118 break;
119 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700120 case MSG_SET_ACTIVE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700121 mDelegate.setActive((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700122 break;
123 case MSG_SET_RINGING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700124 mDelegate.setRinging((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700125 break;
126 case MSG_SET_DIALING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700127 mDelegate.setDialing((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700128 break;
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700129 case MSG_SET_PULLING:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700130 mDelegate.setPulling((String) msg.obj, null /*Session.Info*/);
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700131 break;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700132 case MSG_SET_DISCONNECTED: {
133 SomeArgs args = (SomeArgs) msg.obj;
134 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700135 mDelegate.setDisconnected((String) args.arg1, (DisconnectCause) args.arg2,
136 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700137 } finally {
138 args.recycle();
139 }
140 break;
141 }
142 case MSG_SET_ON_HOLD:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700143 mDelegate.setOnHold((String) msg.obj, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700144 break;
Andrew Lee100e2932014-09-08 15:34:24 -0700145 case MSG_SET_RINGBACK_REQUESTED:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700146 mDelegate.setRingbackRequested((String) msg.obj, msg.arg1 == 1,
147 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700148 break;
Ihab Awad5c9c86e2014-11-12 13:41:16 -0800149 case MSG_SET_CONNECTION_CAPABILITIES:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700150 mDelegate.setConnectionCapabilities((String) msg.obj, msg.arg1,
151 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700152 break;
Tyler Gunn720c6642016-03-22 09:02:47 -0700153 case MSG_SET_CONNECTION_PROPERTIES:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700154 mDelegate.setConnectionProperties((String) msg.obj, msg.arg1,
155 null /*Session.Info*/);
Tyler Gunn720c6642016-03-22 09:02:47 -0700156 break;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700157 case MSG_SET_IS_CONFERENCED: {
158 SomeArgs args = (SomeArgs) msg.obj;
159 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700160 mDelegate.setIsConferenced((String) args.arg1, (String) args.arg2,
161 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700162 } finally {
163 args.recycle();
164 }
165 break;
166 }
Santos Cordon823fd3c2014-08-07 18:35:18 -0700167 case MSG_ADD_CONFERENCE_CALL: {
168 SomeArgs args = (SomeArgs) msg.obj;
169 try {
170 mDelegate.addConferenceCall(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700171 (String) args.arg1, (ParcelableConference) args.arg2,
172 null /*Session.Info*/);
Santos Cordon823fd3c2014-08-07 18:35:18 -0700173 } finally {
174 args.recycle();
175 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700176 break;
Santos Cordon823fd3c2014-08-07 18:35:18 -0700177 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700178 case MSG_REMOVE_CALL:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700179 mDelegate.removeCall((String) msg.obj,
180 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700181 break;
182 case MSG_ON_POST_DIAL_WAIT: {
183 SomeArgs args = (SomeArgs) msg.obj;
184 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700185 mDelegate.onPostDialWait((String) args.arg1, (String) args.arg2,
186 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700187 } finally {
188 args.recycle();
189 }
190 break;
191 }
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800192 case MSG_ON_POST_DIAL_CHAR: {
193 SomeArgs args = (SomeArgs) msg.obj;
194 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700195 mDelegate.onPostDialChar((String) args.arg1, (char) args.argi1,
196 null /*Session.Info*/);
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800197 } finally {
198 args.recycle();
199 }
200 break;
201 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700202 case MSG_QUERY_REMOTE_CALL_SERVICES:
Tyler Gunn4c69fb32019-05-17 10:49:16 -0700203 SomeArgs args2 = (SomeArgs) msg.obj;
204 try {
205 mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) args2.arg1,
206 (String) args2.arg2, null /*Session.Info*/);
207 } finally {
208 args2.recycle();
209 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700210 break;
211 case MSG_SET_VIDEO_STATE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700212 mDelegate.setVideoState((String) msg.obj, msg.arg1, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700213 break;
214 case MSG_SET_VIDEO_CALL_PROVIDER: {
215 SomeArgs args = (SomeArgs) msg.obj;
216 try {
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700217 mDelegate.setVideoProvider((String) args.arg1,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700218 (IVideoProvider) args.arg2, null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700219 } finally {
220 args.recycle();
221 }
222 break;
223 }
Andrew Lee100e2932014-09-08 15:34:24 -0700224 case MSG_SET_IS_VOIP_AUDIO_MODE:
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700225 mDelegate.setIsVoipAudioMode((String) msg.obj, msg.arg1 == 1,
226 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700227 break;
228 case MSG_SET_STATUS_HINTS: {
229 SomeArgs args = (SomeArgs) msg.obj;
230 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700231 mDelegate.setStatusHints((String) args.arg1, (StatusHints) args.arg2,
232 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700233 } finally {
234 args.recycle();
235 }
236 break;
237 }
Andrew Lee100e2932014-09-08 15:34:24 -0700238 case MSG_SET_ADDRESS: {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700239 SomeArgs args = (SomeArgs) msg.obj;
240 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700241 mDelegate.setAddress((String) args.arg1, (Uri) args.arg2, args.argi1,
242 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700243 } finally {
244 args.recycle();
245 }
246 break;
247 }
248 case MSG_SET_CALLER_DISPLAY_NAME: {
249 SomeArgs args = (SomeArgs) msg.obj;
250 try {
251 mDelegate.setCallerDisplayName(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700252 (String) args.arg1, (String) args.arg2, args.argi1,
253 null /*Session.Info*/);
Ihab Awad5d0410f2014-07-30 10:07:40 -0700254 } finally {
255 args.recycle();
256 }
257 break;
258 }
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700259 case MSG_SET_CONFERENCEABLE_CONNECTIONS: {
260 SomeArgs args = (SomeArgs) msg.obj;
261 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700262 mDelegate.setConferenceableConnections((String) args.arg1,
263 (List<String>) args.arg2, null /*Session.Info*/);
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700264 } finally {
265 args.recycle();
266 }
267 break;
268 }
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700269 case MSG_ADD_EXISTING_CONNECTION: {
270 SomeArgs args = (SomeArgs) msg.obj;
271 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700272 mDelegate.addExistingConnection((String) args.arg1,
273 (ParcelableConnection) args.arg2, null /*Session.Info*/);
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700274 } finally {
275 args.recycle();
276 }
277 break;
278 }
Anthony Lee17455a32015-04-24 15:25:29 -0700279 case MSG_SET_CONFERENCE_MERGE_FAILED: {
280 SomeArgs args = (SomeArgs) msg.obj;
281 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700282 mDelegate.setConferenceMergeFailed((String) args.arg1,
283 null /*Session.Info*/);
Anthony Lee17455a32015-04-24 15:25:29 -0700284 } finally {
285 args.recycle();
286 }
287 break;
288 }
Tyler Gunndee56a82016-03-23 16:06:34 -0700289 case MSG_PUT_EXTRAS: {
Santos Cordon6b7f9552015-05-27 17:21:45 -0700290 SomeArgs args = (SomeArgs) msg.obj;
291 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700292 mDelegate.putExtras((String) args.arg1, (Bundle) args.arg2,
293 null /*Session.Info*/);
Tyler Gunndee56a82016-03-23 16:06:34 -0700294 } finally {
295 args.recycle();
296 }
297 break;
298 }
299 case MSG_REMOVE_EXTRAS: {
300 SomeArgs args = (SomeArgs) msg.obj;
301 try {
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700302 mDelegate.removeExtras((String) args.arg1, (List<String>) args.arg2,
303 null /*Session.Info*/);
Santos Cordon6b7f9552015-05-27 17:21:45 -0700304 } finally {
305 args.recycle();
306 }
Tyler Gunn86c9fb42016-02-24 13:17:21 -0800307 break;
Santos Cordon6b7f9552015-05-27 17:21:45 -0700308 }
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800309 case MSG_ON_CONNECTION_EVENT: {
310 SomeArgs args = (SomeArgs) msg.obj;
311 try {
Tyler Gunn876dbfb2016-03-14 15:18:07 -0700312 mDelegate.onConnectionEvent((String) args.arg1, (String) args.arg2,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700313 (Bundle) args.arg3, null /*Session.Info*/);
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800314 } finally {
315 args.recycle();
316 }
Tyler Gunn86c9fb42016-02-24 13:17:21 -0800317 break;
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800318 }
Tyler Gunnf5035432017-01-09 09:43:12 -0800319 case MSG_SET_AUDIO_ROUTE: {
320 SomeArgs args = (SomeArgs) msg.obj;
321 try {
Hall Liua98f58b52017-11-07 17:59:28 -0800322 mDelegate.setAudioRoute((String) args.arg1, args.argi1, (String) args.arg2,
323 (Session.Info) args.arg3);
Tyler Gunnf5035432017-01-09 09:43:12 -0800324 } finally {
325 args.recycle();
326 }
327 break;
328 }
Hall Liu57006aa2017-02-06 10:49:48 -0800329 case MSG_ON_RTT_INITIATION_SUCCESS:
330 mDelegate.onRttInitiationSuccess((String) msg.obj, null /*Session.Info*/);
331 break;
332 case MSG_ON_RTT_INITIATION_FAILURE:
333 mDelegate.onRttInitiationFailure((String) msg.obj, msg.arg1,
334 null /*Session.Info*/);
335 break;
336 case MSG_ON_RTT_REMOTELY_TERMINATED:
337 mDelegate.onRttSessionRemotelyTerminated((String) msg.obj,
338 null /*Session.Info*/);
339 break;
340 case MSG_ON_RTT_UPGRADE_REQUEST:
341 mDelegate.onRemoteRttRequest((String) msg.obj, null /*Session.Info*/);
342 break;
Srikanth Chintalafcb15012017-05-04 20:58:34 +0530343 case MSG_SET_PHONE_ACCOUNT_CHANGED: {
344 SomeArgs args = (SomeArgs) msg.obj;
345 try {
346 mDelegate.onPhoneAccountChanged((String) args.arg1,
347 (PhoneAccountHandle) args.arg2, null /*Session.Info*/);
348 } finally {
349 args.recycle();
350 }
351 break;
352 }
Pengquan Meng63d25a52017-11-21 18:01:13 -0800353 case MSG_CONNECTION_SERVICE_FOCUS_RELEASED:
354 mDelegate.onConnectionServiceFocusReleased(null /*Session.Info*/);
355 break;
Tyler Gunn68a73a42018-10-03 15:38:57 -0700356 case MSG_SET_CONFERENCE_STATE:
357 SomeArgs args = (SomeArgs) msg.obj;
358 try {
359 mDelegate.setConferenceState((String) args.arg1, (Boolean) args.arg2,
360 (Session.Info) args.arg3);
361 } finally {
362 args.recycle();
363 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700364 }
365 }
366 };
367
368 private final IConnectionServiceAdapter mStub = new IConnectionServiceAdapter.Stub() {
369 @Override
Ihab Awad6107bab2014-08-18 09:23:25 -0700370 public void handleCreateConnectionComplete(
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700371 String id,
372 ConnectionRequest request,
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700373 ParcelableConnection connection,
374 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700375 SomeArgs args = SomeArgs.obtain();
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700376 args.arg1 = id;
377 args.arg2 = request;
378 args.arg3 = connection;
Ihab Awad6107bab2014-08-18 09:23:25 -0700379 mHandler.obtainMessage(MSG_HANDLE_CREATE_CONNECTION_COMPLETE, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700380 }
381
382 @Override
Ravi Paluri80aa2142019-12-02 11:57:37 +0530383 public void handleCreateConferenceComplete(
384 String id,
385 ConnectionRequest request,
386 ParcelableConference conference,
387 Session.Info sessionInfo) {
388 SomeArgs args = SomeArgs.obtain();
389 args.arg1 = id;
390 args.arg2 = request;
391 args.arg3 = conference;
392 mHandler.obtainMessage(MSG_HANDLE_CREATE_CONFERENCE_COMPLETE, args).sendToTarget();
393 }
394
395
396 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700397 public void setActive(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700398 mHandler.obtainMessage(MSG_SET_ACTIVE, connectionId).sendToTarget();
399 }
400
401 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700402 public void setRinging(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700403 mHandler.obtainMessage(MSG_SET_RINGING, connectionId).sendToTarget();
404 }
405
406 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700407 public void setDialing(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700408 mHandler.obtainMessage(MSG_SET_DIALING, connectionId).sendToTarget();
409 }
410
411 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700412 public void setPulling(String connectionId, Session.Info sessionInfo) {
Tyler Gunnc96b5e02016-07-07 22:53:57 -0700413 mHandler.obtainMessage(MSG_SET_PULLING, connectionId).sendToTarget();
414 }
415
416 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700417 public void setDisconnected(String connectionId, DisconnectCause disconnectCause,
418 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700419 SomeArgs args = SomeArgs.obtain();
420 args.arg1 = connectionId;
Andrew Lee7f3d41f2014-09-11 17:33:16 -0700421 args.arg2 = disconnectCause;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700422 mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
423 }
424
425 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700426 public void setOnHold(String connectionId, Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700427 mHandler.obtainMessage(MSG_SET_ON_HOLD, connectionId).sendToTarget();
428 }
429
430 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700431 public void setRingbackRequested(String connectionId, boolean ringback,
432 Session.Info sessionInfo) {
Andrew Lee100e2932014-09-08 15:34:24 -0700433 mHandler.obtainMessage(MSG_SET_RINGBACK_REQUESTED, ringback ? 1 : 0, 0, connectionId)
Ihab Awad5d0410f2014-07-30 10:07:40 -0700434 .sendToTarget();
435 }
436
437 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700438 public void setConnectionCapabilities(String connectionId, int connectionCapabilities,
439 Session.Info sessionInfo) {
Ihab Awad5c9c86e2014-11-12 13:41:16 -0800440 mHandler.obtainMessage(
441 MSG_SET_CONNECTION_CAPABILITIES, connectionCapabilities, 0, connectionId)
Ihab Awad5d0410f2014-07-30 10:07:40 -0700442 .sendToTarget();
443 }
444
445 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700446 public void setConnectionProperties(String connectionId, int connectionProperties,
447 Session.Info sessionInfo) {
Tyler Gunn720c6642016-03-22 09:02:47 -0700448 mHandler.obtainMessage(
449 MSG_SET_CONNECTION_PROPERTIES, connectionProperties, 0, connectionId)
450 .sendToTarget();
451 }
452
453 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700454 public void setConferenceMergeFailed(String callId, Session.Info sessionInfo) {
Anthony Lee17455a32015-04-24 15:25:29 -0700455 SomeArgs args = SomeArgs.obtain();
456 args.arg1 = callId;
457 mHandler.obtainMessage(MSG_SET_CONFERENCE_MERGE_FAILED, args).sendToTarget();
458 }
459
460 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700461 public void setIsConferenced(String callId, String conferenceCallId,
462 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700463 SomeArgs args = SomeArgs.obtain();
464 args.arg1 = callId;
465 args.arg2 = conferenceCallId;
466 mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
467 }
468
469 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700470 public void addConferenceCall(String callId, ParcelableConference parcelableConference,
471 Session.Info sessionInfo) {
Santos Cordon823fd3c2014-08-07 18:35:18 -0700472 SomeArgs args = SomeArgs.obtain();
473 args.arg1 = callId;
474 args.arg2 = parcelableConference;
475 mHandler.obtainMessage(MSG_ADD_CONFERENCE_CALL, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700476 }
477
478 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700479 public void removeCall(String connectionId,
480 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700481 mHandler.obtainMessage(MSG_REMOVE_CALL, connectionId).sendToTarget();
482 }
483
484 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700485 public void onPostDialWait(String connectionId, String remainingDigits,
486 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700487 SomeArgs args = SomeArgs.obtain();
488 args.arg1 = connectionId;
489 args.arg2 = remainingDigits;
490 mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
491 }
492
493 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700494 public void onPostDialChar(String connectionId, char nextChar,
495 Session.Info sessionInfo) {
Nancy Chen27d1c2d2014-12-15 16:12:50 -0800496 SomeArgs args = SomeArgs.obtain();
497 args.arg1 = connectionId;
498 args.argi1 = nextChar;
499 mHandler.obtainMessage(MSG_ON_POST_DIAL_CHAR, args).sendToTarget();
500 }
501
502 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700503 public void queryRemoteConnectionServices(RemoteServiceCallback callback,
Tyler Gunn4c69fb32019-05-17 10:49:16 -0700504 String callingPackage, Session.Info sessionInfo) {
505 SomeArgs args = SomeArgs.obtain();
506 args.arg1 = callback;
507 args.arg2 = callingPackage;
Tyler Gunn156a33b2019-05-30 16:52:28 -0700508 mHandler.obtainMessage(MSG_QUERY_REMOTE_CALL_SERVICES, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700509 }
510
511 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700512 public void setVideoState(String connectionId, int videoState,
513 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700514 mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState, 0, connectionId).sendToTarget();
515 }
516
517 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700518 public void setVideoProvider(String connectionId, IVideoProvider videoProvider,
519 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700520 SomeArgs args = SomeArgs.obtain();
521 args.arg1 = connectionId;
Ihab Awadb19a0bc2014-08-07 19:46:01 -0700522 args.arg2 = videoProvider;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700523 mHandler.obtainMessage(MSG_SET_VIDEO_CALL_PROVIDER, args).sendToTarget();
524 }
525
526 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700527 public final void setIsVoipAudioMode(String connectionId, boolean isVoip,
528 Session.Info sessionInfo) {
Andrew Lee100e2932014-09-08 15:34:24 -0700529 mHandler.obtainMessage(MSG_SET_IS_VOIP_AUDIO_MODE, isVoip ? 1 : 0, 0,
Ihab Awad5d0410f2014-07-30 10:07:40 -0700530 connectionId).sendToTarget();
531 }
532
533 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700534 public final void setStatusHints(String connectionId, StatusHints statusHints,
535 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700536 SomeArgs args = SomeArgs.obtain();
537 args.arg1 = connectionId;
538 args.arg2 = statusHints;
539 mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
540 }
541
542 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700543 public final void setAddress(String connectionId, Uri address, int presentation,
544 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700545 SomeArgs args = SomeArgs.obtain();
546 args.arg1 = connectionId;
Andrew Lee100e2932014-09-08 15:34:24 -0700547 args.arg2 = address;
Ihab Awad5d0410f2014-07-30 10:07:40 -0700548 args.argi1 = presentation;
Andrew Lee100e2932014-09-08 15:34:24 -0700549 mHandler.obtainMessage(MSG_SET_ADDRESS, args).sendToTarget();
Ihab Awad5d0410f2014-07-30 10:07:40 -0700550 }
551
552 @Override
553 public final void setCallerDisplayName(
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700554 String connectionId, String callerDisplayName, int presentation,
555 Session.Info sessionInfo) {
Ihab Awad5d0410f2014-07-30 10:07:40 -0700556 SomeArgs args = SomeArgs.obtain();
557 args.arg1 = connectionId;
558 args.arg2 = callerDisplayName;
559 args.argi1 = presentation;
560 mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
561 }
562
563 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700564 public final void setConferenceableConnections(String connectionId,
565 List<String> conferenceableConnectionIds, Session.Info sessionInfo) {
Santos Cordon7c7bc7f2014-07-28 18:15:48 -0700566 SomeArgs args = SomeArgs.obtain();
567 args.arg1 = connectionId;
568 args.arg2 = conferenceableConnectionIds;
569 mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
570 }
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700571
572 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700573 public final void addExistingConnection(String connectionId,
574 ParcelableConnection connection, Session.Info sessionInfo) {
Tyler Gunn4a57b9b2014-10-30 14:27:48 -0700575 SomeArgs args = SomeArgs.obtain();
576 args.arg1 = connectionId;
577 args.arg2 = connection;
578 mHandler.obtainMessage(MSG_ADD_EXISTING_CONNECTION, args).sendToTarget();
579 }
Santos Cordon6b7f9552015-05-27 17:21:45 -0700580
581 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700582 public final void putExtras(String connectionId, Bundle extras, Session.Info sessionInfo) {
Santos Cordon6b7f9552015-05-27 17:21:45 -0700583 SomeArgs args = SomeArgs.obtain();
584 args.arg1 = connectionId;
585 args.arg2 = extras;
Tyler Gunndee56a82016-03-23 16:06:34 -0700586 mHandler.obtainMessage(MSG_PUT_EXTRAS, args).sendToTarget();
587 }
588
589 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700590 public final void removeExtras(String connectionId, List<String> keys,
591 Session.Info sessionInfo) {
Tyler Gunndee56a82016-03-23 16:06:34 -0700592 SomeArgs args = SomeArgs.obtain();
593 args.arg1 = connectionId;
594 args.arg2 = keys;
595 mHandler.obtainMessage(MSG_REMOVE_EXTRAS, args).sendToTarget();
Santos Cordon6b7f9552015-05-27 17:21:45 -0700596 }
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800597
598 @Override
Tyler Gunnf5035432017-01-09 09:43:12 -0800599 public final void setAudioRoute(String connectionId, int audioRoute,
Hall Liua98f58b52017-11-07 17:59:28 -0800600 String bluetoothAddress, Session.Info sessionInfo) {
Tyler Gunnf5035432017-01-09 09:43:12 -0800601 SomeArgs args = SomeArgs.obtain();
602 args.arg1 = connectionId;
603 args.argi1 = audioRoute;
Hall Liua98f58b52017-11-07 17:59:28 -0800604 args.arg2 = bluetoothAddress;
605 args.arg3 = sessionInfo;
Tyler Gunnf5035432017-01-09 09:43:12 -0800606 mHandler.obtainMessage(MSG_SET_AUDIO_ROUTE, args).sendToTarget();
607 }
608
609 @Override
Brad Ebinger4d75bee2016-10-28 12:29:55 -0700610 public final void onConnectionEvent(String connectionId, String event, Bundle extras,
611 Session.Info sessionInfo) {
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800612 SomeArgs args = SomeArgs.obtain();
613 args.arg1 = connectionId;
614 args.arg2 = event;
Tyler Gunn876dbfb2016-03-14 15:18:07 -0700615 args.arg3 = extras;
Tyler Gunnbd1eb1f2016-02-16 14:36:20 -0800616 mHandler.obtainMessage(MSG_ON_CONNECTION_EVENT, args).sendToTarget();
617 }
Hall Liu57006aa2017-02-06 10:49:48 -0800618
619 @Override
620 public void onRttInitiationSuccess(String connectionId, Session.Info sessionInfo)
621 throws RemoteException {
622 mHandler.obtainMessage(MSG_ON_RTT_INITIATION_SUCCESS, connectionId).sendToTarget();
623 }
624
625 @Override
626 public void onRttInitiationFailure(String connectionId, int reason,
627 Session.Info sessionInfo)
628 throws RemoteException {
629 mHandler.obtainMessage(MSG_ON_RTT_INITIATION_FAILURE, reason, 0, connectionId)
630 .sendToTarget();
631 }
632
633 @Override
634 public void onRttSessionRemotelyTerminated(String connectionId, Session.Info sessionInfo)
635 throws RemoteException {
636 mHandler.obtainMessage(MSG_ON_RTT_REMOTELY_TERMINATED, connectionId).sendToTarget();
637 }
638
639 @Override
640 public void onRemoteRttRequest(String connectionId, Session.Info sessionInfo)
641 throws RemoteException {
642 mHandler.obtainMessage(MSG_ON_RTT_UPGRADE_REQUEST, connectionId).sendToTarget();
643 }
Srikanth Chintalafcb15012017-05-04 20:58:34 +0530644
645 @Override
646 public void onPhoneAccountChanged(String callId, PhoneAccountHandle pHandle,
647 Session.Info sessionInfo) {
648 SomeArgs args = SomeArgs.obtain();
649 args.arg1 = callId;
650 args.arg2 = pHandle;
651 mHandler.obtainMessage(MSG_SET_PHONE_ACCOUNT_CHANGED, args).sendToTarget();
652 }
Pengquan Meng63d25a52017-11-21 18:01:13 -0800653
654 @Override
655 public void onConnectionServiceFocusReleased(Session.Info sessionInfo) {
656 mHandler.obtainMessage(MSG_CONNECTION_SERVICE_FOCUS_RELEASED).sendToTarget();
657 }
Mengjun Leng25707742017-07-04 11:10:37 +0800658
659 @Override
660 public void resetConnectionTime(String callId, Session.Info sessionInfo) {
661 // Do nothing
662 }
Tyler Gunn68a73a42018-10-03 15:38:57 -0700663
664 @Override
665 public void setConferenceState(String callId, boolean isConference,
666 Session.Info sessionInfo) {
667 SomeArgs args = SomeArgs.obtain();
668 args.arg1 = callId;
669 args.arg2 = isConference;
670 args.arg3 = sessionInfo;
671 mHandler.obtainMessage(MSG_SET_CONFERENCE_STATE, args).sendToTarget();
672 }
Ihab Awad5d0410f2014-07-30 10:07:40 -0700673 };
674
675 public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
676 mDelegate = delegate;
677 }
678
679 public IConnectionServiceAdapter getStub() {
680 return mStub;
681 }
682}