summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/spam
diff options
context:
space:
mode:
authorAndroid Dialer <noreply@google.com>2018-03-23 21:10:59 -0700
committerCopybara-Service <copybara-piper@google.com>2018-03-26 22:22:40 -0700
commit07d6d00a5cc6c1aeb1befaccc1e832b3d5b398d8 (patch)
tree91cf3d0fc7f850ae7fcb334532ba54517e1b5108 /java/com/android/dialer/spam
parent43293286a257c39e173b0dc9a93ff473276eba89 (diff)
Move spam setting related methods out of spam interface into a separate spam
setting interface. Test: All the existing tests PiperOrigin-RevId: 190314880 Change-Id: I030acbd70120f508c5a4616757d89113524110fa
Diffstat (limited to 'java/com/android/dialer/spam')
-rw-r--r--java/com/android/dialer/spam/Spam.java37
-rw-r--r--java/com/android/dialer/spam/SpamComponent.java2
-rw-r--r--java/com/android/dialer/spam/SpamSettings.java72
-rw-r--r--java/com/android/dialer/spam/SpamSettingsStub.java88
-rw-r--r--java/com/android/dialer/spam/SpamStub.java52
-rw-r--r--java/com/android/dialer/spam/StubSpamModule.java3
-rw-r--r--java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java16
7 files changed, 174 insertions, 96 deletions
diff --git a/java/com/android/dialer/spam/Spam.java b/java/com/android/dialer/spam/Spam.java
index 09b7ce9c6..c22f541d8 100644
--- a/java/com/android/dialer/spam/Spam.java
+++ b/java/com/android/dialer/spam/Spam.java
@@ -16,8 +16,6 @@
package com.android.dialer.spam;
-import android.content.Context;
-import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.android.dialer.DialerPhoneNumber;
@@ -31,23 +29,6 @@ import com.google.common.util.concurrent.ListenableFuture;
/** Allows the container application to mark calls as spam. */
public interface Spam {
- boolean isSpamEnabled();
-
- boolean isSpamNotificationEnabled();
-
- boolean isSpamBlockingAvailable();
-
- boolean isSpamBlockingEnabled();
-
- boolean isDialogEnabledForSpamNotification();
-
- boolean isDialogReportSpamCheckedByDefault();
-
- /** @return what percentage of aftercall notifications to show to the user */
- int percentOfSpamNotificationsToShow();
-
- int percentOfNonSpamNotificationsToShow();
-
/**
* Checks if each of numbers in the given list is suspected of being a spam.
*
@@ -184,28 +165,10 @@ public interface Spam {
ReportingLocation.Type from,
ContactSource.Type contactSourceType);
- /**
- * Modifies spam blocking setting.
- *
- * @param enabled Whether to enable or disable the setting.
- * @param listener The callback to be invoked after setting change is done.
- */
- void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener);
-
- /** Returns an intent to start spam blocking setting */
- Intent getSpamBlockingSettingIntent(Context context);
-
/** Callback to be invoked when data is fetched. */
interface Listener {
/** Called when data is fetched. */
void onComplete(boolean isSpam);
}
-
- /** Callback to be invoked when setting change completes. */
- interface ModifySettingListener {
-
- /** Called when setting change completes. */
- void onComplete(boolean success);
- }
}
diff --git a/java/com/android/dialer/spam/SpamComponent.java b/java/com/android/dialer/spam/SpamComponent.java
index 0bcdafac8..2b70b6fe1 100644
--- a/java/com/android/dialer/spam/SpamComponent.java
+++ b/java/com/android/dialer/spam/SpamComponent.java
@@ -26,6 +26,8 @@ public abstract class SpamComponent {
public abstract Spam spam();
+ public abstract SpamSettings spamSettings();
+
public static SpamComponent get(Context context) {
return ((SpamComponent.HasComponent)
((HasRootComponent) context.getApplicationContext()).component())
diff --git a/java/com/android/dialer/spam/SpamSettings.java b/java/com/android/dialer/spam/SpamSettings.java
new file mode 100644
index 000000000..e0c06828f
--- /dev/null
+++ b/java/com/android/dialer/spam/SpamSettings.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2018 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 android.content.Intent;
+
+/** Allows the container application to interact with spam settings. */
+public interface SpamSettings {
+
+ /** @return if spam module is enabled */
+ boolean isSpamEnabled();
+
+ /** @return if spam after call notification is enabled */
+ boolean isSpamNotificationEnabled();
+
+ /** @return if spam blocking is enabled */
+ boolean isSpamBlockingEnabled();
+
+ /** @return if spam blocking user setting is controlled by carrier */
+ boolean isSpamBlockingControlledByCarrier();
+
+ /** @return if spam blocking module is enabled by flag */
+ boolean isSpamBlockingEnabledByFlag();
+
+ /** @return if spam blocking setting is enabled by user */
+ boolean isSpamBlockingEnabledByUser();
+
+ /** @return if dialog is used by default for spam after call notification */
+ boolean isDialogEnabledForSpamNotification();
+
+ /** @return if report spam is checked by default in block/report dialog */
+ boolean isDialogReportSpamCheckedByDefault();
+
+ /** @return percentage of after call notifications for spam numbers to show to the user */
+ int percentOfSpamNotificationsToShow();
+
+ /** @return percentage of after call notifications for nonspam numbers to show to the user */
+ int percentOfNonSpamNotificationsToShow();
+
+ /**
+ * Modifies spam blocking setting.
+ *
+ * @param enabled Whether to enable or disable the setting.
+ * @param listener The callback to be invoked after setting change is done.
+ */
+ void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener);
+
+ /** @return an intent to start spam blocking setting */
+ Intent getSpamBlockingSettingIntent(Context context);
+
+ /** Callback to be invoked when setting change completes. */
+ interface ModifySettingListener {
+
+ /** Called when setting change completes. */
+ void onComplete(boolean success);
+ }
+}
diff --git a/java/com/android/dialer/spam/SpamSettingsStub.java b/java/com/android/dialer/spam/SpamSettingsStub.java
new file mode 100644
index 000000000..905daa45c
--- /dev/null
+++ b/java/com/android/dialer/spam/SpamSettingsStub.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 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 android.content.Intent;
+import javax.inject.Inject;
+
+/** Default implementation of SpamSettings. */
+public class SpamSettingsStub implements SpamSettings {
+
+ @Inject
+ public SpamSettingsStub() {}
+
+ @Override
+ public boolean isSpamEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isSpamNotificationEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isSpamBlockingEnabledByFlag() {
+ return false;
+ }
+
+ @Override
+ public boolean isSpamBlockingControlledByCarrier() {
+ return false;
+ }
+
+ @Override
+ public boolean isSpamBlockingEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isSpamBlockingEnabledByUser() {
+ return false;
+ }
+
+ @Override
+ public boolean isDialogEnabledForSpamNotification() {
+ return false;
+ }
+
+ @Override
+ public boolean isDialogReportSpamCheckedByDefault() {
+ return false;
+ }
+
+ @Override
+ public int percentOfSpamNotificationsToShow() {
+ return 0;
+ }
+
+ @Override
+ public int percentOfNonSpamNotificationsToShow() {
+ return 0;
+ }
+
+ @Override
+ public void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener) {
+ listener.onComplete(false);
+ }
+
+ @Override
+ public Intent getSpamBlockingSettingIntent(Context context) {
+ return new Intent();
+ }
+}
diff --git a/java/com/android/dialer/spam/SpamStub.java b/java/com/android/dialer/spam/SpamStub.java
index 39b05fc58..28f26d13b 100644
--- a/java/com/android/dialer/spam/SpamStub.java
+++ b/java/com/android/dialer/spam/SpamStub.java
@@ -16,8 +16,6 @@
package com.android.dialer.spam;
-import android.content.Context;
-import android.content.Intent;
import com.android.dialer.DialerPhoneNumber;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
import com.android.dialer.logging.ContactLookupResult;
@@ -42,46 +40,6 @@ public class SpamStub implements Spam {
}
@Override
- public boolean isSpamEnabled() {
- return false;
- }
-
- @Override
- public boolean isSpamNotificationEnabled() {
- return false;
- }
-
- @Override
- public boolean isSpamBlockingAvailable() {
- return false;
- }
-
- @Override
- public boolean isSpamBlockingEnabled() {
- return false;
- }
-
- @Override
- public boolean isDialogEnabledForSpamNotification() {
- return false;
- }
-
- @Override
- public boolean isDialogReportSpamCheckedByDefault() {
- return false;
- }
-
- @Override
- public int percentOfSpamNotificationsToShow() {
- return 0;
- }
-
- @Override
- public int percentOfNonSpamNotificationsToShow() {
- return 0;
- }
-
- @Override
public ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamStatus>> batchCheckSpamStatus(
ImmutableSet<DialerPhoneNumber> dialerPhoneNumbers) {
return backgroundExecutorService.submit(
@@ -168,14 +126,4 @@ public class SpamStub implements Spam {
int callType,
ReportingLocation.Type from,
ContactSource.Type contactSourceType) {}
-
- @Override
- public void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener) {
- listener.onComplete(false);
- }
-
- @Override
- public Intent getSpamBlockingSettingIntent(Context context) {
- return new Intent();
- }
}
diff --git a/java/com/android/dialer/spam/StubSpamModule.java b/java/com/android/dialer/spam/StubSpamModule.java
index 0d3b917d2..5540408ad 100644
--- a/java/com/android/dialer/spam/StubSpamModule.java
+++ b/java/com/android/dialer/spam/StubSpamModule.java
@@ -25,4 +25,7 @@ public abstract class StubSpamModule {
@Binds
public abstract Spam bindSpam(SpamStub stub);
+
+ @Binds
+ public abstract SpamSettings bindSpamSettings(SpamSettingsStub stub);
}
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
index 9349577c5..cba94e00d 100644
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
+++ b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
@@ -25,7 +25,7 @@ import android.view.View;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
-import com.android.dialer.spam.Spam;
+import com.android.dialer.spam.SpamSettings;
/** Helper class for showing spam blocking on-boarding promotions. */
public class SpamBlockingPromoHelper {
@@ -34,11 +34,11 @@ public class SpamBlockingPromoHelper {
static final String SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS = "spam_blocking_promo_last_show_millis";
private final Context context;
- private final Spam spam;
+ private final SpamSettings spamSettings;
- public SpamBlockingPromoHelper(Context context, Spam spam) {
+ public SpamBlockingPromoHelper(Context context, SpamSettings spamSettings) {
this.context = context;
- this.spam = spam;
+ this.spamSettings = spamSettings;
}
/** Shows a spam blocking promo dialog with on complete snackbar if all the prerequisites meet. */
@@ -54,7 +54,7 @@ public class SpamBlockingPromoHelper {
Logger.get(context)
.logImpression(
DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
- spam.modifySpamBlockingSetting(
+ spamSettings.modifySpamBlockingSetting(
true, success -> showModifySettingOnCompleteSnackbar(view, success));
})
.show(fragmentManager, SpamBlockingPromoDialogFragment.SPAM_BLOCKING_PROMO_DIALOG_TAG);
@@ -71,7 +71,9 @@ public class SpamBlockingPromoHelper {
*/
@VisibleForTesting
boolean shouldShowSpamBlockingPromo() {
- if (!spam.isSpamEnabled() || !spam.isSpamBlockingAvailable() || spam.isSpamBlockingEnabled()) {
+ if (!spamSettings.isSpamEnabled()
+ || !spamSettings.isSpamBlockingEnabledByFlag()
+ || spamSettings.isSpamBlockingEnabledByUser()) {
return false;
}
@@ -109,7 +111,7 @@ public class SpamBlockingPromoHelper {
Snackbar.make(view, snackBarText, Snackbar.LENGTH_LONG)
.setAction(
R.string.spam_blocking_setting_prompt,
- v -> context.startActivity(spam.getSpamBlockingSettingIntent(context)))
+ v -> context.startActivity(spamSettings.getSpamBlockingSettingIntent(context)))
.setActionTextColor(
context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
.show();