merge in nyc-release history after reset to nyc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5302b0d..ee9418a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -598,6 +598,12 @@
Calls from this number will be blocked, but the caller may still be able to leave you voicemails.
</string>
+ <!-- Confirmation dialog message for blocking a number with new filtering enabled.
+ [CHAR LIMIT=NONE] -->
+ <string name="block_number_confirmation_message_new_filtering">
+ You will no longer receive calls or texts from this number.
+ </string>
+
<!-- Block number alert dialog button [CHAR LIMIT=32] -->
<string name="block_number_ok">BLOCK</string>
@@ -605,12 +611,6 @@
<string name="unblock_number_confirmation_title">Unblock
<xliff:g id="number" example="(555) 555-5555">%1$s</xliff:g>?</string>
- <!-- Confirmation dialog message for unblocking a number.
- [CHAR LIMIT=NONE] -->
- <string name="unblock_number_confirmation_message">
- This number will no longer be blocked from calling you.
- </string>
-
<!-- Unblock number alert dialog button [CHAR LIMIT=32] -->
<string name="unblock_number_ok">UNBLOCK</string>
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
index 7af1a13..52ef49a 100644
--- a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
+++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
@@ -158,7 +158,13 @@
new Listener() {
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
- if (cursor == null || cursor.getCount() != 1) {
+ /*
+ * In the frameworking blocking, numbers can be blocked in both e164 format
+ * and not, resulting in multiple rows being returned for this query. For
+ * example, both '16502530000' and '6502530000' can exist at the same time
+ * and will be returned by this query.
+ */
+ if (cursor == null || cursor.getCount() == 0) {
listener.onCheckComplete(null);
return;
}
diff --git a/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
index de4fe99..3c60a96 100644
--- a/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
+++ b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
@@ -32,6 +32,7 @@
import com.android.contacts.common.util.ContactDisplayUtils;
import com.android.dialer.R;
+import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
@@ -152,17 +153,19 @@
String okText;
String message;
if (isBlocked) {
- title = ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
- R.string.unblock_number_confirmation_title,
- mDisplayNumber);
+ title = null;
okText = getString(R.string.unblock_number_ok);
- message = getString(R.string.unblock_number_confirmation_message);
+ message = ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
+ R.string.unblock_number_confirmation_title,
+ mDisplayNumber).toString();
} else {
title = ContactDisplayUtils.getTtsSpannedPhoneNumber(getResources(),
R.string.block_number_confirmation_title,
mDisplayNumber);
okText = getString(R.string.block_number_ok);
- if (mVoicemailEnabledChecker.isVisualVoicemailEnabled()) {
+ if (FilteredNumberCompat.useNewFiltering()) {
+ message = getString(R.string.block_number_confirmation_message_new_filtering);
+ } else if (mVoicemailEnabledChecker.isVisualVoicemailEnabled()) {
message = getString(R.string.block_number_confirmation_message_vvm);
} else {
message = getString(R.string.block_number_confirmation_message_no_vvm);
diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java
index 38615cc..87ba8be 100644
--- a/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java
+++ b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java
@@ -127,16 +127,21 @@
getListView().findViewById(R.id.add_number_linear_layout).setVisibility(View.GONE);
getListView().findViewById(R.id.add_number_linear_layout).setOnClickListener(null);
mBlockedNumberListDivider.setVisibility(View.INVISIBLE);
- }
- FilteredNumbersUtil.checkForSendToVoicemailContact(
- getActivity(), new CheckForSendToVoicemailContactListener() {
- @Override
- public void onComplete(boolean hasSendToVoicemailContact) {
- final int visibility = hasSendToVoicemailContact ? View.VISIBLE : View.GONE;
- mImportSettings.setVisibility(visibility);
- }
- });
+ mImportSettings.setSystemUiVisibility(View.GONE);
+ getListView().findViewById(R.id.import_button).setOnClickListener(null);
+ getListView().findViewById(R.id.view_numbers_button).setOnClickListener(null);
+ } else {
+ FilteredNumbersUtil.checkForSendToVoicemailContact(
+ getActivity(), new CheckForSendToVoicemailContactListener() {
+ @Override
+ public void onComplete(boolean hasSendToVoicemailContact) {
+ final int visibility =
+ hasSendToVoicemailContact ? View.VISIBLE : View.GONE;
+ mImportSettings.setVisibility(visibility);
+ }
+ });
+ }
if (FilteredNumbersUtil.hasRecentEmergencyCall(getContext())) {
mBlockedNumbersDisabledForEmergency.setVisibility(View.VISIBLE);
diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
index e3870de..498b10a 100644
--- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
+++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
@@ -33,6 +33,7 @@
import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.R;
+import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
@@ -298,6 +299,10 @@
}
public static void maybeNotifyCallBlockingDisabled(final Context context) {
+ // The Dialer is not responsible for this notification after migrating
+ if (FilteredNumberCompat.useNewFiltering()) {
+ return;
+ }
// Skip if the user has already received a notification for the most recent emergency call.
if (PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)) {
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index e5efbec..521671a 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -427,6 +427,11 @@
}
@Override
+ public void setSuccess() {
+ mStateText.setText(null);
+ }
+
+ @Override
public void setIsFetchingContent() {
disableUiElements();
mStateText.setText(getString(R.string.voicemail_fetching_content));
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 5924fb4..e224ddc 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -84,6 +84,7 @@
void onPlaybackStopped();
void onSpeakerphoneOn(boolean on);
void setClipPosition(int clipPositionInMillis, int clipLengthInMillis);
+ void setSuccess();
void setFetchContentTimeout();
void setIsFetchingContent();
void onVoicemailArchiveSucceded(Uri voicemailUri);
@@ -606,6 +607,7 @@
Log.d(TAG, "onPrepared: mPosition=" + mPosition);
mView.setClipPosition(mPosition, mDuration.get());
mView.enableUiElements();
+ mView.setSuccess();
mMediaPlayer.seekTo(mPosition);
if (mIsPlaying) {
diff --git a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
index 28fdda0..625f3fd 100644
--- a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
+++ b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java
@@ -47,6 +47,7 @@
private static final String NUMBER = "6502530000";
private static final String COUNTRY_ISO = "US";
private static final Integer ID = 1;
+ private static final Integer ID2 = 2;
private static final Uri BLOCKED_NUMBER_URI_N = CompatUtils.isNCompatible() ?
Uri.withAppendedPath(BlockedNumberContract.AUTHORITY_URI, "blocked") : null;
private static final Uri BLOCKED_NUMBER_URI_M =
@@ -177,6 +178,26 @@
mContentProvider.verify();
}
+ public void testIsBlockedNumber_MultipleResults() throws Throwable {
+ if (CompatUtils.isNCompatible()) {
+ newIsBlockedNumberExpectedQuery().returnRow(ID).returnRow(ID2);
+ } else {
+ newIsBlockedNumberExpectedQuery().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER)
+ .returnRow(ID2, FilteredNumberTypes.BLOCKED_NUMBER);
+ }
+ final CheckBlockedListener listener = new CheckBlockedListener();
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ new FilteredNumberAsyncQueryHandler(mContentResolver)
+ .isBlockedNumber(listener, NUMBER, COUNTRY_ISO);
+ }
+ });
+ // When there are multiple matches, the first is returned
+ assertEquals(ID, listener.waitForCallback());
+ mContentProvider.verify();
+ }
+
public void testBlockNumber_Disabled() throws Throwable {
if (!CompatUtils.isNCompatible()) {
return;
diff --git a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
index d2e7f0a..d496b18 100644
--- a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
+++ b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
@@ -15,12 +15,20 @@
*/
package com.android.dialer.filterednumber;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+import android.content.Context;
import android.preference.PreferenceManager;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.test.mocks.ContactsMockContext;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
+import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberContract;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
@@ -31,10 +39,10 @@
private static final String COUNTRY_ISO = "US";
// Wed Nov 11 2015 15:00:00
- private static final long EARLIER_TIME = 1447282800000l;
+ private static final long EARLIER_TIME = 1447282800000L;
// Wed Nov 11 2015 15:01:40
- private static final long LATER_TIME = 1447282900000l;
+ private static final long LATER_TIME = 1447282900000L;
private static final String[] FILTERED_NUMBER_PROJECTION = new String[] {
FilteredNumberColumns.CREATION_TIME };
@@ -98,6 +106,18 @@
COUNTRY_ISO, 0));
}
+ public void testMaybeNotifyCallBlockingDisabled_Migrated() {
+ if (!CompatUtils.isNCompatible()) {
+ return;
+ }
+ FilteredNumberCompat.setIsEnabledForTest(true);
+ FilteredNumberCompat.setHasMigratedToNewBlocking(true);
+ Context mockContext = mock(Context.class);
+
+ FilteredNumbersUtil.maybeNotifyCallBlockingDisabled(mockContext);
+ verifyZeroInteractions(mockContext);
+ }
+
private void setupShouldBlockVoicemailQuery(long creationTimeMs) {
Query query = mContext.getContactsProvider().expectQuery(FilteredNumber.CONTENT_URI)
.withProjection(FILTERED_NUMBER_PROJECTION)