• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 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  * limitations under the License
15  */
16 
17 package android.telecom.cts.screeningtestapp;
18 
19 import android.content.Intent;
20 import android.os.IBinder;
21 import android.telecom.Call;
22 import android.telecom.CallScreeningService;
23 import android.util.Log;
24 
25 /**
26  * Provides a CTS-test implementation of {@link CallScreeningService}.
27  * This emulates a third-party implementation of {@link CallScreeningService}, where
28  * {@code MockCallScreeningService} is intended to be the {@link CallScreeningService} bundled with
29  * the default dialer app.
30  */
31 public class CtsCallScreeningService extends CallScreeningService {
32     private static final String TAG = CtsCallScreeningService.class.getSimpleName();
33     private CallScreeningServiceControl mCallScreeningServiceControl;
34 
35     @Override
onBind(Intent intent)36     public IBinder onBind(Intent intent) {
37         Log.i(TAG, "onBind: to call screening service");
38         mCallScreeningServiceControl = CallScreeningServiceControl.getInstance();
39         mCallScreeningServiceControl.onScreeningServiceBound();
40         return super.onBind(intent);
41     }
42 
43     @Override
onUnbind(Intent intent)44     public boolean onUnbind(Intent intent) {
45         Log.i(TAG, "onUnbind: unbinding call screening service");
46         mCallScreeningServiceControl = null;
47         super.onUnbind(intent);
48         return false;
49     }
50 
51     @Override
onScreenCall(Call.Details callDetails)52     public void onScreenCall(Call.Details callDetails) {
53         Log.i(TAG, "onScreenCall");
54         if (mCallScreeningServiceControl != null) {
55             CallScreeningService.CallResponse r = mCallScreeningServiceControl.getCallResponse();
56             Log.i(
57                     TAG,
58                     String.format(
59                             "onScreenCall: shouldDisallowCall=[%b], "
60                                     + "shouldRejectCall=[%b], "
61                                     + "shouldSilenceCall=[%b], "
62                                     + "shouldSkipCallLog=[%b], "
63                                     + "shouldSkipNotification=[%b] , mCallResponse.hash=[%d]",
64                             r.getDisallowCall(),
65                             r.getRejectCall(),
66                             r.getSilenceCall(),
67                             r.getSkipCallLog(),
68                             r.getSkipNotification(),
69                             r.hashCode()));
70             respondToCall(callDetails, mCallScreeningServiceControl.getCallResponse());
71         } else {
72             Log.w(TAG, "No control interface.");
73         }
74     }
75 }
76