Merge "Use [set|get]PrivateDnsMode directly" am: 2e7309ffd3 am: aa307b03a9

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1675475

Change-Id: I460d308ab370a662b63a43c7e027e355c7d36130
diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
index 822aad0..1c3fc76 100644
--- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
+++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
@@ -15,9 +15,9 @@
  */
 package com.android.settings.network;
 
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
@@ -27,7 +27,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.ConnectivityManager;
+import android.net.ConnectivitySettingsManager;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -70,7 +70,7 @@
 
     private static final String TAG = "PrivateDnsModeDialog";
     // DNS_MODE -> RadioButton id
-    private static final Map<String, Integer> PRIVATE_DNS_MAP;
+    private static final Map<Integer, Integer> PRIVATE_DNS_MAP;
 
     static {
         PRIVATE_DNS_MAP = new HashMap<>();
@@ -93,7 +93,7 @@
     @VisibleForTesting
     RadioGroup mRadioGroup;
     @VisibleForTesting
-    String mMode;
+    int mMode;
 
     public PrivateDnsModeDialogPreference(Context context) {
         super(context);
@@ -160,7 +160,7 @@
         final Context context = getContext();
         final ContentResolver contentResolver = context.getContentResolver();
 
-        mMode = ConnectivityManager.getPrivateDnsMode(context);
+        mMode = ConnectivitySettingsManager.getPrivateDnsMode(context);
 
         mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname);
         mEditText.addTextChangedListener(this);
@@ -196,15 +196,15 @@
     public void onClick(DialogInterface dialog, int which) {
         if (which == DialogInterface.BUTTON_POSITIVE) {
             final Context context = getContext();
-            if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
+            if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) {
                 // Only clickable if hostname is valid, so we could save it safely
-                Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY,
+                ConnectivitySettingsManager.setPrivateDnsHostname(context,
                         mEditText.getText().toString());
             }
 
             FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
                     SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode);
-            Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode);
+            ConnectivitySettingsManager.setPrivateDnsMode(context, mMode);
         }
     }
 
@@ -264,7 +264,7 @@
     }
 
     private void updateDialogInfo() {
-        final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME.equals(mMode);
+        final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME == mMode;
         if (mEditText != null) {
             mEditText.setEnabled(modeProvider);
         }
diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java
index 4aa92f4..07d5714 100644
--- a/src/com/android/settings/network/PrivateDnsPreferenceController.java
+++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java
@@ -16,9 +16,9 @@
 
 package com.android.settings.network;
 
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
 import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE;
 import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
 import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
@@ -29,6 +29,7 @@
 import android.database.ContentObserver;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager.NetworkCallback;
+import android.net.ConnectivitySettingsManager;
 import android.net.LinkProperties;
 import android.net.Network;
 import android.net.Uri;
@@ -118,7 +119,7 @@
     public CharSequence getSummary() {
         final Resources res = mContext.getResources();
         final ContentResolver cr = mContext.getContentResolver();
-        final String mode = ConnectivityManager.getPrivateDnsMode(mContext);
+        final int mode = ConnectivitySettingsManager.getPrivateDnsMode(mContext);
         final LinkProperties lp = mLatestLinkProperties;
         final List<InetAddress> dnses = (lp == null) ? null : lp.getValidatedPrivateDnsServers();
         final boolean dnsesResolved = !ArrayUtils.isEmpty(dnses);
diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
index 5fd417d..85a67f6 100644
--- a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
@@ -16,10 +16,9 @@
 
 package com.android.settings.network;
 
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
-import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
 
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
@@ -28,11 +27,9 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.net.ConnectivityManager;
-import android.provider.Settings;
+import android.net.ConnectivitySettingsManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
@@ -118,10 +115,8 @@
     public void testOnBindDialogView_containsCorrectData() {
         // Don't set settings to the default value ("opportunistic") as that
         // risks masking failure to read the mode from settings.
-        Settings.Global.putString(mContext.getContentResolver(),
-                PrivateDnsModeDialogPreference.MODE_KEY, PRIVATE_DNS_MODE_OFF);
-        Settings.Global.putString(mContext.getContentResolver(),
-                PrivateDnsModeDialogPreference.HOSTNAME_KEY, HOST_NAME);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
+        ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOST_NAME);
 
         final LayoutInflater inflater = LayoutInflater.from(mContext);
         final View view = inflater.inflate(R.layout.private_dns_mode_dialog,
@@ -159,29 +154,26 @@
     @Test
     public void testOnClick_positiveButtonClicked_saveData() {
         // Set the default settings to OFF
-        final ContentResolver contentResolver = mContext.getContentResolver();
-        Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
 
-        mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+        mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
         mPreference.onClick(null, DialogInterface.BUTTON_POSITIVE);
 
         // Change to OPPORTUNISTIC
-        assertThat(Settings.Global.getString(contentResolver, PRIVATE_DNS_MODE)).isEqualTo(
+        assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo(
                 PRIVATE_DNS_MODE_OPPORTUNISTIC);
     }
 
     @Test
     public void testOnClick_negativeButtonClicked_doNothing() {
         // Set the default settings to OFF
-        final ContentResolver contentResolver = mContext.getContentResolver();
-        Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
 
-        mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+        mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
         mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE);
 
         // Still equal to OFF
-        assertThat(Settings.Global.getString(contentResolver,
-                Settings.Global.PRIVATE_DNS_MODE)).isEqualTo(
-                ConnectivityManager.PRIVATE_DNS_MODE_OFF);
+        assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo(
+                PRIVATE_DNS_MODE_OFF);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
index 390a674..e31d959 100644
--- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
@@ -16,10 +16,9 @@
 
 package com.android.settings.network;
 
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
-import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
-import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
+import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
 import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
 import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
 
@@ -48,6 +47,7 @@
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager.NetworkCallback;
+import android.net.ConnectivitySettingsManager;
 import android.net.LinkProperties;
 import android.net.Network;
 import android.os.Handler;
@@ -193,8 +193,8 @@
 
     @Test
     public void getSummary_PrivateDnsModeOff() {
-        setPrivateDnsMode(PRIVATE_DNS_MODE_OFF);
-        setPrivateDnsProviderHostname(HOSTNAME);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
+        ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off));
@@ -203,8 +203,8 @@
     @Test
     public void getSummary_PrivateDnsModeOpportunistic() {
         mLifecycle.handleLifecycleEvent(ON_START);
-        setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC);
-        setPrivateDnsProviderHostname(HOSTNAME);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC);
+        ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -226,8 +226,8 @@
     @Test
     public void getSummary_PrivateDnsModeProviderHostname() {
         mLifecycle.handleLifecycleEvent(ON_START);
-        setPrivateDnsMode(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
-        setPrivateDnsProviderHostname(HOSTNAME);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
+        ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(
@@ -252,7 +252,7 @@
     public void getSummary_PrivateDnsDefaultMode() {
         // Default mode is opportunistic, unless overridden by a Settings push.
         setPrivateDnsMode("");
-        setPrivateDnsProviderHostname("");
+        ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "");
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -260,7 +260,7 @@
         reset(mController);
         reset(mPreference);
         // Pretend an emergency gservices setting has disabled default-opportunistic.
-        Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, PRIVATE_DNS_MODE_OFF);
+        ConnectivitySettingsManager.setPrivateDnsDefaultMode(mContext, PRIVATE_DNS_MODE_OFF);
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off));
@@ -270,7 +270,7 @@
         // The user interacting with the Private DNS menu, explicitly choosing
         // opportunistic mode, will be able to use despite the change to the
         // default setting above.
-        setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC);
+        ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC);
         mController.updateState(mPreference);
         verify(mController, atLeastOnce()).getSummary();
         verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -305,10 +305,6 @@
         Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, mode);
     }
 
-    private void setPrivateDnsProviderHostname(String name) {
-        Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, name);
-    }
-
     private String getResourceString(int which) {
         return mContext.getResources().getString(which);
     }