From 60d449f45f52c22d7f7e669760457b717352f8de Mon Sep 17 00:00:00 2001 From: Brandon Maxwell Date: Sun, 13 Mar 2016 16:20:52 -0700 Subject: Updating settings to use system blocked numbers ui + After the user has migrated to the framework number blocking solution, the 'Call blocking' setting needs to take them to the system ui. The branching logic to determine which UI to open is added in this CL. Bug: 26664600 Change-Id: I2574f0665d3f0d3d92230e0210c69d1d10b60228 --- .../dialer/compat/FilteredNumberCompat.java | 19 +++++++++ .../dialer/settings/DialerSettingsActivity.java | 6 +-- .../dialer/compat/FilteredNumberCompatTest.java | 48 ++++++++++++++++++++++ 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/com/android/dialer/compat/FilteredNumberCompat.java b/src/com/android/dialer/compat/FilteredNumberCompat.java index c74ff9d1d..232504796 100644 --- a/src/com/android/dialer/compat/FilteredNumberCompat.java +++ b/src/com/android/dialer/compat/FilteredNumberCompat.java @@ -22,12 +22,16 @@ import android.app.FragmentManager; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; import android.net.Uri; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.telecom.TelecomManager; import android.telephony.PhoneNumberUtils; import com.android.contacts.common.compat.CompatUtils; +import com.android.contacts.common.compat.TelecomManagerUtil; import com.android.contacts.common.testing.NeededForTesting; import com.android.dialer.DialerApplication; import com.android.dialer.database.FilteredNumberContract.FilteredNumber; @@ -37,6 +41,7 @@ import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes; import com.android.dialer.filterednumber.BlockNumberDialogFragment; import com.android.dialer.filterednumber.BlockNumberDialogFragment.Callback; import com.android.dialer.filterednumber.BlockedNumbersMigrator; +import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity; import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment; import java.util.ArrayList; @@ -268,4 +273,18 @@ public class FilteredNumberCompat { private static boolean shouldShowMigrationDialog(boolean isBlocking) { return isBlocking && canUseNewFiltering() && !hasMigratedToNewBlocking(); } + + /** + * Creates the {@link Intent} which opens the blocked numbers management interface. + * + * @param context The {@link Context}. + * @return The intent. + */ + public static Intent createManageBlockedNumbersIntent(Context context) { + if (canUseNewFiltering() && hasMigratedToNewBlocking()) { + return TelecomManagerUtil.createManageBlockedNumbersIntent( + (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE)); + } + return new Intent(context, BlockedNumbersSettingsActivity.class); + } } diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java index a18715760..bbcbd49fc 100644 --- a/src/com/android/dialer/settings/DialerSettingsActivity.java +++ b/src/com/android/dialer/settings/DialerSettingsActivity.java @@ -18,7 +18,6 @@ package com.android.dialer.settings; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; import android.os.UserManager; import android.preference.PreferenceManager; @@ -29,12 +28,11 @@ import android.view.MenuItem; import android.widget.Toast; import com.android.contacts.common.compat.CompatUtils; -import com.android.contacts.common.compat.SdkVersionOverride; import com.android.contacts.common.compat.TelephonyManagerCompat; import com.android.dialer.R; +import com.android.dialer.compat.FilteredNumberCompat; import com.android.dialer.compat.SettingsCompat; import com.android.dialer.compat.UserManagerCompat; -import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity; import java.util.List; @@ -99,7 +97,7 @@ public class DialerSettingsActivity extends AppCompatPreferenceActivity { if (isPrimaryUser) { Header blockedCallsHeader = new Header(); blockedCallsHeader.titleRes = R.string.manage_blocked_numbers_label; - blockedCallsHeader.intent = new Intent(this, BlockedNumbersSettingsActivity.class); + blockedCallsHeader.intent = FilteredNumberCompat.createManageBlockedNumbersIntent(this); target.add(blockedCallsHeader); if (TelephonyManagerCompat.isTtyModeSupported(telephonyManager) diff --git a/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java b/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java index a57e1c29c..5ee2f28e1 100644 --- a/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java +++ b/tests/src/com/android/dialer/compat/FilteredNumberCompatTest.java @@ -20,14 +20,17 @@ import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.when; +import android.content.ComponentName; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.provider.BlockedNumberContract.BlockedNumbers; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import com.android.contacts.common.compat.CompatUtils; import com.android.dialer.DialerApplication; @@ -35,6 +38,7 @@ import com.android.dialer.database.FilteredNumberContract.FilteredNumber; import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns; import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources; import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes; +import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity; import org.mockito.Mock; import org.mockito.Mockito; @@ -179,6 +183,50 @@ public class FilteredNumberCompatTest extends AndroidTestCase { FilteredNumberCompat.newBlockNumberContentValues(NON_E164_NUMBER, null, null)); } + public void testCreateManageBlockedNumbersIntent_NullContext() { + try { + FilteredNumberCompat.createManageBlockedNumbersIntent(null); + fail(); + } catch (NullPointerException e) {} + } + + public void testCreateManageBlockedNumbersIntent_M() { + if (CompatUtils.isNCompatible()) { + return; + } + assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class), + FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent()); + } + + public void testCreateManageBlockedNumbersIntent_N_Disabled_NotMigrated() { + if (!CompatUtils.isNCompatible()) { + return; + } + FilteredNumberCompat.setIsEnabledForTest(false); + assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class), + FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent()); + } + + public void testCreateManageBlockedNumbersIntent_N_Enabled_NotMigrated() { + if (!CompatUtils.isNCompatible()) { + return; + } + assertEquals(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class), + FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()).getComponent()); + } + + public void testCreateManageBlockedNumbersIntent_N_Enabled_Migrated() { + if (!CompatUtils.isNCompatible()) { + return; + } + when(mSharedPreferences + .getBoolean(FilteredNumberCompat.HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false)) + .thenReturn(true); + assertFalse(new ComponentName(getContext(), BlockedNumbersSettingsActivity.class) + .equals(FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()) + .getComponent())); + } + private ContentValues newExpectedContentValuesM(String number, String e164Number, String countryIso) { ContentValues contentValues = new ContentValues(); -- cgit v1.2.3