diff options
Diffstat (limited to 'java/com/android/dialer/spam')
-rw-r--r-- | java/com/android/dialer/spam/Spam.java | 160 | ||||
-rw-r--r-- | java/com/android/dialer/spam/SpamBindings.java | 165 | ||||
-rw-r--r-- | java/com/android/dialer/spam/SpamComponent.java | 39 | ||||
-rw-r--r-- | java/com/android/dialer/spam/SpamStub.java (renamed from java/com/android/dialer/spam/SpamBindingsStub.java) | 8 | ||||
-rw-r--r-- | java/com/android/dialer/spam/StubSpamModule.java (renamed from java/com/android/dialer/spam/SpamBindingsFactory.java) | 14 |
5 files changed, 191 insertions, 195 deletions
diff --git a/java/com/android/dialer/spam/Spam.java b/java/com/android/dialer/spam/Spam.java index 692a1a0ad..b1240c69a 100644 --- a/java/com/android/dialer/spam/Spam.java +++ b/java/com/android/dialer/spam/Spam.java @@ -16,34 +16,150 @@ package com.android.dialer.spam; -import android.content.Context; -import java.util.Objects; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import com.android.dialer.logging.ContactLookupResult; +import com.android.dialer.logging.ContactSource; +import com.android.dialer.logging.ReportingLocation; -/** Accessor for the spam bindings. */ -public class Spam { +/** Allows the container application to mark calls as spam. */ +public interface Spam { - private static SpamBindings spamBindings; + boolean isSpamEnabled(); - private Spam() {} + boolean isSpamNotificationEnabled(); - public static SpamBindings get(Context context) { - Objects.requireNonNull(context); - if (spamBindings != null) { - return spamBindings; - } + boolean isDialogEnabledForSpamNotification(); - Context application = context.getApplicationContext(); - if (application instanceof SpamBindingsFactory) { - spamBindings = ((SpamBindingsFactory) application).newSpamBindings(); - } + boolean isDialogReportSpamCheckedByDefault(); - if (spamBindings == null) { - spamBindings = new SpamBindingsStub(); - } - return spamBindings; - } + /** @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.ReportingLocation}. + * @param contactLookupResultType The result of the contact lookup for this phone number. Must be + * one of {@link com.android.dialer.logging.ContactLookupResult}. + */ + void reportSpamFromAfterCallNotification( + String number, + String countryIso, + int callType, + ReportingLocation.Type from, + ContactLookupResult.Type 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.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.ContactSource}. + */ + void reportSpamFromCallHistory( + String number, + String countryIso, + int callType, + ReportingLocation.Type from, + ContactSource.Type 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.ReportingLocation}. + * @param contactLookupResultType The result of the contact lookup for this phone number. Must be + * one of {@link com.android.dialer.logging.ContactLookupResult}. + */ + void reportNotSpamFromAfterCallNotification( + String number, + String countryIso, + int callType, + ReportingLocation.Type from, + ContactLookupResult.Type 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.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.ContactSource}. + */ + void reportNotSpamFromCallHistory( + String number, + String countryIso, + int callType, + ReportingLocation.Type from, + ContactSource.Type contactSourceType); + + /** Callback to be invoked when data is fetched. */ + interface Listener { - public static void setForTesting(SpamBindings spamBindings) { - Spam.spamBindings = spamBindings; + /** Called when data is fetched. */ + void onComplete(boolean isSpam); } } diff --git a/java/com/android/dialer/spam/SpamBindings.java b/java/com/android/dialer/spam/SpamBindings.java deleted file mode 100644 index 5631da696..000000000 --- a/java/com/android/dialer/spam/SpamBindings.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * 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; -import com.android.dialer.logging.ContactLookupResult; -import com.android.dialer.logging.ContactSource; -import com.android.dialer.logging.ReportingLocation; - -/** 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.ReportingLocation}. - * @param contactLookupResultType The result of the contact lookup for this phone number. Must be - * one of {@link com.android.dialer.logging.ContactLookupResult}. - */ - void reportSpamFromAfterCallNotification( - String number, - String countryIso, - int callType, - ReportingLocation.Type from, - ContactLookupResult.Type 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.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.ContactSource}. - */ - void reportSpamFromCallHistory( - String number, - String countryIso, - int callType, - ReportingLocation.Type from, - ContactSource.Type 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.ReportingLocation}. - * @param contactLookupResultType The result of the contact lookup for this phone number. Must be - * one of {@link com.android.dialer.logging.ContactLookupResult}. - */ - void reportNotSpamFromAfterCallNotification( - String number, - String countryIso, - int callType, - ReportingLocation.Type from, - ContactLookupResult.Type 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.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.ContactSource}. - */ - void reportNotSpamFromCallHistory( - String number, - String countryIso, - int callType, - ReportingLocation.Type from, - ContactSource.Type contactSourceType); - - /** Callback to be invoked when data is fetched. */ - interface Listener { - - /** Called when data is fetched. */ - void onComplete(boolean isSpam); - } -} diff --git a/java/com/android/dialer/spam/SpamComponent.java b/java/com/android/dialer/spam/SpamComponent.java new file mode 100644 index 000000000..0bcdafac8 --- /dev/null +++ b/java/com/android/dialer/spam/SpamComponent.java @@ -0,0 +1,39 @@ +/* + * 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.content.Context; +import com.android.dialer.inject.HasRootComponent; +import dagger.Subcomponent; + +/** Dagger component to get Spam. */ +@Subcomponent +public abstract class SpamComponent { + + public abstract Spam spam(); + + public static SpamComponent get(Context context) { + return ((SpamComponent.HasComponent) + ((HasRootComponent) context.getApplicationContext()).component()) + .spamComponent(); + } + + /** Used to refer to the root application component. */ + public interface HasComponent { + SpamComponent spamComponent(); + } +} diff --git a/java/com/android/dialer/spam/SpamBindingsStub.java b/java/com/android/dialer/spam/SpamStub.java index b815dc97b..daa475c4a 100644 --- a/java/com/android/dialer/spam/SpamBindingsStub.java +++ b/java/com/android/dialer/spam/SpamStub.java @@ -19,9 +19,13 @@ package com.android.dialer.spam; import com.android.dialer.logging.ContactLookupResult; import com.android.dialer.logging.ContactSource; import com.android.dialer.logging.ReportingLocation; +import javax.inject.Inject; -/** Default implementation of SpamBindings. */ -public class SpamBindingsStub implements SpamBindings { +/** Default implementation of Spam. */ +public class SpamStub implements Spam { + + @Inject + public SpamStub() {} @Override public boolean isSpamEnabled() { diff --git a/java/com/android/dialer/spam/SpamBindingsFactory.java b/java/com/android/dialer/spam/StubSpamModule.java index 41144e1ee..0d3b917d2 100644 --- a/java/com/android/dialer/spam/SpamBindingsFactory.java +++ b/java/com/android/dialer/spam/StubSpamModule.java @@ -16,11 +16,13 @@ package com.android.dialer.spam; -/** - * This interface should be implementated by the Application subclass. It allows this module to get - * references to the SpamBindings. - */ -public interface SpamBindingsFactory { +import dagger.Binds; +import dagger.Module; + +/** Module which binds {@link SpamStub}. */ +@Module +public abstract class StubSpamModule { - SpamBindings newSpamBindings(); + @Binds + public abstract Spam bindSpam(SpamStub stub); } |