Merge Android 12

Bug: 202323961
Merged-In: Iba1443da42161f4a41830081f2e1985b30444cc0
Change-Id: I2bebe60bb7114706a3ba6af35522268cdf031f41
This commit is contained in:
Xin Li
2021-10-06 22:53:28 +00:00
5 changed files with 56 additions and 21 deletions

View File

@@ -104,7 +104,10 @@ public final class NetworkStateSnapshot implements Parcelable {
return mSubscriberId; return mSubscriberId;
} }
/** Get the legacy type of the network associated with this snapshot. */ /**
* Get the legacy type of the network associated with this snapshot.
* @return the legacy network type. See {@code ConnectivityManager#TYPE_*}.
*/
public int getLegacyType() { public int getLegacyType() {
return mLegacyType; return mLegacyType;
} }

View File

@@ -889,7 +889,7 @@ public class NsdService extends INsdManager.Stub {
@Override @Override
public String toString() { public String toString() {
StringBuffer sb = new StringBuffer(); StringBuilder sb = new StringBuilder();
sb.append("mChannel ").append(mChannel).append("\n"); sb.append("mChannel ").append(mChannel).append("\n");
sb.append("mMessenger ").append(mMessenger).append("\n"); sb.append("mMessenger ").append(mMessenger).append("\n");
sb.append("mResolvedService ").append(mResolvedService).append("\n"); sb.append("mResolvedService ").append(mResolvedService).append("\n");

View File

@@ -27,6 +27,7 @@ import android.app.AppOpsManager;
import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.DevicePolicyManagerInternal;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.Process; import android.os.Process;
import android.os.UserHandle; import android.os.UserHandle;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -108,10 +109,17 @@ public final class NetworkStatsAccess {
DevicePolicyManagerInternal.class); DevicePolicyManagerInternal.class);
final TelephonyManager tm = (TelephonyManager) final TelephonyManager tm = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE); context.getSystemService(Context.TELEPHONY_SERVICE);
boolean hasCarrierPrivileges = tm != null && boolean hasCarrierPrivileges;
tm.checkCarrierPrivilegesForPackageAnyPhone(callingPackage) == final long token = Binder.clearCallingIdentity();
TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; try {
boolean isDeviceOwner = dpmi != null && dpmi.isActiveDeviceOwner(callingUid); hasCarrierPrivileges = tm != null
&& tm.checkCarrierPrivilegesForPackageAnyPhone(callingPackage)
== TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
} finally {
Binder.restoreCallingIdentity(token);
}
final boolean isDeviceOwner = dpmi != null && dpmi.isActiveDeviceOwner(callingUid);
final int appId = UserHandle.getAppId(callingUid); final int appId = UserHandle.getAppId(callingUid);
if (hasCarrierPrivileges || isDeviceOwner if (hasCarrierPrivileges || isDeviceOwner
|| appId == Process.SYSTEM_UID || appId == Process.NETWORK_STACK_UID) { || appId == Process.SYSTEM_UID || appId == Process.NETWORK_STACK_UID) {

View File

@@ -54,6 +54,8 @@ import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastDataInput;
import com.android.internal.util.FastDataOutput;
import com.android.internal.util.FileRotator; import com.android.internal.util.FileRotator;
import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter;
@@ -89,6 +91,9 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W
/** File header magic number: "ANET" */ /** File header magic number: "ANET" */
private static final int FILE_MAGIC = 0x414E4554; private static final int FILE_MAGIC = 0x414E4554;
/** Default buffer size from BufferedInputStream */
private static final int BUFFER_SIZE = 8192;
private static final int VERSION_NETWORK_INIT = 1; private static final int VERSION_NETWORK_INIT = 1;
private static final int VERSION_UID_INIT = 1; private static final int VERSION_UID_INIT = 1;
@@ -435,7 +440,8 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W
@Override @Override
public void read(InputStream in) throws IOException { public void read(InputStream in) throws IOException {
read((DataInput) new DataInputStream(in)); final FastDataInput dataIn = new FastDataInput(in, BUFFER_SIZE);
read(dataIn);
} }
private void read(DataInput in) throws IOException { private void read(DataInput in) throws IOException {
@@ -474,8 +480,9 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W
@Override @Override
public void write(OutputStream out) throws IOException { public void write(OutputStream out) throws IOException {
write((DataOutput) new DataOutputStream(out)); final FastDataOutput dataOut = new FastDataOutput(out, BUFFER_SIZE);
out.flush(); write(dataOut);
dataOut.flush();
} }
private void write(DataOutput out) throws IOException { private void write(DataOutput out) throws IOException {

View File

@@ -39,6 +39,8 @@ import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
/** /**
@@ -53,8 +55,8 @@ public class IpConfigStoreTest {
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
DataOutputStream outputStream = new DataOutputStream(byteStream); DataOutputStream outputStream = new DataOutputStream(byteStream);
IpConfiguration expectedConfig = new IpConfiguration(IpAssignment.DHCP, final IpConfiguration expectedConfig =
ProxySettings.NONE, null, null); newIpConfiguration(IpAssignment.DHCP, ProxySettings.NONE, null, null);
// Emulate writing to old format. // Emulate writing to old format.
writeDhcpConfigV2(outputStream, KEY_CONFIG, expectedConfig); writeDhcpConfigV2(outputStream, KEY_CONFIG, expectedConfig);
@@ -78,18 +80,23 @@ public class IpConfigStoreTest {
final String DNS_IP_ADDR_1 = "1.2.3.4"; final String DNS_IP_ADDR_1 = "1.2.3.4";
final String DNS_IP_ADDR_2 = "5.6.7.8"; final String DNS_IP_ADDR_2 = "5.6.7.8";
StaticIpConfiguration staticIpConfiguration = new StaticIpConfiguration(); final ArrayList<InetAddress> dnsServers = new ArrayList<>();
staticIpConfiguration.ipAddress = new LinkAddress(IP_ADDR_1); dnsServers.add(InetAddresses.parseNumericAddress(DNS_IP_ADDR_1));
staticIpConfiguration.dnsServers.add(InetAddresses.parseNumericAddress(DNS_IP_ADDR_1)); dnsServers.add(InetAddresses.parseNumericAddress(DNS_IP_ADDR_2));
staticIpConfiguration.dnsServers.add(InetAddresses.parseNumericAddress(DNS_IP_ADDR_2)); final StaticIpConfiguration staticIpConfiguration1 = new StaticIpConfiguration.Builder()
.setIpAddress(new LinkAddress(IP_ADDR_1))
.setDnsServers(dnsServers).build();
final StaticIpConfiguration staticIpConfiguration2 = new StaticIpConfiguration.Builder()
.setIpAddress(new LinkAddress(IP_ADDR_2))
.setDnsServers(dnsServers).build();
ProxyInfo proxyInfo = ProxyInfo proxyInfo =
ProxyInfo.buildDirectProxy("10.10.10.10", 88, Arrays.asList("host1", "host2")); ProxyInfo.buildDirectProxy("10.10.10.10", 88, Arrays.asList("host1", "host2"));
IpConfiguration expectedConfig1 = new IpConfiguration(IpAssignment.STATIC, IpConfiguration expectedConfig1 = newIpConfiguration(IpAssignment.STATIC,
ProxySettings.STATIC, staticIpConfiguration, proxyInfo); ProxySettings.STATIC, staticIpConfiguration1, proxyInfo);
IpConfiguration expectedConfig2 = new IpConfiguration(expectedConfig1); IpConfiguration expectedConfig2 = newIpConfiguration(IpAssignment.STATIC,
expectedConfig2.getStaticIpConfiguration().ipAddress = new LinkAddress(IP_ADDR_2); ProxySettings.STATIC, staticIpConfiguration2, proxyInfo);
ArrayMap<String, IpConfiguration> expectedNetworks = new ArrayMap<>(); ArrayMap<String, IpConfiguration> expectedNetworks = new ArrayMap<>();
expectedNetworks.put(IFACE_1, expectedConfig1); expectedNetworks.put(IFACE_1, expectedConfig1);
@@ -107,14 +114,24 @@ public class IpConfigStoreTest {
assertEquals(expectedNetworks.get(IFACE_2), actualNetworks.get(IFACE_2)); assertEquals(expectedNetworks.get(IFACE_2), actualNetworks.get(IFACE_2));
} }
private IpConfiguration newIpConfiguration(IpAssignment ipAssignment,
ProxySettings proxySettings, StaticIpConfiguration staticIpConfig, ProxyInfo info) {
final IpConfiguration config = new IpConfiguration();
config.setIpAssignment(ipAssignment);
config.setProxySettings(proxySettings);
config.setStaticIpConfiguration(staticIpConfig);
config.setHttpProxy(info);
return config;
}
// This is simplified snapshot of code that was used to store values in V2 format (key as int). // This is simplified snapshot of code that was used to store values in V2 format (key as int).
private static void writeDhcpConfigV2(DataOutputStream out, int configKey, private static void writeDhcpConfigV2(DataOutputStream out, int configKey,
IpConfiguration config) throws IOException { IpConfiguration config) throws IOException {
out.writeInt(2); // VERSION 2 out.writeInt(2); // VERSION 2
switch (config.ipAssignment) { switch (config.getIpAssignment()) {
case DHCP: case DHCP:
out.writeUTF("ipAssignment"); out.writeUTF("ipAssignment");
out.writeUTF(config.ipAssignment.toString()); out.writeUTF(config.getIpAssignment().toString());
break; break;
default: default:
fail("Not supported in test environment"); fail("Not supported in test environment");