Home | History | Annotate | Download | only in spam
      1 /*
      2  * Copyright (C) 2016 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 com.android.dialer.spam;
     18 
     19 import android.support.annotation.NonNull;
     20 import android.support.annotation.Nullable;
     21 import com.android.dialer.logging.ContactLookupResult;
     22 import com.android.dialer.logging.ContactSource;
     23 import com.android.dialer.logging.ReportingLocation;
     24 
     25 /** Allows the container application to mark calls as spam. */
     26 public interface SpamBindings {
     27 
     28   boolean isSpamEnabled();
     29 
     30   boolean isSpamNotificationEnabled();
     31 
     32   boolean isDialogEnabledForSpamNotification();
     33 
     34   boolean isDialogReportSpamCheckedByDefault();
     35 
     36   /** @return what percentage of aftercall notifications to show to the user */
     37   int percentOfSpamNotificationsToShow();
     38 
     39   int percentOfNonSpamNotificationsToShow();
     40 
     41   /**
     42    * Checks if the given number is suspected of being a spamer.
     43    *
     44    * @param number The phone number of the call.
     45    * @param countryIso The country ISO of the call.
     46    * @param listener The callback to be invoked after {@code Info} is fetched.
     47    */
     48   void checkSpamStatus(String number, String countryIso, Listener listener);
     49 
     50   /**
     51    * @param number The number to check if the number is in the user's white list (non spam list)
     52    * @param countryIso The country ISO of the call.
     53    * @param listener The callback to be invoked after {@code Info} is fetched.
     54    */
     55   void checkUserMarkedNonSpamStatus(
     56       String number, @Nullable String countryIso, @NonNull Listener listener);
     57 
     58   /**
     59    * @param number The number to check if it is in user's spam list
     60    * @param countryIso The country ISO of the call.
     61    * @param listener The callback to be invoked after {@code Info} is fetched.
     62    */
     63   void checkUserMarkedSpamStatus(
     64       String number, @Nullable String countryIso, @NonNull Listener listener);
     65 
     66   /**
     67    * @param number The number to check if it is in the global spam list
     68    * @param countryIso The country ISO of the call.
     69    * @param listener The callback to be invoked after {@code Info} is fetched.
     70    */
     71   void checkGlobalSpamListStatus(
     72       String number, @Nullable String countryIso, @NonNull Listener listener);
     73 
     74   /**
     75    * Synchronously checks if the given number is suspected of being a spamer.
     76    *
     77    * @param number The phone number of the call.
     78    * @param countryIso The country ISO of the call.
     79    * @return True if the number is spam.
     80    */
     81   boolean checkSpamStatusSynchronous(String number, String countryIso);
     82 
     83   /**
     84    * Reports number as spam.
     85    *
     86    * @param number The number to be reported.
     87    * @param countryIso The country ISO of the number.
     88    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
     89    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
     90    * @param from Where in the dialer this was reported from. Must be one of {@link
     91    *     com.android.dialer.logging.ReportingLocation}.
     92    * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
     93    *     one of {@link com.android.dialer.logging.ContactLookupResult}.
     94    */
     95   void reportSpamFromAfterCallNotification(
     96       String number,
     97       String countryIso,
     98       int callType,
     99       ReportingLocation.Type from,
    100       ContactLookupResult.Type contactLookupResultType);
    101 
    102   /**
    103    * Reports number as spam.
    104    *
    105    * @param number The number to be reported.
    106    * @param countryIso The country ISO of the number.
    107    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    108    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    109    * @param from Where in the dialer this was reported from. Must be one of {@link
    110    *     com.android.dialer.logging.ReportingLocation}.
    111    * @param contactSourceType If we have cached contact information for the phone number, this
    112    *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
    113    */
    114   void reportSpamFromCallHistory(
    115       String number,
    116       String countryIso,
    117       int callType,
    118       ReportingLocation.Type from,
    119       ContactSource.Type contactSourceType);
    120 
    121   /**
    122    * Reports number as not spam.
    123    *
    124    * @param number The number to be reported.
    125    * @param countryIso The country ISO of the number.
    126    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    127    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    128    * @param from Where in the dialer this was reported from. Must be one of {@link
    129    *     com.android.dialer.logging.ReportingLocation}.
    130    * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
    131    *     one of {@link com.android.dialer.logging.ContactLookupResult}.
    132    */
    133   void reportNotSpamFromAfterCallNotification(
    134       String number,
    135       String countryIso,
    136       int callType,
    137       ReportingLocation.Type from,
    138       ContactLookupResult.Type contactLookupResultType);
    139 
    140   /**
    141    * Reports number as not spam.
    142    *
    143    * @param number The number to be reported.
    144    * @param countryIso The country ISO of the number.
    145    * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
    146    *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
    147    * @param from Where in the dialer this was reported from. Must be one of {@link
    148    *     com.android.dialer.logging.ReportingLocation}.
    149    * @param contactSourceType If we have cached contact information for the phone number, this
    150    *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
    151    */
    152   void reportNotSpamFromCallHistory(
    153       String number,
    154       String countryIso,
    155       int callType,
    156       ReportingLocation.Type from,
    157       ContactSource.Type contactSourceType);
    158 
    159   /** Callback to be invoked when data is fetched. */
    160   interface Listener {
    161 
    162     /** Called when data is fetched. */
    163     void onComplete(boolean isSpam);
    164   }
    165 }
    166