Snap for 11216811 from ac645d8749b502971451df1495e95a045856f84f to 24Q1-release
Change-Id: I13cdeee2d47dbf7db3c43ce0aa7c90b377d00bfd
diff --git a/framework-t/api/current.txt b/framework-t/api/current.txt
index 86745d4..fb46ee7 100644
--- a/framework-t/api/current.txt
+++ b/framework-t/api/current.txt
@@ -127,6 +127,7 @@
public final class IpSecTransform implements java.lang.AutoCloseable {
method public void close();
+ method @FlaggedApi("com.android.net.flags.ipsec_transform_state") public void getIpSecTransformState(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.net.IpSecTransformState,java.lang.RuntimeException>);
}
public static class IpSecTransform.Builder {
@@ -138,6 +139,29 @@
method @NonNull public android.net.IpSecTransform.Builder setIpv4Encapsulation(@NonNull android.net.IpSecManager.UdpEncapsulationSocket, int);
}
+ @FlaggedApi("com.android.net.flags.ipsec_transform_state") public final class IpSecTransformState implements android.os.Parcelable {
+ method public int describeContents();
+ method public long getByteCount();
+ method public long getPacketCount();
+ method @NonNull public byte[] getReplayBitmap();
+ method public long getRxHighestSequenceNumber();
+ method public long getTimestamp();
+ method public long getTxHighestSequenceNumber();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.net.IpSecTransformState> CREATOR;
+ }
+
+ @FlaggedApi("com.android.net.flags.ipsec_transform_state") public static final class IpSecTransformState.Builder {
+ ctor public IpSecTransformState.Builder();
+ method @NonNull public android.net.IpSecTransformState build();
+ method @NonNull public android.net.IpSecTransformState.Builder setByteCount(long);
+ method @NonNull public android.net.IpSecTransformState.Builder setPacketCount(long);
+ method @NonNull public android.net.IpSecTransformState.Builder setReplayBitmap(@NonNull byte[]);
+ method @NonNull public android.net.IpSecTransformState.Builder setRxHighestSequenceNumber(long);
+ method @NonNull public android.net.IpSecTransformState.Builder setTimestamp(long);
+ method @NonNull public android.net.IpSecTransformState.Builder setTxHighestSequenceNumber(long);
+ }
+
public class TrafficStats {
ctor public TrafficStats();
method public static void clearThreadStatsTag();
diff --git a/framework-t/src/android/net/IpSecTransform.java b/framework-t/src/android/net/IpSecTransform.java
index 0412a76..246a2dd 100644
--- a/framework-t/src/android/net/IpSecTransform.java
+++ b/framework-t/src/android/net/IpSecTransform.java
@@ -213,7 +213,6 @@
* @param callback Callback that's called after the transform state is ready or when an error
* occurs.
* @see IpSecTransformState
- * @hide
*/
@FlaggedApi(IPSEC_TRANSFORM_STATE)
public void getIpSecTransformState(
diff --git a/framework-t/src/android/net/IpSecTransformState.java b/framework-t/src/android/net/IpSecTransformState.java
index daebbc4..b575dd5 100644
--- a/framework-t/src/android/net/IpSecTransformState.java
+++ b/framework-t/src/android/net/IpSecTransformState.java
@@ -37,8 +37,6 @@
* well as observing out-of-order delivery by checking the bitmap. Additionally, callers can query
* IpSecTransformStates at two timestamps. By comparing the changes in packet counts and sequence
* numbers, callers can estimate IPsec data loss in the inbound direction.
- *
- * @hide
*/
@FlaggedApi(IPSEC_TRANSFORM_STATE)
public final class IpSecTransformState implements Parcelable {
@@ -125,7 +123,6 @@
* Retrieve the epoch timestamp (milliseconds) for when this state was created
*
* @see Builder#setTimestamp(long)
- * @hide
*/
public long getTimestamp() {
return mTimeStamp;
@@ -135,7 +132,6 @@
* Retrieve the highest sequence number sent so far
*
* @see Builder#setTxHighestSequenceNumber(long)
- * @hide
*/
public long getTxHighestSequenceNumber() {
return mTxHighestSequenceNumber;
@@ -145,7 +141,6 @@
* Retrieve the highest sequence number received so far
*
* @see Builder#setRxHighestSequenceNumber(long)
- * @hide
*/
public long getRxHighestSequenceNumber() {
return mRxHighestSequenceNumber;
@@ -155,7 +150,6 @@
* Retrieve the number of packets received AND sent so far
*
* @see Builder#setPacketCount(long)
- * @hide
*/
public long getPacketCount() {
return mPacketCount;
@@ -165,7 +159,6 @@
* Retrieve the number of bytes received AND sent so far
*
* @see Builder#setByteCount(long)
- * @hide
*/
public long getByteCount() {
return mByteCount;
@@ -184,18 +177,13 @@
* IpSecTransforms, all bits will be unchecked.
*
* @see Builder#setReplayBitmap(byte[])
- * @hide
*/
@NonNull
public byte[] getReplayBitmap() {
return mReplayBitmap.clone();
}
- /**
- * Builder class for testing purposes
- *
- * @hide
- */
+ /** Builder class for testing purposes */
@FlaggedApi(IPSEC_TRANSFORM_STATE)
public static final class Builder {
private long mTimeStamp;
@@ -205,7 +193,6 @@
private long mByteCount;
private byte[] mReplayBitmap;
- /** @hide */
public Builder() {
mTimeStamp = System.currentTimeMillis();
}
@@ -214,7 +201,6 @@
* Set the epoch timestamp (milliseconds) for when this state was created
*
* @see IpSecTransformState#getTimestamp()
- * @hide
*/
@NonNull
public Builder setTimestamp(long timeStamp) {
@@ -226,7 +212,6 @@
* Set the highest sequence number sent so far
*
* @see IpSecTransformState#getTxHighestSequenceNumber()
- * @hide
*/
@NonNull
public Builder setTxHighestSequenceNumber(long seqNum) {
@@ -238,7 +223,6 @@
* Set the highest sequence number received so far
*
* @see IpSecTransformState#getRxHighestSequenceNumber()
- * @hide
*/
@NonNull
public Builder setRxHighestSequenceNumber(long seqNum) {
@@ -250,7 +234,6 @@
* Set the number of packets received AND sent so far
*
* @see IpSecTransformState#getPacketCount()
- * @hide
*/
@NonNull
public Builder setPacketCount(long packetCount) {
@@ -262,7 +245,6 @@
* Set the number of bytes received AND sent so far
*
* @see IpSecTransformState#getByteCount()
- * @hide
*/
@NonNull
public Builder setByteCount(long byteCount) {
@@ -274,7 +256,6 @@
* Set the replay bitmap
*
* @see IpSecTransformState#getReplayBitmap()
- * @hide
*/
@NonNull
public Builder setReplayBitmap(@NonNull byte[] bitMap) {
@@ -286,7 +267,6 @@
* Build and validate the IpSecTransformState
*
* @return an immutable IpSecTransformState instance
- * @hide
*/
@NonNull
public IpSecTransformState build() {
diff --git a/framework/src/android/net/NetworkRequest.java b/framework/src/android/net/NetworkRequest.java
index 9824faa..653e41d 100644
--- a/framework/src/android/net/NetworkRequest.java
+++ b/framework/src/android/net/NetworkRequest.java
@@ -290,7 +290,10 @@
* Therefore these capabilities are only in NetworkRequest.
*/
private static final int[] DEFAULT_FORBIDDEN_CAPABILITIES = new int[] {
- NET_CAPABILITY_LOCAL_NETWORK
+ // TODO(b/313030307): this should contain NET_CAPABILITY_LOCAL_NETWORK.
+ // We cannot currently add it because doing so would crash if the module rolls back,
+ // because JobScheduler persists NetworkRequests to disk, and existing production code
+ // does not consider LOCAL_NETWORK to be a valid capability.
};
private final NetworkCapabilities mNetworkCapabilities;
diff --git a/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt b/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt
index ad21bf5..dd0706b 100644
--- a/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt
+++ b/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt
@@ -154,6 +154,7 @@
val newLnc = LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI)
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.build())
.build()
localAgent.sendLocalNetworkConfig(newLnc)
@@ -196,6 +197,7 @@
lp = lp("local0"),
lnc = FromS(LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.addTransportType(TRANSPORT_WIFI)
.build())
.build()),
@@ -250,6 +252,7 @@
lnc = FromS(LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI)
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.build())
.build()),
score = FromS(NetworkScore.Builder()
@@ -296,6 +299,7 @@
val lnc = FromS(LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI)
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.build())
.build())
val localScore = FromS(NetworkScore.Builder().build())
@@ -348,6 +352,7 @@
lp = lp("local0"),
lnc = FromS(LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.addTransportType(TRANSPORT_WIFI)
.build())
.build()),
@@ -377,6 +382,7 @@
val lnc = FromS(LocalNetworkConfig.Builder()
.setUpstreamSelector(NetworkRequest.Builder()
.addCapability(NET_CAPABILITY_DUN)
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.build())
.build())
val localAgent = Agent(nc = nc(TRANSPORT_WIFI, NET_CAPABILITY_LOCAL_NETWORK),
@@ -504,6 +510,7 @@
val lnc = FromS(LocalNetworkConfig.Builder().apply {
if (haveUpstream) {
setUpstreamSelector(NetworkRequest.Builder()
+ .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK)
.addTransportType(TRANSPORT_WIFI)
.build())
}