Factor in PRIVATE_DNS_MODE_DEFAULTSETTING value

This setting can be used to change the in-code default.

Test: as follows
    - built, flashed, booted
    - make -j50 RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsModeDialogPreferenceTest passes
    - make -j50 RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsPreferenceControllerTest passes
Bug: 79719289
Change-Id: I27e5fb9cc66dde1df72395c22179bca3f62ef782
This commit is contained in:
Erik Kline
2018-05-17 14:43:20 +09:00
parent 36029724b2
commit aee4396874
4 changed files with 46 additions and 11 deletions

View File

@@ -15,6 +15,7 @@
*/ */
package com.android.settings.network; package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_DEFAULT_MODE_FALLBACK;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; 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_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
@@ -79,8 +80,11 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreference imple
static final String HOSTNAME_KEY = Settings.Global.PRIVATE_DNS_SPECIFIER; static final String HOSTNAME_KEY = Settings.Global.PRIVATE_DNS_SPECIFIER;
public static String getModeFromSettings(ContentResolver cr) { public static String getModeFromSettings(ContentResolver cr) {
final String mode = Settings.Global.getString(cr, MODE_KEY); String mode = Settings.Global.getString(cr, MODE_KEY);
return PRIVATE_DNS_MAP.containsKey(mode) ? mode : PRIVATE_DNS_MODE_OPPORTUNISTIC; if (!PRIVATE_DNS_MAP.containsKey(mode)) {
mode = Settings.Global.getString(cr, Settings.Global.PRIVATE_DNS_DEFAULT_MODE);
}
return PRIVATE_DNS_MAP.containsKey(mode) ? mode : PRIVATE_DNS_DEFAULT_MODE_FALLBACK;
} }
public static String getHostnameFromSettings(ContentResolver cr) { public static String getHostnameFromSettings(ContentResolver cr) {

View File

@@ -19,6 +19,9 @@ package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; 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_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivityManager.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;
import android.content.Context; import android.content.Context;
import android.content.ContentResolver; import android.content.ContentResolver;
@@ -51,8 +54,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
private static final String KEY_PRIVATE_DNS_SETTINGS = "private_dns_settings"; private static final String KEY_PRIVATE_DNS_SETTINGS = "private_dns_settings";
private static final Uri[] SETTINGS_URIS = new Uri[]{ private static final Uri[] SETTINGS_URIS = new Uri[]{
Settings.Global.getUriFor(Settings.Global.PRIVATE_DNS_MODE), Settings.Global.getUriFor(PRIVATE_DNS_MODE),
Settings.Global.getUriFor(Settings.Global.PRIVATE_DNS_SPECIFIER), Settings.Global.getUriFor(PRIVATE_DNS_DEFAULT_MODE),
Settings.Global.getUriFor(PRIVATE_DNS_SPECIFIER),
}; };
private final Handler mHandler; private final Handler mHandler;

View File

@@ -19,6 +19,7 @@ package com.android.settings.network;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; 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_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivityManager.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 org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -158,24 +159,21 @@ public class PrivateDnsModeDialogPreferenceTest {
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(); final ContentResolver contentResolver = mContext.getContentResolver();
Settings.Global.putString(contentResolver, Settings.Global.PRIVATE_DNS_MODE, Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
ConnectivityManager.PRIVATE_DNS_MODE_OFF);
mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.mMode = ConnectivityManager.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, assertThat(Settings.Global.getString(contentResolver, PRIVATE_DNS_MODE)).isEqualTo(
Settings.Global.PRIVATE_DNS_MODE)).isEqualTo( PRIVATE_DNS_MODE_OPPORTUNISTIC);
ConnectivityManager.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(); final ContentResolver contentResolver = mContext.getContentResolver();
Settings.Global.putString(contentResolver, Settings.Global.PRIVATE_DNS_MODE, Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF);
ConnectivityManager.PRIVATE_DNS_MODE_OFF);
mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE); mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE);

View File

@@ -21,6 +21,7 @@ import static android.arch.lifecycle.Lifecycle.Event.ON_STOP;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; 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_OPPORTUNISTIC;
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.net.ConnectivityManager.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;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -220,6 +221,34 @@ public class PrivateDnsPreferenceControllerTest {
getResourceString(R.string.private_dns_mode_provider_failure)); getResourceString(R.string.private_dns_mode_provider_failure));
} }
@Test
public void getSummary_PrivateDnsDefaultMode() {
// Default mode is opportunistic, unless overridden by a Settings push.
setPrivateDnsMode("");
setPrivateDnsProviderHostname("");
mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
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);
mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off));
reset(mController);
reset(mPreference);
// 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);
mController.updateState(mPreference);
verify(mController, atLeastOnce()).getSummary();
verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic));
}
private void setPrivateDnsMode(String mode) { private void setPrivateDnsMode(String mode) {
Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, mode); Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, mode);
} }