Use [set|get]PrivateDnsMode directly

The value of PRIVATE_DNS_MODE_* has changed from String to int and
ConnectivityManager provides 2 new APIs to set and get private
DNS mode, the caller can use them directly and doesn't need to update
Settings by itself.

Bug: 185311744
Test: 1. make RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsModeDialogPreferenceTest
      2. make RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsPreferenceControllerTest
Change-Id: I47706efe9c53a00438fdec97fda244638cecb3dc
Merged-In: I47706efe9c53a00438fdec97fda244638cecb3dc
    (Cherry-picked from ag/14230401)
This commit is contained in:
lucaslin
2021-04-22 01:46:05 +08:00
committed by Lucas Lin
parent acc37353d7
commit 1fbe34fbc7
4 changed files with 42 additions and 53 deletions

View File

@@ -15,9 +15,9 @@
*/ */
package com.android.settings.network; package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -27,7 +27,7 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager; import android.net.ConnectivitySettingsManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
@@ -70,7 +70,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
private static final String TAG = "PrivateDnsModeDialog"; private static final String TAG = "PrivateDnsModeDialog";
// DNS_MODE -> RadioButton id // DNS_MODE -> RadioButton id
private static final Map<String, Integer> PRIVATE_DNS_MAP; private static final Map<Integer, Integer> PRIVATE_DNS_MAP;
static { static {
PRIVATE_DNS_MAP = new HashMap<>(); PRIVATE_DNS_MAP = new HashMap<>();
@@ -93,7 +93,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
@VisibleForTesting @VisibleForTesting
RadioGroup mRadioGroup; RadioGroup mRadioGroup;
@VisibleForTesting @VisibleForTesting
String mMode; int mMode;
public PrivateDnsModeDialogPreference(Context context) { public PrivateDnsModeDialogPreference(Context context) {
super(context); super(context);
@@ -160,7 +160,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
final Context context = getContext(); final Context context = getContext();
final ContentResolver contentResolver = context.getContentResolver(); final ContentResolver contentResolver = context.getContentResolver();
mMode = ConnectivityManager.getPrivateDnsMode(context); mMode = ConnectivitySettingsManager.getPrivateDnsMode(context);
mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname); mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname);
mEditText.addTextChangedListener(this); mEditText.addTextChangedListener(this);
@@ -196,15 +196,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) { if (which == DialogInterface.BUTTON_POSITIVE) {
final Context context = getContext(); 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 // 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()); mEditText.getText().toString());
} }
FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context, FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode); SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode);
Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode); ConnectivitySettingsManager.setPrivateDnsMode(context, mMode);
} }
} }
@@ -264,7 +264,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
} }
private void updateDialogInfo() { 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) { if (mEditText != null) {
mEditText.setEnabled(modeProvider); mEditText.setEnabled(modeProvider);
} }

View File

@@ -16,9 +16,9 @@
package com.android.settings.network; package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; 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_DEFAULT_MODE;
import static android.provider.Settings.Global.PRIVATE_DNS_MODE; import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
@@ -29,6 +29,7 @@ import android.content.res.Resources;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback;
import android.net.ConnectivitySettingsManager;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.net.Uri; import android.net.Uri;
@@ -118,7 +119,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
public CharSequence getSummary() { public CharSequence getSummary() {
final Resources res = mContext.getResources(); final Resources res = mContext.getResources();
final ContentResolver cr = mContext.getContentResolver(); final ContentResolver cr = mContext.getContentResolver();
final String mode = ConnectivityManager.getPrivateDnsMode(mContext); final int mode = ConnectivitySettingsManager.getPrivateDnsMode(mContext);
final LinkProperties lp = mLatestLinkProperties; final LinkProperties lp = mLatestLinkProperties;
final List<InetAddress> dnses = (lp == null) ? null : lp.getValidatedPrivateDnsServers(); final List<InetAddress> dnses = (lp == null) ? null : lp.getValidatedPrivateDnsServers();
final boolean dnsesResolved = !ArrayUtils.isEmpty(dnses); final boolean dnsesResolved = !ArrayUtils.isEmpty(dnses);

View File

@@ -16,10 +16,9 @@
package com.android.settings.network; package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage; import static com.google.common.truth.Truth.assertWithMessage;
@@ -28,11 +27,9 @@ import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.net.ConnectivityManager; import android.net.ConnectivitySettingsManager;
import android.provider.Settings;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
@@ -118,10 +115,8 @@ public class PrivateDnsModeDialogPreferenceTest {
public void testOnBindDialogView_containsCorrectData() { public void testOnBindDialogView_containsCorrectData() {
// Don't set settings to the default value ("opportunistic") as that // Don't set settings to the default value ("opportunistic") as that
// risks masking failure to read the mode from settings. // risks masking failure to read the mode from settings.
Settings.Global.putString(mContext.getContentResolver(), ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
PrivateDnsModeDialogPreference.MODE_KEY, PRIVATE_DNS_MODE_OFF); ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOST_NAME);
Settings.Global.putString(mContext.getContentResolver(),
PrivateDnsModeDialogPreference.HOSTNAME_KEY, HOST_NAME);
final LayoutInflater inflater = LayoutInflater.from(mContext); final LayoutInflater inflater = LayoutInflater.from(mContext);
final View view = inflater.inflate(R.layout.private_dns_mode_dialog, final View view = inflater.inflate(R.layout.private_dns_mode_dialog,
@@ -159,29 +154,26 @@ public class PrivateDnsModeDialogPreferenceTest {
@Test @Test
public void testOnClick_positiveButtonClicked_saveData() { public void testOnClick_positiveButtonClicked_saveData() {
// Set the default settings to OFF // Set the default settings to OFF
final ContentResolver contentResolver = mContext.getContentResolver(); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
mPreference.onClick(null, DialogInterface.BUTTON_POSITIVE); mPreference.onClick(null, DialogInterface.BUTTON_POSITIVE);
// Change to OPPORTUNISTIC // Change to OPPORTUNISTIC
assertThat(Settings.Global.getString(contentResolver, PRIVATE_DNS_MODE)).isEqualTo( assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo(
PRIVATE_DNS_MODE_OPPORTUNISTIC); PRIVATE_DNS_MODE_OPPORTUNISTIC);
} }
@Test @Test
public void testOnClick_negativeButtonClicked_doNothing() { public void testOnClick_negativeButtonClicked_doNothing() {
// Set the default settings to OFF // Set the default settings to OFF
final ContentResolver contentResolver = mContext.getContentResolver(); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE); mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE);
// Still equal to OFF // Still equal to OFF
assertThat(Settings.Global.getString(contentResolver, assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo(
Settings.Global.PRIVATE_DNS_MODE)).isEqualTo( PRIVATE_DNS_MODE_OFF);
ConnectivityManager.PRIVATE_DNS_MODE_OFF);
} }
} }

View File

@@ -16,10 +16,9 @@
package com.android.settings.network; package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; 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_MODE;
import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
@@ -48,6 +47,7 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback;
import android.net.ConnectivitySettingsManager;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.os.Handler; import android.os.Handler;
@@ -193,8 +193,8 @@ public class PrivateDnsPreferenceControllerTest {
@Test @Test
public void getSummary_PrivateDnsModeOff() { public void getSummary_PrivateDnsModeOff() {
setPrivateDnsMode(PRIVATE_DNS_MODE_OFF); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF);
setPrivateDnsProviderHostname(HOSTNAME); ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off)); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off));
@@ -203,8 +203,8 @@ public class PrivateDnsPreferenceControllerTest {
@Test @Test
public void getSummary_PrivateDnsModeOpportunistic() { public void getSummary_PrivateDnsModeOpportunistic() {
mLifecycle.handleLifecycleEvent(ON_START); mLifecycle.handleLifecycleEvent(ON_START);
setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC);
setPrivateDnsProviderHostname(HOSTNAME); ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -226,8 +226,8 @@ public class PrivateDnsPreferenceControllerTest {
@Test @Test
public void getSummary_PrivateDnsModeProviderHostname() { public void getSummary_PrivateDnsModeProviderHostname() {
mLifecycle.handleLifecycleEvent(ON_START); mLifecycle.handleLifecycleEvent(ON_START);
setPrivateDnsMode(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
setPrivateDnsProviderHostname(HOSTNAME); ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME);
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary( verify(mPreference).setSummary(
@@ -252,7 +252,7 @@ public class PrivateDnsPreferenceControllerTest {
public void getSummary_PrivateDnsDefaultMode() { public void getSummary_PrivateDnsDefaultMode() {
// Default mode is opportunistic, unless overridden by a Settings push. // Default mode is opportunistic, unless overridden by a Settings push.
setPrivateDnsMode(""); setPrivateDnsMode("");
setPrivateDnsProviderHostname(""); ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "");
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -260,7 +260,7 @@ public class PrivateDnsPreferenceControllerTest {
reset(mController); reset(mController);
reset(mPreference); reset(mPreference);
// Pretend an emergency gservices setting has disabled default-opportunistic. // 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); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off)); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off));
@@ -270,7 +270,7 @@ public class PrivateDnsPreferenceControllerTest {
// The user interacting with the Private DNS menu, explicitly choosing // The user interacting with the Private DNS menu, explicitly choosing
// opportunistic mode, will be able to use despite the change to the // opportunistic mode, will be able to use despite the change to the
// default setting above. // default setting above.
setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC); ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC);
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary(); verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
@@ -305,10 +305,6 @@ public class PrivateDnsPreferenceControllerTest {
Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, mode); 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) { private String getResourceString(int which) {
return mContext.getResources().getString(which); return mContext.getResources().getString(which);
} }