summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/spam
diff options
context:
space:
mode:
authormaxwelb <maxwelb@google.com>2017-12-11 11:55:19 -0800
committerCopybara-Service <copybara-piper@google.com>2017-12-11 13:16:14 -0800
commit9ad8a72f81d9868e50e27199bbca248090e7aba9 (patch)
tree8d3fe7e8212bfaf312bb5159f898b56a7004f84e /java/com/android/dialer/spam
parentaab6dc9f075fd8576ffc78c1f983b8fb1d3e77fa (diff)
Update Spam module to use Dagger
Test: TAP PiperOrigin-RevId: 178650781 Change-Id: I299907ac43d48b984b092433c9b651aadb17c62a
Diffstat (limited to 'java/com/android/dialer/spam')
-rw-r--r--java/com/android/dialer/spam/Spam.java160
-rw-r--r--java/com/android/dialer/spam/SpamBindings.java165
-rw-r--r--java/com/android/dialer/spam/SpamComponent.java39
-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);
}