InCallAdapter.java revision 8d5d9ddc66b55b6906364ab3c0e244dab4d58f13
1e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/*
2e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Copyright (C) 2014 The Android Open Source Project
3e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon *
4e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
5e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * you may not use this file except in compliance with the License.
6e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * You may obtain a copy of the License at
7e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon *
8e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon *      http://www.apache.org/licenses/LICENSE-2.0
9e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon *
10e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Unless required by applicable law or agreed to in writing, software
11e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
12e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * See the License for the specific language governing permissions and
14e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * limitations under the License.
15e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */
16e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
177cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnpackage com.android.server.telecom;
189f2bed31374a56487f370be01224baf6ce97e8adBen Gilad
19e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonimport android.os.Handler;
2010ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepalimport android.os.Message;
217cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport android.telecom.PhoneAccountHandle;
22a439e1b6d6201dedecfc40b67c9347a8c563b9c1Sailesh Nepal
23352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charltonimport com.android.internal.os.SomeArgs;
247cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport com.android.internal.telecom.IInCallAdapter;
25e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
26e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/**
27e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Receives call commands and updates from in-call app and passes them through to CallsManager.
28e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * {@link InCallController} creates an instance of this class and passes it to the in-call app after
29e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * binding to it. This adapter can receive commands and updates until the in-call app is unbound.
30e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */
31e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonclass InCallAdapter extends IInCallAdapter.Stub {
32e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    private final CallsManager mCallsManager;
33e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal    private final CallIdMapper mCallIdMapper;
348d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad    private final TelecomSystem.SyncRoot mLock;
35e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
36e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    /** Persists the specified parameters. */
378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad    public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper, TelecomSystem.SyncRoot lock) {
38e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon        mCallsManager = callsManager;
39e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal        mCallIdMapper = callIdMapper;
408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        mLock = lock;
41e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
42e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
43e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
4438931d0ad60f00a9f50c90cef446166731f0b871Andrew Lee    public void answerCall(String callId, int videoState) {
458d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
468d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.d(this, "answerCall(%s,%d)", callId, videoState);
478d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
488d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
498d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
508d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.answerCall(call, videoState);
518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "answerCall, unknown call id: %s", callId);
538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
548d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
55969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
56e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
57e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
58e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
59ff7493a8f620509d41dd8a5106c1d0dcd27cd274Ihab Awad    public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) {
608d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (this) {
618d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage);
628d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
638d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
658d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.rejectCall(call, rejectWithMessage, textMessage);
668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "setRingback, unknown call id: %s", callId);
688d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
70969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
71e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
72e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
7310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
7410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void playDtmfTone(String callId, char digit) {
758d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
768d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.d(this, "playDtmfTone(%s,%c)", callId, digit);
778d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
788d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
808d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.playDtmfTone(call, digit);
818d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
828d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "playDtmfTone, unknown call id: %s", callId);
838d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
848d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
85969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
8674549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
8774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
8810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
8910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void stopDtmfTone(String callId) {
908d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
918d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.d(this, "stopDtmfTone(%s)", callId);
928d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
938d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
958d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.stopDtmfTone(call);
968d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
978d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "stopDtmfTone, unknown call id: %s", callId);
988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
998d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
100969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
10174549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
10274549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
10310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
104352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charlton    public void postDialContinue(String callId, boolean proceed) {
1058d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1068d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.d(this, "postDialContinue(%s)", callId);
1078d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
1088d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1098d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
1108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.postDialContinue(call, proceed);
1118d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
1128d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "postDialContinue, unknown call id: %s", callId);
1138d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
1148d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
115969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
11674549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
11774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
118e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
11910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void disconnectCall(String callId) {
1208d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1218d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            Log.v(this, "disconnectCall: %s", callId);
1228d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
1238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1248d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
1258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.disconnectCall(call);
1268d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
1278d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "disconnectCall, unknown call id: %s", callId);
1288d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
1298d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
130969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
131e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
132cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee
133cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    @Override
13410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void holdCall(String callId) {
1358d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1368d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
1378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1388d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
1398d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.holdCall(call);
1408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
1418d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "holdCall, unknown call id: %s", callId);
1428d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
1438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
144969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
145cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    }
146cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee
147cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    @Override
14810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void unholdCall(String callId) {
1498d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1508d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
1518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
1538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.unholdCall(call);
1548d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
1558d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "unholdCall, unknown call id: %s", callId);
1568d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
1578d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
158969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
15984fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal    }
16084fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal
16184fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal    @Override
162f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen    public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle,
163f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen            boolean setDefault) {
1648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1658d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
1668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
1688d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.phoneAccountSelected(call, accountHandle, setDefault);
1698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
1708d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "phoneAccountSelected, unknown call id: %s", callId);
1718d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
1728d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
173969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
17453ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen    }
17553ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen
17653ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen    @Override
17710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void mute(boolean shouldMute) {
1788d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            mCallsManager.mute(shouldMute);
1808d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
1816aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    }
1826aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal
1836aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    @Override
18410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void setAudioRoute(int route) {
1858d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1868d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            mCallsManager.setAudioRoute(route);
1878d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
1886aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    }
1898f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon
1908f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    @Override
19112d61825cd0d6aa06272db3f77b5e30dce379951Santos Cordon    public void conference(String callId, String otherCallId) {
1928d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
1938d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId) &&
1948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallIdMapper.isValidCallId(otherCallId)) {
1958d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
1968d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call otherCall = mCallIdMapper.getCall(otherCallId);
1978d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null && otherCall != null) {
1988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    mCallsManager.conference(call, otherCall);
1998d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
2008d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "conference, unknown call id: %s or %s", callId, otherCallId);
2018d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
2028d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad
2038d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
204969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
2058f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    }
2068f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon
2078f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    @Override
208a161070ea054f91a5b2d5b4e3413381134d548b8Santos Cordon    public void splitFromConference(String callId) {
2098d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
2108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
2118d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
2128d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
2138d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    call.splitFromConference();
2148d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
2158d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "splitFromConference, unknown call id: %s", callId);
2168d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
2178d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
218969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
2198f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    }
220e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal
221e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal    @Override
2226805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    public void mergeConference(String callId) {
2238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
2248d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
2258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
2268d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
2278d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    call.mergeConference();
2288d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
2298d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "mergeConference, unknown call id: %s", callId);
2308d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
2318d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
2326805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon        }
2336805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    }
2346805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon
2356805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    @Override
2366805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    public void swapConference(String callId) {
2378d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
2388d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            if (mCallIdMapper.isValidCallId(callId)) {
2398d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                Call call = mCallIdMapper.getCall(callId);
2408d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                if (call != null) {
2418d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    call.swapConference();
2428d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                } else {
2438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                    Log.w(this, "swapConference, unknown call id: %s", callId);
2448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
2458d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
2466805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon        }
2476805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    }
2486805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon
2496805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    @Override
250d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    public void turnOnProximitySensor() {
2518d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
2528d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            mCallsManager.turnOnProximitySensor();
2538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
254d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    }
255d134687adc2594ed43e912f427f494ef258e89bcYorke Lee
256d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    @Override
257d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    public void turnOffProximitySensor(boolean screenOnImmediately) {
2588d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        synchronized (mLock) {
2598d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            mCallsManager.turnOffProximitySensor(screenOnImmediately);
2608d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
261d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    }
2629f2bed31374a56487f370be01224baf6ce97e8adBen Gilad}
263