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
198731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awadimport android.os.Binder;
20d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunnimport android.os.Bundle;
217cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport android.telecom.PhoneAccountHandle;
22a439e1b6d6201dedecfc40b67c9347a8c563b9c1Sailesh Nepal
237cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport com.android.internal.telecom.IInCallAdapter;
24e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
25961694a9750626c067be960170bc95f10b5efcc2Tyler Gunnimport java.util.List;
26961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn
27e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/**
28e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Receives call commands and updates from in-call app and passes them through to CallsManager.
29e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * {@link InCallController} creates an instance of this class and passes it to the in-call app after
30e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * binding to it. This adapter can receive commands and updates until the in-call app is unbound.
31e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */
32e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonclass InCallAdapter extends IInCallAdapter.Stub {
33e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    private final CallsManager mCallsManager;
34e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal    private final CallIdMapper mCallIdMapper;
358d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad    private final TelecomSystem.SyncRoot mLock;
36209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger    private final String mOwnerComponentName;
37e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
38e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    /** Persists the specified parameters. */
398731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad    public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper,
40209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            TelecomSystem.SyncRoot lock, String ownerComponentName) {
41e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon        mCallsManager = callsManager;
42e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal        mCallIdMapper = callIdMapper;
438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        mLock = lock;
44209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger        mOwnerComponentName = ownerComponentName;
45e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
46e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
47e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
4838931d0ad60f00a9f50c90cef446166731f0b871Andrew Lee    public void answerCall(String callId, int videoState) {
498731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
50209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.aC", mOwnerComponentName);
5111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
5211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
5311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
5411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.d(this, "answerCall(%s,%d)", callId, videoState);
5511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
5611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
5711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.answerCall(call, videoState);
5811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
5911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "answerCall, unknown call id: %s", callId);
6011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
618d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
6211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
6311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
648d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
6611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
67969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
68e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
69e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
70e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
71ff7493a8f620509d41dd8a5106c1d0dcd27cd274Ihab Awad    public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) {
728731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
73209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.rC", mOwnerComponentName);
7411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
7511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
7611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
7711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage);
7811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
7911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
8011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.rejectCall(call, rejectWithMessage, textMessage);
8111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
8211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "setRingback, unknown call id: %s", callId);
8311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
848d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
8511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
8611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
878d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
888731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
8911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
90969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
91e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
92e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon
9310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
9410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void playDtmfTone(String callId, char digit) {
958731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
96209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.pDT", mOwnerComponentName);
9711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
9811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
9911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
10011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.d(this, "playDtmfTone(%s,%c)", callId, digit);
10111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
10211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
10311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.playDtmfTone(call, digit);
10411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
10511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "playDtmfTone, unknown call id: %s", callId);
10611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
1078d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
10811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
10911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
1108d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
1118731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
11211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
113969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
11474549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
11574549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
11610ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
11710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void stopDtmfTone(String callId) {
1188731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
119209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.sDT", mOwnerComponentName);
12011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
12111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
12211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
12311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.d(this, "stopDtmfTone(%s)", callId);
12411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
12511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
12611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.stopDtmfTone(call);
12711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
12811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "stopDtmfTone, unknown call id: %s", callId);
12911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
1308d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
13111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
13211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
1338d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
1348731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
13511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
136969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
13774549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
13874549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
13910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    @Override
140352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charlton    public void postDialContinue(String callId, boolean proceed) {
1418731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
142209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.pDC", mOwnerComponentName);
14311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
14411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
14511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
14611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.d(this, "postDialContinue(%s)", callId);
14711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
14811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
14911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.postDialContinue(call, proceed);
15011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
15111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "postDialContinue, unknown call id: %s", callId);
15211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
1538d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
15411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
15511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
1568d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
1578731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
15811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
159969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
16074549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad    }
16174549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad
162e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    @Override
16310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void disconnectCall(String callId) {
1648731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
165209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.dC", mOwnerComponentName);
16611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
16711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
16811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
16911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Log.v(this, "disconnectCall: %s", callId);
17011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
17111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
17211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.disconnectCall(call);
17311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
17411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "disconnectCall, unknown call id: %s", callId);
17511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
1768d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
17711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
17811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
1798d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
1808731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
18111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
182969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
183e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon    }
184cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee
185cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    @Override
18610ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void holdCall(String callId) {
1878731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
188209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.hC", mOwnerComponentName);
18911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
19011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
19111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
19211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
19311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
19411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.holdCall(call);
19511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
19611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "holdCall, unknown call id: %s", callId);
19711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
1988d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
19911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
20011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
2018d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
2028731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
20311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
204969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
205cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    }
206cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee
207cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee    @Override
20810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void unholdCall(String callId) {
2098731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
210209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.uC", mOwnerComponentName);
21111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
21211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
21311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
21411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
21511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
21611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.unholdCall(call);
21711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
21811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "unholdCall, unknown call id: %s", callId);
21911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
2208d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
22111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
22211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
2238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
2248731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
22511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
226969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
22784fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal    }
22884fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal
22984fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal    @Override
230f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen    public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle,
231f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen            boolean setDefault) {
2328731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
233209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.pAS", mOwnerComponentName);
23411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
23511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
23611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
23711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
23811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
23911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.phoneAccountSelected(call, accountHandle, setDefault);
24011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
24111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "phoneAccountSelected, unknown call id: %s", callId);
24211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
2438d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
24411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
24511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
2468d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
2478731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
24811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
249969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
25053ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen    }
25153ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen
25253ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen    @Override
25310ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void mute(boolean shouldMute) {
2548731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
255209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.m", mOwnerComponentName);
25611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
25711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
25811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
25911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    mCallsManager.mute(shouldMute);
26011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                }
26111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
26211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
2638731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad            }
2648731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
26511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
2668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
2676aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    }
2686aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal
2696aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    @Override
27010ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal    public void setAudioRoute(int route) {
2718731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
272209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.sAR", mOwnerComponentName);
27311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
27411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
27511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
27611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    mCallsManager.setAudioRoute(route);
27711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                }
27811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
27911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
2808731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad            }
2818731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
28211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
2838d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
2846aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal    }
2858f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon
2868f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    @Override
28712d61825cd0d6aa06272db3f77b5e30dce379951Santos Cordon    public void conference(String callId, String otherCallId) {
2888731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
289209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.c", mOwnerComponentName);
29011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
29111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
29211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
29311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
29411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call otherCall = mCallIdMapper.getCall(otherCallId);
29511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null && otherCall != null) {
29611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        mCallsManager.conference(call, otherCall);
29711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
29811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "conference, unknown call id: %s or %s", callId, otherCallId);
29911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
3008731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad                }
30111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
30211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
3038d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
3048731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
30511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
306969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
3078f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    }
3088f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon
3098f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    @Override
310a161070ea054f91a5b2d5b4e3413381134d548b8Santos Cordon    public void splitFromConference(String callId) {
3118731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
312209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.sFC", mOwnerComponentName);
31311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
31411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
31511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
31611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
31711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
31811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        call.splitFromConference();
31911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
32011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "splitFromConference, unknown call id: %s", callId);
32111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
3228d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
32311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
32411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
3258d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
3268731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
32711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
328969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner        }
3298f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon    }
330e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal
331e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal    @Override
3326805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    public void mergeConference(String callId) {
3338731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
334209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.mC", mOwnerComponentName);
33511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
33611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
33711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
33811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
33911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
34011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        call.mergeConference();
34111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
34211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "mergeConference, unknown call id: %s", callId);
34311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
3448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
34511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
34611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
3478d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
3488731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
34911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
3506805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon        }
3516805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    }
3526805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon
3536805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    @Override
3546805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    public void swapConference(String callId) {
3558731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
356209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.sC", mOwnerComponentName);
35711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
35811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
35911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
36011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    Call call = mCallIdMapper.getCall(callId);
36111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    if (call != null) {
36211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        call.swapConference();
36311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    } else {
36411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                        Log.w(this, "swapConference, unknown call id: %s", callId);
36511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    }
3668d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad                }
36711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
36811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
3698d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad            }
3708731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
37111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
3726805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon        }
3736805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    }
374d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn
375d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    @Override
376d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    public void pullExternalCall(String callId) {
377d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        try {
378d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            Log.startSession("ICA.pEC", mOwnerComponentName);
379d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            long token = Binder.clearCallingIdentity();
380d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            try {
381d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                synchronized (mLock) {
382d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    Call call = mCallIdMapper.getCall(callId);
383d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    if (call != null) {
384d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                        call.pullExternalCall();
385d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    } else {
386d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                        Log.w(this, "pullExternalCall, unknown call id: %s", callId);
387d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    }
388d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                }
389d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            } finally {
390d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                Binder.restoreCallingIdentity(token);
391d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            }
392d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        } finally {
393d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            Log.endSession();
394d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        }
395d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    }
396d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn
397d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    @Override
398d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    public void sendCallEvent(String callId, String event, Bundle extras) {
399d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        try {
400d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            Log.startSession("ICA.sCE", mOwnerComponentName);
401d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            long token = Binder.clearCallingIdentity();
402d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            try {
403d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                synchronized (mLock) {
404d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    Call call = mCallIdMapper.getCall(callId);
405d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    if (call != null) {
406d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                        call.sendCallEvent(event, extras);
407d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    } else {
408d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                        Log.w(this, "sendCallEvent, unknown call id: %s", callId);
409d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                    }
410d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                }
411d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            } finally {
412d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn                Binder.restoreCallingIdentity(token);
413d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            }
414d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        } finally {
415d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn            Log.endSession();
416d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn        }
417d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn    }
418961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn
419961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    @Override
420961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    public void putExtras(String callId, Bundle extras) {
421961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        try {
422961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            Log.startSession("ICA.pE", mOwnerComponentName);
423961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            long token = Binder.clearCallingIdentity();
424961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            try {
425961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                synchronized (mLock) {
426961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    Call call = mCallIdMapper.getCall(callId);
427961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    if (call != null) {
428961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                        call.putExtras(Call.SOURCE_INCALL_SERVICE, extras);
429961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    } else {
430961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                        Log.w(this, "putExtras, unknown call id: %s", callId);
431961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    }
432961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                }
433961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            } finally {
434961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                Binder.restoreCallingIdentity(token);
435961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            }
436961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        } finally {
437961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            Log.endSession();
438961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        }
439961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    }
440961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn
441961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    @Override
442961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    public void removeExtras(String callId, List<String> keys) {
443961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        try {
444961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            Log.startSession("ICA.rE", mOwnerComponentName);
445961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            long token = Binder.clearCallingIdentity();
446961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            try {
447961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                synchronized (mLock) {
448961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    Call call = mCallIdMapper.getCall(callId);
449961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    if (call != null) {
450961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                        call.removeExtras(Call.SOURCE_INCALL_SERVICE, keys);
451961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    } else {
452961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                        Log.w(this, "removeExtra, unknown call id: %s", callId);
453961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                    }
454961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                }
455961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            } finally {
456961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn                Binder.restoreCallingIdentity(token);
457961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            }
458961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        } finally {
459961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn            Log.endSession();
460961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn        }
461961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn    }
4626805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon
4636805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon    @Override
464d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    public void turnOnProximitySensor() {
4658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
466209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.tOnPS", mOwnerComponentName);
46711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
46811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
46911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
47011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    mCallsManager.turnOnProximitySensor();
47111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                }
47211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
47311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
4748731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad            }
4758731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
47611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            Log.endSession();
4778d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
478d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    }
479d134687adc2594ed43e912f427f494ef258e89bcYorke Lee
480d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    @Override
481d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    public void turnOffProximitySensor(boolean screenOnImmediately) {
4828731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        try {
483209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger            Log.startSession("ICA.tOffPS", mOwnerComponentName);
48411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            long token = Binder.clearCallingIdentity();
48511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            try {
48611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                synchronized (mLock) {
48711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                    mCallsManager.turnOffProximitySensor(screenOnImmediately);
48811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                }
48911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger            } finally {
49011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger                Binder.restoreCallingIdentity(token);
4918731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad            }
4928731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad        } finally {
49311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger             Log.endSession();
4948d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad        }
495d134687adc2594ed43e912f427f494ef258e89bcYorke Lee    }
4969f2bed31374a56487f370be01224baf6ce97e8adBen Gilad}
497