Adding sharedPref for blocked number migration
+ Users are shown a dialog when they're running on an SDK which
supports the framework blocking solution, but they haven't yet
migrated. In order to determine whether the user has migrated or not,
a SharedPreference value is used. In a later CL which performs the
migration, this value will be updated as the final step.
Bug: 26664600
Change-Id: I5a12be643d0fb3b52ef408215779423bf0a2ddc7
diff --git a/src/com/android/dialer/DialerApplication.java b/src/com/android/dialer/DialerApplication.java
index 078b551..189c682 100644
--- a/src/com/android/dialer/DialerApplication.java
+++ b/src/com/android/dialer/DialerApplication.java
@@ -17,16 +17,23 @@
package com.android.dialer;
import android.app.Application;
+import android.content.Context;
import android.os.Trace;
+import android.support.annotation.Nullable;
import com.android.contacts.common.extensions.ExtensionsFactory;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.compat.FilteredNumberCompat;
public class DialerApplication extends Application {
private static final String TAG = "DialerApplication";
+ private static Context sContext;
+
@Override
public void onCreate() {
+ sContext = this;
Trace.beginSection(TAG + " onCreate");
super.onCreate();
Trace.beginSection(TAG + " ExtensionsFactory initialization");
@@ -34,4 +41,14 @@
Trace.endSection();
Trace.endSection();
}
+
+ @Nullable
+ public static Context getContext() {
+ return sContext;
+ }
+
+ @NeededForTesting
+ public static void setContextForTest(Context context) {
+ sContext = context;
+ }
}
diff --git a/src/com/android/dialer/compat/FilteredNumberCompat.java b/src/com/android/dialer/compat/FilteredNumberCompat.java
index 63a2a32..3ad45e8 100644
--- a/src/com/android/dialer/compat/FilteredNumberCompat.java
+++ b/src/com/android/dialer/compat/FilteredNumberCompat.java
@@ -20,12 +20,15 @@
import android.content.ContentUris;
import android.content.ContentValues;
+import android.content.Context;
import android.net.Uri;
+import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.telephony.PhoneNumberUtils;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.testing.NeededForTesting;
+import com.android.dialer.DialerApplication;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
@@ -43,9 +46,12 @@
*/
public class FilteredNumberCompat {
+ protected static final String HAS_MIGRATED_TO_NEW_BLOCKING_KEY = "migratedToNewBlocking";
+
// Flag to enable feature.
// TODO(maxwelb) remove when ready to enable new filtering.
private static final boolean isNewFilteringEnabled = false;
+
private static Boolean isEnabledForTest;
/**
@@ -114,8 +120,28 @@
* migration has been performed, {@code false} otherwise.
*/
public static boolean useNewFiltering() {
- // TODO(maxwelb): Add shared preference for when the Dialer blocked list has been migrated
- return canUseNewFiltering();
+ return canUseNewFiltering() && hasMigratedToNewBlocking();
+ }
+
+ /**
+ * @return {@code true} if the user has migrated to use
+ * {@link android.provider.BlockedNumberContract} blocking, {@code false} otherwise.
+ */
+ public static boolean hasMigratedToNewBlocking() {
+ return PreferenceManager.getDefaultSharedPreferences(DialerApplication.getContext())
+ .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false);
+ }
+
+ /**
+ * Called to inform this class whether the user has fully migrated to use
+ * {@link android.provider.BlockedNumberContract} blocking or not.
+ *
+ * @param hasMigrated {@code true} if the user has migrated, {@code false} otherwise.
+ */
+ @NeededForTesting
+ public static void setHasMigratedToNewBlocking(boolean hasMigrated) {
+ PreferenceManager.getDefaultSharedPreferences(DialerApplication.getContext()).edit()
+ .putBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, hasMigrated).apply();
}
@NeededForTesting