Snap for 6296837 from 9490c52b5b317077e84612a32d36abc17804e321 to mainline-release
Change-Id: I16f4d7570b4c5a8bfe3a18a96a32f263a1047a7a
This commit is contained in:
@@ -22,7 +22,6 @@ import static android.net.InvalidPacketException.ERROR_INVALID_PORT;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SystemApi;
|
||||
import android.net.util.IpUtils;
|
||||
import android.os.Parcel;
|
||||
import android.util.Log;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@@ -30,7 +29,6 @@ import java.net.InetAddress;
|
||||
/**
|
||||
* Represents the actual packets that are sent by the
|
||||
* {@link android.net.SocketKeepalive} API.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@@ -54,6 +52,9 @@ public class KeepalivePacketData {
|
||||
/** Packet data. A raw byte string of packet data, not including the link-layer header. */
|
||||
private final byte[] mPacket;
|
||||
|
||||
// Note: If you add new fields, please modify the parcelling code in the child classes.
|
||||
|
||||
|
||||
// This should only be constructed via static factory methods, such as
|
||||
// nattKeepalivePacket.
|
||||
/**
|
||||
@@ -87,21 +88,4 @@ public class KeepalivePacketData {
|
||||
return mPacket.clone();
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
out.writeString(srcAddress.getHostAddress());
|
||||
out.writeString(dstAddress.getHostAddress());
|
||||
out.writeInt(srcPort);
|
||||
out.writeInt(dstPort);
|
||||
out.writeByteArray(mPacket);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
protected KeepalivePacketData(Parcel in) {
|
||||
srcAddress = NetworkUtils.numericToInetAddress(in.readString());
|
||||
dstAddress = NetworkUtils.numericToInetAddress(in.readString());
|
||||
srcPort = in.readInt();
|
||||
dstPort = in.readInt();
|
||||
mPacket = in.createByteArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ import javax.net.SocketFactory;
|
||||
public class Network implements Parcelable {
|
||||
|
||||
/**
|
||||
* The unique id of the network.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
|
||||
@@ -7803,12 +7803,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
private void handleNetworkTestedWithExtras(
|
||||
@NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
|
||||
final NetworkAgentInfo nai = reportEvent.mNai;
|
||||
final NetworkCapabilities networkCapabilities =
|
||||
new NetworkCapabilities(nai.networkCapabilities);
|
||||
clearNetworkCapabilitiesUids(networkCapabilities);
|
||||
final ConnectivityReport report =
|
||||
new ConnectivityReport(
|
||||
reportEvent.mNai.network,
|
||||
reportEvent.mTimestampMillis,
|
||||
nai.linkProperties,
|
||||
nai.networkCapabilities,
|
||||
networkCapabilities,
|
||||
extras);
|
||||
final List<IConnectivityDiagnosticsCallback> results =
|
||||
getMatchingPermissionedCallbacks(nai);
|
||||
@@ -7824,13 +7827,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
private void handleDataStallSuspected(
|
||||
@NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
|
||||
@NonNull PersistableBundle extras) {
|
||||
final NetworkCapabilities networkCapabilities =
|
||||
new NetworkCapabilities(nai.networkCapabilities);
|
||||
clearNetworkCapabilitiesUids(networkCapabilities);
|
||||
final DataStallReport report =
|
||||
new DataStallReport(
|
||||
nai.network,
|
||||
timestampMillis,
|
||||
detectionMethod,
|
||||
nai.linkProperties,
|
||||
nai.networkCapabilities,
|
||||
networkCapabilities,
|
||||
extras);
|
||||
final List<IConnectivityDiagnosticsCallback> results =
|
||||
getMatchingPermissionedCallbacks(nai);
|
||||
@@ -7856,6 +7862,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) {
|
||||
nc.setUids(null);
|
||||
nc.setAdministratorUids(Collections.EMPTY_LIST);
|
||||
nc.setOwnerUid(Process.INVALID_UID);
|
||||
}
|
||||
|
||||
private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks(
|
||||
@NonNull NetworkAgentInfo nai) {
|
||||
final List<IConnectivityDiagnosticsCallback> results = new ArrayList<>();
|
||||
|
||||
@@ -14,8 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.net.util;
|
||||
package android.net.util
|
||||
|
||||
import android.os.Build
|
||||
import android.system.NetlinkSocketAddress
|
||||
import android.system.Os
|
||||
import android.system.OsConstants.AF_INET
|
||||
@@ -26,18 +27,26 @@ import android.system.OsConstants.SOCK_DGRAM
|
||||
import android.system.PacketSocketAddress
|
||||
import androidx.test.filters.SmallTest
|
||||
import androidx.test.runner.AndroidJUnit4
|
||||
import com.android.testutils.DevSdkIgnoreRule
|
||||
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Assert.fail
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
private const val TEST_INDEX = 123
|
||||
private const val TEST_PORT = 555
|
||||
private const val FF_BYTE = 0xff.toByte()
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@SmallTest
|
||||
class SocketUtilsTest {
|
||||
@Rule @JvmField
|
||||
val ignoreRule = DevSdkIgnoreRule()
|
||||
|
||||
@Test
|
||||
fun testMakeNetlinkSocketAddress() {
|
||||
val nlAddress = SocketUtils.makeNetlinkSocketAddress(TEST_PORT, RTMGRP_NEIGH)
|
||||
@@ -50,16 +59,21 @@ class SocketUtilsTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMakePacketSocketAddress() {
|
||||
fun testMakePacketSocketAddress_Q() {
|
||||
val pkAddress = SocketUtils.makePacketSocketAddress(ETH_P_ALL, TEST_INDEX)
|
||||
assertTrue("Not PacketSocketAddress object", pkAddress is PacketSocketAddress)
|
||||
|
||||
val ff = 0xff.toByte()
|
||||
val pkAddress2 = SocketUtils.makePacketSocketAddress(TEST_INDEX,
|
||||
byteArrayOf(ff, ff, ff, ff, ff, ff))
|
||||
val pkAddress2 = SocketUtils.makePacketSocketAddress(TEST_INDEX, ByteArray(6) { FF_BYTE })
|
||||
assertTrue("Not PacketSocketAddress object", pkAddress2 is PacketSocketAddress)
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||
fun testMakePacketSocketAddress() {
|
||||
val pkAddress = SocketUtils.makePacketSocketAddress(
|
||||
ETH_P_ALL, TEST_INDEX, ByteArray(6) { FF_BYTE })
|
||||
assertTrue("Not PacketSocketAddress object", pkAddress is PacketSocketAddress)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCloseSocket() {
|
||||
// Expect no exception happening with null object.
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.net.ipmemorystore.IOnStatusListener;
|
||||
import android.net.ipmemorystore.NetworkAttributes;
|
||||
import android.net.ipmemorystore.NetworkAttributesParcelable;
|
||||
import android.net.ipmemorystore.Status;
|
||||
import android.net.networkstack.ModuleNetworkStackClient;
|
||||
import android.os.RemoteException;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
@@ -67,7 +68,7 @@ public class IpMemoryStoreTest {
|
||||
@Mock
|
||||
Context mMockContext;
|
||||
@Mock
|
||||
NetworkStackClient mNetworkStackClient;
|
||||
ModuleNetworkStackClient mModuleNetworkStackClient;
|
||||
@Mock
|
||||
IIpMemoryStore mMockService;
|
||||
@Mock
|
||||
@@ -90,14 +91,14 @@ public class IpMemoryStoreTest {
|
||||
((IIpMemoryStoreCallbacks) invocation.getArgument(0))
|
||||
.onIpMemoryStoreFetched(mMockService);
|
||||
return null;
|
||||
}).when(mNetworkStackClient).fetchIpMemoryStore(any());
|
||||
}).when(mModuleNetworkStackClient).fetchIpMemoryStore(any());
|
||||
} else {
|
||||
doNothing().when(mNetworkStackClient).fetchIpMemoryStore(mCbCaptor.capture());
|
||||
doNothing().when(mModuleNetworkStackClient).fetchIpMemoryStore(mCbCaptor.capture());
|
||||
}
|
||||
mStore = new IpMemoryStore(mMockContext) {
|
||||
@Override
|
||||
protected NetworkStackClient getNetworkStackClient() {
|
||||
return mNetworkStackClient;
|
||||
protected ModuleNetworkStackClient getModuleNetworkStackClient(Context ctx) {
|
||||
return mModuleNetworkStackClient;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ import static android.content.pm.PackageManager.GET_PERMISSIONS;
|
||||
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
||||
import static android.content.pm.PackageManager.PERMISSION_DENIED;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport;
|
||||
import static android.net.ConnectivityDiagnosticsManager.DataStallReport;
|
||||
import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN;
|
||||
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
|
||||
import static android.net.ConnectivityManager.CONNECTIVITY_ACTION_SUPL;
|
||||
@@ -100,6 +98,7 @@ import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.ArgumentMatchers.startsWith;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
@@ -6870,8 +6869,13 @@ public class ConnectivityServiceTest {
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Verify onConnectivityReport fired
|
||||
verify(mConnectivityDiagnosticsCallback)
|
||||
.onConnectivityReport(any(ConnectivityReport.class));
|
||||
verify(mConnectivityDiagnosticsCallback).onConnectivityReport(
|
||||
argThat(report -> {
|
||||
final NetworkCapabilities nc = report.getNetworkCapabilities();
|
||||
return nc.getUids() == null
|
||||
&& nc.getAdministratorUids().isEmpty()
|
||||
&& nc.getOwnerUid() == Process.INVALID_UID;
|
||||
}));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -6886,7 +6890,13 @@ public class ConnectivityServiceTest {
|
||||
HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
|
||||
|
||||
// Verify onDataStallSuspected fired
|
||||
verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(any(DataStallReport.class));
|
||||
verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(
|
||||
argThat(report -> {
|
||||
final NetworkCapabilities nc = report.getNetworkCapabilities();
|
||||
return nc.getUids() == null
|
||||
&& nc.getAdministratorUids().isEmpty()
|
||||
&& nc.getOwnerUid() == Process.INVALID_UID;
|
||||
}));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user