From fdcf06cd5429f31eb9321fcf96bb2a8f033cf8a9 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Mon, 2 Mar 2026 16:42:12 +0530 Subject: [PATCH 1/3] Revert "Add Quad9 DNS as a private DNS provider" This reverts commit 613a8cb249e3012adb3beec89ba80d4ffc6aca52. --- res/layout/private_dns_mode_dialog.xml | 4 ---- res/values/e_strings.xml | 3 --- .../settings/network/PrivateDnsModeDialogPreference.java | 9 --------- .../settings/network/PrivateDnsPreferenceController.java | 9 +-------- 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml index 86f72eb27a6..bee949a906e 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -37,10 +37,6 @@ android:id="@+id/private_dns_mode_off" layout="@layout/preference_widget_dialog_radiobutton"/> - - diff --git a/res/values/e_strings.xml b/res/values/e_strings.xml index b337ff994cf..3fe3af4c808 100644 --- a/res/values/e_strings.xml +++ b/res/values/e_strings.xml @@ -33,9 +33,6 @@ You are about to connect to /e/ OS test channel It will allow you to download and install test versions of /e/ OS. Those builds may be unstable, and should be used only for test purposes. Please accept only if you know what you are doing. - - Quad9 DNS - Enable /e/OS Telemetry Enable automatic bug reporting diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index 6bf6093f11f..fc517ac4495 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -71,13 +71,9 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // DNS_MODE -> RadioButton id private static final Map PRIVATE_DNS_MAP; - // Must match ConnectivitySettingsUtils - private static final int PRIVATE_DNS_MODE_QUADNINE = 4; - static { PRIVATE_DNS_MAP = new HashMap<>(); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OFF, R.id.private_dns_mode_off); - PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUADNINE, R.id.private_dns_mode_quadnine); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPPORTUNISTIC, R.id.private_dns_mode_opportunistic); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, R.id.private_dns_mode_provider); } @@ -147,9 +143,6 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // Initial radio button text final RadioButton offRadioButton = view.findViewById(R.id.private_dns_mode_off); offRadioButton.setText(com.android.settingslib.R.string.private_dns_mode_off); - final RadioButton quadnineRadioButton = - view.findViewById(R.id.private_dns_mode_quadnine); - quadnineRadioButton.setText(R.string.private_dns_mode_quadnine); final RadioButton opportunisticRadioButton = view.findViewById(R.id.private_dns_mode_opportunistic); opportunisticRadioButton.setText( @@ -185,8 +178,6 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.private_dns_mode_off) { mMode = PRIVATE_DNS_MODE_OFF; - } else if (checkedId == R.id.private_dns_mode_quadnine) { - mMode = PRIVATE_DNS_MODE_QUADNINE; } else if (checkedId == R.id.private_dns_mode_opportunistic) { mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; } else if (checkedId == R.id.private_dns_mode_provider) { diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index aff8e19a960..291ce3307fd 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -65,9 +65,6 @@ public class PrivateDnsPreferenceController extends BasePreferenceController Settings.Global.getUriFor(PRIVATE_DNS_SPECIFIER), }; - // Must match ConnectivitySettingsUtils - private static final int PRIVATE_DNS_MODE_QUADNINE = 4; - private final Handler mHandler; private final ContentObserver mSettingsObserver; private final ConnectivityManager mConnectivityManager; @@ -132,10 +129,6 @@ public class PrivateDnsPreferenceController extends BasePreferenceController switch (mode) { case PRIVATE_DNS_MODE_OFF: return res.getString(com.android.settingslib.R.string.private_dns_mode_off); - case PRIVATE_DNS_MODE_QUADNINE: - return dnsesResolved - ? res.getString(R.string.private_dns_mode_quadnine) - : res.getString(com.android.settingslib.R.string.private_dns_mode_off); case PRIVATE_DNS_MODE_OPPORTUNISTIC: return dnsesResolved ? res.getString(R.string.private_dns_mode_on) : res.getString( @@ -144,7 +137,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController return dnsesResolved ? ConnectivitySettingsManager.getPrivateDnsHostname(mContext) : res.getString( - com.android.settingslib.R.string.private_dns_mode_off); + com.android.settingslib.R.string.private_dns_mode_provider_failure); } return ""; } -- GitLab From 66038cda87331074fd715eea46816f90120eda40 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Mon, 2 Mar 2026 16:42:18 +0530 Subject: [PATCH 2/3] Reapply "Add Cloudflare DNS as a private DNS provider" This reverts commit 804a80c117800666396bc7d36b65f4808ba8f91d. --- res/layout/private_dns_mode_dialog.xml | 4 +++ res/values/cm_strings.xml | 5 ++++ .../PrivateDnsModeDialogPreference.java | 28 +++++++++++++++++-- .../PrivateDnsPreferenceController.java | 20 ++++++++++--- 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml index bee949a906e..004401de753 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -37,6 +37,10 @@ android:id="@+id/private_dns_mode_off" layout="@layout/preference_widget_dialog_radiobutton"/> + + diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 28488133d25..86e43a83329 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -15,6 +15,11 @@ limitations under the License. --> + + Cloudflare DNS + + one.one.one.one + Extras Advanced settings diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index fc517ac4495..be7cec58323 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -71,9 +71,13 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // DNS_MODE -> RadioButton id private static final Map PRIVATE_DNS_MAP; + // Only used in Settings, update on additions to ConnectivitySettingsUtils + private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; + static { PRIVATE_DNS_MAP = new HashMap<>(); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OFF, R.id.private_dns_mode_off); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLOUDFLARE, R.id.private_dns_mode_cloudflare); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPPORTUNISTIC, R.id.private_dns_mode_opportunistic); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, R.id.private_dns_mode_provider); } @@ -136,6 +140,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat protected void onBindDialogView(View view) { final Context context = getContext(); mMode = ConnectivitySettingsManager.getPrivateDnsMode(context); + if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) { + final String privateDnsHostname = + ConnectivitySettingsManager.getPrivateDnsHostname(context); + final String cloudflareHostname = + context.getString(R.string.private_dns_hostname_cloudflare); + if (privateDnsHostname.equals(cloudflareHostname)) { + mMode = PRIVATE_DNS_MODE_CLOUDFLARE; + } + } mRadioGroup = view.findViewById(R.id.private_dns_radio_group); mRadioGroup.check(PRIVATE_DNS_MAP.getOrDefault(mMode, R.id.private_dns_mode_opportunistic)); mRadioGroup.setOnCheckedChangeListener(this); @@ -143,6 +156,9 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // Initial radio button text final RadioButton offRadioButton = view.findViewById(R.id.private_dns_mode_off); offRadioButton.setText(com.android.settingslib.R.string.private_dns_mode_off); + final RadioButton cloudflareRadioButton = + view.findViewById(R.id.private_dns_mode_cloudflare); + cloudflareRadioButton.setText(R.string.private_dns_mode_cloudflare); final RadioButton opportunisticRadioButton = view.findViewById(R.id.private_dns_mode_opportunistic); opportunisticRadioButton.setText( @@ -178,6 +194,8 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.private_dns_mode_off) { mMode = PRIVATE_DNS_MODE_OFF; + } else if (checkedId == R.id.private_dns_mode_cloudflare) { + mMode = PRIVATE_DNS_MODE_CLOUDFLARE; } else if (checkedId == R.id.private_dns_mode_opportunistic) { mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; } else if (checkedId == R.id.private_dns_mode_provider) { @@ -249,6 +267,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat @VisibleForTesting void doSaveButton() { Context context = getContext(); + int modeToSet = mMode; if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) { if (mHostnameLayout == null || mHostnameText == null) { Log.e(TAG, "Can't find hostname resources!"); @@ -267,12 +286,17 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat ConnectivitySettingsManager.setPrivateDnsHostname(context, mHostnameText.getText().toString()); + } else if (mMode == PRIVATE_DNS_MODE_CLOUDFLARE) { + final String cloudflareHostname = + context.getString(R.string.private_dns_hostname_cloudflare); + ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareHostname); + modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; } - ConnectivitySettingsManager.setPrivateDnsMode(context, mMode); + ConnectivitySettingsManager.setPrivateDnsMode(context, modeToSet); FeatureFactory.getFeatureFactory().getMetricsFeatureProvider() - .action(context, SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode); + .action(context, SettingsEnums.ACTION_PRIVATE_DNS_MODE, modeToSet); getDialog().dismiss(); } } diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 291ce3307fd..9a80d0d0b6b 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -65,6 +65,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController Settings.Global.getUriFor(PRIVATE_DNS_SPECIFIER), }; + // Only used in Settings, update on additions to ConnectivitySettingsUtils + private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; + private final Handler mHandler; private final ContentObserver mSettingsObserver; private final ConnectivityManager mConnectivityManager; @@ -129,15 +132,24 @@ public class PrivateDnsPreferenceController extends BasePreferenceController switch (mode) { case PRIVATE_DNS_MODE_OFF: return res.getString(com.android.settingslib.R.string.private_dns_mode_off); + case PRIVATE_DNS_MODE_CLOUDFLARE: case PRIVATE_DNS_MODE_OPPORTUNISTIC: return dnsesResolved ? res.getString(R.string.private_dns_mode_on) : res.getString( com.android.settingslib.R.string.private_dns_mode_opportunistic); case PRIVATE_DNS_MODE_PROVIDER_HOSTNAME: - return dnsesResolved - ? ConnectivitySettingsManager.getPrivateDnsHostname(mContext) - : res.getString( - com.android.settingslib.R.string.private_dns_mode_provider_failure); + if (!dnsesResolved) { + return res.getString( + com.android.settingslib.R.string.private_dns_mode_provider_failure); + } + final String privateDnsHostname = + ConnectivitySettingsManager.getPrivateDnsHostname(mContext); + final String cloudflareHostname = + res.getString(R.string.private_dns_hostname_cloudflare); + if (privateDnsHostname.equals(cloudflareHostname)) { + return res.getString(R.string.private_dns_mode_cloudflare); + } + return privateDnsHostname; } return ""; } -- GitLab From 2bf25777fd40ade24fe2a9c9ce550f7892bb4e36 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Mon, 2 Mar 2026 17:16:09 +0530 Subject: [PATCH 3/3] Replace cloudfare with quadnine as dns provider --- res/layout/private_dns_mode_dialog.xml | 2 +- res/values/e_strings.xml | 4 +++ .../PrivateDnsModeDialogPreference.java | 30 +++++++++---------- .../PrivateDnsPreferenceController.java | 12 ++++---- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/res/layout/private_dns_mode_dialog.xml b/res/layout/private_dns_mode_dialog.xml index 004401de753..86f72eb27a6 100644 --- a/res/layout/private_dns_mode_dialog.xml +++ b/res/layout/private_dns_mode_dialog.xml @@ -38,7 +38,7 @@ layout="@layout/preference_widget_dialog_radiobutton"/> Find my Device Locate this device + + + Quad9 DNS + dns.quad9.net diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index be7cec58323..74da484b594 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -72,12 +72,12 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat private static final Map PRIVATE_DNS_MAP; // Only used in Settings, update on additions to ConnectivitySettingsUtils - private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; + private static final int PRIVATE_DNS_MODE_QUADNINE = 4; static { PRIVATE_DNS_MAP = new HashMap<>(); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OFF, R.id.private_dns_mode_off); - PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_CLOUDFLARE, R.id.private_dns_mode_cloudflare); + PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_QUADNINE, R.id.private_dns_mode_quadnine); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_OPPORTUNISTIC, R.id.private_dns_mode_opportunistic); PRIVATE_DNS_MAP.put(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME, R.id.private_dns_mode_provider); } @@ -143,10 +143,10 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) { final String privateDnsHostname = ConnectivitySettingsManager.getPrivateDnsHostname(context); - final String cloudflareHostname = - context.getString(R.string.private_dns_hostname_cloudflare); - if (privateDnsHostname.equals(cloudflareHostname)) { - mMode = PRIVATE_DNS_MODE_CLOUDFLARE; + final String quadnineHostname = + context.getString(R.string.private_dns_hostname_quadnine); + if (privateDnsHostname.equals(quadnineHostname)) { + mMode = PRIVATE_DNS_MODE_QUADNINE; } } mRadioGroup = view.findViewById(R.id.private_dns_radio_group); @@ -156,9 +156,9 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat // Initial radio button text final RadioButton offRadioButton = view.findViewById(R.id.private_dns_mode_off); offRadioButton.setText(com.android.settingslib.R.string.private_dns_mode_off); - final RadioButton cloudflareRadioButton = - view.findViewById(R.id.private_dns_mode_cloudflare); - cloudflareRadioButton.setText(R.string.private_dns_mode_cloudflare); + final RadioButton quadnineRadioButton = + view.findViewById(R.id.private_dns_mode_quadnine); + quadnineRadioButton.setText(R.string.private_dns_mode_quadnine); final RadioButton opportunisticRadioButton = view.findViewById(R.id.private_dns_mode_opportunistic); opportunisticRadioButton.setText( @@ -194,8 +194,8 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.private_dns_mode_off) { mMode = PRIVATE_DNS_MODE_OFF; - } else if (checkedId == R.id.private_dns_mode_cloudflare) { - mMode = PRIVATE_DNS_MODE_CLOUDFLARE; + } else if (checkedId == R.id.private_dns_mode_quadnine) { + mMode = PRIVATE_DNS_MODE_QUADNINE; } else if (checkedId == R.id.private_dns_mode_opportunistic) { mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; } else if (checkedId == R.id.private_dns_mode_provider) { @@ -286,10 +286,10 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat ConnectivitySettingsManager.setPrivateDnsHostname(context, mHostnameText.getText().toString()); - } else if (mMode == PRIVATE_DNS_MODE_CLOUDFLARE) { - final String cloudflareHostname = - context.getString(R.string.private_dns_hostname_cloudflare); - ConnectivitySettingsManager.setPrivateDnsHostname(context, cloudflareHostname); + } else if (mMode == PRIVATE_DNS_MODE_QUADNINE) { + final String quadnineHostname = + context.getString(R.string.private_dns_hostname_quadnine); + ConnectivitySettingsManager.setPrivateDnsHostname(context, quadnineHostname); modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; } diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 9a80d0d0b6b..072d4aa2d17 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -66,7 +66,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController }; // Only used in Settings, update on additions to ConnectivitySettingsUtils - private static final int PRIVATE_DNS_MODE_CLOUDFLARE = 4; + private static final int PRIVATE_DNS_MODE_QUADNINE = 4; private final Handler mHandler; private final ContentObserver mSettingsObserver; @@ -132,7 +132,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController switch (mode) { case PRIVATE_DNS_MODE_OFF: return res.getString(com.android.settingslib.R.string.private_dns_mode_off); - case PRIVATE_DNS_MODE_CLOUDFLARE: + case PRIVATE_DNS_MODE_QUADNINE: case PRIVATE_DNS_MODE_OPPORTUNISTIC: return dnsesResolved ? res.getString(R.string.private_dns_mode_on) : res.getString( @@ -144,10 +144,10 @@ public class PrivateDnsPreferenceController extends BasePreferenceController } final String privateDnsHostname = ConnectivitySettingsManager.getPrivateDnsHostname(mContext); - final String cloudflareHostname = - res.getString(R.string.private_dns_hostname_cloudflare); - if (privateDnsHostname.equals(cloudflareHostname)) { - return res.getString(R.string.private_dns_mode_cloudflare); + final String quadnineHostname = + res.getString(R.string.private_dns_hostname_quadnine); + if (privateDnsHostname.equals(quadnineHostname)) { + return res.getString(R.string.private_dns_mode_quadnine); } return privateDnsHostname; } -- GitLab