diff options
3 files changed, 40 insertions, 4 deletions
diff --git a/core/java/android/net/INetdEventCallback.aidl b/core/java/android/net/INetdEventCallback.aidl index 1fd9423b6128..1e75bf461a70 100644 --- a/core/java/android/net/INetdEventCallback.aidl +++ b/core/java/android/net/INetdEventCallback.aidl @@ -20,8 +20,9 @@ package android.net;  oneway interface INetdEventCallback {      // Possible addNetdEventCallback callers. -    const int CALLBACK_CALLER_DEVICE_POLICY = 0; -    const int CALLBACK_CALLER_NETWORK_WATCHLIST = 1; +    const int CALLBACK_CALLER_CONNECTIVITY_SERVICE = 0; +    const int CALLBACK_CALLER_DEVICE_POLICY = 1; +    const int CALLBACK_CALLER_NETWORK_WATCHLIST = 2;      /**       * Reports a single DNS lookup function call. @@ -39,6 +40,18 @@ oneway interface INetdEventCallback {              int uid);      /** +     * Represents a private DNS validation success or failure. +     * This method must not block or perform long-running operations. +     * +     * @param netId the ID of the network the validation was performed on. +     * @param ipAddress the IP address for which validation was performed. +     * @param hostname the hostname for which validation was performed. +     * @param validated whether or not validation was successful. +     */ +    void onPrivateDnsValidationEvent(int netId, String ipAddress, String hostname, +            boolean validated); + +    /**       * Reports a single connect library call.       * This method must not block or perform long-running operations.       * diff --git a/core/java/com/android/server/net/BaseNetdEventCallback.java b/core/java/com/android/server/net/BaseNetdEventCallback.java index 3d3a3d07b216..fdba2f3dc9e6 100644 --- a/core/java/com/android/server/net/BaseNetdEventCallback.java +++ b/core/java/com/android/server/net/BaseNetdEventCallback.java @@ -32,6 +32,12 @@ public class BaseNetdEventCallback extends INetdEventCallback.Stub {      }      @Override +    public void onPrivateDnsValidationEvent(int netId, String ipAddress, +            String hostname, boolean validated) { +        // default no-op +    } + +    @Override      public void onConnectEvent(String ipAddr, int port, long timestamp, int uid) {          // default no-op      } diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java index f1a806bb4074..4f31e533f8f9 100644 --- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java +++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java @@ -102,9 +102,12 @@ public class NetdEventListenerService extends INetdEventListener.Stub {      /** -     * There are only 2 possible callbacks. +     * There are only 3 possible callbacks.       * -     * mNetdEventCallbackList[CALLBACK_CALLER_DEVICE_POLICY]. +     * mNetdEventCallbackList[CALLBACK_CALLER_CONNECTIVITY_SERVICE] +     * Callback registered/unregistered by ConnectivityService. +     * +     * mNetdEventCallbackList[CALLBACK_CALLER_DEVICE_POLICY]       * Callback registered/unregistered when logging is being enabled/disabled in DPM       * by the device owner. It's DevicePolicyManager's responsibility to ensure that.       * @@ -113,6 +116,7 @@ public class NetdEventListenerService extends INetdEventListener.Stub {       */      @GuardedBy("this")      private static final int[] ALLOWED_CALLBACK_TYPES = { +        INetdEventCallback.CALLBACK_CALLER_CONNECTIVITY_SERVICE,          INetdEventCallback.CALLBACK_CALLER_DEVICE_POLICY,          INetdEventCallback.CALLBACK_CALLER_NETWORK_WATCHLIST      }; @@ -212,6 +216,19 @@ public class NetdEventListenerService extends INetdEventListener.Stub {      @Override      // Called concurrently by multiple binder threads.      // This method must not block or perform long-running operations. +    public synchronized void onPrivateDnsValidationEvent(int netId, +            String ipAddress, String hostname, boolean validated) +            throws RemoteException { +        for (INetdEventCallback callback : mNetdEventCallbackList) { +            if (callback != null) { +                callback.onPrivateDnsValidationEvent(netId, ipAddress, hostname, validated); +            } +        } +    } + +    @Override +    // Called concurrently by multiple binder threads. +    // This method must not block or perform long-running operations.      public synchronized void onConnectEvent(int netId, int error, int latencyMs, String ipAddr,              int port, int uid) throws RemoteException {          long timestamp = System.currentTimeMillis();  |