summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/dialer/app/calllog/BlockReportSpamListener.java17
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java2
-rw-r--r--java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java27
-rw-r--r--java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java23
-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
-rw-r--r--java/com/android/incallui/call/CallList.java2
-rw-r--r--java/com/android/incallui/spam/SpamCallListListener.java11
-rw-r--r--java/com/android/incallui/spam/SpamNotificationActivity.java8
14 files changed, 221 insertions, 139 deletions
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 5c7641c80..d52ac3241 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -32,6 +32,7 @@ import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ReportingLocation;
import com.android.dialer.spam.Spam;
import com.android.dialer.spam.SpamComponent;
+import com.android.dialer.spam.SpamSettings;
import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
/** Listener to show dialogs for block and report spam actions. */
@@ -43,6 +44,7 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
private final RecyclerView.Adapter adapter;
private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
private final Spam spam;
+ private final SpamSettings spamSettings;
private final SpamBlockingPromoHelper spamBlockingPromoHelper;
public BlockReportSpamListener(
@@ -57,7 +59,8 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
this.adapter = adapter;
this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
spam = SpamComponent.get(context).spam();
- spamBlockingPromoHelper = new SpamBlockingPromoHelper(context, spam);
+ spamSettings = SpamComponent.get(context).spamSettings();
+ spamBlockingPromoHelper = new SpamBlockingPromoHelper(context, spamSettings);
}
@Override
@@ -69,10 +72,10 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
@NonNull final ContactSource.Type contactSourceType) {
BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
displayNumber,
- spam.isDialogReportSpamCheckedByDefault(),
+ spamSettings.isDialogReportSpamCheckedByDefault(),
isSpamChecked -> {
LogUtil.i("BlockReportSpamListener.onBlockReportSpam", "onClick");
- if (isSpamChecked && spam.isSpamEnabled()) {
+ if (isSpamChecked && spamSettings.isSpamEnabled()) {
Logger.get(context)
.logImpression(
DialerImpression.Type
@@ -110,10 +113,10 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
@NonNull final ContactSource.Type contactSourceType) {
BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndReportingAsSpam.newInstance(
displayNumber,
- spam.isSpamEnabled(),
+ spamSettings.isSpamEnabled(),
() -> {
LogUtil.i("BlockReportSpamListener.onBlock", "onClick");
- if (spam.isSpamEnabled()) {
+ if (spamSettings.isSpamEnabled()) {
Logger.get(context)
.logImpression(
DialerImpression.Type
@@ -154,7 +157,7 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
isSpam,
() -> {
LogUtil.i("BlockReportSpamListener.onUnblock", "onClick");
- if (isSpam && spam.isSpamEnabled()) {
+ if (isSpam && spamSettings.isSpamEnabled()) {
Logger.get(context)
.logImpression(DialerImpression.Type.REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER);
spam.reportNotSpamFromCallHistory(
@@ -187,7 +190,7 @@ public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClic
displayNumber,
() -> {
LogUtil.i("BlockReportSpamListener.onReportNotSpam", "onClick");
- if (spam.isSpamEnabled()) {
+ if (spamSettings.isSpamEnabled()) {
Logger.get(context)
.logImpression(DialerImpression.Type.DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM);
spam.reportNotSpamFromCallHistory(
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 376057ff5..de9b95e34 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -682,7 +682,7 @@ public class CallLogAdapter extends GroupingListAdapter
contactInfoCache.start();
}
contactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY);
- isSpamEnabled = SpamComponent.get(activity).spam().isSpamEnabled();
+ isSpamEnabled = SpamComponent.get(activity).spamSettings().isSpamEnabled();
getDuo().registerListener(this);
notifyDataSetChanged();
}
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
index 6d2581f46..4516382c5 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -36,7 +36,6 @@ import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.spam.Spam;
import com.android.dialer.spam.SpamComponent;
import com.android.dialer.telecom.TelecomUtil;
import java.util.ArrayList;
@@ -48,7 +47,7 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
@Nullable
@Override
public Void doInBackground(@NonNull Input input) throws Throwable {
- updateNotification(input.context, input.queryHelper, input.queryHandler, input.spam);
+ updateNotification(input.context, input.queryHelper, input.queryHandler);
return null;
}
@@ -62,8 +61,7 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
private static void updateNotification(
Context context,
CallLogNotificationsQueryHelper queryHelper,
- FilteredNumberAsyncQueryHandler queryHandler,
- Spam spam) {
+ FilteredNumberAsyncQueryHandler queryHandler) {
Assert.isWorkerThread();
LogUtil.enterBlock("VisualVoicemailUpdateTask.updateNotification");
@@ -79,7 +77,7 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
"not filtering due to recent emergency call");
} else {
voicemailsToNotify = filterBlockedNumbers(context, queryHandler, voicemailsToNotify);
- voicemailsToNotify = filterSpamNumbers(context, spam, voicemailsToNotify);
+ voicemailsToNotify = filterSpamNumbers(context, voicemailsToNotify);
}
boolean shouldAlert =
!voicemailsToNotify.isEmpty()
@@ -197,23 +195,26 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
}
@WorkerThread
- private static List<NewCall> filterSpamNumbers(
- Context context, Spam spam, List<NewCall> newCalls) {
+ private static List<NewCall> filterSpamNumbers(Context context, List<NewCall> newCalls) {
Assert.isWorkerThread();
- if (!spam.isSpamBlockingEnabled()) {
+ if (!SpamComponent.get(context).spamSettings().isSpamBlockingEnabled()) {
+ LogUtil.w("VisualVoicemailUpdateTask.wwwwwwwwwwwww", "NOT ENABLED");
return newCalls;
}
List<NewCall> result = new ArrayList<>();
for (NewCall newCall : newCalls) {
Logger.get(context).logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_SCREENED);
- if (spam.checkSpamStatusSynchronous(newCall.number, newCall.countryIso)) {
+ if (SpamComponent.get(context)
+ .spam()
+ .checkSpamStatusSynchronous(newCall.number, newCall.countryIso)) {
LogUtil.i(
"VisualVoicemailUpdateTask.filterSpamNumbers",
"found voicemail from spam number, suppressing notification");
Logger.get(context)
.logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_AUTO_BLOCKED_AS_SPAM);
} else {
+ LogUtil.w("VisualVoicemailUpdateTask.wwwwwwwwwwwww", "NOT SPAM NUMBER");
result.add(newCall);
}
}
@@ -234,8 +235,7 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
new Input(
context,
CallLogNotificationsQueryHelper.getInstance(context),
- new FilteredNumberAsyncQueryHandler(context),
- SpamComponent.get(context).spam());
+ new FilteredNumberAsyncQueryHandler(context));
DialerExecutorComponent.get(context)
.dialerExecutorFactory()
.createNonUiTaskBuilder(new VisualVoicemailUpdateTask())
@@ -257,17 +257,14 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
@NonNull final Context context;
@NonNull final CallLogNotificationsQueryHelper queryHelper;
@NonNull final FilteredNumberAsyncQueryHandler queryHandler;
- @NonNull final Spam spam;
Input(
Context context,
CallLogNotificationsQueryHelper queryHelper,
- FilteredNumberAsyncQueryHandler queryHandler,
- Spam spam) {
+ FilteredNumberAsyncQueryHandler queryHandler) {
this.context = context;
this.queryHelper = queryHelper;
this.queryHandler = queryHandler;
- this.spam = spam;
}
}
}
diff --git a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
index 02aa9943b..cc307b6b9 100644
--- a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
+++ b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
@@ -38,6 +38,7 @@ import com.android.dialer.logging.Logger;
import com.android.dialer.protos.ProtoParsers;
import com.android.dialer.spam.Spam;
import com.android.dialer.spam.SpamComponent;
+import com.android.dialer.spam.SpamSettings;
import com.google.auto.value.AutoValue;
/**
@@ -104,6 +105,7 @@ public final class ShowBlockReportSpamDialogReceiver extends BroadcastReceiver {
intent, EXTRA_DIALOG_INFO, BlockReportSpamDialogInfo.getDefaultInstance());
Spam spam = SpamComponent.get(context).spam();
+ SpamSettings spamSettings = SpamComponent.get(context).spamSettings();
FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler =
new FilteredNumberAsyncQueryHandler(context);
@@ -114,7 +116,7 @@ public final class ShowBlockReportSpamDialogReceiver extends BroadcastReceiver {
"ShowBlockReportSpamDialogReceiver.showDialogToBlockNumberAndOptionallyReportSpam",
"confirmed");
- if (reportSpam && spam.isSpamEnabled()) {
+ if (reportSpam && spamSettings.isSpamEnabled()) {
LogUtil.i(
"ShowBlockReportSpamDialogReceiver.showDialogToBlockNumberAndOptionallyReportSpam",
"report spam");
@@ -141,7 +143,7 @@ public final class ShowBlockReportSpamDialogReceiver extends BroadcastReceiver {
// Create and show the dialog.
DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
dialogInfo.getNormalizedNumber(),
- spam.isDialogReportSpamCheckedByDefault(),
+ spamSettings.isDialogReportSpamCheckedByDefault(),
onSpamDialogClickListener,
/* dismissListener = */ null)
.show(fragmentManager, BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG);
@@ -189,16 +191,17 @@ public final class ShowBlockReportSpamDialogReceiver extends BroadcastReceiver {
() -> {
LogUtil.i("ShowBlockReportSpamDialogReceiver.showDialogToReportNotSpam", "confirmed");
- Spam spam = SpamComponent.get(context).spam();
- if (spam.isSpamEnabled()) {
+ if (SpamComponent.get(context).spamSettings().isSpamEnabled()) {
Logger.get(context)
.logImpression(DialerImpression.Type.DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM);
- spam.reportNotSpamFromCallHistory(
- dialogInfo.getNormalizedNumber(),
- dialogInfo.getCountryIso(),
- dialogInfo.getCallType(),
- dialogInfo.getReportingLocation(),
- dialogInfo.getContactSource());
+ SpamComponent.get(context)
+ .spam()
+ .reportNotSpamFromCallHistory(
+ dialogInfo.getNormalizedNumber(),
+ dialogInfo.getCountryIso(),
+ dialogInfo.getCallType(),
+ dialogInfo.getReportingLocation(),
+ dialogInfo.getContactSource());
}
};
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();
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 9a0902639..f639e5bdb 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -144,7 +144,7 @@ public class CallList implements DialerCallDelegate {
Trace.beginSection("checkSpam");
call.addListener(new DialerCallListenerImpl(call));
LogUtil.d("CallList.onCallAdded", "callState=" + call.getState());
- if (SpamComponent.get(context).spam().isSpamEnabled()) {
+ if (SpamComponent.get(context).spamSettings().isSpamEnabled()) {
String number = TelecomCallUtil.getNumber(telecomCall);
SpamComponent.get(context)
.spam()
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index 9ef65d877..e852f3d2c 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -205,7 +205,7 @@ public class SpamCallListListener implements CallList.Listener {
/** Determines if the after call notification should be shown for the specified call. */
private boolean shouldShowAfterCallNotification(DialerCall call) {
- if (!SpamComponent.get(context).spam().isSpamNotificationEnabled()) {
+ if (!SpamComponent.get(context).spamSettings().isSpamNotificationEnabled()) {
return false;
}
@@ -305,7 +305,8 @@ public class SpamCallListListener implements CallList.Listener {
private boolean shouldThrottleSpamNotification() {
int randomNumber = random.nextInt(100);
- int thresholdForShowing = SpamComponent.get(context).spam().percentOfSpamNotificationsToShow();
+ int thresholdForShowing =
+ SpamComponent.get(context).spamSettings().percentOfSpamNotificationsToShow();
if (thresholdForShowing == 0) {
LogUtil.d(
"SpamCallListListener.shouldThrottleSpamNotification",
@@ -329,7 +330,7 @@ public class SpamCallListListener implements CallList.Listener {
private boolean shouldThrottleNonSpamNotification() {
int randomNumber = random.nextInt(100);
int thresholdForShowing =
- SpamComponent.get(context).spam().percentOfNonSpamNotificationsToShow();
+ SpamComponent.get(context).spamSettings().percentOfNonSpamNotificationsToShow();
if (thresholdForShowing == 0) {
LogUtil.d(
"SpamCallListListener.shouldThrottleNonSpamNotification",
@@ -418,7 +419,7 @@ public class SpamCallListListener implements CallList.Listener {
*/
private PendingIntent createBlockReportSpamPendingIntent(DialerCall call) {
String action = SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM;
- return SpamComponent.get(context).spam().isDialogEnabledForSpamNotification()
+ return SpamComponent.get(context).spamSettings().isDialogEnabledForSpamNotification()
? createActivityPendingIntent(call, action)
: createServicePendingIntent(call, action);
}
@@ -429,7 +430,7 @@ public class SpamCallListListener implements CallList.Listener {
*/
private PendingIntent createNotSpamPendingIntent(DialerCall call) {
String action = SpamNotificationActivity.ACTION_MARK_NUMBER_AS_NOT_SPAM;
- return SpamComponent.get(context).spam().isDialogEnabledForSpamNotification()
+ return SpamComponent.get(context).spamSettings().isDialogEnabledForSpamNotification()
? createActivityPendingIntent(call, action)
: createServicePendingIntent(call, action);
}
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index 61d04a0d6..cb5f8e514 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -197,7 +197,7 @@ public class SpamNotificationActivity extends FragmentActivity {
/** Creates and displays the dialog for whitelisting a number. */
private void maybeShowNotSpamDialog(
final String number, final ContactLookupResult.Type contactLookupResultType) {
- if (SpamComponent.get(this).spam().isDialogEnabledForSpamNotification()) {
+ if (SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
DialogFragmentForReportingNotSpam.newInstance(
getFormattedNumber(number, this),
new BlockReportSpamDialogs.OnConfirmListener() {
@@ -216,7 +216,7 @@ public class SpamNotificationActivity extends FragmentActivity {
/** Creates and displays the dialog for blocking/reporting a number as spam. */
private void maybeShowBlockReportSpamDialog(
final String number, final ContactLookupResult.Type contactLookupResultType) {
- if (SpamComponent.get(this).spam().isDialogEnabledForSpamNotification()) {
+ if (SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
String displayNumber = getFormattedNumber(number, this);
maybeShowBlockNumberMigrationDialog(
new BlockedNumbersMigrator.Listener() {
@@ -225,7 +225,7 @@ public class SpamNotificationActivity extends FragmentActivity {
DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
displayNumber,
SpamComponent.get(SpamNotificationActivity.this)
- .spam()
+ .spamSettings()
.isDialogReportSpamCheckedByDefault(),
new BlockReportSpamDialogs.OnSpamDialogClickListener() {
@Override
@@ -319,7 +319,7 @@ public class SpamNotificationActivity extends FragmentActivity {
}
private void assertDialogsEnabled() {
- if (!SpamComponent.get(this).spam().isDialogEnabledForSpamNotification()) {
+ if (!SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
throw new IllegalStateException(
"Cannot start this activity with given action because dialogs are not enabled.");
}