Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d095dfe8 authored by Chirayu Desai's avatar Chirayu Desai Committed by Mohammed Althaf T
Browse files

Settings: Add Quad9 DNS as a private DNS provider



Change-Id: I7e8a320d47e7c5ddbcb9acfaf23032ae92d5d70d
Signed-off-by: default avataralthafvly <althafvly@gmail.com>
parent e4d47cb5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -38,6 +38,14 @@
                android:layout_marginStart="8dp"
                android:minHeight="48dp"/>

            <RadioButton
                android:id="@+id/private_dns_mode_quadnine"
                android:text="@string/private_dns_mode_quadnine"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:minHeight="48dp"/>

            <RadioButton
                android:id="@+id/private_dns_mode_opportunistic"
                android:text="@string/private_dns_mode_opportunistic"
+4 −0
Original line number Diff line number Diff line
@@ -227,4 +227,8 @@
    <!-- Advanced Privacy -->
    <string name="advanced_privacy_dashboard_title" translatable="false">Advanced Privacy</string>
    <string name="advanced_privacy_dashboard_summary">Manage trackers, fake location, hide IP address</string>

    <!-- Private DNS -->
    <string name="private_dns_mode_quadnine" translatable="false">Quad9</string>
    <string name="private_dns_hostname_quadnine" translatable="false">dns.quad9.net</string>
</resources>
+24 −2
Original line number Diff line number Diff line
@@ -70,9 +70,13 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
    // DNS_MODE -> RadioButton id
    private static final Map<String, Integer> PRIVATE_DNS_MAP;

    // Only used in Settings, update on additions to ConnectivitySettingsUtils
    private static final String PRIVATE_DNS_MODE_QUADNINE = "quadnine";

    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);
    }
@@ -167,6 +171,14 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
        final ContentResolver contentResolver = context.getContentResolver();

        mMode = getModeFromSettings(context.getContentResolver());
        if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) {
            final String privateDnsHostname = getHostnameFromSettings(contentResolver);
            final String quadNineHostname =
                    context.getString(R.string.private_dns_hostname_quadnine);
            if (privateDnsHostname.equals(quadNineHostname)) {
                mMode = PRIVATE_DNS_MODE_QUADNINE;
            }
        }

        mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname);
        mEditText.addTextChangedListener(this);
@@ -193,15 +205,22 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
    public void onClick(DialogInterface dialog, int which) {
        if (which == DialogInterface.BUTTON_POSITIVE) {
            final Context context = getContext();
            String modeToSet = mMode;
            if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
                // Only clickable if hostname is valid, so we could save it safely
                Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY,
                        mEditText.getText().toString());
            } else if (mMode == PRIVATE_DNS_MODE_QUADNINE) {
                final String quadNineHostname =
                        context.getString(R.string.private_dns_hostname_quadnine);
                Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY,
                       quadNineHostname);
                modeToSet = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
            }

            FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
                    SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode);
            Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode);
                    SettingsEnums.ACTION_PRIVATE_DNS_MODE, modeToSet);
            Settings.Global.putString(context.getContentResolver(), MODE_KEY, modeToSet);
        }
    }

@@ -211,6 +230,9 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat
            case R.id.private_dns_mode_off:
                mMode = PRIVATE_DNS_MODE_OFF;
                break;
            case R.id.private_dns_mode_quadnine:
                mMode = PRIVATE_DNS_MODE_QUADNINE;
                break;
            case R.id.private_dns_mode_opportunistic:
                mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
                break;
+15 −3
Original line number Diff line number Diff line
@@ -64,6 +64,9 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
        Settings.Global.getUriFor(PRIVATE_DNS_SPECIFIER),
    };

    // Only used in Settings, update on additions to ConnectivitySettingsUtils
    private static final String PRIVATE_DNS_MODE_QUADNINE = "quadnine";

    private final Handler mHandler;
    private final ContentObserver mSettingsObserver;
    private final ConnectivityManager mConnectivityManager;
@@ -128,6 +131,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
        switch (mode) {
            case PRIVATE_DNS_MODE_OFF:
                return res.getString(R.string.private_dns_mode_off);
            case PRIVATE_DNS_MODE_QUADNINE:
            case PRIVATE_DNS_MODE_OPPORTUNISTIC:
                // TODO (b/79122154) : create a string specifically for this, instead of
                // hijacking a string from notifications. This is necessary at this time
@@ -136,9 +140,17 @@ public class PrivateDnsPreferenceController extends BasePreferenceController
                return dnsesResolved ? res.getString(R.string.switch_on_text)
                        : res.getString(R.string.private_dns_mode_opportunistic);
            case PRIVATE_DNS_MODE_PROVIDER_HOSTNAME:
                return dnsesResolved
                        ? PrivateDnsModeDialogPreference.getHostnameFromSettings(cr)
                        : res.getString(R.string.private_dns_mode_provider_failure);
                if (!dnsesResolved) {
                    return res.getString(R.string.private_dns_mode_provider_failure);
                }
                final String privateDnsHostname =
                        PrivateDnsModeDialogPreference.getHostnameFromSettings(cr);
                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;
        }
        return "";
    }