From 07d6d00a5cc6c1aeb1befaccc1e832b3d5b398d8 Mon Sep 17 00:00:00 2001 From: Android Dialer Date: Fri, 23 Mar 2018 21:10:59 -0700 Subject: 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 --- java/com/android/dialer/spam/Spam.java | 37 --------- java/com/android/dialer/spam/SpamComponent.java | 2 + java/com/android/dialer/spam/SpamSettings.java | 72 ++++++++++++++++++ java/com/android/dialer/spam/SpamSettingsStub.java | 88 ++++++++++++++++++++++ java/com/android/dialer/spam/SpamStub.java | 52 ------------- java/com/android/dialer/spam/StubSpamModule.java | 3 + .../dialer/spam/promo/SpamBlockingPromoHelper.java | 16 ++-- 7 files changed, 174 insertions(+), 96 deletions(-) create mode 100644 java/com/android/dialer/spam/SpamSettings.java create mode 100644 java/com/android/dialer/spam/SpamSettingsStub.java (limited to 'java/com/android/dialer/spam') 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; @@ -41,46 +39,6 @@ public class SpamStub implements Spam { this.backgroundExecutorService = backgroundExecutorService; } - @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> batchCheckSpamStatus( ImmutableSet dialerPhoneNumbers) { @@ -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(); -- cgit v1.2.3