diff options
author | Brandon Maxwell <maxwelb@google.com> | 2016-03-13 16:20:52 -0700 |
---|---|---|
committer | Brandon Maxwell <maxwelb@google.com> | 2016-03-15 14:25:36 -0700 |
commit | 60d449f45f52c22d7f7e669760457b717352f8de (patch) | |
tree | 69afb2476817f4093d16d6598c8d7b047f2341b2 | |
parent | aae1559613cc24ad1d960b550c15af9f61675f38 (diff) |
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
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(); |