Merge "Add maxTargetSdk restriction to unused APIs."
diff --git a/repackaged/common/src/main/java/com/android/org/conscrypt/AbstractConscryptSocket.java b/repackaged/common/src/main/java/com/android/org/conscrypt/AbstractConscryptSocket.java
index 6284fd9..3f30412 100644
--- a/repackaged/common/src/main/java/com/android/org/conscrypt/AbstractConscryptSocket.java
+++ b/repackaged/common/src/main/java/com/android/org/conscrypt/AbstractConscryptSocket.java
@@ -517,7 +517,7 @@
      * Returns the hostname that was supplied during socket creation. No DNS resolution is
      * attempted before returning the hostname.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getHostname() {
         return peerHostname;
     }
@@ -540,7 +540,7 @@
      * or the IP address in a textual representation. We do not want to perform reverse DNS
      * lookups on this address.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     String getHostnameOrIP() {
         if (peerHostname != null) {
             return peerHostname;
@@ -557,7 +557,7 @@
     /**
      * Note write timeouts are not part of the javax.net.ssl.SSLSocket API
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setSoWriteTimeout(int writeTimeoutMilliseconds) throws SocketException {
         throw new SocketException("Method setSoWriteTimeout() is not supported.");
     }
@@ -565,7 +565,7 @@
     /**
      * Note write timeouts are not part of the javax.net.ssl.SSLSocket API
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     int getSoWriteTimeout() throws SocketException {
         return 0;
     }
@@ -574,7 +574,7 @@
      * Set the handshake timeout on this socket.  This timeout is specified in
      * milliseconds and will be used only during the handshake process.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setHandshakeTimeout(int handshakeTimeoutMilliseconds) throws SocketException {
         throw new SocketException("Method setHandshakeTimeout() is not supported.");
     }
@@ -646,7 +646,7 @@
      * @throws IllegalStateException if this is a client socket or if the handshake has already
      *         started.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     abstract void setChannelIdEnabled(boolean enabled);
 
     /**
@@ -659,7 +659,7 @@
      *         completed.
      * @throws SSLException if channel ID is available but could not be obtained.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     abstract byte[] getChannelId() throws SSLException;
 
     /**
@@ -674,14 +674,14 @@
      * @throws IllegalStateException if this is a server socket or if the handshake has already
      *         started.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     abstract void setChannelIdPrivateKey(PrivateKey privateKey);
 
     /**
      * Returns null always for backward compatibility.
      * @deprecated NPN is not supported
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Deprecated
     byte[] getNpnSelectedProtocol() {
         return null;
@@ -691,7 +691,7 @@
      * This method does nothing and is kept for backward compatibility.
      * @deprecated NPN is not supported
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Deprecated
     void setNpnProtocols(byte[] npnProtocols) {}
 
diff --git a/repackaged/common/src/main/java/com/android/org/conscrypt/OpenSSLSocketImpl.java b/repackaged/common/src/main/java/com/android/org/conscrypt/OpenSSLSocketImpl.java
index 8482c97..861647b 100644
--- a/repackaged/common/src/main/java/com/android/org/conscrypt/OpenSSLSocketImpl.java
+++ b/repackaged/common/src/main/java/com/android/org/conscrypt/OpenSSLSocketImpl.java
@@ -61,7 +61,7 @@
         super(socket, hostname, port, autoClose);
     }
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Override
     public String getHostname() {
         return super.getHostname();
@@ -77,7 +77,7 @@
         super.setHostname(hostname);
     }
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Override
     public String getHostnameOrIP() {
         return super.getHostnameOrIP();
@@ -89,21 +89,21 @@
     }
 
     @android.compat.annotation
-            .UnsupportedAppUsage
+            .UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
             @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
             @Override
             public void setSoWriteTimeout(int writeTimeoutMilliseconds) throws SocketException {
         super.setSoWriteTimeout(writeTimeoutMilliseconds);
     }
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Override
     public int getSoWriteTimeout() throws SocketException {
         return super.getSoWriteTimeout();
     }
 
     @android.compat.annotation
-            .UnsupportedAppUsage
+            .UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
             @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
             @Override
             public void setHandshakeTimeout(int handshakeTimeoutMilliseconds)
@@ -123,15 +123,16 @@
             public abstract void
             setUseSessionTickets(boolean useSessionTickets);
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Override
     public abstract void setChannelIdEnabled(boolean enabled);
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @Override
     public abstract byte[] getChannelId() throws SSLException;
 
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.
+    annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     @libcore.api.CorePlatformApi(status = libcore.api.CorePlatformApi.Status.STABLE)
     @Override
     public abstract void setChannelIdPrivateKey(PrivateKey privateKey);
diff --git a/repackaged/common/src/main/java/com/android/org/conscrypt/SSLParametersImpl.java b/repackaged/common/src/main/java/com/android/org/conscrypt/SSLParametersImpl.java
index a75c0cb..af73a43 100644
--- a/repackaged/common/src/main/java/com/android/org/conscrypt/SSLParametersImpl.java
+++ b/repackaged/common/src/main/java/com/android/org/conscrypt/SSLParametersImpl.java
@@ -241,7 +241,7 @@
     /**
      * @return X.509 trust manager or {@code null} for none.
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     X509TrustManager getX509TrustManager() {
         return x509TrustManager;
     }
@@ -280,7 +280,7 @@
      * Sets the list of available protocols for use in SSL connection.
      * @throws IllegalArgumentException if {@code protocols == null}
      */
-    @android.compat.annotation.UnsupportedAppUsage
+    @android.compat.annotation.UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
     void setEnabledProtocols(String[] protocols) {
         if (protocols == null) {
             throw new IllegalArgumentException("protocols == null");
diff --git a/srcgen/unsupported-app-usage.json b/srcgen/unsupported-app-usage.json
index d4ba3bf..61518eb 100644
--- a/srcgen/unsupported-app-usage.json
+++ b/srcgen/unsupported-app-usage.json
@@ -12,19 +12,29 @@
     "publicAlternatives": "Use {@link javax.net.ssl.SSLParameters#getApplicationProtocols()}."
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getChannelId()"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getChannelId()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getHostname()"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getHostname()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getHostnameOrIP()"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getHostnameOrIP()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getNpnSelectedProtocol()"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getNpnSelectedProtocol()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getSoWriteTimeout()"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#getSoWriteTimeout()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setAlpnProtocols(byte[])",
@@ -42,13 +52,19 @@
     "publicAlternatives": "Use {@link javax.net.ssl.SSLParameters#setApplicationProtocols(java.lang.String[])}."
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setChannelIdEnabled(boolean)"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setChannelIdEnabled(boolean)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setChannelIdPrivateKey(PrivateKey)"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setChannelIdPrivateKey(PrivateKey)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setHandshakeTimeout(int)"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setHandshakeTimeout(int)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setHostname(String)",
@@ -56,10 +72,14 @@
     "publicAlternatives": "Use {@link javax.net.ssl.SSLParameters#setServerNames}."
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setNpnProtocols(byte[])"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setNpnProtocols(byte[])",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setSoWriteTimeout(int)"
+    "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setSoWriteTimeout(int)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.AbstractConscryptSocket#setUseSessionTickets(boolean)",
@@ -284,19 +304,27 @@
     "publicAlternatives": "Use {@link javax.net.ssl.SSLSocket#getApplicationProtocol()}."
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getChannelId()"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getChannelId()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getHostname()"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getHostname()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getHostnameOrIP()"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getHostnameOrIP()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getNpnSelectedProtocol()"
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getSoWriteTimeout()"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#getSoWriteTimeout()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setAlpnProtocols(byte[])",
@@ -309,13 +337,19 @@
     "publicAlternatives": "Use {@link javax.net.ssl.SSLParameters#setApplicationProtocols(java.lang.String[])}."
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setChannelIdEnabled(boolean)"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setChannelIdEnabled(boolean)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setChannelIdPrivateKey(PrivateKey)"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setChannelIdPrivateKey(PrivateKey)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setHandshakeTimeout(int)"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setHandshakeTimeout(int)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setHostname(String)",
@@ -326,7 +360,9 @@
     "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setNpnProtocols(byte[])"
   },
   {
-    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setSoWriteTimeout(int)"
+    "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setSoWriteTimeout(int)",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "method:com.android.org.conscrypt.OpenSSLSocketImpl#setUseSessionTickets(boolean)",
@@ -346,10 +382,14 @@
     "@location": "method:com.android.org.conscrypt.SSLParametersImpl#getDefaultX509TrustManager()"
   },
   {
-    "@location": "method:com.android.org.conscrypt.SSLParametersImpl#getX509TrustManager()"
+    "@location": "method:com.android.org.conscrypt.SSLParametersImpl#getX509TrustManager()",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
-    "@location": "method:com.android.org.conscrypt.SSLParametersImpl#setEnabledProtocols(String[])"
+    "@location": "method:com.android.org.conscrypt.SSLParametersImpl#setEnabledProtocols(String[])",
+    "maxTargetSdk": 30,
+    "trackingBug": 170729553
   },
   {
     "@location": "field:com.android.org.conscrypt.SSLParametersImpl#x509TrustManager"