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

Commit f680c06c authored by Lucas Lin's avatar Lucas Lin Committed by Android (Google) Code Review
Browse files

Merge "Have a new API to get private DNS mode" into sc-dev

parents 59436521 b19b6573
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -8,9 +8,13 @@ package android.net {
  public class ConnectivityManager {
    method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot();
    method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
    method @NonNull public static String getPrivateDnsMode(@NonNull android.content.ContentResolver);
    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
    method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
    field public static final String PRIVATE_DNS_MODE_OFF = "off";
    field public static final String PRIVATE_DNS_MODE_OPPORTUNISTIC = "opportunistic";
    field public static final String PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = "hostname";
  }

  public final class NetworkAgentConfig implements android.os.Parcelable {
+37 −9
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import static android.net.NetworkRequest.Type.TRACK_BEST;
import static android.net.NetworkRequest.Type.TRACK_DEFAULT;
import static android.net.NetworkRequest.Type.TRACK_SYSTEM_DEFAULT;
import static android.net.QosCallback.QosCallbackRegistrationException;
import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE;
import static android.provider.Settings.Global.PRIVATE_DNS_MODE;

import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
@@ -31,11 +33,13 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.StringDef;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.app.PendingIntent;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.IpSecManager.UdpEncapsulationSocket;
@@ -63,6 +67,7 @@ import android.os.ServiceSpecificException;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Range;
@@ -802,24 +807,27 @@ public class ConnectivityManager {
    /**
     * @hide
     */
    @SystemApi(client = MODULE_LIBRARIES)
    public static final String PRIVATE_DNS_MODE_OFF = "off";
    /**
     * @hide
     */
    @SystemApi(client = MODULE_LIBRARIES)
    public static final String PRIVATE_DNS_MODE_OPPORTUNISTIC = "opportunistic";
    /**
     * @hide
     */
    @SystemApi(client = MODULE_LIBRARIES)
    public static final String PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = "hostname";
    /**
     * The default Private DNS mode.
     *
     * This may change from release to release or may become dependent upon
     * the capabilities of the underlying platform.
     *
     * @hide
     */
    public static final String PRIVATE_DNS_DEFAULT_MODE_FALLBACK = PRIVATE_DNS_MODE_OPPORTUNISTIC;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @StringDef(value = {
            PRIVATE_DNS_MODE_OFF,
            PRIVATE_DNS_MODE_OPPORTUNISTIC,
            PRIVATE_DNS_MODE_PROVIDER_HOSTNAME,
    })
    public @interface PrivateDnsMode {}

    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
    private final IConnectivityManager mService;
@@ -5128,4 +5136,24 @@ public class ConnectivityManager {
    public static Range<Integer> getIpSecNetIdRange() {
        return new Range(TUN_INTF_NETID_START, TUN_INTF_NETID_START + TUN_INTF_NETID_RANGE - 1);
    }

    /**
     * Get private DNS mode from settings.
     *
     * @param cr The ContentResolver to query private DNS mode from settings.
     * @return A string of private DNS mode as one of the PRIVATE_DNS_MODE_* constants.
     *
     * @hide
     */
    @SystemApi(client = MODULE_LIBRARIES)
    @NonNull
    @PrivateDnsMode
    public static String getPrivateDnsMode(@NonNull ContentResolver cr) {
        String mode = Settings.Global.getString(cr, PRIVATE_DNS_MODE);
        if (TextUtils.isEmpty(mode)) mode = Settings.Global.getString(cr, PRIVATE_DNS_DEFAULT_MODE);
        // If both PRIVATE_DNS_MODE and PRIVATE_DNS_DEFAULT_MODE are not set, choose
        // PRIVATE_DNS_MODE_OPPORTUNISTIC as default mode.
        if (TextUtils.isEmpty(mode)) mode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
        return mode;
    }
}
+2 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.server.connectivity;

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_PROVIDER_HOSTNAME;
import static android.net.resolv.aidl.IDnsResolverUnsolicitedEventListener.VALIDATION_RESULT_FAILURE;
@@ -33,6 +32,7 @@ import android.annotation.NonNull;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.IDnsResolver;
import android.net.InetAddresses;
import android.net.LinkProperties;
@@ -128,7 +128,7 @@ public class DnsManager {
    private static final int DNS_RESOLVER_DEFAULT_MAX_SAMPLES = 64;

    public static PrivateDnsConfig getPrivateDnsConfig(ContentResolver cr) {
        final String mode = getPrivateDnsMode(cr);
        final String mode = ConnectivityManager.getPrivateDnsMode(cr);

        final boolean useTls = !TextUtils.isEmpty(mode) && !PRIVATE_DNS_MODE_OFF.equals(mode);

@@ -479,13 +479,6 @@ public class DnsManager {
        return result;
    }

    private static String getPrivateDnsMode(ContentResolver cr) {
        String mode = getStringSetting(cr, PRIVATE_DNS_MODE);
        if (TextUtils.isEmpty(mode)) mode = getStringSetting(cr, PRIVATE_DNS_DEFAULT_MODE);
        if (TextUtils.isEmpty(mode)) mode = PRIVATE_DNS_DEFAULT_MODE_FALLBACK;
        return mode;
    }

    private static String getStringSetting(ContentResolver cr, String which) {
        return Settings.Global.getString(cr, which);
    }
+2 −4
Original line number Diff line number Diff line
@@ -15476,10 +15476,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        final CallerIdentity caller = getCallerIdentity(who);
        Preconditions.checkCallAuthorization(isDeviceOwner(caller));
        String currentMode = mInjector.settingsGlobalGetString(PRIVATE_DNS_MODE);
        if (currentMode == null) {
            currentMode = ConnectivityManager.PRIVATE_DNS_DEFAULT_MODE_FALLBACK;
        }
        final String currentMode =
                ConnectivityManager.getPrivateDnsMode(mContext.getContentResolver());
        switch (currentMode) {
            case ConnectivityManager.PRIVATE_DNS_MODE_OFF:
                return PRIVATE_DNS_MODE_OFF;