summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/spam/SpamBindings.java
blob: b5d18b828821f8d8e00a8c474895f304e999042f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.dialer.spam;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

/** Allows the container application to mark calls as spam. */
public interface SpamBindings {

  boolean isSpamEnabled();

  boolean isSpamNotificationEnabled();

  boolean isDialogEnabledForSpamNotification();

  boolean isDialogReportSpamCheckedByDefault();

  /** @return what percentage of aftercall notifications to show to the user */
  int percentOfSpamNotificationsToShow();

  int percentOfNonSpamNotificationsToShow();

  /**
   * Checks if the given number is suspected of being a spamer.
   *
   * @param number The phone number of the call.
   * @param countryIso The country ISO of the call.
   * @param listener The callback to be invoked after {@code Info} is fetched.
   */
  void checkSpamStatus(String number, String countryIso, Listener listener);

  /**
   * @param number The number to check if the number is in the user's white list (non spam list)
   * @param countryIso The country ISO of the call.
   * @param listener The callback to be invoked after {@code Info} is fetched.
   */
  void checkUserMarkedNonSpamStatus(
      String number, @Nullable String countryIso, @NonNull Listener listener);

  /**
   * @param number The number to check if it is in user's spam list
   * @param countryIso The country ISO of the call.
   * @param listener The callback to be invoked after {@code Info} is fetched.
   */
  void checkUserMarkedSpamStatus(
      String number, @Nullable String countryIso, @NonNull Listener listener);

  /**
   * @param number The number to check if it is in the global spam list
   * @param countryIso The country ISO of the call.
   * @param listener The callback to be invoked after {@code Info} is fetched.
   */
  void checkGlobalSpamListStatus(
      String number, @Nullable String countryIso, @NonNull Listener listener);

  /**
   * Synchronously checks if the given number is suspected of being a spamer.
   *
   * @param number The phone number of the call.
   * @param countryIso The country ISO of the call.
   * @return True if the number is spam.
   */
  boolean checkSpamStatusSynchronous(String number, String countryIso);

  /**
   * Reports number as spam.
   *
   * @param number The number to be reported.
   * @param countryIso The country ISO of the number.
   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
   * @param from Where in the dialer this was reported from. Must be one of {@link
   *     com.android.dialer.logging.nano.ReportingLocation}.
   * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
   *     one of {@link com.android.dialer.logging.nano.ContactLookupResult}.
   */
  void reportSpamFromAfterCallNotification(
      String number, String countryIso, int callType, int from, int contactLookupResultType);

  /**
   * Reports number as spam.
   *
   * @param number The number to be reported.
   * @param countryIso The country ISO of the number.
   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
   * @param from Where in the dialer this was reported from. Must be one of {@link
   *     com.android.dialer.logging.nano.ReportingLocation}.
   * @param contactSourceType If we have cached contact information for the phone number, this
   *     indicates its source. Must be one of {@link com.android.dialer.logging.nano.ContactSource}.
   */
  void reportSpamFromCallHistory(
      String number, String countryIso, int callType, int from, int contactSourceType);

  /**
   * Reports number as not spam.
   *
   * @param number The number to be reported.
   * @param countryIso The country ISO of the number.
   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
   * @param from Where in the dialer this was reported from. Must be one of {@link
   *     com.android.dialer.logging.nano.ReportingLocation}.
   * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
   *     one of {@link com.android.dialer.logging.nano.ContactLookupResult}.
   */
  void reportNotSpamFromAfterCallNotification(
      String number, String countryIso, int callType, int from, int contactLookupResultType);

  /**
   * Reports number as not spam.
   *
   * @param number The number to be reported.
   * @param countryIso The country ISO of the number.
   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
   * @param from Where in the dialer this was reported from. Must be one of {@link
   *     com.android.dialer.logging.nano.ReportingLocation}.
   * @param contactSourceType If we have cached contact information for the phone number, this
   *     indicates its source. Must be one of {@link com.android.dialer.logging.nano.ContactSource}.
   */
  void reportNotSpamFromCallHistory(
      String number, String countryIso, int callType, int from, int contactSourceType);

  /** Callback to be invoked when data is fetched. */
  interface Listener {

    /** Called when data is fetched. */
    void onComplete(boolean isSpam);
  }
}