summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQi Wang <wangqi@google.com>2016-04-04 12:32:06 -0700
committerQi Wang <wangqi@google.com>2016-04-06 16:54:42 -0700
commit4f78f85ab36dd157bb47799f383ceb90240f91f9 (patch)
tree1025bb1e6bcb2f6d0acd37b474ed8f134cd0392f
parentb978ee86f18461bf94c0de2247fd2dbded0c4ad0 (diff)
Add dialogs for spam report and block.
Screenshots: 1. block/report spam https://screenshot.googleplex.com/5e772Kikikw 2. block https://screenshot.googleplex.com/AEpYSYoL2E8 3. unblock(is spam and report not a spam) https://screenshot.googleplex.com/AEZfhCXj4h8 4. unblock(not spam) https://screenshot.googleplex.com/r7YkHuCMT1p 5. report not spam https://screenshot.googleplex.com/jkcpm0pdKoj Change-Id: I78fbbacece44632614026c03909289995bef5b14 Fix: 27295785
-rw-r--r--res/layout/block_report_spam_dialog.xml35
-rw-r--r--res/values/strings.xml27
-rw-r--r--src/com/android/dialer/calllog/BlockReportSpamListener.java158
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java44
-rw-r--r--src/com/android/dialer/calllog/CallLogListItemViewHolder.java39
-rw-r--r--src/com/android/dialer/compat/FilteredNumberCompat.java21
-rw-r--r--src/com/android/dialer/service/ExtendedCallInfoService.java8
-rw-r--r--tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java70
8 files changed, 357 insertions, 45 deletions
diff --git a/res/layout/block_report_spam_dialog.xml b/res/layout/block_report_spam_dialog.xml
new file mode 100644
index 000000000..a731decfc
--- /dev/null
+++ b/res/layout/block_report_spam_dialog.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="25dp">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/block_report_number_alert_details"
+ android:layout_marginBottom="10dp"
+ android:textColor="@color/call_log_primary_color"
+ android:textSize="@dimen/blocked_number_settings_description_text_size"/>
+
+ <CheckBox
+ android:id="@+id/report_number_as_spam_action"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/checkbox_report_as_spam_action"
+ android:textSize="@dimen/blocked_number_settings_description_text_size"/>
+</LinearLayout> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5fca528e9..29076152b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1066,4 +1066,31 @@
<!-- Label under the name of a spam number in the call log. [CHAR LIMIT=15] -->
<string name="spam_number_call_log_label">Spam</string>
+
+ <!-- Title of alert dialog after clicking on Block/report as spam. [CHAR LIMIT=100] -->
+ <string name="block_report_number_alert_title">Block <xliff:g id="number">%1$s</xliff:g>?</string>
+
+ <!-- Text in alert dialog after clicking on Block/report as spam. [CHAR LIMIT=100] -->
+ <string name="block_report_number_alert_details">Future calls and voicemails from this number will be blocked.</string>
+
+ <!-- Label for checkbox in the Alert dialog to allow the user to report the number as spam as well. [CHAR LIMIT=30] -->
+ <string name="checkbox_report_as_spam_action">Report call as spam</string>
+
+ <!-- Text in alert dialog after clicking on Block. [CHAR LIMIT=100] -->
+ <string name="block_number_alert_details">Future calls and voicemails from this number will be blocked. This call will be reported as spam.</string>
+
+ <!-- Title of alert dialog after clicking on Unblock. [CHAR LIMIT=100] -->
+ <string name="unblock_report_number_alert_title">Unblock <xliff:g id="number">%1$s</xliff:g>?</string>
+
+ <!-- Text in alert dialog after clicking on Unblock. [CHAR LIMIT=100] -->
+ <string name="unblock_number_alert_details">This number will be unblocked and reported as not spam. Future calls and voicemails won\'t be identified as spam.</string>
+
+ <!-- Title of alert dialog after clicking on Report as not spam. [CHAR LIMIT=100] -->
+ <string name="report_not_spam_alert_title">Whitelist <xliff:g id="number">%1$s</xliff:g>?</string>
+
+ <!-- Report not spam number alert dialog button [CHAR LIMIT=32] -->
+ <string name="report_not_spam_alert_button">Whitelist</string>
+
+ <!-- Text in alert dialog after clicking on Report as not spam. [CHAR LIMIT=100] -->
+ <string name="report_not_spam_alert_details">Future calls and voicemails from this number won\'t be identified as spam. This number will be reported as not spam.</string>
</resources>
diff --git a/src/com/android/dialer/calllog/BlockReportSpamListener.java b/src/com/android/dialer/calllog/BlockReportSpamListener.java
new file mode 100644
index 000000000..bda4ee538
--- /dev/null
+++ b/src/com/android/dialer/calllog/BlockReportSpamListener.java
@@ -0,0 +1,158 @@
+package com.android.dialer.calllog;
+
+import android.app.AlertDialog;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.net.Uri;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.CheckBox;
+
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.service.ExtendedCallInfoService;
+import com.android.dialer.R;
+
+/**
+ * Listener to show dialogs for block and report spam actions.
+ */
+public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClickListener {
+
+ private final Context mContext;
+ private final RecyclerView.Adapter mAdapter;
+ private final ExtendedCallInfoService mExtendedCallInfoService;
+ private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler;
+
+ public BlockReportSpamListener(Context context, RecyclerView.Adapter adapter,
+ ExtendedCallInfoService extendedCallInfoService,
+ FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler) {
+ mContext = context;
+ mAdapter = adapter;
+ mExtendedCallInfoService = extendedCallInfoService;
+ mFilteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
+ }
+
+ @Override
+ public void onBlockReportSpam(String displayNumber, final String number,
+ final String countryIso, final int callType) {
+ final View dialogView = View.inflate(mContext, R.layout.block_report_spam_dialog, null);
+
+ AlertDialog.Builder alertDialogBuilder = createDialogBuilder();
+ alertDialogBuilder
+ .setView(dialogView)
+ .setTitle(mContext.getString(
+ R.string.block_report_number_alert_title, displayNumber))
+ .setPositiveButton(mContext.getString(R.string.block_number_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ CheckBox isSpamCheckbox = (CheckBox) dialogView
+ .findViewById(R.id.report_number_as_spam_action);
+ if (isSpamCheckbox.isChecked()) {
+ mExtendedCallInfoService.reportSpam(
+ number, countryIso, callType);
+ }
+ mFilteredNumberAsyncQueryHandler.blockNumber(
+ new FilteredNumberAsyncQueryHandler.OnBlockNumberListener() {
+ @Override
+ public void onBlockComplete(Uri uri) {
+ mAdapter.notifyDataSetChanged();
+ }
+ },
+ number,
+ countryIso);
+ }
+ });
+ alertDialogBuilder.show();
+ }
+
+ @Override
+ public void onBlock(String displayNumber, final String number, final String countryIso,
+ final int callType) {
+ AlertDialog.Builder alertDialogBuilder = createDialogBuilder();
+ alertDialogBuilder
+ .setTitle(mContext.getString(
+ R.string.block_report_number_alert_title, displayNumber))
+ .setMessage(R.string.block_number_alert_details)
+ .setPositiveButton(mContext.getString(R.string.block_number_ok),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mExtendedCallInfoService.reportSpam(number, countryIso, callType);
+ mFilteredNumberAsyncQueryHandler.blockNumber(
+ new FilteredNumberAsyncQueryHandler.OnBlockNumberListener() {
+ @Override
+ public void onBlockComplete(Uri uri) {
+ mAdapter.notifyDataSetChanged();
+ }
+ },
+ number,
+ countryIso);
+ }
+ });
+ alertDialogBuilder.show();
+ }
+
+ @Override
+ public void onUnblock(String displayNumber, final String number, final String countryIso,
+ final Integer blockId, final boolean isSpam, final int callType) {
+ AlertDialog.Builder alertDialogBuilder = createDialogBuilder();
+ if (isSpam) {
+ alertDialogBuilder.setMessage(R.string.unblock_number_alert_details);
+ }
+ alertDialogBuilder
+ .setTitle(mContext.getString(
+ R.string.unblock_report_number_alert_title, displayNumber))
+ .setPositiveButton(R.string.unblock_number_ok,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (isSpam) {
+ mExtendedCallInfoService.reportNotSpam(
+ number, countryIso, callType);
+ }
+ mFilteredNumberAsyncQueryHandler.unblock(
+ new FilteredNumberAsyncQueryHandler.OnUnblockNumberListener() {
+ @Override
+ public void onUnblockComplete(int rows, ContentValues values) {
+ mAdapter.notifyDataSetChanged();
+ }
+ },
+ blockId);
+ }
+ });
+ alertDialogBuilder.show();
+ }
+
+ @Override
+ public void onReportNotSpam(String displayNumber, final String number, final String countryIso,
+ final int callType) {
+ AlertDialog.Builder alertDialogBuilder = createDialogBuilder();
+ alertDialogBuilder
+ .setTitle(mContext.getString(
+ R.string.report_not_spam_alert_title, displayNumber))
+ .setMessage(R.string.report_not_spam_alert_details)
+ .setPositiveButton(R.string.report_not_spam_alert_button,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mExtendedCallInfoService.reportNotSpam(
+ number, countryIso, callType);
+ mAdapter.notifyDataSetChanged();
+ }
+ });
+ alertDialogBuilder.show();
+ }
+
+ private AlertDialog.Builder createDialogBuilder() {
+ return new AlertDialog.Builder(mContext)
+ .setCancelable(true)
+ .setNegativeButton(mContext.getString(android.R.string.cancel),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+ }
+}
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index e826867ab..506dafdf8 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -16,14 +16,15 @@
package com.android.dialer.calllog;
-import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.filterednumber.BlockNumberDialogFragment;
import com.android.dialer.service.ExtendedCallInfoService;
import com.android.dialerbind.ObjectFactory;
import com.google.common.annotations.VisibleForTesting;
-import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ContentValues;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
@@ -44,6 +45,7 @@ import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
+import android.widget.CheckBox;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.compat.CompatUtils;
@@ -70,8 +72,7 @@ import java.util.HashMap;
*/
public class CallLogAdapter extends GroupingListAdapter
implements CallLogGroupBuilder.GroupCreator,
- VoicemailPlaybackPresenter.OnVoicemailDeletedListener,
- CallLogListItemViewHolder.OnClickListener {
+ VoicemailPlaybackPresenter.OnVoicemailDeletedListener {
// Types of activities the call log adapter is used for
public static final int ACTIVITY_TYPE_CALL_LOG = 1;
@@ -140,6 +141,7 @@ public class CallLogAdapter extends GroupingListAdapter
public void onChangeFilteredNumberUndo() {
}
};
+ private CallLogListItemViewHolder.OnClickListener mBlockReportSpamListener;
/**
* Hashmap, keyed by call Id, used to track the day group for a call. As call log entries are
@@ -319,6 +321,8 @@ public class CallLogAdapter extends GroupingListAdapter
maybeShowVoicemailPromoCard();
mExtendedCallInfoService = ObjectFactory.newExtendedCallInfoService(context);
+ mBlockReportSpamListener = new BlockReportSpamListener(mContext, this,
+ mExtendedCallInfoService, mFilteredNumberAsyncQueryHandler);
setHasStableIds(true);
}
@@ -336,36 +340,6 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
- @Override
- public void onBlockReportSpam(String number, String countryIso, String displayNumber) {
- mExtendedCallInfoService.reportSpam(number, countryIso);
- notifyDataSetChanged();
- }
-
- @Override
- public void onBlock(String number, String countryIso, String displayNumber) {
- FilteredNumberCompat
- .showBlockNumberDialogFlow(mContext.getContentResolver(), null, number,
- countryIso, displayNumber, R.id.floating_action_button_container,
- ((Activity) mContext).getFragmentManager(),
- mBlockedNumberDialogCallback);
- }
-
- @Override
- public void onUnblock(String number, String countryIso, Integer blockId, String displayNumber) {
- FilteredNumberCompat
- .showBlockNumberDialogFlow(mContext.getContentResolver(), blockId, number,
- countryIso, displayNumber, R.id.floating_action_button_container,
- ((Activity) mContext).getFragmentManager(),
- mBlockedNumberDialogCallback);
- }
-
- @Override
- public void onReportNotSpam(String number, String countryIso, String displayNumber) {
- mExtendedCallInfoService.reportNotSpam(number, countryIso);
- notifyDataSetChanged();
- }
-
/**
* Requery on background thread when {@link Cursor} changes.
*/
@@ -442,7 +416,7 @@ public class CallLogAdapter extends GroupingListAdapter
CallLogListItemViewHolder viewHolder = CallLogListItemViewHolder.create(
view,
mContext,
- this,
+ mBlockReportSpamListener,
mExpandCollapseListener,
mCallLogCache,
mCallLogListItemHelper,
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 53e6fbba8..aaa9dc83b 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -54,6 +54,7 @@ import com.android.dialer.calllog.calllogcache.CallLogCache;
import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.filterednumber.BlockNumberDialogFragment;
+import com.android.dialer.filterednumber.BlockedNumbersMigrator;
import com.android.dialer.filterednumber.FilteredNumbersUtil;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
@@ -73,10 +74,12 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
View.OnCreateContextMenuListener {
public interface OnClickListener {
- void onBlockReportSpam(String number, String countryIso, String displayNumber);
- void onBlock(String number, String countryIso, String displayNumber);
- void onUnblock(String number, String countryIso, Integer blockId, String displayNumber);
- void onReportNotSpam(String number, String countryIso, String displayNumber);
+ void onBlockReportSpam(
+ String displayNumber, String number, String countryIso, int callType);
+ void onBlock(String displayNumber, String number, String countryIso, int callType);
+ void onUnblock(String displayNumber, String number, String countryIso, Integer blockId,
+ boolean isSpam, int callType);
+ void onReportNotSpam(String displayNumber, String number, String countryIso, int callType);
}
/** The root view of the call log list item */
@@ -672,13 +675,25 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
numberType, /* phone number type (e.g. mobile) in second line of contact view */
accountHandle);
} else if (view.getId() == R.id.block_report_action) {
- mBlockReportListener.onBlockReportSpam(number, countryIso, displayNumber);
+ maybeShowBlockNumberMigrationDialog(new BlockedNumbersMigrator.Listener() {
+ @Override
+ public void onComplete() {
+ mBlockReportListener.onBlockReportSpam(
+ displayNumber, number, countryIso, callType);
+ }
+ });
} else if (view.getId() == R.id.block_action) {
- mBlockReportListener.onBlock(number, countryIso, displayNumber);
+ maybeShowBlockNumberMigrationDialog(new BlockedNumbersMigrator.Listener() {
+ @Override
+ public void onComplete() {
+ mBlockReportListener.onBlock(displayNumber, number, countryIso, callType);
+ }
+ });
} else if (view.getId() == R.id.unblock_action) {
- mBlockReportListener.onUnblock(number, countryIso, blockId, displayNumber);
+ mBlockReportListener.onUnblock(
+ displayNumber, number, countryIso, blockId, isSpam, callType);
} else if (view.getId() == R.id.report_not_spam_action) {
- mBlockReportListener.onReportNotSpam(number, countryIso, displayNumber);
+ mBlockReportListener.onReportNotSpam(displayNumber, number, countryIso, callType);
} else {
final IntentProvider intentProvider = (IntentProvider) view.getTag();
if (intentProvider != null) {
@@ -691,6 +706,14 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
}
+ private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
+ if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
+ mContext.getContentResolver(),
+ ((Activity) mContext).getFragmentManager(), listener)) {
+ listener.onComplete();
+ }
+ }
+
@NeededForTesting
public static CallLogListItemViewHolder createForTest(Context context) {
Resources resources = context.getResources();
diff --git a/src/com/android/dialer/compat/FilteredNumberCompat.java b/src/com/android/dialer/compat/FilteredNumberCompat.java
index 91563dc0d..ea994c977 100644
--- a/src/com/android/dialer/compat/FilteredNumberCompat.java
+++ b/src/com/android/dialer/compat/FilteredNumberCompat.java
@@ -238,6 +238,27 @@ public class FilteredNumberCompat {
}
/**
+ * Shows block number migration dialog if necessary.
+ *
+ * @param fragmentManager The {@link FragmentManager} used to show fragments.
+ * @param listener The {@link BlockedNumbersMigrator.Listener} to call when migration is
+ * complete.
+ * @return boolean True if migration dialog is shown.
+ */
+ public static boolean maybeShowBlockNumberMigrationDialog(
+ ContentResolver contentResolver, FragmentManager fragmentManager,
+ BlockedNumbersMigrator.Listener listener) {
+ if (shouldShowMigrationDialog(true)) {
+ Log.i(TAG, "maybeShowBlockNumberMigrationDialog - showing migration dialog");
+ MigrateBlockedNumbersDialogFragment
+ .newInstance(new BlockedNumbersMigrator(contentResolver), listener)
+ .show(fragmentManager, "MigrateBlockedNumbers");
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Shows the flow of {@link android.app.DialogFragment}s for blocking or unblocking numbers.
*
* @param blockId The id into the blocked numbers database.
diff --git a/src/com/android/dialer/service/ExtendedCallInfoService.java b/src/com/android/dialer/service/ExtendedCallInfoService.java
index 412cece74..0bf5badd3 100644
--- a/src/com/android/dialer/service/ExtendedCallInfoService.java
+++ b/src/com/android/dialer/service/ExtendedCallInfoService.java
@@ -44,13 +44,17 @@ public interface ExtendedCallInfoService {
* 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}.
*/
- void reportSpam(String number, String countryIso);
+ void reportSpam(String number, String countryIso, int callType);
/**
* 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}.
*/
- void reportNotSpam(String number, String countryIso);
+ void reportNotSpam(String number, String countryIso, int callType);
}
diff --git a/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java b/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java
new file mode 100644
index 000000000..f505818e9
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/BlockReportSpamListenerTest.java
@@ -0,0 +1,70 @@
+package com.android.dialer.calllog;
+
+import android.support.v7.widget.RecyclerView;
+import android.test.ActivityInstrumentationTestCase2;
+
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
+import com.android.dialer.service.ExtendedCallInfoService;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Unit tests for {@link BlockReportSpamListener}.
+ */
+public class BlockReportSpamListenerTest extends ActivityInstrumentationTestCase2<DialtactsActivity> {
+
+ private static final String TEST_DISPLAY_NUMBER = "(123)456-7890";
+ private static final String TEST_NUMBER = "1234567890";
+ private static final String TEST_COUNTRY_ISO = "us";
+ private static final int TEST_CALL_TYPE = 0;
+ private static final int TEST_CALL_BLOCK_ID = 1;
+
+ private BlockReportSpamListener blockReportSpamListener;
+
+ @Mock private RecyclerView.Adapter adapter;
+ @Mock private ExtendedCallInfoService extendedCallInfoService;
+ @Mock private FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
+
+ public BlockReportSpamListenerTest() {
+ super(DialtactsActivity.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ MockitoAnnotations.initMocks(this);
+
+ blockReportSpamListener = new BlockReportSpamListener(getActivity(), adapter,
+ extendedCallInfoService, filteredNumberAsyncQueryHandler);
+ }
+
+ public void testOnBlockReportSpam() {
+ blockReportSpamListener.onBlockReportSpam(
+ TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
+ }
+
+ public void testOnBlock() {
+ blockReportSpamListener.onBlock(
+ TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
+ }
+
+ public void testOnUnlock_isSpam() {
+ blockReportSpamListener.onUnblock(
+ TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_BLOCK_ID,
+ true, TEST_CALL_TYPE);
+ }
+
+ public void testOnUnlock_isNotSpam() {
+ blockReportSpamListener.onUnblock(
+ TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_BLOCK_ID,
+ false, TEST_CALL_TYPE);
+ }
+
+ public void testOnReportNotSpam() {
+ blockReportSpamListener.onReportNotSpam(
+ TEST_DISPLAY_NUMBER, TEST_NUMBER, TEST_COUNTRY_ISO, TEST_CALL_TYPE);
+ }
+}